context7 について
Context7のドキュメントをコマンドラインから検索し、ライブラリの最新ドキュメントやコード例を取得するスキルです。ライブラリの解決、バージョンを踏まえた検索、JSON出力、キャッシュに対応しています。
主な機能
- 01ライブラリIDの解決とドキュメント検索
- 02ソース文書からコード例を取得
- 03JSON出力とCLIオプション
- 04解決結果のキャッシュと制御
- 05TypeScriptクライアントからの利用
活用シーン
- 01Reactなどのライブラリの現行APIを確認
- 02特定バージョンのライブラリ文書を検索
- 03検索結果をスクリプトに渡して処理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill context7インストール後、Claude Code で/context7を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
Tools/.gitignorebun.lockpackage.jsontsconfig.jsonTools/src/index.tsTools/src/cli/lookup.tsquery.tsresolve.tsTools/src/lib/cache.tscontext7.tserrors.tsflags.tsTools/tests/cache.test.tserrors.test.tsflags.test.tsWorkflows/FullLookup.mdQueryDocs.mdResolveLibrary.md詳細
Context7
Context7 のドキュメント集約プラットフォームを通じて、ソースライブラリから最新かつバージョン固有のドキュメントとコード例を直接検索できます。
Context7 を使う理由
| メリット | 説明 |
|---|---|
| 最新の API | 実際のソースから取得したドキュメントにより、幻覚や古いパターンを避けられます |
| バージョン固有 | 使用しているライブラリの正確なバージョンのドキュメントを取得します |
| コード例 | 実際のドキュメントから抽出した、実行可能なコードを取得します |
| 幅広い対応範囲 | React、Next.js、Vue、Go、Python、Kubernetes など、1000 以上のライブラリに対応しています |
セットアップ
# Install dependencies
cd ~/.claude/skills/context7/Tools
bun install
# Optional: link binaries globally so c7-lookup / c7-resolve / c7-query are on PATH
bun link
# Optional: API key for higher rate limits
export CONTEXT7_API_KEY="ctx7sk_your_key_here" # context7.com/dashboard
利用可能な CLI ツール
| ツール | 用途 | 短縮形(bun link 後) | 長い形式 |
|---|---|---|---|
lookup | ライブラリの解決とクエリを一度に実行 | c7-lookup <library> <query> | bun src/cli/lookup.ts <library> <query> |
resolve | Context7 のライブラリ ID を検索 | c7-resolve <library> [query] | bun src/cli/resolve.ts <library> [query] |
query | 既知の ID を使ってドキュメントを検索 | c7-query <library_id> <query> | bun src/cli/query.ts <library_id> <query> |
CLI フラグ
3 つの CLI はすべて同じフラグセットを受け付けます。
| フラグ | 効果 |
|---|---|
--json | 標準出力に JSON を出力し、装飾的な出力を抑制します。jq に渡せます。 |
--quiet, -q | 情報/成功ログを抑制します(警告/エラーは標準エラーに出力されます)。 |
--no-cache | この呼び出しでは、24 時間のディスクキャッシュ(~/.cache/context7/resolved.json)を使用しません。 |
--clear-cache | ディスクキャッシュを消去して終了します。 |
--timeout <ms> | HTTP タイムアウト(ミリ秒)。デフォルトは 30000 です。 |
--max-retries <n> | 429 Rate Limit 応答に対するリトライ回数(Retry-After を使用)。デフォルトは 1 です。 |
--api-key <key> | CONTEXT7_API_KEY 環境変数を上書きします。 |
--version, -V | バージョンを表示して終了します。 |
--help, -h | 使用方法を表示して終了します。 |
クイックリファレンス
ライブラリの検索(推奨)
1 つのコマンドでライブラリを解決し、ドキュメントを検索できます。
# After `bun link`:
c7-lookup react "useEffect cleanup function"
c7-lookup next.js "app router middleware"
c7-lookup kubernetes "deployment rolling update"
# Or without linking:
cd ~/.claude/skills/context7/Tools && bun src/cli/lookup.ts react "useEffect cleanup function"
JSON 出力(スクリプト/パイプ処理向け)
c7-lookup react "useState" --json | jq '.libraryId'
c7-resolve drizzle "many to many" --json | jq '.bestMatch'
手順を分けて実行する(必要な場合)
c7-resolve react # → /facebook/react
c7-resolve next.js "authentication" # → ranked candidates
c7-query /facebook/react "useEffect cleanup" # → docs for known ID
よく使われるライブラリ ID
| ライブラリ | Context7 ID | CLI ショートカット |
|---|---|---|
| React | /facebook/react | react |
| Next.js | /vercel/next.js | next.js、nextjs |
| Vue | /vuejs/vue | vue |
| Kubernetes | /kubernetes/kubernetes | kubernetes、k8s |
| Go 標準ライブラリ | /golang/go | go、golang |
| Python | /python/cpython | python |
| Node.js | /nodejs/node | node、nodejs |
| TypeScript | /microsoft/typescript | typescript、ts |
| Prisma | /prisma/prisma | prisma |
| Tailwind | /tailwindlabs/tailwindcss | tailwind、tailwindcss |
ワークフローの振り分け
| ワークフロー | トリガー | ファイル |
|---|---|---|
| ResolveLibrary | 「ライブラリ ID を検索」、「ライブラリを解決」 | Workflows/ResolveLibrary.md |
| QueryDocs | 「ドキュメントを検索」、「ドキュメントを取得」、「コード例」 | Workflows/QueryDocs.md |
| FullLookup | 「[library] について教えて」、「[feature] の使い方」 | Workflows/FullLookup.md |
注意点
以下は、知らないと問題になる Context7 API の実際の動作です。すでに記載されていない問題がクエリで発生した場合は、このリストに追加してください。
- ライブラリ ID の先頭にはスラッシュが必要です。
/facebook/reactは機能しますが、facebook/reactは「library not found」という分かりにくいエラーで失敗します。エラーからはスラッシュがないことが分かりません。 - リゾルバーはあいまい検索を行い、順位付けします。決定的ではありません。
resolve.ts <name>は、任意のコンテキストクエリも考慮する LLM ベースのランカーが順位付けした複数の候補を返します。限定的なコンテキストによって、公式リポジトリよりも正規性の低いフォークが上位になることがあります。ID をquery.tsに渡す前に、必ず最上位の候補を確認してください。 - メジャーバージョンの境目ではバージョンの固定が重要です。 ライブラリ ID には、
/vercel/next.js/14.2.0のようにバージョン部分が含まれる場合があります。バージョンを指定しない ID は、Context7 が現在「最新の安定版」とみなしているものに解決されますが、実際のリリースに追いついていないことがあります。バージョンを指定せずに Next.js の「app router」について尋ねると、Next 13 のドキュメントが返されることがあります。メジャーバージョン間でフレームワークの構成が変わった場合は、バージョンを固定してください。 - 公開レート制限は厳しく設定されています。
CONTEXT7_API_KEYがない場合、予想より少ないクエリ数で制限に達します。このスキルにある「質問あたり最大 3 回の呼び出し」というヒントは、Claude の動作を防御的に制限するものです。実際の API の利用上限ではありません。継続して利用する場合は、context7.com/dashboardから API キーを設定してください。 - スニペットの切り詰めは通知されません。 長いドキュメントページでは、全内容ではなく抜粋が返されます。返された例で、スニペット内に定義されていない関数やシンボルが参照されている場合、その動作を推測してはいけません。不足している部分を捏造するのではなく、より絞り込んだ具体的な質問で再クエリしてください。
- 既知 ID のキャッシュは古くなることがあります。 よく使われるライブラリ(
react、next.js、kubernetesなど)は、Tools/src/lib/context7.tsにあるハードコードされた ID を使ってリゾルバーを省略します。上流プロジェクトがリポジトリ名を変更したり、別の組織に移動したりすると、キャッシュされた ID が誤ったものになり、クエリはエラーなしで失敗します。最新の ID を解決するには、キャッシュに認識されていない別名を使うか、--no-cacheを渡してください。
よくあるエラー
CLI は型付きの終了コードを使用するため、呼び出し側(Claude を含む)は文字列を解析せずに失敗の種類を判別できます。
| 終了コード | 種類 | 原因 | 対処方法 |
|---|---|---|---|
3 | auth | 401 — CONTEXT7_API_KEY が無効、または設定されていない | context7.com/dashboard から環境変数を設定するか、--api-key <key> を渡してください。 |
4 | not_found | 404 — ライブラリまたはドキュメントのパスが見つからない、または ID の形式が不正(先頭の / がない) | c7-resolve <name> を実行して有効な ID を取得し、/org/project の形式になっているか確認してください。 |
5 | rate_limit | 429 — 公開レート制限に到達。Retry-After が存在する場合は 1 回自動で再試行します | より高い制限を利用するには CONTEXT7_API_KEY を設定するか、--max-retries を増やしてください。 |
6 | server | 5xx — 一時的な Context7 サーバーエラー | 少し待ってから再試行してください。 |
7 | timeout | 408 — クライアントのタイムアウトによりリクエストが中止された | --timeout を増やす(例:--timeout 60000)か、ネットワークを確認してください。 |
2 | (arg) | 不明なフラグ、無効な値、必須のフラグ引数がない | --help を実行してください。 |
1 | (other) | その他すべて(ステータスが 0 のネットワークエラーを含む) | stderr のメッセージを確認して、再試行してください。 |
エラーが発生すると、常に Error: <message> と Hint: <remediation> の行が stderr に出力されます。--json を指定した場合、stdout はクリーンで解析可能な状態に保たれ、stderr には人間が読めるエラーが出力されます。
例
例 1:React Hooks のドキュメント
cd ~/.claude/skills/context7/Tools
bun src/cli/lookup.ts react "useEffect cleanup function"
出力には、クリーンアップパターンの例を含む最新の React ドキュメントが含まれます。
例 2:Kubernetes の Deployment 仕様
bun src/cli/lookup.ts kubernetes "deployment spec rolling update strategy"
出力には、Deployment の最新の K8s API リファレンスが含まれます。
例 3:Next.js App Router
bun src/cli/lookup.ts next.js "middleware authentication app router"
出力には、最新の Next.js ミドルウェアのドキュメントが含まれます。
例 4:Claude Code セッションでの使用
コーディングセッション中にドキュメントが必要な場合:
User: "How do I implement server-side data fetching in Next.js 14?"
Claude runs:
cd ~/.claude/skills/context7/Tools && bun src/cli/lookup.ts next.js "server components data fetching"
Then synthesizes response with current patterns (Server Components, not old getServerSideProps)
環境変数
| 変数 | 説明 | デフォルト |
|---|---|---|
CONTEXT7_API_KEY | レート制限を緩和するための API キー | なし(公開レート制限を使用) |
API キーは context7.com/dashboard で取得できます。
ヒント
- より良い結果を得るため、具体的にクエリを入力してください
- 質問ごとに最大 3 回呼び出しできます。3 回試しても見つからない場合は、利用可能な最善の情報を使ってください
- 特定のバージョンのドキュメントが必要な場合は、クエリにバージョンを含めてください(例:「React 18 の並行機能」)
- ローカルのコンテキストと組み合わせてください。Context7 で API を確認してから、コードベースに適用します
- 既知の ID は API 呼び出しを省略します。
reactやnext.jsなどの一般的なライブラリでは、キャッシュされた ID を使用して解決手順を省略します
プロジェクト構成
Tools/
├── package.json # Bun + bin entries (c7-resolve, c7-query, c7-lookup)
├── tsconfig.json # TypeScript strict config
├── src/
│ ├── index.ts # Public exports (client, types, helpers)
│ ├── lib/
│ │ ├── context7.ts # Core API client + retry + typed errors
│ │ ├── cache.ts # Disk cache for resolved library IDs (24h TTL)
│ │ ├── flags.ts # Shared CLI argument parser
│ │ └── errors.ts # Error → exit-code + hint formatter
│ └── cli/
│ ├── lookup.ts # Full lookup command (c7-lookup)
│ ├── resolve.ts # Library ID resolver (c7-resolve)
│ └── query.ts # Documentation query (c7-query)
└── tests/
├── cache.test.ts # Cache I/O + TTL roundtrips
├── flags.test.ts # Argument parsing edge cases
└── errors.test.ts # Exit code + hint mapping
API リファレンス
TypeScript クライアントはプログラムからインポートすることもできます。
import {
Context7Client,
getKnownLibraryId,
setLogLevel,
formatError,
getCached,
setCached,
} from "./src/index.js";
setLogLevel("warn"); // silence info/success logs
const client = new Context7Client({
apiKey: process.env.CONTEXT7_API_KEY,
timeout: 30_000,
maxRetries: 2,
});
// Full lookup with disk cache
const cached = await getCached("react", 24 * 60 * 60 * 1000);
if (cached) {
const docs = await client.queryDocs(cached, "useEffect cleanup");
console.log(docs.rawContent);
} else {
const result = await client.lookup("react", "useEffect hooks");
if (result.library) await setCached("react", result.library.id);
console.log(result.rawContent);
}