CoreCodeブログ

ガイド

Claude Code のスキルの使い方と SKILL.md の書き方

公開日: · 最終確認:

スキルは、指示を書いた SKILL.md ファイルです。Claude は関連があるときにそれを使い、/skill-name で直接呼び出すこともできます。このページでは、Anthropic の Extend Claude with skills のドキュメントに沿って、最初のスキルの作り方、スキルの置き場所、frontmatter の書き方、誰がスキルを呼び出すかの制御、スキルが発動しないときの確認点を説明します。ドキュメントは 2026 年 10 月 30 日に確認しました。

ポイント
  • SKILL.md ファイルを作ると、Claude はそれを自分の道具に加えます。Claude は関連があるときにそれを使い、あなたは /skill-name で直接呼び出せます。
  • 個人用のスキルは ~/.claude/skills/<skill-name>/SKILL.md、プロジェクト用のスキルは .claude/skills/<skill-name>/SKILL.md に置きます。名前が衝突したときは、enterprise が personal より、personal が project より優先されます。
  • すべてのフィールドは任意です。推奨されるのは description だけで、Claude がスキルをいつ適用するか判断するのに使うからです。
  • Claude が自分でスキルを使わないようにするには、frontmatter で disable-model-invocation: true を設定します。
  • カスタムコマンドはスキルに統合されました。.claude/commands/deploy.md と .claude/skills/deploy/SKILL.md はどちらも /deploy を作り、同じように動作します。

スキルを書くタイミング

ドキュメントの基準は次のとおりです。同じ指示、チェックリスト、複数ステップの手順を何度もチャットに貼り付けている、または CLAUDE.md の一部が事実ではなく手順に育ってしまっている場合です。CLAUDE.md の内容と違って、スキルの本文は使われたときにだけ読み込まれるので、長い参考資料も、必要になるまではほとんどコストがかかりません。CLAUDE.md については、CLAUDE.md の書き方を参照してください。

ドキュメントはまた、カスタムコマンドがスキルに統合されたとも述べています。.claude/commands/deploy.md のファイルと .claude/skills/deploy/SKILL.md のスキルは、どちらも /deploy を作り、同じように動作し、既存の .claude/commands/ のファイルも引き続き動きます。スキルが加えるのは、補助ファイルを置くディレクトリ、あなたが呼ぶか Claude が呼ぶかを制御する frontmatter、そして関連があるときに Claude が自動で読み込めることです。

最初のスキルを作る

この例はドキュメントにあるもので、git リポジトリのコミットされていない変更を要約し、危険な点を指摘するスキルです。まず、個人用のスキルフォルダにそのディレクトリを作ります。個人用のスキルは、すべてのプロジェクトで使えます。

mkdir -p ~/.claude/skills/summarize-changes

次に、SKILL.md を書きます。すべてのスキルにこのファイルが必要で、2 つの部分から成ります。Claude にスキルをいつ使うかを伝える、--- マーカーで囲んだ YAML の frontmatter と、スキルの実行時に Claude が従う指示を書いた markdown の内容です。

---
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
---

## Current changes

!`git diff HEAD`

## Instructions

Summarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.

ディレクトリ名(name を frontmatter に設定した場合はその名前)が、入力するコマンドになり、description は、Claude がスキルを自動で読み込むタイミングを判断する助けになります。!`git diff HEAD` の行は動的コンテキストの注入を使います。Claude Code はそのコマンドを実行し、Claude がスキルの内容を見る前に、その行を出力で置き換えるので、指示には現在の diff がすでに埋め込まれた状態で届きます。

最後に、試します。git のプロジェクトを開き、任意のファイルを少し編集して、claude を実行して Claude Code を起動します。どちらの方法でも動きます。

What did I change?     # matches the description, so Claude can invoke it automatically
/summarize-changes     # or invoke it directly with the skill name

どちらの場合も、Claude は編集内容の短い要約と、リスクの一覧を返すはずです。

スキルの置き場所

スキルを保存する場所で、どのセッションがそれを読み込むかが決まります。ホームディレクトリの下に保存すればすべてのプロジェクトで使え、リポジトリにコミットすればそこで作業する全員と共有でき、プラグインや managed settings で配布すればチーム全体に届けられます。

場所パス読み込まれる範囲
Enterprisemanaged settings ディレクトリの .claude/skills/<skill-name>/SKILL.md組織がデプロイしたマシン上のすべてのユーザー
Personal~/.claude/skills/<skill-name>/SKILL.mdこのマシン上の自分のすべてのプロジェクト(Cowork やクラウドセッションは除く)
Project.claude/skills/<skill-name>/SKILL.mdこのリポジトリのセッション。コミットすれば、チームも使える
Nested<subdir>/.claude/skills/<skill-name>/SKILL.md<subdir> 内またはその下で始めたセッション。それより上で始めたセッションは、Claude がそこのファイルを扱った時点でスキルを読み込む
Additional directory--add-dir で渡したディレクトリの .claude/skills/<skill-name>/SKILL.mdそのセッション
Plugin<plugin>/skills/<skill-name>/SKILL.mdプラグインが有効な場所すべて。/plugin-name:skill-name として

2 つのスキルが同じ名前を持つ場合です(ドキュメントの表からの抜粋)。

もう 1 つのルールがあります。始めた場所より下の .claude/skills/ ディレクトリにあるスキルは、起動時には読み込まれません。Claude がそのサブディレクトリのファイルを初めて読むか編集したときに読み込まれます。それまでは、/ メニューに現れず、名前で呼び出すこともできません。

スキルを変更した後に、再起動する必要はありません。Claude Code はスキルのディレクトリを監視しているので、~/.claude/skills/ やプロジェクトの .claude/skills/ の下でスキルを追加、編集、削除すると、現在のセッション内で反映されます。セッションの開始時に存在しなかったトップレベルのスキルディレクトリを作った場合は、/reload-skills を実行します。

特に重要な frontmatter のフィールド

すべてのフィールドは任意です。推奨されるのは description だけです。フィールド名は、ハイフンも含めて表と完全に一致させる必要があります。Claude Code は、認識できないフィールドをエラーを出さずに無視します。真偽値のフィールドは、true と false に加えて、yes、no、on、off、1、0 を、大文字小文字を問わず受け付けます。

フィールド必須内容
nameいいえ/ メニューに表示されるコマンド名。デフォルトはディレクトリ名です。
description推奨スキルが何をするか、いつ使うか。Claude はこれを使って、スキルをいつ適用するかを判断します。省略した場合は、markdown の内容の最初の空でない行が使われます。
when_to_useいいえClaude がスキルをいつ呼び出すべきかの補足で、トリガーとなるフレーズや依頼の例など。description に追加され、1,536 文字の上限に含まれます。
argument-hintいいえオートコンプリート中に、[issue-number] や [filename] [format] のように、期待される引数を示すヒントとして表示されます。
argumentsいいえスキルの内容での $name の置換に使う、名前付きの位置引数。スペース区切りの文字列か YAML のリストを受け付けます。
disable-model-invocationいいえtrue に設定すると、Claude がこのスキルを自動で読み込むのを防ぎます。/name で手動で実行したいワークフローに使います。デフォルト:false。
user-invocableいいえClaude だけがスキルを呼び出せるようにするには false に設定します。Claude Code は / メニューからそれを隠し、/name と入力しても実行しません。デフォルト:true。
allowed-toolsいいえこのスキルを呼び出すターンの間、Claude が許可を求めずに使えるツール。この許可は、次のメッセージを送ると解除されます。
pathsいいえこのスキルが有効になる条件を限定する glob パターン。設定すると、Claude はパターンに一致するファイルを扱うときにだけ、スキルを自動で読み込みます。
contextいいえfork に設定すると、フォークされたサブエージェントのコンテキストで実行します。

ドキュメントには、model、effort、agent、background、hooks、shell、metadata、license、compatibility など、さらに多くのフィールドが載っていますが、ここでは扱いません。1 つ注意点があります。Claude Code が frontmatter を読むのは、先頭の --- がファイルの 1 行目にあるときだけです。そうでない場合は、--- マーカーを含むファイル全体を、スキルの内容として扱います。

自分で呼び出すか、Claude に任せるか

デフォルトでは、あなたも Claude も、どのスキルでも呼び出せます。/skill-name と入力して直接呼び出すことができ、Claude は会話に関連があるときにそれを自動で読み込めます。これを制限する frontmatter のフィールドが 2 つあります。

Frontmatterあなたが呼び出せるClaude が呼び出せるコンテキストに読み込まれるタイミング
(デフォルト)はいはい説明は常にコンテキストにあり、スキル全体は呼び出されたときに読み込まれる
disable-model-invocation: trueはい自分では呼び出せない説明はコンテキストになく、スキル全体は呼び出されたときに読み込まれる
user-invocable: falseいいえはい説明は常にコンテキストにあり、スキル全体は呼び出されたときに読み込まれる

ドキュメントにある deploy の例です。

---
name: deploy
description: Deploy the application to production
disable-model-invocation: true
---

Deploy $ARGUMENTS to production:

1. Run the test suite
2. Build the application
3. Push to the deployment target
4. Verify the deployment succeeded

それでも Claude が呼び出そうとすると、Claude Code はその呼び出しをブロックし、デプロイの手順を別の方法で再現しないよう指示します。そのため、Claude は /deploy を自分で実行するよう提案してくるはずです。

スキルを直接実行するには、メッセージの先頭にその名前を置きます。/deploy staging はスキルを直接実行します。go ahead and /deploy to staging のように普通の文章の後ろに置いた場合は、直接実行されません。その名前は、そのメッセージに限ってあなたの許可として扱われ、Claude は応答中にそのスキルを実行でき、あなたの言い回しから、実行を依頼されたかどうかを判断します。実行を許可せずにそのスキルについて書くには、スラッシュを付けないでください。

引数と補助ファイル

スキルを呼び出すとき、あなたも Claude も引数を渡せます。引数は $ARGUMENTS プレースホルダーで使え、スキル名の後ろに続くものに置き換えられます。

---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---

Fix GitHub issue $ARGUMENTS following our coding standards.

1. Read the issue description
2. Understand the requirements
3. Implement the fix
4. Write tests
5. Create a commit

/fix-issue 123 を実行すると、Claude は「Fix GitHub issue 123 following our coding standards...」を受け取ります。個々の引数を位置で参照するには、$ARGUMENTS[N] か、より短い $N を使います。引数付きでスキルを呼び出したのに、スキルの内容にそれを受け取るプレースホルダーがない場合、Claude Code はスキルの内容の末尾に ARGUMENTS: <your input> を追加するので、Claude はあなたが入力したものを引き続き見られます。

スキルのディレクトリには、複数のファイルを置けます。これにより、SKILL.md を要点に絞りつつ、詳細な参考資料を、必要なときにだけ Claude に読ませられます。

my-skill/
├── SKILL.md (required - overview and navigation)
├── reference.md (detailed API docs - loaded when needed)
├── examples.md (usage examples - loaded when needed)
└── scripts/
    └── helper.py (utility script - executed, not loaded)

補助ファイルを SKILL.md から参照して、各ファイルの内容と、いつ読み込むべきかを Claude に伝えます。

## Additional resources

- For complete API details, see [reference.md](reference.md)
- For usage examples, see [examples.md](examples.md)

ドキュメントのヒントは、SKILL.md を 500 行以内に保ち、詳細な参考資料は別のファイルに移すことです。

良い description の書き方

トラブルシューティング

スキルが発動しない

frontmatter の YAML が不正な場合、Claude Code はスキルの本文を空のメタデータで読み込むので、/skill-name は引き続き動きますが、Claude は description との照合ができません。--debug を付けて実行すると、解析エラーが表示されます。frontmatter が解析できない SKILL.md ファイルを見つけるには、スキルのディレクトリに対して claude plugin validate を実行します。たとえば claude plugin validate .claude/skills や claude plugin validate ~/.claude/skills です。Claude Code v2.1.233 以降が必要です。

スキルが発動しすぎる

description をより具体的にします。手動での呼び出しだけにしたい場合は、disable-model-invocation: true を追加します。

Claude がスキルに従わなくなる

スキルが呼び出されると、Claude Code はその内容を会話に追加し、以降のターンではファイルを読み直しません。そのため、タスク全体に当てはまる指針は、「Run the tests」ではなく「Run the tests after every edit」のように書きます。コンパクトの後、Claude Code は、呼び出されたスキルの先頭部分だけを保持することがあるので、最も重要な指示は SKILL.md の冒頭近くに置き、スキルをもう一度呼び出して、全体の内容を復元してください。毎回必ず守らせたいルールには、ドキュメントは代わりにフックを勧めています。

description が途中で切れる

スキルが多いと、Claude Code は一覧の文字数の予算に収めるために一部の description を落とし、Claude があなたの依頼と照合するのに必要なキーワードが失われます。予算はモデルのコンテキストウィンドウの 1% に比例し、description は、あなたが呼び出す頻度の低いスキルから順に落とされます。/doctor を実行すると、一覧のコンテキストコストの見積もりと、最も大きな要因が分かります。

FAQ

古い .claude/commands/ のファイルは、まだ動きますか?

はい。ドキュメントによると、カスタムコマンドはスキルに統合され、既存の .claude/commands/ のファイルも引き続き動作します。name と paths を除いて、同じ frontmatter に対応しています。スキルは補助ファイルにも対応しているので、新しく作るならスキルを優先してください。スキルと .claude/commands/ のファイルが同じ名前の場合は、スキルが優先されます。

Claude がスキルを自動で使わないようにするには?

frontmatter に disable-model-invocation: true を追加します。これで、Claude はそのスキルを自分で呼び出せなくなり、/name と入力したときだけ実行されます。ファイルを編集したくない場合は、ドキュメントによると、skillOverrides でそのスキルを "user-invocable-only" に設定することもできます。

CLAUDE.md に書くものと、スキルに書くものの違いは?

ドキュメントによると、手順に育ってしまった CLAUDE.md の一部はスキルの候補です。CLAUDE.md の内容と違って、スキルの本文は使われたときにだけ読み込まれるからです。CLAUDE.md の書き方は CLAUDE.md の書き方を、Claude Code のインストールと接続は Claude Code のセットアップを参照してください。

参考資料