create-skill
新しいスキルの作成ガイドを提供する。Use when user asks to [スキルを作りたい, 新しいスキル, /create-skill].
SKILL.md.claude/skills/dev/create-skill/SKILL.md
GitHubfrontmatter の使い分け
| パターン | 設定 | 用途 |
|---|---|---|
| ユーザー&Claude両方が呼出し | (デフォルト) | 汎用リファレンス・軽い作業 |
| ユーザーのみ呼出し | disable-model-invocation: true |
デプロイ・副作用のある操作 |
| Claudeのみ呼出し | user-invocable: false |
背景知識・規約 |
本文の構成パターン
タスク型(手順を実行するスキル):
## 用途
## 引数
## 手順
### Phase 1: ...
### Phase 2: ...
## 注意
## 参照
リファレンス型(知識を提供するスキル):
## いつ適用するか
## 規約
## 例外
変数置換
| 変数 | 内容 |
|---|---|
$ARGUMENTS |
スキル呼出し時の全引数 |
$ARGUMENTS[0], $0 |
位置引数(0始まり) |
${CLAUDE_SKILL_DIR} |
SKILL.md のあるディレクトリ絶対パス |
${CLAUDE_SESSION_ID} |
セッション ID |
スクリプト参照は ${CLAUDE_SKILL_DIR} を使う:
node "${CLAUDE_SKILL_DIR}/scripts/helper.js" $ARGUMENTS
動的コンテキスト注入
!`command` 構文でシェルコマンドの出力をスキル内容に埋め込める:
## 現在の状態
- ブランチ: !`git branch --show-current`
- 未コミット: !`git status --short`
scripts/ の設計
2つのパターン
パラメータ駆動型(推奨: 繰り返し使うスクリプト):
- JSON 設定ファイルを受け取り、出力を生成
- スクリプト自体は変更不要
- 例:
scatter.js config.json output.svg
テンプレート型(カスタマイズが必要なスクリプト):
// CUSTOMIZE:コメントで編集箇所を明示- 記事ディレクトリにコピーして使う
- 例:
cover-template.js
スクリプトの原則
- 自己完結: 外部パッケージへの依存は最小限(
require('fs'),require('path')等の Node.js 標準 + プロジェクトのnode_modules) - 引数は
process.argv: 設定は JSON ファイル or コマンド引数で渡す - 出力先は引数で指定: ハードコードしない
- エラーメッセージは具体的に: 設定ファイルがない場合は使い方を表示
reference/ の設計
SKILL.md が 500 行を超えそうなとき、詳細を分離する:
- デザインシステム: 色・フォント・サイズ等の定数
- チャートパターン: 種別ごとの選び方・実装方法
- API リファレンス: 関数シグネチャ・オプション一覧
SKILL.md からの参照:
詳細は [reference/design-system.md](reference/design-system.md) を参照。
examples/ の設計
完成物の実例を置く。Claude が構造を理解する最良のリファレンス。
- 実際の記事から生成した SVG / JSON / マークダウン
- コメント付きで「なぜこの構造か」を説明(任意)
スキルの配置場所
| 場所 | パス | 適用範囲 |
|---|---|---|
| プロジェクト | .claude/skills/<name>/SKILL.md |
このリポジトリ |
| 個人 | ~/.claude/skills/<name>/SKILL.md |
全プロジェクト |
| エンタープライズ | managed settings | 組織全体 |
同名の場合の優先順位: エンタープライズ > 個人 > プロジェクト。
ベストプラクティス
- SKILL.md は 500 行以内: 詳細は reference/ に分離
- description は具体的に: Claude の自動呼出し判断の根拠になる
- 副作用のあるスキルは
disable-model-invocation: true: デプロイ・DB変更・外部API呼出し等 - 一時ファイルは後処理で削除: CLAUDE.md の作業規約に従う
- スクリプトは
${CLAUDE_SKILL_DIR}で参照: 作業ディレクトリに依存しない context: forkは明確なタスクがあるときのみ: ガイドラインだけのスキルをforkすると空の結果が返るallowed-toolsで最小権限: 読み取り専用スキルにはRead, Grep, Globのみ
サブエージェント作成時の model 指定ルール
新しいサブエージェント(.claude/agents/*.md)を作成・改修するときは、frontmatter の model: を必ず決める。既定値は sonnet。
判定フロー
- Generator か?(コンテンツ生成・変換・リライト・データ収集・ルーブリック適用)
→
model: sonnet - Evaluator で、評価基準が定型化されているか?(5軸ルーブリック・チェックリスト・HIGH/MEDIUM/LOW 判定)
→
model: sonnet - オーケストレーターで、親の思考力を借りたいか?(戦略判断・批判的レビュー・事前検死)
→
model: inherit - 上記に当てはまらず、サブエージェント側で Opus が必要な理由があるか?
→ frontmatter の description と本文「モデル方針」欄に理由を明記した上で
model: opus。これは例外扱い
テンプレート frontmatter
---
name: {agent-name}
description: {一行説明 — 種別(Generator/Evaluator/Orchestrator)を含める}
model: sonnet # または inherit(オーケストレーターのみ)
domain: {領域 id — config/domains.json(skills-design-guide.md「domain フィールド」)}
---
# {Agent Name}
{本文}
> **モデル方針**: このエージェントは `model: {sonnet|inherit}` で動作します。{理由を1-2文で}。詳細は CLAUDE.md「ハーネス設計原則」参照。
既存エージェントの model 指定一覧
CLAUDE.md §5「ハーネス設計原則」の既定(サブエージェントは sonnet・Opus は親のみ)に従う。エージェントを追加したら .claude/knowledge/reference/agents-registry.md「エージェント一覧」を更新すること(CLAUDE.md に per-agent の表は無い)。
なぜこうするか
親エージェント(Claude Code 本体)が Opus で計画・判断・統合を担い、サブエージェントは Sonnet で高速・低コストに実行する。これによりコスト効率と判断の質を両立できる。Opus を固定指定するのはサブエージェント側で深い推論が不可欠なケースのみで、原則は親の Opus がレビューする前提で Sonnet に任せる。詳細は CLAUDE.md「ハーネス設計原則」§5。
このプロジェクト固有の規約
詳細は reference/project-conventions.md を参照。