opensrc について
opensrcは、開発者やコーディングエージェントが型定義だけでなく実装も調べられるよう、依存関係のソースコードを取得するコマンドラインツールです。プロジェクトのロックファイルからnpmのバージョンを特定し、パッケージやリポジトリを扱い、取得したソースをグローバルにキャッシュします。
主な機能
- 01パッケージとリポジトリのソース取得
- 02ロックファイルからnpmバージョンを特定
- 03リポジトリのブランチ、タグ、コミットの指定
- 04ソースのグローバルキャッシュ
- 05キャッシュの一覧表示、削除、消去
活用シーン
- 01依存関係の内部動作の調査
- 02予期しないライブラリ動作のデバッグ
- 03テストにおける境界ケース処理の確認
- 04ソースから実装パターンを学習
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vercel-labs/ opensrc --skill opensrcインストール後、Claude Code で/opensrcを入力して読み込まれたか確認します。
詳細
opensrc によるソースコードの取得
エージェントが型だけでなく実装も読めるよう、依存関係のソースコードを取得します。正しいバージョンタグでリポジトリをクローンし、~/.opensrc/ にグローバルキャッシュします。
基本パターン
rg "parse" $(opensrc path zod)
cat $(opensrc path zod)/src/types.ts
find $(opensrc path zod) -name "*.test.ts"
opensrc path <pkg> は、キャッシュされたソースの絶対パスを出力します。キャッシュされていない場合は、自動的に取得します。進捗は標準エラー出力に、パスは標準出力に出力されるため、サブシェルで $(opensrc path ...) を使用できます。
ソースコードの取得
opensrc path zod
opensrc path pypi:requests
opensrc path crates:serde
opensrc path facebook/react
# Multiple packages at once
opensrc path zod react next
opensrc path pypi:requests pypi:flask
opensrc path crates:serde crates:tokio
# Specific versions
opensrc path [email protected]
opensrc path pypi:[email protected]
opensrc path owner/[email protected]
opensrc path owner/repo#main
バージョンの解決
npm パッケージの場合、opensrc はロックファイル(package-lock.json、pnpm-lock.yaml、yarn.lock)からインストール済みバージョンを自動検出します。別のプロジェクトから解決するには、--cwd を使用します。
opensrc path zod --cwd /path/to/project
PyPI と crates.io の場合は、明示的に指定したバージョンまたは最新バージョンを使用します。リポジトリの場合は、@ref または #ref を使用してブランチ、タグ、コミットを指定します。
キャッシュの管理
ソースは ~/.opensrc/ にグローバルキャッシュされます(OPENSRC_HOME で上書きできます)。
opensrc list # show all cached sources
opensrc list --json # JSON output
opensrc remove zod # remove a package
opensrc remove facebook/react # remove a repo
opensrc clean # remove everything
opensrc clean --npm # only npm packages
opensrc clean --pypi # only PyPI packages
opensrc clean --crates # only crates.io packages
opensrc clean --packages # all packages, keep repos
opensrc clean --repos # all repos, keep packages
ソースを取得するタイミング
次のような場合にソースを取得します。
- 型からは分からない内部動作を理解する
- ライブラリの予期しない動作をデバッグする
- よく知られた実装からパターンを学ぶ
- 関数がエッジケースをどのように処理するか確認する
ドキュメントや型で答えられる、単純な API の使い方に関する質問では、ソースを取得しないでください。