← レッスンに戻る
第6章 · Claude Code応用

Skills (スキル) と専門知識

Skills · 約 12 分

重要キーワード

English日本語説明
Skill スキル Claude に特定の専門知識・手順を後付けで教える仕組み
SKILL.md スキル定義ファイル スキルの概要・発火条件・手順を書く Markdown
Progressive Disclosure 段階的開示 必要に応じて詳細リソースを参照する設計原則

Skills (スキル)

Skills は Claude に 特定の専門知識・手順 を後付けで教える仕組み。 プラグイン的に追加でき、必要なときだけ自動でロードされます。

構造

~/.claude/skills/
└── pdf-extraction/
    ├── SKILL.md            # 概要 (Claude がまず読むファイル)
    ├── reference.md        # 詳細リファレンス (必要時に参照)
    ├── examples.md
    └── scripts/
        └── extract.py

SKILL.md の例

---
name: pdf-extraction
description: PDF からテキスト・表を抽出する手順
---

# PDF 抽出スキル

## いつ使うか
ユーザーが「PDF を要約」「PDF から表を抜く」などを依頼したとき。

## 手順
1. `pip install pdfplumber`
2. `scripts/extract.py <path>` を実行
3. 出力 JSON を要約

## 落とし穴
- スキャン PDF は OCR が必要。Tesseract を案内すること。

Skill を作るコツ

Skills vs Slash Commands vs CLAUDE.md

用途 ロードタイミング 配布性
CLAUDE.md プロジェクト全体の前提 毎回 リポジトリ単位
Slash Command ユーザー駆動の定型タスク 明示呼び出し リポ or グローバル
Skill 専門領域のノウハウ 関連話題のとき自動 リポ or グローバル, Plugin 化可

公式系スキルの例

これらは新規プロジェクトでも自動的に呼び出されることがあります。

Skill の発火を観察する

Claude Code は内部で次のようなロジックで動作します: 1. ユーザー入力を受信 2. 利用可能なスキルの description を見て、関連性を判断 3. 関連スキルがあれば SKILL.md をコンテキストに追加 4. 必要なら scripts/ や reference.md も読む

つまり SKILL.md の description が呼び出し精度を決める ので、 具体的なトリガー (「ユーザーが Z をしたいとき」) を書くのが効果的。

試す: スキルアイデアを Claude に出させる

▶ スキル設計 brainstorm
あなたは Claude Code のスキル設計者です。チーム共通で使える有用なスキルアイデアを 5 つ提案してください。各案に name / description / 主なファイル構成を示してください。

実用 Skill 例 3 つ (完全版)

Skill 1: api-versioning — REST API のバージョニング規約

~/.claude/skills/api-versioning/SKILL.md:

---
name: api-versioning
description: REST API のバージョニング規約を提供。ユーザーが「API のバージョン」「v2 endpoint」「後方互換」「deprecate」などについて質問したり、新しいエンドポイントを追加するときに自動発火。
---

# REST API バージョニング・スキル

## いつ発火するか
- 新しい API エンドポイントを追加する依頼
- 既存エンドポイントの破壊的変更
- 「v2 にしたい」「deprecate」などの言葉が出たとき

## 採用している規約
- URL パスベース (`/api/v1/...`, `/api/v2/...`)
- ヘッダ: `Accept: application/vnd.our-app.v2+json` (二重サポート時のみ)

## 破壊的変更の手順
1. 新しい version の endpoint を **追加** (旧版は残す)
2. 旧版に `Deprecation: true` ヘッダ + `Sunset: <日付>` を付与
3. レスポンスに `_deprecated: true` フィールドを追加 (JSON の場合)
4. 6 ヶ月の移行期間を経て旧版を削除

## してはいけないこと
- 既存の `v1` のレスポンス形を変える (新フィールド追加は OK)
- 既存の HTTP ステータスコードを変える
- 旧版を予告なく削除

詳細な手順は @reference.md

~/.claude/skills/api-versioning/reference.md に書き分け方を詳細に書く (省略)。

Skill 2: pii-redaction — 個人情報マスキング

~/.claude/skills/pii-redaction/SKILL.md:

---
name: pii-redaction
description: ログや顧客データを Claude に貼る前に PII (個人情報) をマスキングする手順。ユーザーが「ログを分析」「顧客データを見せる」「PII」「マスキング」と言ったとき発火。
---

# PII マスキング・スキル

## いつ発火
ユーザーが顧客データ・ログ・スクショを Claude に渡そうとするとき。

## マスキング対象
- 氏名 → 「ユーザー A」「ユーザー B」
- メール → `[email_1]`, `[email_2]`
- 電話 → `[phone_1]`
- 住所 → 「[住所_1]」(都道府県以下を削除)
- クレジットカード → `[card_xxxx]`
- IP アドレス → `[ip_1]` (デバッグ目的なら下位 octet だけ残す)
- 社内 URL → `[internal_url_1]`

## 推奨フロー
1. 元データをコピー
2. `scripts/redact.py` を実行 (下記参照)
3. 出力を確認
4. 確認 OK なら Claude に渡す

## scripts/redact.py
@scripts/redact.py を参照。

## 注意
- 同一顧客は同じ ID にマッピング (関係性が保たれるよう)
- マスキング後の文字数が大幅に変わると統計が崩れるので注意

これは Anthropic 公式の公開スキルにも類似のものがあり、研修先で重宝されます。

Skill 3: commit-message-jp — 日本語コミットメッセージ規約

<repo>/.claude/skills/commit-message-jp/SKILL.md:

---
name: commit-message-jp
description: 日本語のコミットメッセージ規約。git commit を依頼されたときに自動発火。Conventional Commits を日本語で運用するチーム向け。
---

# 日本語コミットメッセージ規約

## いつ発火
git commit を Claude が打とうとするとき。

## フォーマット
\`\`\`
<種別>: <概要 (50 字以内)>

<詳細 (任意。何を/なぜ。72 字で改行)>
\`\`\`

## 種別
- `feat`: 新機能
- `fix`: バグ修正
- `refactor`: リファクタ (挙動変更なし)
- `docs`: ドキュメント
- `test`: テスト
- `chore`: ビルド・設定・依存
- `perf`: パフォーマンス改善
- `style`: フォーマット (挙動変更なし)

## 良い例
\`\`\`
feat: ログイン画面に Google OAuth を追加

ユーザーが Google アカウントでログインできるようにする。
authlib を使い OAuth 2.0 フローを実装。テスト 3 件追加。
\`\`\`

## 悪い例
\`\`\`
update                  ← 種別なし、概要なし
fix: バグ修正           ← 何のバグかわからない
すごい機能を追加した!   ← 種別なし、感情的
\`\`\`

## 禁止事項
- 概要に絵文字 (Slack 通知が崩れる現場用)
- 概要に末尾ピリオド・句点
- 「ちょっと」「とりあえず」などの曖昧表現
- 「Co-authored-by: Claude」などの追記 (人がコミットする想定)

これをリポジトリ単位で置けば、Claude が git commit する際にこの規約に従います。

Skill 設計の鉄則

  1. description にトリガーキーワードを散りばめる — 自動発火の精度はここで決まる
  2. SKILL.md は短く (200〜300 行以内、長くなったら別ファイルに分割)
  3. 「してはいけないこと」を明記 — 暴走防止
  4. 更新日を意識 — 規約が古くなる前に保守

演習問題

演習 1: minimal な Skill を作る

次の構造で ~/.claude/skills/changelog-helper/ を作ってください。

changelog-helper/
├── SKILL.md
└── template.md

SKILL.md の役割: ユーザーが「変更履歴」「CHANGELOG」と言ったときに自動発火し、git log の最近 20 件から CHANGELOG エントリを生成する手順を提示する。 template.md にはエントリ形式の雛形を書く。

スタータープロンプト:
次の 2 ファイルを書いてください。
1. SKILL.md (frontmatter に name=changelog-helper, description: "git log から CHANGELOG エントリ生成"。本文に発火条件と手順)
2. template.md (Keep a Changelog 形式の雛形)
それぞれ完全な内容を示してください。
ヒントを見る

SKILL.md の description に「ユーザーが changelog / 変更履歴 / リリースノート と言ったとき」のような発火条件キーワードを含めると、自動発火が安定します。

理解度チェック

  1. Skill が定義されるルートディレクトリは?
    1. ~/.claude/skills/
    2. /etc/claude/skills/
    3. ~/Library/Skills/
    4. C:/Skills/
  2. SKILL.md の冒頭に必須なのは?
    1. JSON フッター
    2. YAML フロントマター (name, description)
    3. C ヘッダコメント
    4. Bash shebang
  3. Skill が CLAUDE.md と異なる点は?
    1. 毎回必ずロードされる
    2. 関連話題のときだけ自動でロードされる
    3. ユーザー手動でしか動かない
    4. 1 つしか作れない
  4. Skill の発火精度を最も決めるのは?
    1. ファイル名の英語スペル
    2. description のトリガー情報
    3. ファイルの色
    4. GitHub Star 数
解答と解説を見る
  1. A — ユーザースキルは `~/.claude/skills/` 配下に置きます。
  2. B — name と description を含む YAML フロントマターが必須です。
  3. B — Skill は段階的開示で、必要なときだけ取り込まれます。
  4. B — description のトリガー情報が自動呼び出しの精度を決めます。