homula

Claude Code 解説書 — Thread 5 of 8

Skills — 再利用可能な知識とワークフロー

マークダウンひとつで Claude の能力を拡張する

読了 25–35分難易度 ★★★(中級〜上級)最終更新 2026-03-20

スレッド4で概観した6つの拡張レイヤーのうち、最も手軽に始められるのがSkillsだ。 CLAUDE.mdが「プロジェクト全体の指示書」だったのに対し、Skillsは特定の知識やワークフローを再利用可能なモジュールとして切り出す仕組みである。

たとえば「デプロイ手順」「PRレビューの観点」「コード説明のフォーマット」といったものを一度スキルとして定義すれば、プロジェクトやチームをまたいで何度でも呼び出せる。 本スレッドでは、スキルの設計思想から実践的な作成方法、チームへの展開まで一通り扱う。

前提知識:スレッド4で解説した拡張レイヤーの全体像、特にCLAUDE.md・Skills・MCPの違いを把握していると理解がスムーズになる。スレッド2のエージェンティックループ(AIが「調査→実行→検証」を自律的に繰り返す動作サイクル)の知識も前提となる。

Section 5.1

5.1Skillとは何か — 概念と位置づけ

Skillとは、SKILL.mdというマークダウンファイルに記述された「知識・手順・ルールのパッケージ」だ。 Claude Codeはこのファイルを読み込み、指示に従って行動する。核心は単純で、「Claudeへの指示をファイル化して再利用できるようにする」ということである。

口頭で毎回同じ説明をする代わりに、一度書けばスラッシュコマンド(/skill-name)やClaudeの自動判断で何度でも呼び出せる。

SkillsはAgent Skillsというオープン標準に準拠しており、Claude Code固有の機能ではなく複数のAIツール間で互換性がある。Claude Codeはこの標準に加え、呼び出し制御やサブエージェント実行などの独自拡張を追加している。

CLAUDE.md との違い

両者は「マークダウンでClaudeに指示を与える」という点で似ているが、設計目的が異なる。

観点CLAUDE.mdSkill
役割プロジェクト全体の規約・文脈特定タスクの知識・手順
読み込みセッション開始時に常時読み込み必要な時だけ読み込み
呼び出し自動(常に適用)/name or Claudeの自動判断
スコーププロジェクト単位個人・プロジェクト・組織単位
構成単一ファイルディレクトリ(補助ファイル可)

たとえば

CLAUDE.mdに「テストは必ずpytestで書くこと」と記載し、Skillとして「/fix-issue:GitHubのIssueを読んで修正しテストを書きPRを出す手順」を作成する。前者はすべてのタスクに適用されるルール、後者は特定のワークフローを実行する手順書だ。

Skill のライフサイクル① 待機description のみコンテキストに存在トリガー② 読み込みSKILL.md 全文をコンテキストに展開実行③ 実行指示に従いツールを使って作業ユーザー/skill-nameClaude 自動判断description照合💡 コンテキストコスト待機中: description のみ(数十トークン)実行中: SKILL.md 全文(数百〜数千トークン)

図5-1:Skillは通常description(説明文)だけがコンテキストに常駐し、トリガーされて初めて全文が読み込まれる

Section 5.2

5.2バンドルスキル — 最初から使える組み込みスキル

Claude Codeにはあらかじめ組み込まれたバンドルスキル(bundled skills)が付属しており、インストール直後から利用できる。 これらはビルトインコマンド(/help/compactなど固定ロジックを実行するもの)とは異なり、プロンプトベースで動作する。つまり、Claudeに詳細な手順書(playbook)を渡し、Claudeがツールを駆使して柔軟に作業するという設計だ。

スキル用途
/batch <指示>大規模コード変更を並列実行する。コードベースを調査し、5〜30の独立した作業単位に分解。承認後、各単位をgit worktree(作業ツリー)で並列処理し、テスト実行とPR作成まで行う
/claude-apiClaude API のリファレンスを読み込む。プロジェクトの言語に合わせたSDK情報、ツール使用、ストリーミング等のガイダンスを提供。anthropicパッケージのインポートを検出すると自動起動
/debug [説明]現在のセッションのデバッグログを読み、問題を分析する。任意で問題の説明を渡すと、その観点に絞って調査
/loop [間隔] <指示>プロンプトを定期的に繰り返し実行する。デプロイの監視、PRの状況確認などに使用
/simplify [焦点]直近の変更ファイルをコード品質・再利用性・効率性の3観点で並列レビューし、問題を修正。焦点を渡すと特定の観点に絞れる

たとえば

/batch src/ 以下のすべてのコンポーネントを Solid から React に移行して と実行すると、Claudeはまずコードベースを走査してコンポーネント一覧を作成し、依存関係を分析して独立した作業単位に分割する。各単位は別々のgit worktreeで並列処理され、テスト実行・PR作成まで自動で行われる。

ビルトインコマンドとの違い:/help/compactは固定ロジックを直接実行する「ビルトインコマンド」。一方バンドルスキルはClaude自身がプロンプトに基づいて判断・行動するため、コードベースに適応した柔軟な動きが可能だ。

Section 5.3

5.3カスタムスキルの作成

バンドルスキルだけでは足りないとき、自分でスキルを作成できる。 スキルはディレクトリ + SKILL.mdの構成で、SKILL.mdの先頭にYAMLフロントマター(メタデータ記述領域)、その後にマークダウンで指示を書く。

5.3.1 最小構成 — はじめてのスキル

以下は、コードを図解と比喩で説明するスキルの例だ。

# ファイル: ~/.claude/skills/explain-code/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.

これだけで/explain-codeコマンドが使えるようになる。 さらに、descriptionにマッチする質問(「このコードどう動くの?」など)をすると、Claudeが自動的にこのスキルを読み込んで使う。

5.3.2 SKILL.md の構造

SKILL.md ファイル構造YAML フロントマター(メタデータ)---name:explain-code← /スラッシュコマンド名description:Explains code with diagrams...← Claude が自動判断に使う説明context:fork← サブエージェントで実行(任意)---マークダウン本文(指示内容)When explaining code, always include:1. Start with an analogy2. Draw a diagram3. Walk through the code ...← Claude が従う具体的な手順

図5-2:SKILL.mdはフロントマター(設定)とマークダウン本文(指示)の2パートで構成される

5.3.3 フロントマター全フィールド

フィールド必須説明
nameいいえスキル名。省略時はディレクトリ名。小文字・数字・ハイフンのみ(最大64文字)
description推奨スキルの用途説明。Claudeの自動呼び出し判定に使われる
argument-hintいいえオートコンプリート時に表示される引数のヒント
disable-model-invocationいいえtrueでClaude自動呼び出しを禁止。手動実行専用にする
user-invocableいいえfalse/メニューから非表示。Claude専用の背景知識向け
allowed-toolsいいえスキル実行時に許可なしで使えるツールを制限する
modelいいえスキル実行時に使用するモデルを指定
contextいいえforkでサブエージェントとして実行
agentいいえcontext: fork時のサブエージェント種別
hooksいいえスキルのライフサイクルに紐づくフック(自動処理)を定義

5.3.4 スキルの2つの型 — リファレンス型とタスク型

スキルの内容は大きく2つの型に分類できる。これを意識すると設計が明確になる。

スキルの2つの型リファレンス型知識・規約・パターンの提供• API設計規約、スタイルガイド• ドメイン知識、レガシー仕様• Claudeが現在の作業に適用する→ インライン実行が基本タスク型手順の実行・ワークフロー• デプロイ、コミット、Issue修正• PR作成、コードレビュー• ステップバイステップで実行する→ context: fork でサブエージェント実行が有効

図5-3:リファレンス型はClaudeの「知識」を拡張し、タスク型はClaudeの「行動」を定義する

たとえば

リファレンス型api-conventionsスキルに「RESTful命名規約を使う」「エラーフォーマットを統一する」と書いておけば、ClaudeはAPI実装時に自動でこの規約を参照する。

タスク型deployスキルに「1. テスト実行 → 2. ビルド → 3. デプロイ先にプッシュ」と書き、disable-model-invocation: trueを設定。ユーザーが/deployと明示的に打った時だけ実行される。

Section 5.4

5.4スキルの配置と優先順位

スキルをどこに置くかで、誰がそのスキルを使えるかが決まる。

スコープパス適用範囲
Enterprise(組織)管理者設定で配布組織内の全ユーザー
Personal(個人)~/.claude/skills/<name>/SKILL.md自分の全プロジェクト
Project.claude/skills/<name>/SKILL.mdそのプロジェクトのみ
Plugin<plugin>/skills/<name>/SKILL.mdプラグイン有効化場所

同名のスキルが複数のスコープに存在する場合、Enterprise > Personal > Projectの優先順位で上位が勝つ。 Pluginスキルはplugin-name:skill-nameという名前空間を使うため、他のレベルと衝突しない。

スキルの優先順位(上が高い)Enterprise組織管理者が配布Personal~/.claude/skills/ — 個人の全プロジェクトで使えるProject.claude/skills/ — リポジトリに含めてチーム共有

図5-4:同名スキルが競合した場合、上位スコープが優先される

モノレポでの自動検出

サブディレクトリにある.claude/skills/も自動的に検出される。 たとえばpackages/frontend/のファイルを編集中であれば、packages/frontend/.claude/skills/にあるスキルも利用可能になる。モノレポ(monorepo:複数パッケージを1リポジトリで管理する構成)に適した設計だ。

ディレクトリ構成

my-skill/
├── SKILL.md           # メイン指示(必須)
├── template.md        # Claudeが埋めるテンプレート
├── examples/
│   └── sample.md      # 期待されるフォーマットの例
└── scripts/
    └── validate.sh    # Claudeが実行するスクリプト

SKILL.mdのみが必須で、その他の補助ファイルは任意だ。 補助ファイルがある場合は、SKILL.md内からリンクしておくとClaudeが必要に応じて読み込める。 SKILL.mdは500行以内に収め、詳細なリファレンスは別ファイルに分離するのが推奨される。

Section 5.5

5.5呼び出し制御 — 誰がスキルを起動するか

デフォルトでは、ユーザーもClaudeもスキルを呼び出せる。 しかし「デプロイはClaude任せにしたくない」「レガシーシステムの知識はClaudeが判断して使えばいい」といったケースがある。 2つのフロントマターフィールドでこれを制御する。

呼び出し制御の3パターンデフォルト(設定なし)✅ ユーザー起動✅ Claude自動起動description が常にコンテキストに存在用途:汎用スキル例:explain-code手動専用disable-model-invocation: true✅ ユーザー起動❌ Claude自動起動description はコンテキストに非存在用途:副作用のある操作例:deploy, commitClaude専用user-invocable: false❌ ユーザー起動✅ Claude自動起動description が常にコンテキストに存在用途:背景知識例:legacy-system-context

図5-5:3パターンの呼び出し制御。コンテキストコストと安全性のトレードオフを設計する

disable-model-invocation: trueは、コンテキスト節約の面でも重要だ。 このフラグを設定したスキルはdescriptionすらコンテキストに含まれないため、大量のスキルがある環境でトークン消費を抑えられる。

コンテキスト予算:スキルのdescriptionは全体で「コンテキストウィンドウの2%」(フォールバックは16,000文字)まで読み込まれる。スキル数が多く予算を超えた場合は一部のスキルが除外される。/contextで除外警告を確認でき、環境変数SLASH_COMMAND_TOOL_CHAR_BUDGETで上限を変更できる。

Section 5.6

5.6引数と動的コンテキスト

5.6.1 $ARGUMENTS による引数渡し

スキル実行時に渡されたテキストは$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](0ベースインデックス)または省略形の$Nを使う。

たとえば

/migrate-component SearchBar React Vueと実行すると、$0=SearchBar、$1=React、$2=Vueに置換される。

5.6.2 文字列置換変数

変数内容
$ARGUMENTSスキル呼び出し時に渡された全引数
$ARGUMENTS[N] / $NN番目の引数(0ベース)
${CLAUDE_SESSION_ID}現在のセッションID。ログファイル名やセッション追跡に利用
${CLAUDE_SKILL_DIR}SKILL.mdが存在するディレクトリの絶対パス。同梱スクリプトの参照に使う

5.6.3 動的コンテキスト注入(!コマンド構文)

!`command`構文を使うと、スキルの内容がClaudeに送られる前にシェルコマンドを実行し、その出力をスキル本文に埋め込める。これは「前処理」であり、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...

このスキルを実行すると、まずgh pr diff等のコマンドが先に走り、その出力結果がスキル本文に差し込まれた状態でClaudeに渡される。

動的コンテキスト注入の処理フロー① シェル実行!`gh pr diff` を実行② 出力を埋め込みSKILL.md 本文に差し込み③ Claude が受信実データ入りの指示で作業Claude にはコマンド自体は見えない。展開済みの結果だけが渡される

図5-6:!`command`は前処理としてシェルを実行し、Claudeには展開後のテキストだけが渡される

Section 5.7

5.7サブエージェント実行 — context: fork

context: forkをフロントマターに設定すると、スキルはサブエージェント(メインの会話から分離された独立プロセス)として実行される。サブエージェントは会話履歴を持たず、SKILL.mdの内容をプロンプトとして受け取って作業し、結果の要約だけをメインの会話に返す。

この分離が有効な場面は明確だ。大量のファイル読み込みやコマンド実行を行うタスク型スキルでは、メインの会話コンテキストを消費せずに済む。一方、リファレンス型スキルは会話の文脈と合わせて使いたいので、context: forkは不適切だ。

インライン実行 vs サブエージェント実行インライン(デフォルト)メイン会話コンテキスト会話履歴 + SKILL.md全文 + ツール出力✅ 会話の文脈を利用できる⚠ コンテキストを消費する→ リファレンス型に適切サブエージェント(context: fork)メイン会話結果要約のみ受信フォークSKILL.md + ツール✅ メインのコンテキストを節約⚠ 会話履歴を参照できない→ タスク型に適切

図5-7:リファレンス型はインラインで文脈と統合、タスク型はforkで独立実行が基本方針

agentフィールドで、サブエージェントの種類を指定できる。 組み込みエージェント(Explore=読み取り専用探索、Plan=計画立案、general-purpose=汎用)に加え、.claude/agents/に定義したカスタムエージェントも指定可能だ。

---
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

注意:context: forkはタスク(やるべきこと)が明記されたスキルでのみ意味を持つ。「この規約に従え」だけのガイドラインをforkで実行しても、サブエージェントは指示だけ受け取ってやるべき作業がなく、空振りに終わる。

Section 5.8

5.8ツール制限とパーミッション

allowed-toolsフィールドで、スキル実行中にClaudeが使えるツールを限定できる。これにより、スキルの安全性を設計段階でコントロールする。

---
name: safe-reader
description: Read files without making changes
allowed-tools: Read, Grep, Glob
---

このスキルが有効な間、Claudeはファイル読み取り系のツールだけを許可なしで使え、書き込み系のツールは使えない。

パーミッションルールによるスキルアクセス制御

/permissionsコマンドで、Claudeがどのスキルを呼び出せるかをさらに細かく制御できる。

設定効果
Skillを拒否リストに追加Claudeのスキル呼び出しを全面禁止
Skill(commit)を許可commitスキルのみ許可
Skill(deploy *)を拒否deploy で始まるスキルを拒否(前方一致)

Section 5.9

5.9チームでのスキル共有と配布

スキルの共有方法は、対象範囲に応じて3つある。

スキル共有の3つの方法プロジェクト共有.claude/skills/ をバージョン管理にコミット→ チームメンバー全員が利用プラグイン配布Plugin の skills/ ディレクトリにスキルを含めてパッケージ化→ 外部配布・マーケットプレイス組織一括配布Managed Settings で全ユーザーに自動配布→ Enterprise 管理者向け

図5-8:対象範囲に応じた3つの共有手段

最も手軽なのはプロジェクト共有だ。.claude/skills/をリポジトリにコミットするだけで、git pullしたチームメンバー全員が同じスキルを使える。 スキルの更新もGitのマージフローに乗るため、レビューや差分管理が自然に行える。

Section 5.10

5.10実践例 — ビジュアル出力を生成するスキル

スキルはマークダウンの指示だけでなく、スクリプトをバンドルして実行させることもできる。 公式ドキュメントで紹介されている「コードベースビジュアライザー」を例に、スキルの設計パターンを見てみよう。

構成

~/.claude/skills/codebase-visualizer/
├── SKILL.md              # 指示:スクリプトの実行方法と出力説明
└── scripts/
    └── visualize.py      # Pythonスクリプト:HTMLツリービュー生成

SKILL.md の内容

---
name: codebase-visualizer
description: Generate an interactive collapsible tree
  visualization of your codebase. Use when exploring a
  new repo, understanding project structure, or
  identifying large files.
allowed-tools: Bash(python *)
---

# Codebase Visualizer

Run the visualization script from your project root:

```bash
python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .
```

This creates `codebase-map.html` and opens it in your browser.

ポイントは3つだ。

1

allowed-tools を限定Bash(python *)でPythonの実行のみ許可し、他の危険なコマンドは実行できないようにしている

2

スクリプトを補助ファイルとして同梱:SKILL.md自体は短く保ち、重い処理はPythonスクリプトに委譲している

3

${CLAUDE_SKILL_DIR}で参照可能:スクリプトのパスをハードコードする代わりに、この変数を使えば配置場所に依存しない設計になる

このパターンは、依存グラフの可視化、テストカバレッジレポート、APIドキュメント生成、データベーススキーマの図示など、あらゆる「コードを分析して視覚的な出力を生成する」用途に応用できる。

Section 5.11

5.11トラブルシューティング

スキルが起動しない

1

descriptionを確認:ユーザーが自然に使うキーワードがdescriptionに含まれているか。Claudeはこのテキストをもとに起動を判断する

2

認識確認:「What skills are available?」とClaudeに聞き、一覧にスキルが表示されるか確認する

3

直接呼び出し/skill-nameで手動起動してみる。これで動くなら、descriptionの精度が問題

スキルが意図せず起動する

1

descriptionを狭める:広すぎる説明は関係ないタスクにもマッチしてしまう

2

手動専用にするdisable-model-invocation: trueを追加して自動起動を禁止する

スキルが認識されない

スキルのdescriptionがコンテキスト予算を超えると除外される。/contextで警告を確認し、必要に応じてSLASH_COMMAND_TOOL_CHAR_BUDGETで上限を引き上げる。 また、不要なスキルにdisable-model-invocation: trueを設定して予算を空けるのも有効だ。

Section 5.12

5.12まとめ — スキル設計のチェックリスト

スキル設計フローチャート新しいスキルを作りたい知識 or 手順?知識・規約リファレンス型→ インライン実行手順・操作タスク型→ context: fork 検討誰が起動?ユーザーのみdisable-model-invocationClaudeのみuser-invocable: false両方 → デフォルト

図5-9:スキルを設計する際の判断フロー

本スレッドの内容を振り返る。

トピック要点
Skillの本質SKILL.mdに書いた指示をモジュール化し、再利用可能にする仕組み
バンドルスキル/batch, /simplify等、プロンプトベースで柔軟に動作する組み込みスキル
2つの型リファレンス型(知識提供)とタスク型(手順実行)で設計指針が異なる
配置と優先順位Enterprise > Personal > Project。置き場所がスコープを決める
呼び出し制御disable-model-invocationuser-invocableの組み合わせで3パターン
動的コンテキスト!`command`で外部データをスキルに注入できる
サブエージェント実行context: forkでコンテキスト分離。タスク型に有効
チーム共有.claude/skills/をGitコミット、Plugin化、またはEnterprise配布

次のステップ:スレッド6では、Skillsの「内部知識の拡張」に対して、外部サービスへの接続を担うMCP(Model Context Protocol)を扱う。SkillsとMCPを組み合わせることで、Claude Codeの行動範囲は大きく広がる。

homulaの支援体制

homulaは、AIエージェントの戦略策定・PoC・実装・運用・内製化までを一気通貫で支援するAIインテグレーターです。Claude CodeのSkills設計やMCP連携を含む、エンタープライズ向けAIエージェント構築をお手伝いします。

ブートキャンプ(3-5日)

AIエージェントの動くプロトタイプを最短5日で構築。Skills設計・MCP接続を含む技術検証とROI試算を提供。

導入パッケージ(2-4ヶ月)

設計から本番運用まで一気通貫。エンタープライズ要件(監査・権限管理・閉域網)を満たすAIエージェント基盤を構築。

Series Navigation

← 前の章

第4章:拡張レイヤー概論

Coming Soon

次の章 →

第6章:MCP — 外部サービスとの接続

Coming Soon

他シリーズの関連ガイド

よくある質問

CLAUDE.mdはプロジェクト全体に常時適用されるルール・規約を書く場所です。Skillは特定タスクの知識・手順をモジュール化し、必要な時だけ読み込みます。たとえば「テストはpytestで書く」はCLAUDE.md、「GitHubのIssueを修正してPRを出す手順」はSkillに書きます。

まずdescriptionを確認してください。Claudeはこのテキストをもとに起動を判断します。「What skills are available?」とClaudeに聞いて一覧に表示されるか確認し、/skill-nameで手動起動を試みてください。それでも動かない場合は、コンテキスト予算を超えている可能性があるため/contextコマンドで確認します。

大量のファイル読み込みやコマンド実行を伴うタスク型スキルに有効です。メイン会話のコンテキストを消費せず、サブエージェントが独立して作業し、結果の要約だけを返します。一方、リファレンス型スキル(規約・知識の提供)は会話文脈と統合する必要があるため、forkは不適切です。

.claude/skills/ディレクトリをGitリポジトリにコミットする方法が最も手軽です。git pullしたチームメンバー全員が同じスキルを使えます。スキルの更新もGitのマージフローに乗るため、レビューや差分管理が自然に行えます。

/helpや/compactは固定ロジックを実行する「ビルトインコマンド」です。一方/batchや/simplify等のバンドルスキルはClaude自身がプロンプトに基づいて判断・行動するため、コードベースに適応した柔軟な動きが可能です。

AIエージェント開発を加速しませんか?

homulaは、Claude CodeのSkills設計からMCP連携、エンタープライズ向けAIエージェント基盤構築まで、一気通貫で支援します。まずは無料相談からお気軽にどうぞ。

Claude Code 解説書 — 第5章/全8章
ソース:Extend Claude with skills(Claude Code 公式ドキュメント)
次回 → 第6章:MCP — 外部サービスとの接続