動かざることバグの如し

近づきたいよ 君の理想に

Claude CodeのためのSKILL.md書き方

まずは

有象無象の技術ブログより公式ドキュメント見ろ

code.claude.com

以下は上のドキュメントの自分用まとめ

ディレクトリ構成

my-skill/
├── SKILL.md           # Main instructions (required)
├── template.md        # Template for Claude to fill in
├── examples/
│   └── sample.md      # Example output showing expected format
└── scripts/
    └── validate.sh    # Script Claude can execute

SKILL.mdに書くfrontmatterのサンプルコード

---
# スキルの表示名。省略した場合、ディレクトリ名を使用します。小文字、数字、ハイフンのみ(最大 64 文字)。
name: pr-review
# スキルが何をするか・いつ使うか。Claude はこれを見てスキルを自動適用するか判断する。
# when_to_use と合わせて 1,536 文字でキャップされるため、主要ユースケースを前置きすること。
description: >
  Pull Request のレビューチェックリストをサブエージェントで生成する。
  コード品質・セキュリティ・Rails 規約を多角的に分析し、優先度付きで
  指摘事項を列挙する。「このPRをレビューして」「変更を確認して」と
  依頼されたときに使用する。
# description に追加される補足コンテキスト。トリガーフレーズや呼び出し例を書く。
when_to_use: 「PRを見て」「レビューして」「#NNN の変更を確認して」のようなフレーズが含まれるとき。issue 番号を引数に渡して呼び出す。例: /pr-review 42
# オートコンプリート時に表示される引数ヒント。
argument-hint: "[issue-number]"
# $name 形式で参照できる位置引数の名前。スペース区切りまたは YAML リスト。
arguments: issue
# true にすると Claude が自動でスキルを読み込まなくなる。副作用があるワークフローや、タイミングを自分で制御したい場合に使う。
disable-model-invocation: true
# false にすると / メニューから非表示になる。Claude のみが呼び出せるバックグラウンド知識スキルに使う。デフォルト: true。
user-invocable: true
# スキルがアクティブな間、許可プロンプトなしで使えるツール。
allowed-tools: Bash(gh *) Bash(git *) Read Grep
# スキルがアクティブな間に使うモデル。次のプロンプトからはセッションのモデルに戻る。
model: opus
# スキルがアクティブな間の思考努力レベル。low / medium / high / xhigh / max。
effort: high
# fork にするとメイン会話の履歴を持たないサブエージェントコンテキストで実行される。
context: fork
# context: fork 時に使うサブエージェントタイプ。Explore / Plan / general-purpose またはカスタム名。
agent: Explore
# スキルのライフサイクルにスコープされたフック。
hooks:
  PostToolUse:
    - matcher: "Bash(gh *)"
      hooks:
        - type: command
          command: "echo \"[pr-review] session=${CLAUDE_SESSION_ID} tool=gh\" >> /tmp/pr-review.log"
# このスキルを自動適用するファイルパスの Glob パターン。一致するファイルを編集中のときだけ読み込まれる。
paths: "**/*.rb,**/*.yml,**/*.md"
# !` ````! ブロックで使うシェル。bash(デフォルト)または powershell。
shell: bash
---

# PR #$issue レビュー

セッション: ${CLAUDE_SESSION_ID}
スキルディレクトリ: ${CLAUDE_SKILL_DIR}

## 事前情報収集

- PR概要: !`gh pr view $issue --json title,body,author,state,baseRefName,headRefName`
- 変更ファイル一覧: !`gh pr diff $issue --name-only`
- 既存レビューコメント: !`gh pr view $issue --comments --json comments`
- 現在のブランチ: !`git branch --show-current`

## レビュータスク

上記の PR 情報を元に、変更ファイルを Read/Grep で精査し、以下の観点で
優先度付きレポートを生成すること。

### 🔴 MUST(マージブロック)

- セキュリティ: SQLインジェクション・mass assignment・認証バイパスがないか
- Rails規約: N+1クエリ・バリデーション漏れ・トランザクション境界の問題
- テスト: 変更ロジックに対応するテストが存在するか

### 🟡 SHOULD(マージ前推奨)

- パフォーマンス: 不要なDB呼び出し・インデックス不足
- 可読性: メソッド長・命名規則の逸脱
- エラーハンドリング: 例外の適切な捕捉と処理

### 🟢 NICE TO HAVE(次回以降可)

- リファクタリング機会
- ドキュメント・コメントの改善

## 出力フォーマット

**PR #$issue レビューレポート**

🔴 MUST(マージブロック)
- 指摘内容 — `ファイル名:行番号`

🟡 SHOULD(マージ前推奨)
- 指摘内容 — `ファイル名:行番号`

🟢 NICE TO HAVE(次回以降可)
- 指摘内容

✅ 良い点
- 評価内容