第6章 — Skills と Commands: 手順書の力
繰り返す悪夢
「また同じこと説明してる……」
ユウキは Claude Code に3回目の「PR を作って」を頼んでいた。毎回、同じ注意事項を伝えなければならない。
- Conventional Commits 形式でコミットメッセージを書くこと
- PR のタイトルは70文字以内
- テストが通ることを確認してから PR を作ること
- PR 本文にテスト計画を含めること
「毎回これを打つのか……」
ミサキが横から覗き込んだ。「その手順、Skill にすれば? 一度書けば /pr で呼び出せるよ」
Skills とは
Skills は、Claude Code に対する再利用可能な指示書だ。Markdown ファイルとして保存し、スラッシュコマンドで呼び出す。
Skill ファイルの配置場所
| 場所 | スコープ | 用途 |
|---|---|---|
~/.claude/commands/*.md | 全プロジェクト | 個人の汎用コマンド |
.claude/commands/*.md | プロジェクト | チーム共有のコマンド |
ファイル名がそのままコマンド名になる。commit.md → /commit、pr.md → /pr。
実践: /commit コマンド
ユウキが最初に作った Skill は、Conventional Commits 形式でコミットするための /commit だ。
<!-- .claude/commands/commit.md -->
変更を論理単位に分けて Conventional Commits 形式でコミットする。
## 手順
1. `git status` と `git diff --staged` で変更内容を確認
2. 変更を論理的な単位に分割(1コミット = 1つの意図)
3. 各単位ごとに:
- 適切なファイルを `git add` でステージ
- Conventional Commits 形式でコミットメッセージを作成
- `git commit` を実行
## Conventional Commits の形式
type(scope): description
- type: feat, fix, docs, style, refactor, test, chore
- scope: 省略可。変更の影響範囲
- description: 命令形、50文字以内
## 注意
- push はしない(ユーザーが確認してから push する)
- secret が含まれていないか確認する
- 1つのコミットに無関係な変更を混ぜないこれにより、/commit と打つだけで、毎回一貫した品質のコミットが作られる。
実践: /pr コマンド
<!-- .claude/commands/pr.md -->
現在のブランチの変更を要約し PR を作成する。
## 手順
1. 並列で実行:
- `git status` で未追跡ファイルを確認
- `git diff` でステージ済み・未ステージの変更を確認
- `git log main..HEAD` でコミット履歴を確認
- `git diff main...HEAD` で差分全体を確認
2. すべてのコミットを分析し、PR タイトルと要約を作成:
- タイトルは70文字以内
- 要約は箇条書き3点以内
3. 並列で実行:
- 必要なら新ブランチを作成
- リモートに push(-u フラグ付き)
- `gh pr create` で PR を作成
## PR 本文のフォーマット
## Summary
- 変更点1
- 変更点2
## Test plan
- [ ] テスト項目1
- [ ] テスト項目2Skills vs CLAUDE.md: 使い分け
初学者がよく混乱するのが、「CLAUDE.md に書くべきか、Skill に書くべきか」という判断だ。
| 指示の性質 | 置き場所 | 例 |
|---|---|---|
| 常に守るべきルール | CLAUDE.md | 「any 型禁止」「日本語で回答」 |
| 特定の操作の手順書 | Skills | /commit、/pr、/deploy |
| 特定ファイル種別のルール | rules/*.md | 「テストファイルの書き方」 |
高度な Skill: 引数付きコマンド
Skills は引数を受け取ることもできる。
<!-- .claude/commands/review.md -->
指定されたファイルまたは変更をレビューする。
## 引数
$ARGUMENTS — レビュー対象(ファイルパス、PR番号、または "diff")
## 手順
1. 引数に応じてレビュー対象を特定:
- ファイルパスの場合: そのファイルを読む
- PR番号の場合: `gh pr diff <番号>` で差分を取得
- "diff" の場合: `git diff` で現在の変更を取得
2. 以下の観点でレビュー:
- バグの可能性
- セキュリティリスク
- パフォーマンス問題
- 可読性・保守性
3. 問題を重要度順に報告使い方: /review src/api/users.ts や /review 42(PR #42)。
Skill の設計原則
1. 一つのことをうまくやれ(Unix 哲学)
<!-- ❌ 詰め込みすぎ -->
# deploy.md
テストを実行し、ビルドし、デプロイし、Slack に通知する
<!-- ✅ 分割 -->
# test.md — テストを実行
# build.md — ビルドを実行
# deploy.md — デプロイを実行(テストとビルドが通っていることを前提)
# notify.md — Slack に通知2. 手順を具体的に
<!-- ❌ 曖昧 -->
コードをレビューしてください
<!-- ✅ 具体的 -->
以下の順序でレビュー:
1. `git diff main...HEAD` で変更差分を取得
2. 変更されたファイルを1つずつ読む
3. バグ → セキュリティ → パフォーマンス → 可読性の順で問題を報告
4. 各問題に severity (high/medium/low) を付与3. 出力フォーマットを指定
## 出力フォーマット
### 発見事項
- **[HIGH]** ファイル:行番号 — 問題の説明
- **[MED]** ファイル:行番号 — 問題の説明
### サマリー
- HIGH: N件
- MEDIUM: N件
- LOW: N件チームでの Skill 共有
Skills を .claude/commands/ に置いて Git で管理すれば、チーム全体で同じコマンドを使える。
「これはチームの"暗黙知"を"形式知"にする作業だ」とミサキ。「新しいメンバーが入っても、/commit と /pr を使うだけで、チームの品質基準を満たせる」
ユウキのコマンド一覧
1ヶ月後、ユウキのプロジェクトには以下の Skill が揃っていた。
「1ヶ月で累計40時間以上の節約。でもそれ以上に、品質のばらつきがなくなったのが大きい」
ユウキは確信した。Skills は単なる便利ツールではない。チームの開発文化を形作る道具だ。
次の章では、もっと強力な武器——サブエージェント——に踏み込む。AI に「チーム」を持たせる技術だ。