「毎回同じ指示をClaude Codeに伝えるのが面倒」「プロジェクト固有のルールを自動で反映させたい」――こうした課題を解決する仕組みが Agent Skills(エージェントスキル) です。

Anthropicが2025年10月16日に発表し、同年12月18日にオープンスタンダードとして仕様を公開したこの機能は、Claude Codeだけでなく OpenAI Codex CLI・Cursor・VS Code・GitHub Copilot・Gemini CLI をはじめ27以上のAIコーディングツールで採用が広がっています(出典: agentskills.io)。GitHubリポジトリ anthropics/skills は65,000を超えるスターを獲得しており、開発者コミュニティの関心の高さがうかがえます。

Agent Skillsの定義と基本構造

Agent Skillsは、指示・スクリプト・リソースをフォルダ単位でまとめた「再利用可能な専門知識パッケージ」です。Claudeは会話の文脈に応じて必要なSkillだけを動的に読み込み、タスクに適した振る舞いに切り替わります。

1つのSkillは以下のようなディレクトリ構成を取ります。

my-skill/
├── SKILL.md           # エントリポイント(必須)
├── template.md        # Claudeが埋めるテンプレート
├── examples/
│   └── sample.md      # 期待される出力例
└── scripts/
    └── validate.sh    # Claudeが実行するスクリプト

SKILL.md がエントリポイントです。このファイルにYAMLフロントマターとMarkdown形式の指示を記述します。その他のファイルはオプションで、テンプレート・出力例・実行スクリプト・リファレンスドキュメントなどを必要に応じて配置します。

プログレッシブディスクロージャーによるコンテキスト管理

Agent Skillsは3段階のローディングシステムを採用しており、コンテキストウィンドウを効率的に利用します。

読み込み段階対象データタイミング
レベル1: メタデータname + description(約100語)常時コンテキストに存在
レベル2: SKILL.md本文指示・手順(約5,000語目安)Skillが発動した時点で読み込み
レベル3: 付属リソーススクリプト・リファレンス等Claudeが必要と判断した時のみ

この段階的読み込みにより、多数のSkillを登録していても、使われないSkillの本文がコンテキストを圧迫する心配がありません。descriptionのみが常時読み込まれ、Claudeはそこから「今のタスクにどのSkillが関連するか」を判断します。

Skillの配置場所とスコープ

Skillの配置場所によって有効範囲が異なります。優先度は Enterprise > Personal > Project の順です。

スコープパス適用範囲
Enterprise(組織全体)Managed Settingsで配布組織の全プロジェクト
Personal(個人用)~/.claude/skills/<skill-name>/SKILL.md自分の全プロジェクト
Project(プロジェクト固有).claude/skills/<skill-name>/SKILL.mdそのプロジェクトのみ
Plugin(プラグイン経由)<plugin>/skills/<skill-name>/SKILL.mdプラグインを有効にした場所

モノレポ対応: サブディレクトリに .claude/skills/ を配置すると、そのディレクトリ内のファイル編集時に自動検出されます。たとえば packages/frontend/.claude/skills/ に配置したSkillは、packages/frontend/ 内の作業中のみ有効です。

Plugin Skills: plugin-name:skill-name という名前空間を使うため、他のスコープのSkillとの名前衝突が起こりません。

SKILL.md フロントマター全フィールド一覧

SKILL.md のYAMLフロントマターで設定できるフィールドの一覧です。すべてオプションですが、description の記述が推奨されています。なお、オープンスタンダード仕様(agentskills.io)で定義されているフィールドは namedescriptionlicensecompatibilitymetadataallowed-tools の6つです。以下の表にはClaude Code固有の拡張フィールドも含まれています。

フィールド推奨度説明
name任意表示名。省略時はディレクトリ名を使用。小文字英数字とハイフンのみ(最大64文字)
description推奨Skillの用途と発動条件。Claudeがいつ使うか判断するための最重要フィールド
argument-hint任意補完時に表示される引数のヒント(例: [issue-number]
disable-model-invocation任意true にするとClaudeの自動呼び出しを抑止。手動の /name のみ
user-invocable任意false にすると / メニューから非表示。背景知識用Skillに使用
allowed-tools任意Skill実行中にClaude が許可なく使えるツールを指定
model任意Skill実行中に使用するモデルを指定
context任意fork を指定するとサブエージェントとして独立実行
agent任意context: fork 時に使うサブエージェント種別(Explore, Plan, general-purpose等)
hooks任意Skillライフサイクルに紐づくHooksを設定

動的な値の埋め込み(文字列置換)

Skillの本文中で以下のプレースホルダを使えます。

変数用途
$ARGUMENTS/skill-name に続けて入力された引数の全体
$ARGUMENTS[N] / $NN番目の引数(0始まり)。$0 は最初の引数
${CLAUDE_SESSION_ID}セッションID。ログ出力やファイル名に利用可能

CLAUDE.md・MCP・Subagentsとの機能比較

Claude Code にはSkills以外にもカスタマイズ手段が存在します。それぞれの役割が異なるため、目的に応じた使い分けが重要です。

比較項目CLAUDE.mdAgent SkillsMCP ServerSubagents
主な目的プロジェクト全体の指針特定タスクの専門知識外部ツール・API連携タスクの並列委任
読み込みタイミング常時必要に応じて動的常時接続親エージェントが起動
コンテキスト消費大きい(全文常時読み込み)小さい(段階的読み込み)API定義分のみ独立コンテキスト
再利用性プロジェクト単位跨プロジェクト共有可能サーバー単位定義単位
使い分けの指針コーディング規約・ビルド手順デプロイ手順・レビュー基準DB操作・Slack通知大規模調査・検証

使い分けのポイント: 常に参照すべきルール(命名規則やコーディングスタイル等)は CLAUDE.md に、特定の作業フロー(デプロイ・コードレビュー・ドキュメント生成等)はSkillsに配置します。Skillsのメリットは「使うときだけコンテキストを消費する」ことにあり、大量のルールをCLAUDE.mdに詰め込むとコンテキストが逼迫する問題を回避できます。

実用Skillテンプレート3選

テンプレート1: コードレビューSkill

---
name: code-review
description: コードレビューを実施する。PRの差分を読み、品質・セキュリティ・可読性の観点でフィードバックを出力する。
allowed-tools: Read, Grep, Glob, Bash(gh pr diff *)
disable-model-invocation: true
---

# コードレビュー

指定されたPR($ARGUMENTS)をレビューしてください。

## 観点
1. **ロジックの正しさ**: エッジケースの考慮漏れがないか
2. **セキュリティ**: SQLインジェクション・XSS・機密情報の露出がないか
3. **可読性**: 変数名・関数名が意図を表しているか
4. **テストカバレッジ**: 変更箇所に対応するテストが存在するか

## 出力フォーマット
- 問題の深刻度を `[Critical]` `[Warning]` `[Info]` で分類
- 各指摘にファイルパスと行番号を記載
- 改善案を具体的なコード例で提示

テンプレート2: デプロイSkill(サブエージェント実行)

---
name: deploy-staging
description: ステージング環境へのデプロイを実行する。テスト → ビルド → プッシュの3段階で進行。
context: fork
disable-model-invocation: true
allowed-tools: Bash(npm *), Bash(git *), Bash(docker *)
---

# ステージングデプロイ

$ARGUMENTS をステージング環境にデプロイしてください。

## 手順
1. `npm run test` でテストスイートを実行
2. テスト通過を確認後、`npm run build` でビルド
3. `docker build -t app:staging .` でコンテナイメージを作成
4. `docker push registry.example.com/app:staging`
5. デプロイ完了のサマリを出力

## 中断条件
- テスト失敗時は即座に中断し、失敗内容を報告
- ビルドエラー時も中断し、エラーログを表示

テンプレート3: PRサマリ生成Skill(動的コンテキスト注入)

---
name: pr-summary
description: PRの変更内容を要約する。差分・コメント・変更ファイル一覧を取得して分析。
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---

## PR情報
- 差分: !`gh pr diff`
- コメント: !`gh pr view --comments`
- 変更ファイル: !`gh pr diff --name-only`

## タスク
上記の情報をもとに、以下の構成でPRを要約してください。

1. **変更の概要**(1〜2文)
2. **主な変更点**(箇条書き)
3. **影響範囲**
4. **レビュー時の注目ポイント**

!command`` 構文により、Skill実行時にシェルコマンドの出力結果が自動で差し込まれます。Claudeはコマンドの実行結果だけを受け取り、それを元に分析を行います。

Skill の呼び出し制御と権限設定

Skillの呼び出し元と発動タイミングを制御する方法は複数あります。

フロントマター設定ユーザーが呼び出し可能Claudeが自動呼び出し可能コンテキスト上の扱い
デフォルト(設定なし)はいはいdescriptionが常時読み込み、本文は発動時
disable-model-invocation: trueはいいいえdescriptionもコンテキスト外
user-invocable: falseいいえはいdescriptionが常時読み込み、本文は発動時

副作用のある操作(デプロイ・メッセージ送信・データ削除等)には disable-model-invocation: true を設定し、手動の /skill-name でのみ実行する運用が安全です。

Skill単位でのツール制限も可能です。allowed-toolsRead, Grep, Glob のみを指定すれば、そのSkill実行中はファイルの読み取りだけが許可される読み取り専用モードになります。

skill-creator を使った作成手順

Anthropicが公式に提供している skill-creator を使うと、対話形式でSkillを構築できます。

手順1: 公式プラグインをインストール

# Anthropic公式マーケットプレイスを追加
/plugin marketplace add anthropics/claude-code

# マーケットプレイスからskill-creatorを含むプラグインをインストール
/plugin install skills@anthropics-claude-code

インストール後、Claude Codeを再起動して skill-creator/ メニューに表示されれば準備完了です。

手順2: Skillを作成

/skill-creator 新しいスキルを作りたい。APIレスポンスのフォーマットを標準化するSkillが欲しい。

skill-creatorがヒアリングを行い、要件に合った SKILL.md とディレクトリ構造を自動生成します。Opusモデル(/model opus)に切り替えてから実行すると、生成精度が向上します。

手順3: 既存の会話からSkill化

Claude Codeとの作業中に「このやり取りをSkillにしたい」と感じた場合、skill-creatorに依頼できます。

/skill-creator 今の会話の手順をSkill化して

直前の会話コンテキストから手順を抽出し、再利用可能なSkillとして定義してくれます。

descriptionの書き方が成否を分ける

Skillが適切に発動するかどうかは、description の記述に大きく依存します。Claudeは description を読んで「今のタスクに関連するか」を判断するため、曖昧な記述だとSkillが発動しない、あるいは意図しないタイミングで発動する問題が起きます。

効果的な description の条件:

  • 何をするかいつ使うか の両方を含める
  • ユーザーが自然に使う言葉をキーワードとして含める
  • 30〜80語程度で簡潔にまとめる

改善の具体例:

# 発動しにくい例
description: コードのフォーマット

# 発動しやすい例
description: Pythonファイルのコードフォーマットを実行する。black と isort を使い、PEP 8準拠のスタイルに整形。新しいPythonファイルを作成した後や、フォーマットの乱れを指摘された場合に使用。

トラブルシューティング早見表

現象原因対処法
Skillが発動しないdescriptionにタスクと関連するキーワードが不足descriptionを見直し、ユーザーが使いそうな語句を追加
Skillが発動しないSkill自体が認識されていないWhat skills are available? と質問して一覧を確認
Skillが頻繁に誤発動するdescriptionが広すぎるより限定的な表現に変更、または disable-model-invocation: true を設定
一部のSkillが読み込まれないSkill数がコンテキスト予算を超過/context コマンドで警告を確認。環境変数 SLASH_COMMAND_TOOL_CHAR_BUDGET で上限を調整
Skillの変更が反映されない--add-dir 以外の方法で追加したSkillはホットリロード対象外Claude Codeを再起動

セキュリティ上の留意点

  • allowed-tools の最小権限: Skillに必要最低限のツールだけを許可する。特にBashコマンドは Bash(npm test) のようにパターンを絞る
  • サードパーティSkillの確認: マーケットプレイスからインストールする前に、SKILL.md の内容とスクリプトの処理を確認する
  • 機密情報の除外: SKILL.md やスクリプトにAPIキー・パスワードなどの機密情報を直接記載しない。環境変数を経由する設計にする
  • 副作用の制御: データの変更や外部通信を伴うSkillには disable-model-invocation: true を設定し、意図しない自動実行を防ぐ

Skillの共有・配布方法

作成したSkillは複数の方法で配布できます。

配布方法手順適したケース
Gitリポジトリに含める.claude/skills/ をバージョン管理に追加チーム内の標準化
Plugin として公開プラグインの skills/ ディレクトリに配置オープンソースでの共有
Managed Settings組織のManaged Settings経由で配布エンタープライズ全体への展開
サードパーティディレクトリskills.sh(Vercel運営)や skillsmp.com(コミュニティ運営)に掲載広いコミュニティへの公開

SKILL.md 作成時のベストプラクティス

  1. 1つのSkillに1つの責務: 複数の機能を詰め込まず、焦点を絞る。複雑な処理は複数のSkillに分割する
  2. SKILL.md は500行以内に収める: 長い参照ドキュメントは reference.md などの別ファイルに分離し、SKILL.md からリンクする
  3. 具体例を含める: 期待される入出力の例を記載すると、Claudeの動作精度が向上する
  4. 制限事項を明記する: Skillが対応しないケースや前提条件を書いておくと、誤用を防げる
  5. 反復的に改善する: 実際に使いながら description やフロントマターを調整する。一度で完璧なSkillは作れない

まとめ

Agent Skillsは、Claude Codeでの繰り返し作業をパッケージ化し、チームや個人の開発効率を引き上げる仕組みです。SKILL.md の description を適切に書くことが発動精度に直結し、プログレッシブディスクロージャーによりコンテキストの無駄遣いも防止されます。

オープンスタンダードとして公開されたことで、Claude Code以外のツール(Codex CLI・Cursor・VS Code GitHub Copilot等)でも同じSKILL.md形式が利用可能です。一度作成したSkillを複数のツールで横断的に活用できる点が、従来のツール固有の設定ファイルとの大きな違いです。

公式リポジトリ anthropics/skills には実用的なサンプルSkillが多数収録されています。まずはskill-creatorで自分のワークフローに合ったSkillを1つ作るところから始めると、Skillsの効果を実感しやすいです。