Claude Code を使っていて、「毎回同じ指示を出すのが面倒だな」「自分のプロジェクトに合わせた動きをしてほしいな」と思ったことはありませんか? そんな悩みを解決してくれるのが 「スキル」 機能です。
この記事では、Claude Code のスキル機能について、基本的な概念から実際の作り方、活用パターンまで、初心者の方にも分かりやすく解説していきます。
スキルとは何か?
スキルとは、Claude Code にオリジナルの機能や知識を追加する仕組みです。
具体的には、SKILL.md というマークダウンファイルに「こういうときは、こう動いてね」という指示を書いておくと、Claude がそれを自分のツールキットに取り込んでくれます。一度作れば、会話の中で関連する場面に自動的に適用されたり、/スキル名 というスラッシュコマンドで直接呼び出すこともできます。
たとえば、こんなスキルが作れます。
- コードレビューの際に必ずセキュリティチェックを含めるスキル
- Git コミット時に特定のフォーマットでメッセージを書くスキル
- プロジェクト独自の API 設計ルールを適用するスキル
イメージとしては、Claude Code に渡す「マニュアル」や「チートシート」を作るようなものです。
従来のカスタムコマンドとの関係
以前から .claude/commands/ にファイルを置くことでカスタムスラッシュコマンドを作ることができましたが、スキルはその進化版です。既存のカスタムコマンドはそのまま動作しますが、スキルはサポートファイルの追加や自動呼び出しの制御など、より高機能になっています。今後はスキルを使う形が推奨されています。
はじめてのスキルを作ってみよう
ここでは、「コードを説明するときに、図解と例え話を使って分かりやすく教えてくれるスキル」を実際に作ってみましょう。
ステップ 1:スキル用のディレクトリを作成する
まず、スキルを保存するフォルダを作ります。ホームディレクトリ配下の ~/.claude/skills/ に作ると、すべてのプロジェクトで使える「個人スキル」になります。
mkdir -p ~/.claude/skills/explain-code
ステップ 2:SKILL.md を書く
スキルの本体は SKILL.md ファイルです。このファイルは大きく2つのパートで構成されています。
- フロントマター(YAML):
---で囲まれた部分。スキルの名前や説明を書く - マークダウン本文:Claude への具体的な指示を書く
先ほど作ったディレクトリに SKILL.md を作成しましょう。
---
name: explain-code
description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"
---
When explaining code, always include:
1. **Start with an analogy**: Compare the code to something from everyday life
2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships
3. **Walk through the code**: Explain step-by-step what happens
4. **Highlight a gotcha**: What's a common mistake or misconception?
Keep explanations conversational. For complex concepts, use multiple analogies.
name フィールドがそのままスラッシュコマンド名(/explain-code)になり、description は Claude がこのスキルを自動で使うかどうかの判断材料になります。
ステップ 3:テストする
作ったスキルは2つの方法で呼び出せます。
方法 A:自然に質問する(description に一致すると Claude が自動で適用)
How does this code work?
方法 B:スラッシュコマンドで直接呼び出す
/explain-code src/auth/login.ts
どちらの方法でも、Claude の回答に例え話やASCIIダイアグラムが含まれるようになるはずです。
スキルの保存場所と適用範囲
スキルをどこに保存するかで、誰が使えるかが変わります。用途に応じて適切な場所を選びましょう。
| 保存場所 | パス | 使える範囲 |
|---|---|---|
| Enterprise | 管理設定で配布 | 組織内の全ユーザー |
| Personal | ~/.claude/skills/<スキル名>/SKILL.md | 自分の全プロジェクト |
| Project | .claude/skills/<スキル名>/SKILL.md | そのプロジェクトのみ |
| Plugin | <プラグイン>/skills/<スキル名>/SKILL.md | プラグイン有効時 |
個人の生産性向上なら Personal、チームで共有したいなら Project(Git管理)という使い分けが基本になります。なお、同じ名前のスキルが複数の場所にある場合、Project スキルが Personal スキルを上書きします。
スキルのディレクトリ構成
スキルは SKILL.md 1ファイルだけでも動きますが、ディレクトリとして構成することで、テンプレートやスクリプトなどのサポートファイルを含めることもできます。
my-skill/
├── SKILL.md # メイン指示ファイル(必須)
├── template.md # Claude が記入するテンプレート
├── examples/
│ └── sample.md # 期待する出力の例
└── scripts/
└── validate.sh # Claude が実行できるスクリプト
フロントマターで動作を細かく制御する
SKILL.md の冒頭にあるフロントマター(YAML部分)では、スキルの動作をさまざまに設定できます。すべてのフィールドはオプションですが、description だけは書いておくことをおすすめします。
主要なフィールドを紹介します。
name
スキルの表示名で、スラッシュコマンド名にもなります。省略するとディレクトリ名が使われます。小文字・数字・ハイフンのみ、最大64文字です。
description
スキルの説明文です。Claude はこの説明を読んで、「今の会話にこのスキルを適用すべきか?」を判断します。ここに、ユーザーが自然に使いそうなキーワードを含めておくと、自動呼び出しの精度が上がります。
disable-model-invocation
true にすると、Claude が自動的にこのスキルを使うことを禁止します。デプロイやメッセージ送信など、ユーザーが明示的に実行タイミングを決めたい操作に使います。
allowed-tools
スキルがアクティブな場合に Claude が使えるツールを制限します。たとえば allowed-tools: Read, Grep, Glob と書けば、ファイルの読み取りだけに限定する「読み取り専用モード」が作れます。
context
fork に設定すると、スキルをサブエージェント(独立したコンテキスト)で実行します。メインの会話履歴とは切り離された環境で動作するため、大きなリサーチタスクなどに便利です。
誰がスキルを呼び出せるか? ── 呼び出し制御の考え方
デフォルトでは、ユーザーとClaude の両方がスキルを呼び出せます。しかし、すべてのスキルを自動で使ってほしいわけではありませんよね。2つのフロントマターフィールドで制御できます。
disable-model-invocation: true ── ユーザーのみが呼び出せる
副作用があるワークフロー(デプロイ、Slack送信など)に最適です。コードが完成したからといって、Claude が勝手にデプロイしてしまうのは困ります。
---
name: deploy
description: Deploy the application to production
disable-model-invocation: true
---
user-invocable: false ── Claude のみが呼び出せる
スラッシュコマンドのメニューに表示されなくなります。ユーザーが直接実行する意味はないけれど、Claude が背景知識として知っておくべき情報(レガシーシステムの仕様など)に使います。
設定の組み合わせまとめ
| 設定 | ユーザーが呼び出せる | Claude が呼び出せる |
|---|---|---|
| デフォルト(何も指定なし) | ○ | ○ |
disable-model-invocation: true | ○ | × |
user-invocable: false | × | ○ |
引数を渡してスキルを柔軟に使う
スキルには引数を渡すことができます。$ARGUMENTS というプレースホルダーが、呼び出し時に入力された内容に置き換わります。
たとえば、GitHub の Issue を修正するスキルを考えてみましょう。
---
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 がスキル内になかった場合は、自動的にスキル末尾に ARGUMENTS: 123 として追加されるので、情報が失われることはありません。
高度な使い方
動的コンテキストの注入
!`コマンド` という構文を使うと、スキルが Claude に渡される前にシェルコマンドを実行し、その出力をスキル内に埋め込むことができます。
たとえば、プルリクエストの差分やコメントを自動で取得して、要約タスクに渡すスキルが作れます。
---
name: pr-summary
description: Summarize changes in a pull request
context: fork
agent: Explore
allowed-tools: Bash(gh:*)
---
## Pull request context
- PR diff: !`gh pr diff`
- PR comments: !`gh pr view --comments`
- Changed files: !`gh pr diff --name-only`
## Your task
Summarize this pull request...
この場合、Claude が見るのはコマンドの実行結果のみです。GitHub CLI(gh)が事前にインストールされている必要がありますが、毎回手動で差分をコピペする手間がなくなります。
サブエージェントでの実行
フロントマターに context: fork を追加すると、スキルはメインの会話とは独立したサブエージェント上で動きます。調査タスクなど、メインの会話コンテキストを汚したくない場合に便利です。
---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---
Research $ARGUMENTS thoroughly:
1. Find relevant files using Glob and Grep
2. Read and analyze the code
3. Summarize findings with specific file references
agent フィールドでは実行環境を指定でき、Explore(読み取り専用のコードベース探索向け)、Plan(計画策定向け)、general-purpose(汎用)などが選べます。
ビジュアル出力を生成するスキル
スキルにはスクリプトをバンドルできるため、Claude に「スクリプトを実行してHTMLファイルを生成し、ブラウザで開く」という流れを任せることも可能です。
公式ドキュメントでは、コードベースのファイル構造をインタラクティブなツリービューとして表示する「Codebase Visualizer」の例が紹介されています。Python スクリプトがプロジェクトをスキャンし、折りたたみ可能なディレクトリツリーやファイルタイプ別の棒グラフを含む HTML を生成します。
このパターンは、依存関係グラフやテストカバレッジレポート、データベーススキーマの可視化など、さまざまなビジュアル出力に応用できます。
トラブルシューティング
スキルが呼び出されない場合
Claude がスキルを使ってくれないときは、以下を確認しましょう。
descriptionにユーザーが自然に使うキーワードが含まれているか- 「What skills are available?」と聞いて一覧に表示されるか
- 確認のため
/スキル名で直接呼び出してみる
スキルが頻繁に呼び出されすぎる場合
意図しない場面でスキルが使われるときは、以下を試してみてください。
descriptionをより具体的・限定的に書き直す- 手動でのみ使いたい場合は
disable-model-invocation: trueを追加する
Claude がすべてのスキルを認識しない場合
スキルの説明文はコンテキストに読み込まれますが、数が多いとデフォルトの文字数上限(15,000文字)を超えることがあります。/context を実行して除外されたスキルがないか確認し、必要に応じて環境変数 SLASH_COMMAND_TOOL_CHAR_BUDGET で上限を引き上げましょう。
まとめ
Claude Code のスキル機能は、「自分だけの Claude」を作り上げるための強力なカスタマイズ手段です。
- シンプルな始め方:
SKILL.mdを1ファイル書くだけで、すぐに使い始められる - 柔軟な制御:誰が呼び出せるか、どのツールを使えるかを細かく設定できる
- 高度な拡張:動的コンテキスト注入やサブエージェント実行で、複雑なワークフローも構築可能
- チーム共有:プロジェクトにコミットすれば、チーム全体で同じスキルを使える
まずは日常的に繰り返している作業を1つ選んで、スキル化してみるところから始めてみてはいかがでしょうか。一度作れば、毎回の指示出しから解放され、Claude Code との作業がぐっと効率的になるはずです。
