debugging-with-opensrc について
サードパーティーライブラリの挙動を調べる開発者向けデバッグスキルです。インストール済み依存関係に対応する OpenSrc のソースミラーを優先して呼び出し経路を追い、アプリケーション側の修正と検証につなげます。
主な機能
- 01インストール済み依存関係のソース調査
- 02API から内部実装までの追跡
- 03シグネチャ、既定値、エラー経路の確認
- 04型とテストによる根拠の確認
- 05対象を絞った修正の検証
活用シーン
- 01ライブラリ連携の問題調査
- 02ドキュメントと実行時挙動の不一致解消
- 03依存関係のエッジケースの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ blogic-cz/ blogic-marketplace --skill debugging-with-opensrcインストール後、Claude Code で/debugging-with-opensrcを入力して読み込まれたか確認します。
同梱ファイルreferences/opencode-skill-testing.md
詳細
OpenSrc を使ったデバッグ
概要
まずソースを読んで、外部ライブラリの動作をデバッグします。
インストールされているバージョンについては、OpenSrc のミラーを信頼できる情報源として扱います。
このスキルを使う場面
- アプリケーションコードがサードパーティライブラリの内部実装に依存する統合の問題を調査するとき。
- ドキュメントと実行時に観測される動作との不一致を解消するとき。
- インストールされている依存関係の関数シグネチャ、デフォルト値、エラー処理、またはエッジケースの処理を確認するとき。
OpenSrc コマンド
# Sync configured repos when the OpenSrc config exists
test ! -f opensrc/sources.json || \
bun run scripts/opensrc-sync.ts
# Fetch a package or GitHub repo
bunx opensrc --modify false <package-or-owner/repo>
利用可能なリポジトリ(opensrc/repos/github.com/)
| ライブラリ | パス | 確認する項目 |
|---|---|---|
| Effect | Effect-TS/effect/packages/effect/src/ | Schema、Effect.gen、Layer、Context |
| TanStack Router | TanStack/router/packages/react-router/src/ | createFileRoute、loader、useParams |
| TanStack Query | TanStack/query/packages/react-query/src/ | useSuspenseQuery、queryOptions |
| TanStack Form | TanStack/form/packages/react-form/src/ | useForm、バリデーション |
| TanStack Start | TanStack/router/packages/start/src/ | SSR、サーバー関数 |
| TRPC | trpc/trpc/packages/server/src/ | プロシージャ、ミドルウェア、ルーター |
| Drizzle ORM | drizzle-team/drizzle-orm/drizzle-orm/src/ | pgTable、リレーション、クエリ |
| Better Auth | better-auth/better-auth/packages/better-auth/src/ | 認証設定、プラグイン、セッション |
| OpenCode | sst/opencode/packages/opencode/src/ | スキル、コマンド、プラグイン |
| Pino | pinojs/pino/lib/ | ロガー、トランスポート |
| Sentry | getsentry/sentry-javascript/packages/ | SDK、統合、トレーシング |
デバッグのワークフロー
- 不具合のある動作を、入力、観測された出力、期待される出力を含む1文で定義します。
- 該当する依存関係とパッケージ領域を特定します。
- 利用可能なプロジェクト検索ツールを使って、
opensrc/repos/github.com/内の関連するソースファイルを探します。 - アプリケーションコードを変更する前に、実装と関連する型を読みます。
- 公開 API から内部ヘルパーまでの呼び出しフローを追跡します。
- 具体的な期待事項を抽出します。
- 関数シグネチャと戻り値の型
- 必要なラッパー/ビルダー/オプション
- デフォルト値と省略可能なパラメーターの動作
- エラー処理とエッジケース
- 確認済みの動作に基づいて、アプリケーションコードに修正を適用します。
- 対象を絞ったテストまたは再現手順で検証します。
よくあるデバッグのシナリオ
シナリオ:TanStack Form のバリデーションが動作しない
opensrc/repos/github.com/TanStack/form/packages/react-form/src/useForm.tsを読みます。- バリデーターのインターフェースと期待される戻り値の型を確認します。
- インストールされているバージョンで Standard Schema との統合がどのように組み込まれているかを確認します。
- 確認済みの動作に基づいて、アプリケーションコードを修正します。
シナリオ:TRPC プロシージャがコンテキストを受け取らない
opensrc/repos/github.com/trpc/trpc/packages/server/src/core/middleware.tsを読みます。- ミドルウェアチェーンを通じてコンテキストがどのように渡されるかを追跡します。
- 現在のバージョンにおけるミドルウェアの戻り値と
opts.next()の動作を確認します。
シナリオ:Effect Layer がサービスを提供しない
opensrc/repos/github.com/Effect-TS/effect/packages/effect/src/Layer.tsを読みます。Layer.effectとLayer.succeedの動作を比較します。- ライブラリのパターンに照らして
Context.Tagの使い方を確認します。
シナリオ:Better Auth のセッションが永続化されない
opensrc/repos/github.com/better-auth/better-auth/packages/better-auth/src/を読みます。- セッションの処理と永続化のフローを追跡します。
- インストールされているコードで、Cookie とストレージに関する要件を確認します。
重要な原則
ソースコードが真実です。
- ドキュメントは古くなっている場合があります
- Stack Overflow の回答が、お使いのバージョンに当てはまるとは限りません
- ブログ記事では、異なる設定が使われている場合があります
- 実際の動作を正確に示すのは、ソースコードだけです
例:デバッグセッションの全体像
問題:キャッシュされたデータがあるにもかかわらず、useSuspenseQuery が undefined を返します。
opensrc/repos/github.com/TanStack/query/packages/react-query/src/useSuspenseQuery.tsと周辺の型定義を読みます。- インストールされているバージョンで、どのような入力形式が想定されているか確認します。
- プロジェクトコードで、正常に動作する使用パターンを確認します。
- 確認した想定に合った修正を適用します。
注:以前、あるバージョンでの調査では、入力を queryOptions() でラップすると問題が解決しました。これは調査で得られた一例として扱い、普遍的なルールとは見なさないでください。
OpenCode 固有の内部情報
OpenCode のスキルの読み込みや、自動読み込みテストの内部実装をデバッグする際は、references/opencode-skill-testing.md を使用してください。
忘れないでください
- まずソースを読む — 質問する前、ウェブ検索する前に
- 正確なバージョンが重要です — opensrc には、お使いのバージョンが含まれています
- コードの流れを追う — エントリーポイントから実装までたどります
- 型を確認する — TypeScript の型から、想定される使い方がわかることがよくあります
- テストを見る — ライブラリのテストには、正しい使用パターンが示されています
コメント
Markdown 対応