mcpField
O
opensrc

opensrc

github.com/vercel-labs開発3.0k3.0k 回インストール6 週間前に更新
リポジトリ

opensrc について

opensrcは、開発者やコーディングエージェントが型定義だけでなく実装も調べられるよう、依存関係のソースコードを取得するコマンドラインツールです。プロジェクトのロックファイルからnpmのバージョンを特定し、パッケージやリポジトリを扱い、取得したソースをグローバルにキャッシュします。

主な機能

  1. 01パッケージとリポジトリのソース取得
  2. 02ロックファイルからnpmバージョンを特定
  3. 03リポジトリのブランチ、タグ、コミットの指定
  4. 04ソースのグローバルキャッシュ
  5. 05キャッシュの一覧表示、削除、消去

活用シーン

  1. 01依存関係の内部動作の調査
  2. 02予期しないライブラリ動作のデバッグ
  3. 03テストにおける境界ケース処理の確認
  4. 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 の使い方に関する質問では、ソースを取得しないでください。

コメント