Skip to main content
スキルは Claude ができることを拡張します。SKILL.md ファイルに指示を記述すると、Claude はそれをツールキットに追加します。Claude は関連する場合にスキルを使用するか、/skill-name で直接呼び出すことができます。 同じプレイブック、チェックリスト、または複数ステップの手順をチャットに何度も貼り付けるときや、CLAUDE.md のセクションが事実ではなく手順に成長したときにスキルを作成します。CLAUDE.md コンテンツとは異なり、スキルの本体は使用されるときにのみ読み込まれるため、長いリファレンス資料は必要になるまでほぼコストがかかりません。
/help/compact などの組み込みコマンド、および /debug/code-review などのバンドルされたスキルについては、コマンドリファレンスを参照してください。カスタムコマンドはスキルにマージされました。 .claude/commands/deploy.md のファイルと .claude/skills/deploy/SKILL.md のスキルの両方が /deploy を作成し、同じように機能します。既存の .claude/commands/ ファイルは引き続き機能します。スキルは追加機能を提供します。サポートファイル用のディレクトリ、スキルを呼び出すユーザーを制御するためのフロントマター、および Claude が関連する場合に自動的にスキルを読み込む機能です。
Claude Code スキルは Agent Skills オープンスタンダードに従い、複数の AI ツール全体で機能します。Claude Code は 呼び出し制御サブエージェント実行動的コンテキスト注入などの追加機能でスタンダードを拡張します。

バンドルされたスキル

Claude Code には、disableBundledSkills 設定で無効にしない限り、すべてのセッションで利用可能な一連のバンドルされたスキルが含まれています。これには /doctor/code-review/batch/debug/loop、および /claude-api が含まれます。固定ロジックを直接実行する組み込みコマンドとは異なり、バンドルされたスキルはプロンプトベースです。Claude に詳細な指示を提供し、ツールを使用して作業を調整させます。他のスキルと同じ方法で呼び出します。/ の後にスキル名を入力します。 /doctor セットアップチェックアップは、Claude Code v2.1.205 以降では disableBundledSkills の唯一の例外です。この設定がオンの場合でも入力可能なままです。これを非表示にするには、DISABLE_DOCTOR_COMMAND 環境変数を設定するか、skillOverrides エントリで "doctor": "off" を設定します。v2.1.205 より前では、/doctor は組み込みコマンドではなくバンドルされたスキルでした。 バンドルされたスキルは コマンドリファレンス に組み込みコマンドと一緒にリストされており、目的列にスキルとマークされています。

アプリを実行して検証する

3 つのバンドルされたスキルが連携して、アプリを起動し、テストや型チェックだけでなく、実行中のアプリに対して変更を確認します。 3 つのスキルすべてに Claude Code v2.1.145 以降が必要です。 /run/verify はセットアップなしで機能します。プロジェクトタイプ(CLI、サーバー、TUI、ブラウザ駆動)と README、package.json、または Makefile の内容から起動を推測します。その推測は、標準的な起動を超えた何かが必要なプロジェクト(データベース、env ファイル、グラフィカルセッション、マルチステップビルド)では信頼性が低くなります。 /run-skill-generator は代わりにレシピを記録します。クリーン環境からアプリを実行し、機能したもの(インストールコマンド、環境変数、起動スクリプト)をキャプチャし、.claude/skills/run-<name>/ でプロジェクトごとのスキルとしてコミットします。その後、/run/verify、およびリポジトリ内の他のエージェントは、再度発見する代わりに記録されたレシピに従います。プロジェクトごとに 1 回 /run-skill-generator を実行し、ビルドまたは起動プロセスが変更された場合は再度実行します。

はじめに

最初のスキルを作成する

この例は、git リポジトリ内のコミットされていない変更を要約し、危険な点にフラグを付けるスキルを作成します。プロンプトにライブ diff を取り込むため、Claude が開いているファイルから推測できるものではなく、実際の作業ツリーに基づいた応答が得られます。Claude は変更について尋ねるときにスキルを自動的に読み込むか、/summarize-changes で直接呼び出すことができます。
1

スキルディレクトリを作成する

個人用スキルフォルダにスキル用のディレクトリを作成します。個人用スキルはすべてのプロジェクト全体で利用可能です。
2

SKILL.md を記述する

すべてのスキルには SKILL.md ファイルが必要です。2 つの部分があります。YAML フロントマター(--- マーカー間)は Claude にスキルをいつ使用するかを伝え、マークダウンコンテンツはスキルが実行されるときに Claude が従う指示です。ディレクトリ名はコマンドになり、description は Claude がスキルを自動的に読み込むかどうかを決定するのに役立ちます。~/.claude/skills/summarize-changes/SKILL.md に保存します:
!`git diff HEAD` 行は動的コンテキスト注入を使用します。Claude Code はコマンドを実行し、Claude がスキルコンテンツを見る前に行を出力に置き換えるため、指示は現在の diff がすでにインライン化された状態で到着します。
3

スキルをテストする

git プロジェクトを開き、任意のファイルに小さな編集を加え、claude を実行して Claude Code を起動します。2 つの方法でスキルをテストできます。説明に一致するものを尋ねることで Claude に自動的に呼び出させます:
またはスキル名で直接呼び出します:
どちらの方法でも、Claude は編集の短い要約とリスク一覧で応答するはずです。

スキルが存在する場所

スキルを保存する場所によって、誰がそれを使用できるかが決まります: スキルがレベル全体で同じ名前を共有する場合、enterprise は personal をオーバーライドし、personal はプロジェクトをオーバーライドします。プロジェクトの .claude/skills/ 内の code-review スキルなど、任意のレベルのスキルは、同じ名前のバンドルされたスキルもオーバーライドします。プラグインスキルは plugin-name:skill-name 名前空間を使用するため、他のレベルと競合することはできません。.claude/commands/ にファイルがある場合、それらは同じように機能しますが、スキルとコマンドが同じ名前を共有する場合、スキルが優先されます。 スキルは作業ディレクトリの下のネストされた .claude/skills/ ディレクトリからも読み込まれます。Claude がサブディレクトリ内のファイルを読み取りまたは編集する場合、そのサブディレクトリの .claude/skills/ からのスキルが利用可能になります。これにより、モノレポパッケージがセッションがリポジトリルートで開始された場合でも、そのパッケージで作業するときに適用される独自のスキルを提供できます。 ネストされたスキルが別のスキルと同じ名前を共有する場合、両方が利用可能なままです。たとえば、プロジェクトルートに deploy スキルがあり、apps/web/.claude/skills/ に別のスキルがある場合:
  • ネストされたスキルはディレクトリ修飾名 apps/web:deploy の下に表示されます。
  • その説明は、どのディレクトリに適用されるかを示します。
  • Claude は、作業しているファイルに一致するバリアントを選択します。
/deploy を入力するとプロジェクトルートスキルが実行されます。修飾名 /apps/web:deploy を入力してネストされたバリアントを明示的に実行します。 修飾されていない名前を呼び出すか Claude が呼び出すと、プロジェクトルートスキルが読み込まれ、Claude Code はディレクトリ修飾バリアントのリストをそのコンテンツに追加し、Claude が作業しているファイルを保持するディレクトリのバリアントも呼び出すように指示します。ネストされたスキルは、修飾されていない名前のみが呼び出される場合でも、そのディレクトリ内の作業に適用されます。Claude Code v2.1.203 以降が必要です。 <skill-name> エントリは enterprise、personal、またはプロジェクトの場所にあり、ディスク上の別の場所のディレクトリへのシンボリックリンクにすることができます。Claude Code はシンボリックリンクをたどり、ターゲットディレクトリから SKILL.md を読み取ります。同じターゲットが複数の場所から到達可能な場合、Claude Code はスキルを 1 回だけ読み込みます。プラグインスキルはシンボリックリンクを異なる方法で処理します。シンボリックリンクを使用してマーケットプレイス内でファイルを共有するを参照してください。
スキルフォルダに .claude-plugin/plugin.json を追加すると、<name>@skills-dir という名前のプラグインとして読み込まれるため、エージェント、hooks、および MCP サーバーをバンドルできます。プロジェクトの .claude/skills/ では、これはまずワークスペーストラストダイアログを受け入れる必要があります。

ライブ変更検出

Claude Code はスキルディレクトリのファイル変更を監視します。~/.claude/skills/、プロジェクト .claude/skills/、または --add-dir ディレクトリ内の .claude/skills/ の下でスキルを追加、編集、または削除すると、再起動せずに現在のセッション内で有効になります。セッション開始時に存在しなかった最上位のスキルディレクトリを作成するには、Claude Code を再起動して新しいディレクトリを監視できるようにする必要があります。
ライブ変更検出は SKILL.md テキストのみをカバーします。スキルフォルダがプラグインでもある場合、hooks/.mcp.jsonagents/、および output-styles/ への変更は /reload-plugins で有効になる必要があります。

親ディレクトリとネストされたディレクトリからの自動検出

プロジェクトスキルは開始ディレクトリの .claude/skills/ とリポジトリルートまでのすべての親ディレクトリから読み込まれるため、サブディレクトリで Claude を起動しても、ルートで定義されたスキルが取得されます。開始ディレクトリの下のサブディレクトリ内のファイルを操作する場合、Claude Code はネストされた .claude/skills/ ディレクトリからスキルをオンデマンドで検出します。たとえば、packages/frontend/ 内のファイルを編集している場合、Claude Code は packages/frontend/.claude/skills/ でもスキルを探します。これはパッケージが独自のスキルを持つモノレポセットアップをサポートします。 各スキルは SKILL.md をエントリポイントとするディレクトリです:
SKILL.md はメイン指示を含み、必須です。他のファイルはオプションで、より強力なスキルを構築できます。Claude が入力するテンプレート、期待される形式を示す出力例、Claude が実行できるスクリプト、または詳細なリファレンスドキュメント。SKILL.md からこれらのファイルを参照して、Claude が各ファイルの内容と読み込むタイミングを知るようにします。詳細については、サポートファイルを追加するを参照してください。
.claude/commands/ 内のファイルは引き続き機能し、同じフロントマターをサポートします。スキルはサポートファイルなどの追加機能をサポートするため、推奨されます。

追加ディレクトリからのスキル

--add-dir フラグと /add-dir コマンドはファイルアクセスを許可しますが、スキルは例外です。追加されたディレクトリ内の .claude/skills/ は自動的に読み込まれます。この例外は --add-dir/add-dir にのみ適用されます。settings.jsonpermissions.additionalDirectories 設定はファイルアクセスのみを許可し、スキルは読み込みません。ライブ変更検出を参照して、セッション中に編集がどのように取得されるかを確認してください。 その他の .claude/ 設定(コマンド、出力スタイル)は追加ディレクトリから読み込まれません。読み込まれるもの、読み込まれないもの、および設定をプロジェクト全体で共有するための推奨方法の完全なリストについては、例外テーブルを参照してください。
--add-dir ディレクトリの CLAUDE.md ファイルはデフォルトでは読み込まれません。読み込むには、CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 を設定します。追加ディレクトリから読み込むを参照してください。

スキルを設定する

スキルは SKILL.md の上部の YAML フロントマターと、その後に続くマークダウンコンテンツを通じて設定されます。

スキルコンテンツのタイプ

スキルファイルには任意の指示を含めることができますが、それらを呼び出す方法を考えることは、含める内容をガイドするのに役立ちます: リファレンスコンテンツ は Claude が現在の作業に適用する知識を追加します。規約、パターン、スタイルガイド、ドメイン知識。このコンテンツはインラインで実行されるため、Claude は会話コンテキストと一緒に使用できます。
タスクコンテンツ は Claude に特定のアクション(デプロイ、コミット、コード生成など)のステップバイステップの指示を提供します。これらは多くの場合、Claude が実行を決定するのではなく、/skill-name で直接呼び出したいアクションです。disable-model-invocation: true を追加して、Claude が自動的にトリガーするのを防ぎます。
SKILL.md には何でも含めることができますが、スキルを呼び出す方法(ユーザー、Claude、またはその両方)と実行場所(インラインまたはサブエージェント)を考えることは、含める内容をガイドするのに役立ちます。複雑なスキルの場合、サポートファイルを追加することで、メインスキルに焦点を当てることもできます。 本体自体は簡潔に保ちます。スキルが読み込まれると、そのコンテンツはターン全体でコンテキストに留まり、すべての行が繰り返されるトークンコストになります。実行内容を述べ、方法や理由を説明するのではなく、CLAUDE.md コンテンツに適用するのと同じ簡潔性テストを適用します。

フロントマターリファレンス

マークダウンコンテンツを超えて、SKILL.md ファイルの上部の --- マーカー間の YAML フロントマターフィールドを使用してスキルの動作を設定できます:
すべてのフィールドはオプションです。Claude がスキルをいつ使用するかを知るために、description のみが推奨されます。

スキルがコマンド名を取得する方法

スキルを呼び出すときに入力するコマンドは、スキルファイルが存在する場所から取得されます。フロントマター name フィールドはスキルリストに表示される表示ラベルを設定し、プラグインルート SKILL.md を除いて、/ の後に入力する内容を変更しません。 以下の表は、各レイアウトのコマンド名がどこから取得されるかを示しています: プラグインルートケースは、name がコマンド名を設定する唯一の場所です。スキルディレクトリがないためです。フロントマターで name が設定されていない場合、プラグインのディレクトリ名が代わりに使用されます。

利用可能な文字列置換

スキルはスキルコンテンツの動的値の文字列置換をサポートします: ${CLAUDE_PROJECT_DIR} 置換には Claude Code v2.1.196 以降が必要です。スキル本体と allowed-tools フロントマターの両方に適用されるため、Bash(${CLAUDE_PROJECT_DIR}/scripts/lint.sh *) のような権限ルールはスキル本体が使用するのと同じパスに解決されます。 インデックス付き引数はシェルスタイルのクォートを使用するため、複数単語の値をシングル引数として渡すためにクォートで囲みます。たとえば、/my-skill "hello world" second$0hello world に、$1second に展開します。$ARGUMENTS プレースホルダーは常に、入力されたとおりの完全な引数文字列に展開されます。 リテラル $ を数字、ARGUMENTS、または宣言された引数名の前に含めるには(例:$1.00 のような散文)、バックスラッシュでエスケープします:\$1.00。他の $ の前のバックスラッシュは変更されません。トークンの直前の単一バックスラッシュのみがそれをエスケープします。\\$1 のような二重バックスラッシュは両方のバックスラッシュをそのまま残し、$1 は引数値に展開されます。 置換を使用した例:

サポートファイルを追加する

スキルはディレクトリ内に複数のファイルを含めることができます。これにより、SKILL.md は本質的なものに焦点を当てながら、Claude は必要な場合にのみ詳細なリファレンス資料にアクセスできます。大規模なリファレンスドキュメント、API 仕様、または例のコレクションは、スキルが実行されるたびにコンテキストに読み込む必要はありません。
SKILL.md からサポートファイルを参照して、Claude が各ファイルの内容と読み込むタイミングを知るようにします:
SKILL.md を 500 行以下に保ちます。詳細なリファレンス資料を別のファイルに移動します。

スキルを呼び出すユーザーを制御する

デフォルトでは、ユーザーと Claude の両方がスキルを呼び出すことができます。/skill-name を入力して直接呼び出すことができ、Claude は会話に関連する場合に自動的にスキルを読み込むことができます。2 つのフロントマターフィールドでこれを制限できます:
  • disable-model-invocation: true:ユーザーのみがスキルを呼び出すことができます。/commit/deploy/send-slack-message など、副作用があるワークフロー、またはタイミングを制御したいワークフロー用です。コードが準備完了に見えるため、Claude がデプロイを決定することは望ましくありません。
  • user-invocable: false:Claude のみがスキルを呼び出すことができます。アクションとして実行できないバックグラウンド知識用です。legacy-system-context スキルは古いシステムの仕組みを説明します。Claude はこれが関連する場合に知っているべきですが、/legacy-system-context はユーザーが実行する意味のあるアクションではありません。
この例は、ユーザーのみがトリガーできるデプロイスキルを作成します。disable-model-invocation: true フィールドは Claude が自動的に実行するのを防ぎます:
2 つのフィールドが呼び出しとコンテキスト読み込みにどのように影響するかは次のとおりです:
通常のセッションでは、スキルの説明がコンテキストに読み込まれるため、Claude は利用可能なものを知っていますが、フルスキルコンテンツは呼び出されるときにのみ読み込まれます。プリロードされたスキルを持つサブエージェントは異なります。フルスキルコンテンツはスタートアップで注入されます。

スキルコンテンツのライフサイクル

ユーザーまたは Claude がスキルを呼び出すと、レンダリングされた SKILL.md コンテンツは会話に単一のメッセージとして入力され、セッションの残りの間そこに留まります。Claude Code は後のターンでスキルファイルを再度読み込まないため、タスク全体を通じて適用すべきガイダンスを 1 回限りのステップではなく、スタンディング指示として記述します。 v2.1.202 以降では、Claude が、レンダリングされたコンテンツが既にコンテキストにある複製と同じスキルを再度呼び出すと、Claude Code はスキルが既に読み込まれていることを示す短いメモを追加します。レンダリングされたコンテンツが異なる場合(引数が変更されたか、動的コンテキストコマンドが新しい出力を生成したため)、Claude Code は完全なコンテンツを再度追加します。v2.1.202 より前では、すべての再呼び出しはスキルの指示の別の完全なコピーを追加していました。 自動コンパクションは、トークン予算内で呼び出されたスキルを前方に運びます。会話が要約されてコンテキストを解放するとき、Claude Code は各スキルの最新の呼び出しを要約の後に再度アタッチし、最初の 5,000 トークンを保持します。再度アタッチされたスキルは 25,000 トークンの合計予算を共有します。Claude Code はこの予算を最近呼び出されたスキルから開始して埋めるため、セッション内で多くのスキルを呼び出した場合、古いスキルはコンパクション後に完全にドロップされる可能性があります。 スキルが最初の応答の後に動作に影響を与えるのを停止しているように見える場合、コンテンツは通常まだ存在し、モデルは他のツールまたはアプローチを選択しています。スキルの description と指示を強化して、モデルがそれを優先し続けるようにするか、フックを使用して動作を決定的に強制します。スキルが大きいか、その後に他のスキルを多く呼び出した場合、コンパクション後にそれを再度呼び出して、フルコンテンツを復元します。

スキルのツールを事前承認する

allowed-tools フィールドは、スキルがアクティブな場合、リストされたツールの権限を付与するため、Claude はあなたに承認を求めることなくそれらを使用できます。これは利用可能なツールを制限しません。すべてのツールは呼び出し可能なままであり、権限設定は引き続き、リストされていないツールのツール承認を管理します。 プロジェクトの .claude/skills/ ディレクトリにチェックインされたスキルの場合、allowed-tools はそのフォルダーのワークスペーストラストダイアログを受け入れた後に有効になります。これは .claude/settings.json の権限ルールと同じです。スキルが広範なツールアクセスを許可できるため、リポジトリを信頼する前にプロジェクトスキルを確認してください。 このスキルは、スキルを呼び出すときはいつでも、Claude が git コマンドを実行できるようにします:
スキルが特定のツールを使用するのをブロックするには、代わりに権限設定に拒否ルールを追加します。

スキルに引数を渡す

ユーザーと Claude の両方がスキルを呼び出すときに引数を渡すことができます。引数は $ARGUMENTS プレースホルダーを通じて利用可能です。 このスキルは GitHub の問題を番号で修正します。$ARGUMENTS プレースホルダーはスキル名の後に続くものに置き換えられます:
/fix-issue 123 を実行すると、Claude は「Fix GitHub issue 123 following our coding standards…」を受け取ります。 引数を使用してスキルを呼び出しても、スキルに $ARGUMENTS が含まれていない場合、Claude Code はスキルコンテンツの最後に ARGUMENTS: <your input> を追加するため、Claude は入力したものを引き続き見ることができます。 ユーザーと Claude の両方が 1 つのメッセージの開始時に複数のスキルをスタックできます。v2.1.199 以降では、/code-review /fix-issue 123 を入力すると、両方のスキルが読み込まれ、末尾のテキスト 123$ARGUMENTS として各スキルに渡されます。以前のバージョンでは、最初のスキルのみが読み込まれ、/fix-issue 123 をリテラル引数テキストとして受け取りました。 Claude Code は最初のスキルと、その後にスタックされた最大 5 つのスキルを展開します。展開は、インラインユーザー呼び出し可能スキルではない最初のトークンで停止するため、フォークされたサブエージェントとして実行されるスキル、または /loop など、その引数自体がスラッシュコマンドで始まる可能性があるスキルも、そこで実行を終了します。そのトークンとそれ以降のすべてが、すべての展開されたスキルの引数テキストになります。 位置で個別の引数にアクセスするには、$ARGUMENTS[N] または短い $N を使用します:
/migrate-component SearchBar React Vue を実行すると、$ARGUMENTS[0]SearchBar に、$ARGUMENTS[1]React に、$ARGUMENTS[2]Vue に置き換えられます。$N 短縮形を使用する同じスキル:

高度なパターン

動的コンテキストを注入する

!`<command>` 構文はスキルコンテンツが Claude に送信される前にシェルコマンドを実行します。コマンド出力はプレースホルダーを置き換えるため、Claude はコマンド自体ではなく実際のデータを受け取ります。 このスキルは GitHub CLI でライブ PR データを取得することで、プルリクエストを要約します。!`gh pr diff` および他のコマンドが最初に実行され、その出力がプロンプトに挿入されます:
このスキルが実行されるとき:
  1. !`<command>` が直ちに実行されます(Claude が何かを見る前に)
  2. 出力はスキルコンテンツのプレースホルダーを置き換えます
  3. Claude は実際の PR データを含む完全にレンダリングされたプロンプトを受け取ります
これは前処理であり、Claude が実行するものではありません。Claude は最終結果のみを見ます。 置換は元のファイルに対して 1 回実行されます。コマンド出力はプレーンテキストとして挿入され、さらに !`<command>` プレースホルダーについて再スキャンされないため、コマンドは後のパスで展開するプレースホルダーを発行することはできません。 インラインフォームは、! が行の開始時または空白の直後に表示される場合にのみ認識されます。! が別の文字の後に続く場合(KEY=!`cmd` など)、プレースホルダーはリテラルテキストとして残され、コマンドは実行されません。 複数行のコマンドの場合、インラインフォームの代わりに、```! で開かれたフェンスコードブロックを使用します:
ユーザー、プロジェクト、プラグイン、または追加ディレクトリソースからのスキルとカスタムコマンドについて、この動作を無効にするには、設定"disableSkillShellExecution": true を設定します。各コマンドは [shell command execution disabled by policy] に置き換えられます。バンドルされたスキルと管理スキルは影響を受けません。この設定は管理設定で最も有用です。ユーザーはそれをオーバーライドできません。
スキルで深い推論をリクエストするには、スキルコンテンツのどこかに ultrathink を含めます。ワンオフの深い推論に ultrathink を使用するを参照してください。

スキルをサブエージェントで実行する

スキルを分離して実行したい場合は、フロントマターに context: fork を追加します。スキルコンテンツはサブエージェントを駆動するプロンプトになります。会話履歴にアクセスできません。
context: fork は明示的な指示を含むスキルにのみ意味があります。スキルにタスクなしで「これらの API 規約を使用する」などのガイドラインが含まれている場合、サブエージェントはガイドラインを受け取りますが、実行可能なプロンプトがなく、意味のある出力なしで返されます。
スキルとサブエージェントは 2 つの方向で連携します: context: fork を使用すると、スキルにタスクを記述し、実行するエージェントタイプを選択します。組み込みの Explore および Plan エージェントはCLAUDE.md と git status をスキップしてコンテキストを小さく保つため、agent: Explore を使用するフォークされたスキルは SKILL.md コンテンツとエージェント自体のシステムプロンプトのみを見ます。逆の場合(スキルをリファレンス資料として使用するカスタムサブエージェントを定義する)については、サブエージェントを参照してください。

例:Explore エージェントを使用した研究スキル

このスキルはフォークされた Explore エージェントで研究を実行します。スキルコンテンツはタスクになり、エージェントはコードベース探索に最適化された読み取り専用ツールを提供します:
このスキルが実行されるとき:
  1. 新しい分離されたコンテキストが作成されます
  2. サブエージェントはスキルコンテンツをプロンプト(「$ARGUMENTS を徹底的に調査…」)として受け取ります
  3. agent フィールドは実行環境(モデル、ツール、権限)を決定します
  4. 結果は要約され、メイン会話に返されます
agent フィールドは使用するサブエージェント設定を指定します。オプションには、組み込みエージェント(ExplorePlangeneral-purpose)または .claude/agents/ からのカスタムサブエージェントが含まれます。省略した場合、general-purpose を使用します。

Claude のスキルアクセスを制限する

デフォルトでは、Claude は disable-model-invocation: true が設定されていないスキルを呼び出すことができます。allowed-tools を定義するスキルは、スキルがアクティブな場合、これらのツールへのアクセスを許可なしで Claude に付与します。権限設定は引き続き、他のすべてのツールのベースライン承認動作を管理します。/init/review/security-review などの組み込みコマンドも Skill ツールを通じて利用可能です。/compact などの他の組み込みコマンドはそうではありません。 Claude が呼び出すことができるスキルを制御する 3 つの方法: すべてのスキルを無効にする には、/permissions で Skill ツールを拒否します:
特定のスキルを許可または拒否する には、権限ルールを使用します:
権限構文:完全一致の場合は Skill(name)、任意の引数を含むプレフィックス一致の場合は Skill(name *) 個別のスキルを非表示にする には、フロントマターに disable-model-invocation: true を追加します。これにより、スキルが Claude のコンテキストから完全に削除されます。
user-invocable フィールドはメニューの可視性のみを制御し、Skill ツールアクセスは制御しません。プログラムによる呼び出しをブロックするには disable-model-invocation: true を使用します。

設定からスキルの可視性をオーバーライドする

skillOverrides 設定は、スキル自体のフロントマターではなく、設定からスキルの可視性を制御します。共有プロジェクトリポジトリにチェックインされたスキルや MCP サーバーによって提供されるスキルなど、SKILL.md を編集したくないスキルに使用します。/skills メニューはあなたのために書きます:スキルをハイライトして Space を押して状態をサイクルし、Enter を押して .claude/settings.local.json に保存します。 各キーはスキル名で、各値は 4 つの状態のいずれかです: v2.1.199 以降、"off" はターミナル / メニューだけでなく、Remote ControlクライアントとAgent SDK呼び出し元に通知されるコマンドリストからもスキルを非表示にします。非表示のスキルをその完全な名前で呼び出すと、実行する代わりに skillOverrides エラーが返されます。 skillOverrides に存在しないスキルは "on" として扱われます。以下の例は 1 つのスキルを名前に折りたたみ、別のスキルを完全にオフにします:
プラグインスキルは skillOverrides の影響を受けません。代わりに /plugin を通じてそれらを管理します。

スキルを評価して反復する

スキルがトリガーされるのを見ることは、Claude がそれを見つけたことを示しており、意図したことをしたことを示していません。スキルが機能していることを知るには、2 つのことを別々に測定します。Claude がそれを呼び出すべきプロンプトでそれを呼び出すかどうか、および実行するときの出力が期待と一致するかどうか。 両方のチェックはベースライン比較です。いくつかの現実的なプロンプトを収集し、スキルが利用可能な新しいセッションで各プロンプトを実行し、無効にされた状態で再度実行し、結果を比較します。新しいセッションが重要です。スキルの作成から残っているコンテキストは、書かれた指示のギャップをマスクするためです。

skill-creator でエバルを実行する

skill-creator プラグインは Claude Code 内で比較ループを自動化します。公式マーケットプレイスからインストールします:
Claude Code がプラグインがマーケットプレイスに見つからないと報告する場合、マーケットプレイスが見つからないか古い可能性があります。/plugin marketplace update claude-plugins-official を実行してリフレッシュするか、まだ追加していない場合は /plugin marketplace add anthropics/claude-plugins-official を実行します。その後、インストールを再試行します。 インストール後、/reload-plugins を実行して、プラグインのスキルを現在のセッションで利用可能にします。その後、Claude に既存のスキルを評価するよう依頼します。たとえば、evaluate my summarize-changes skill with skill-creator。プラグインはテストケースを記述するプロセスを案内し、ループを実行します:
  • テストケース:プロンプト、入力ファイル、および期待される動作をスキルディレクトリ内の evals/evals.json に保存します
  • 分離実行:テストケースごとにサブエージェントを生成して、各実行がクリーンなコンテキストで開始され、トークン数と期間を記録します
  • グレーディング:各アサーションを出力に対してチェックし、grading.json にパスまたはフェイルを証拠とともに記述します
  • ベンチマーク:パス率、時間、トークンをスキルなしとスキルありで集約して benchmark.json に記述するため、パス率の改善をトークンと時間のオーバーヘッドと比較できます
  • バージョン比較:2 つのバージョンのスキル間でブラインド A/B を実行して、コミット前に編集が改善であることを確認します
  • 説明チューニング:トリガーすべきおよびトリガーすべきでないプロンプトを生成し、ヒット率を測定し、スキルが間違ったリクエストでアクティブ化されるときに説明編集を提案します
  • レビュービューア:各出力を検査し、定性的フィードバックを記録できる HTML レポートを開きます。次の反復がこれを読みます
eval ファイル形式と完全な反復ワークフローについては、agentskills.io のスキル出力品質の評価を参照してください。ベンチマークと比較モードの背景については、skill-creator アナウンスメントを参照してください。

スキルを共有する

スキルはオーディエンスに応じて異なるスコープで配布できます:
  • プロジェクトスキル.claude/skills/ をバージョン管理にコミットします
  • プラグインプラグインskills/ ディレクトリを作成します
  • 管理管理設定を通じて組織全体にデプロイします

視覚的な出力を生成する

スキルは任意の言語でスクリプトをバンドルして実行でき、Claude に単一のプロンプトで可能なもの以上の機能を提供します。1 つの強力なパターンは視覚的な出力を生成することです。ブラウザで開くインタラクティブな HTML ファイルで、データの探索、デバッグ、またはレポートの作成に使用できます。 この例はコードベースエクスプローラーを作成します。ディレクトリを展開および折りたたむことができるインタラクティブなツリービュー、一目でファイルサイズを確認でき、ファイルタイプを色で識別できます。 スキルディレクトリを作成します:
~/.claude/skills/codebase-visualizer/SKILL.md に保存します。説明は Claude にこのスキルをいつアクティブにするかを伝え、指示は Claude にバンドルされたスクリプトを実行するよう伝えます。スクリプトパスは ${CLAUDE_SKILL_DIR} を使用するため、スキルが個人、プロジェクト、またはプラグインレベルでインストールされているかどうかに関わらず、正しく解決されます:
~/.claude/skills/codebase-visualizer/scripts/visualize.py に保存します。このスクリプトはディレクトリツリーをスキャンし、以下を含む自己完結型の HTML ファイルを生成します:
  • ファイル数、ディレクトリ数、合計サイズ、ファイルタイプ数を示すサマリーサイドバー
  • コードベースをファイルタイプ別に分類する棒グラフ(サイズ別トップ 8)
  • ディレクトリを展開および折りたたむことができる折りたたみ可能なツリー(色分けされたファイルタイプインジケーター付き)
スクリプトは Python 3 が必要ですが、組み込みライブラリのみを使用するため、インストールするパッケージはありません:
テストするには、任意のプロジェクトで Claude Code を開き、「Visualize this codebase」と尋ねます。Claude はスクリプトを実行し、codebase-map.html を生成し、ブラウザで開きます。 このパターンは任意の視覚的な出力に機能します。依存関係グラフ、テストカバレッジレポート、API ドキュメント、またはデータベーススキーマの視覚化。バンドルされたスクリプトが重い処理を行い、Claude が調整を処理します。

トラブルシューティング

スキルがトリガーされない

Claude がスキルを期待どおりに使用しない場合:
  1. 説明にユーザーが自然に言うキーワードが含まれていることを確認します
  2. スキルが「利用可能なスキルは何ですか?」に表示されることを確認します
  3. 説明により密接に一致するようにリクエストを言い換えてみます
  4. スキルがユーザー呼び出し可能な場合は、/skill-name で直接呼び出してみます
frontmatter YAML が不正な形式の場合、Claude Code はスキル本体を空のメタデータで読み込むため、/skill-name は引き続き機能しますが、Claude は一致させるための description を持ちません。--debug で実行してパースエラーを確認します。

スキルが頻繁にトリガーされる

Claude がスキルを使用したくない場合:
  1. 説明をより具体的にします
  2. 手動呼び出しのみを希望する場合は、disable-model-invocation: true を追加します

スキルの説明が短縮される

Claude Code はスキル名と説明のリストをコンテキストに読み込むため、Claude は利用可能なものを知っています。リストには常にすべてのスキル名が含まれていますが、多くのスキルがある場合、Claude Code はリストの文字予算に合わせて説明を短縮する可能性があり、Claude が要求と一致するために必要なキーワードを削除できます。予算はモデルのコンテキストウィンドウの 1% でスケーリングされます。リストがオーバーフローすると、Claude Code は最も呼び出しが少ないスキルから説明を削除するため、最も使用するスキルは完全なテキストを保持します。 /doctor を実行して、リストのコンテキストコストとその最大の貢献者の推定値を確認します。リストが予算を超えると、Claude Code はデバッグログに警告も書き込みます。これは --debug で表示できます。 /context のスキル行は予算が適用された後のリストのサイズを報告するため、モデルが受け取るものと一致します。v2.1.196 より前は、この行はすべての説明の完全なテキストをカウントしていたため、設定された予算より数倍大きい値を表示できました。 予算を上げるには、skillListingBudgetFraction 設定(例:0.02 = 2%)または SLASH_COMMAND_TOOL_CHAR_BUDGET 環境変数を固定文字数に設定します。他のスキルの予算を解放するには、skillOverrides で低優先度のエントリを "name-only" に設定して、説明なしでリストアップします。ソースで descriptionwhen_to_use テキストをトリミングすることもできます。各エントリの組み合わせテキストは予算に関係なく 1,536 文字でキャップされているため、主要なユースケースを前置きしてください。キャップは skillListingMaxDescChars で設定可能です。
  • 設定をデバッグする:スキルが表示されない、またはトリガーされない理由を診断する
  • スキル出力品質の評価:agentskills.io の eval ファイル形式と反復ワークフロー
  • スキル作成のベストプラクティス:Claude 製品全体に適用される作成ガイダンス
  • サブエージェント:特化したエージェントにタスクを委任する
  • プラグイン:他の拡張機能でスキルをパッケージ化して配布する
  • フック:ツールイベント周辺のワークフローを自動化する
  • メモリ:永続的なコンテキストのための CLAUDE.md ファイルを管理する
  • コマンド:組み込みコマンドとバンドルされたスキルのリファレンス
  • 権限:ツールとスキルアクセスを制御する
  • Claude Tag スキル:リポジトリにコミットされたプロジェクトスキルは、そのリポジトリが Claude Tag チャネルで使用される場合にも読み込まれます