はじめに
Claude Codeには、AIの能力を拡張する「Agent Skills(エージェントスキル)」という機能があります。Agent Skillsは、特定のタスクや専門領域に最適化された知識やワークフローをClaude Codeに追加し、開発作業を効率化するための仕組みです。
本記事では、Agent Skillsの基本概念から、サブエージェントとの関係、利用可能なビルトインスキル、スキルの呼び出し方法まで詳しく解説します。この記事を読むことで、以下のことができるようになります。
- Agent Skillsの仕組みと設計思想を理解する
- サブエージェントとスキルの違いと連携方法を把握する
- ビルトインツールとカスタムスキルの活用方法を習得する
- スキルの作成とパラメータ設定を実践できる
実行環境
- オペレーティングシステム: macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上、Windows 10以上(WSL 1/2またはGit for Windows)
- ハードウェア: 4GB以上のRAM
- Node.js 18以上(npmインストールの場合のみ必要)
- インターネット接続(認証およびAI処理に必要)
- シェル環境: Bash、Zsh、またはFish推奨
前提条件
- Claude Codeがインストール済みであること
- コマンドライン操作の基礎知識
- プログラミングの基礎知識(言語は問わない)
Agent Skillsとは
Agent Skillsは、Claude Codeに特定の専門知識やワークフローを教えるためのMarkdownファイルです。PRレビューの基準、コミットメッセージの書式、データベーススキーマの操作方法など、タスクに特化したガイダンスをClaudeに提供します。
スキルの最大の特徴は「モデル起動型(model-invoked)」である点です。ユーザーが明示的にスキルを呼び出す必要はなく、リクエストの内容がスキルの説明と一致すると、Claudeが自動的にスキルを適用します。
flowchart TB
A[ユーザーリクエスト] --> B{スキル説明と<br>マッチするか}
B -->|Yes| C[スキル適用確認]
C --> D[SKILL.md読み込み]
D --> E[スキル指示に従って実行]
B -->|No| F[通常の応答]スキルの動作フロー
Claude Codeがスキルを使用する流れは以下の通りです。
- 発見(Discovery): 起動時にすべてのスキルの名前と説明を読み込む
- 活性化(Activation): リクエストがスキルの説明とマッチすると、使用確認を表示
- 実行(Execution): 確認後、
SKILL.mdの全内容をコンテキストに読み込み、指示に従って動作
スキルの保存場所
スキルは保存場所によってスコープが異なります。
| 種類 | 配置場所 | スコープ | 優先度 |
|---|---|---|---|
| Enterprise | マネージド設定ディレクトリ | 組織全体 | 最高 |
| Personal | ~/.claude/skills/ |
全プロジェクトで利用可能 | 高い |
| Project | .claude/skills/ |
現在のプロジェクトのみ | 中 |
| Plugin | プラグインに同梱 | プラグインインストール済み環境 | 低い |
同名のスキルが存在する場合、優先度の高いスコープのスキルが適用されます。
スキルとサブエージェントの関係
Claude Codeには「スキル」と「サブエージェント」という2つのカスタマイズ機構があります。両者は目的と動作が異なりますが、連携して使用することも可能です。
機能の違い
| 特徴 | Agent Skills | サブエージェント |
|---|---|---|
| 主な用途 | 専門知識・ガイダンスの提供 | タスクの委任・独立実行 |
| コンテキスト | メイン会話に追加 | 独立したコンテキストウィンドウ |
| ツールアクセス | 制限可能(allowed-tools) |
個別に設定可能 |
| 起動方法 | 自動(説明マッチ) | 自動委任または明示的呼び出し |
| 設定ファイル | SKILL.md |
エージェント定義ファイル |
連携のパターン
スキルとサブエージェントは以下のように連携できます。
パターン1: サブエージェントにスキルを付与
カスタムサブエージェントに特定のスキルを事前にロードさせることができます。
|
|
skillsフィールドにスキル名をカンマ区切りで指定すると、サブエージェント起動時にスキルがロードされます。ビルトインサブエージェント(Explore、Plan、汎用)にはスキルを付与できません。
パターン2: スキルをサブエージェントコンテキストで実行
スキルを独立したサブエージェントコンテキストで実行することも可能です。
|
|
context: forkを指定すると、スキルは別のサブエージェントコンテキストで実行されます。agentフィールドで使用するサブエージェントを指定できます。
使い分けの指針
flowchart TD
A[タスクの性質を判断] --> B{コンテキストの<br>独立が必要?}
B -->|Yes| C[サブエージェント]
B -->|No| D{専門知識・<br>ガイダンスが主?}
D -->|Yes| E[Agent Skills]
D -->|No| F{ツール制限が<br>必要?}
F -->|Yes| G[サブエージェント<br>or スキルのallowed-tools]
F -->|No| H[通常のリクエスト]ビルトインツール一覧
Claude Codeには、スキルやサブエージェントが使用できる多数のビルトインツールが用意されています。
主要ツール
| ツール | 説明 | ファイル変更 |
|---|---|---|
| Read | ファイルの内容を読み取る | No |
| Edit | 特定のファイルを編集する | Yes |
| Write | ファイルを作成または上書きする | Yes |
| Bash | シェルコマンドを実行する | Yes |
| Grep | 正規表現でファイル内を検索する | No |
| Glob | パターンマッチングでファイルを検索する | No |
| WebFetch | 指定URLからコンテンツを取得する | Yes |
| WebSearch | ドメインフィルタリング付きでWeb検索を実行する | Yes |
| Task | サブエージェントにタスクを委任する | No |
| Skill | メイン会話内でスキルを実行する | Yes |
その他のツール
| ツール | 説明 |
|---|---|
| AskUserQuestion | ユーザーに選択式質問を表示して情報を収集する |
| BashOutput | バックグラウンドシェルから出力を取得する |
| ExitPlanMode | Plan Modeを終了してコーディングを開始する |
| KillShell | バックグラウンドシェルを終了する |
| NotebookEdit | Jupyter Notebookのセルを編集する |
| SlashCommand | カスタムスラッシュコマンドを実行する |
| TodoWrite | 構造化されたタスクリストを作成・管理する |
ツールのパーミッション制御
ツールの使用許可はsettings.jsonで制御できます。
|
|
スキルファイルの構造
スキルはSKILL.mdというMarkdownファイルで定義します。ファイルはYAMLフロントマター(メタデータ)とMarkdown本文(指示)で構成されます。
基本構造
|
|
メタデータフィールド
| フィールド | 必須 | 説明 |
|---|---|---|
name |
Yes | スキル名(小文字、数字、ハイフンのみ。最大64文字) |
description |
Yes | スキルの目的と使用タイミング(最大1024文字) |
allowed-tools |
No | スキル使用時に許可するツール |
model |
No | スキル使用時のモデル |
context |
No | forkを指定するとサブエージェントコンテキストで実行 |
agent |
No | context: fork時に使用するエージェント |
hooks |
No | スキルのライフサイクルに紐づくフック |
user-invocable |
No | falseでスラッシュコマンドメニューから非表示 |
実践的なスキル例
コード説明スキル:
|
|
読み取り専用スキル:
|
|
allowed-toolsでツールを制限すると、スキル実行中はそのツールのみ許可なしで使用できます。
スキルの呼び出し方法
自動起動
スキルは通常、自動的に起動されます。ユーザーのリクエストがスキルのdescriptionフィールドとマッチすると、Claudeがスキルの使用を提案します。
|
|
descriptionに「use PROACTIVELY」「MUST BE USED」などのフレーズを含めると、より積極的にスキルが使用されます。
手動起動
利用可能なスキルを確認するには、以下のように質問します。
|
|
特定のスキルを明示的に使用したい場合は、スキル名を含めてリクエストします。
|
|
スラッシュコマンドとの違い
スキルとスラッシュコマンドは目的が異なります。
| 特徴 | Agent Skills | スラッシュコマンド |
|---|---|---|
| 起動方法 | 自動(コンテキストマッチ) | 手動(/command) |
| 複雑さ | 複数ファイル、スクリプト可 | 単一の.mdファイル |
| 主な用途 | 専門知識・複雑なワークフロー | 頻繁に使うプロンプト |
| 発見方法 | 自動発見 | 明示的な呼び出し |
スキルの作成手順
手順1: ディレクトリの作成
|
|
手順2: SKILL.mdの作成
|
|
手順3: 動作確認
|
|
commit-helperがリストに表示されれば成功です。
手順4: テスト
|
|
スキルが自動的に適用され、指示に従ったコミットメッセージが生成されます。
複数ファイルで構成するスキル
複雑なスキルは、補助ファイルを使って構成できます。これにより、コンテキストを効率的に管理できます。
プログレッシブディスクロージャー
メインのSKILL.mdには概要を記述し、詳細は別ファイルに分離します。
|
|
SKILL.md:
|
|
スクリプトは実行されるだけでコンテキストに読み込まれないため、トークンを節約できます。
スキルにフックを定義する
スキルのライフサイクルにフックを紐づけることができます。
|
|
once: trueオプションを指定すると、セッション中に一度だけ実行されます。
トラブルシューティング
スキルが起動しない
descriptionフィールドが曖昧な可能性があります。具体的なアクションとトリガーワードを含めてください。
|
|
スキルがロードされない
ファイルパスを確認してください。
| 種類 | パス |
|---|---|
| Personal | ~/.claude/skills/my-skill/SKILL.md |
| Project | .claude/skills/my-skill/SKILL.md |
YAMLフロントマターの構文も確認してください。
- 1行目が
---で始まること - インデントにタブではなくスペースを使用していること
- フロントマターが
---で終了していること
デバッグモードで確認
|
|
デバッグモードでスキルのロードエラーを確認できます。
ベストプラクティス
明確な説明を書く
descriptionはスキルのトリガーとなる重要なフィールドです。以下の2点を明確にしてください。
- 何をするか: 具体的なアクションをリストアップ
- いつ使うか: トリガーとなるキーワードを含める
SKILL.mdは500行以内に
長いSKILL.mdはコンテキストを圧迫します。詳細なリファレンスは別ファイルに分離し、必要なときだけ読み込ませてください。
ツールアクセスを最小限に
allowed-toolsで必要なツールのみを許可することで、セキュリティとフォーカスが向上します。
バージョン管理を活用
プロジェクトスキル(.claude/skills/)をGitで管理し、チーム全体で共有・改善できるようにしてください。
まとめ
Claude CodeのAgent Skillsは、AIの能力を特定のタスクや専門領域に最適化するための強力な仕組みです。本記事で解説した内容を振り返ります。
- Agent Skillsの基本: モデル起動型の専門知識追加機能。
SKILL.mdで定義 - スキルとサブエージェントの違い: スキルはコンテキストに知識を追加、サブエージェントは独立したコンテキストでタスクを実行
- ビルトインツール: Read、Edit、Bash、Grep、Globなど多数のツールが利用可能
- スキルの構造: YAMLフロントマター(メタデータ)とMarkdown本文(指示)で構成
- 呼び出し方法: 自動起動(説明マッチ)または明示的な指示
- 複数ファイル構成: プログレッシブディスクロージャーでコンテキストを効率化
Agent Skillsを活用することで、チーム固有のワークフローや品質基準をClaude Codeに教え、開発効率を大幅に向上させることができます。まずは簡単なスキルから作成し、徐々に複雑なスキルへと発展させていってください。