Claude Code Skillsの基本的な使い方——SKILL.mdの作成・$ARGUMENTS引数・YAMLフロントマターの概要——はカスタムスキル完全ガイドで解説しています。「とりあえずスキルを作れるようになった」という方が次にぶつかるのは、実際の運用で発生する別の問題です。
「descriptionを書いたのに自動で呼ばれない」「チームで使うルールをどう決めれば良いか分からない」「スキルが増えすぎて管理が大変になってきた」——こうした課題は、スキルの設計と運用方針が固まっていないことで起きます。
- descriptionの書き方で自動発火の精度を上げる方法
- 全YAMLフィールドの実践的な使い方(全11フィールド)
- プロジェクトスキルと個人スキルの2層設計パターン
- 動的コンテキスト注入(!`command`構文)の実践例
- context:forkで並列・隔離実行する設計
- チームでスキルを運用するライフサイクル管理
Claude Code全般の基礎はClaude Code完全ガイドを参照してください。大規模コードベースへの適用は大規模コードベース対応ガイドも合わせて読むと理解が深まります。
Skillsの自動発火を制御するdescription設計
descriptionはYAMLフロントマターの中でもっとも重要なフィールドです。ここの書き方次第で、スキルが意図したタイミングで自動的に呼ばれるかどうかが決まります。
自動発火の仕組み
Claude Codeは起動時に、利用可能なすべてのスキルのnameとdescriptionをシステムプロンプトの<available_skills>ブロックとして読み込みます。Claudeはユーザーの発言を受け取るたびにこの一覧を照合し、適切なスキルがあると判断すれば自動的に呼び出します。
SKILL.mdの本文(プロンプト本体)は、スキルが実際に実行される瞬間にのみ読み込まれます。起動時のシステムプロンプトに含まれるのはnameとdescriptionだけです。つまり自動発火を制御できるのはdescriptionのみという構造になっています。
name + description(起動時に全スキルを読み込み)→ ユーザー発言と照合 → 一致すれば自動発火 → SKILL.md本文(実行時に読み込み)descriptionの書き方の原則
自動発火の精度を上げるための書き方には、いくつかの原則があります。一番重要なのは「Claudeが読むメタデータ」として書くことです。ユーザーへの説明文ではなく、Claudeへの判断指示として書きます。
| 原則 | 良い例 | 悪い例 |
|---|---|---|
| 第三人称で書く | Extracts text from PDF files... |
I can help you with PDFs... |
| 動詞から始める | Analyzes git diff and generates... |
This skill is for... |
| 具体的なキーワードを含める | ...PDF, forms, document extraction |
...documents |
| “Use when…” パターンを使う | Use when the user mentions PDF or forms |
Useful for document tasks |
| 200文字以上書く | 200〜1024文字が推奨範囲 | 1行程度では精度が落ちる |
悪い例・良い例の比較
--- name: pdf-tool description: Helps with documents ---
--- name: pdf-tool description: Extracts text and tables from PDF files, fills PDF forms, converts PDFs to Markdown, and merges multiple PDF files. Use when working with PDF files or when the user mentions PDFs, forms, document extraction, PDF conversion, or merging documents. ---
良い例は「何ができるか(Extracts / fills / converts / merges)」と「いつ使うか(Use when…)」の両方を含んでいます。ファイル形式・操作の動詞・ユーザーが使いそうなキーワードを具体的に列挙することで、Claudeの照合精度が上がります。
自動発火を制御するオプション
自動発火を完全に無効化したい、あるいはスキルメニューから非表示にしたいケースには専用のフラグがあります。
| 設定 | disable-model-invocation | user-invocable | 用途 |
|---|---|---|---|
| デフォルト | false | true | 通常のスキル(自動発火あり・メニュー表示あり) |
| 手動専用スキル | true | true | 破壊的操作・確認が必要な処理。/名前で明示的に呼ぶ |
| 内部参照用スキル | false | false | Claudeが参照するドキュメント。/メニュー非表示 |
disable-model-invocation: trueは、デプロイやDB操作など「ユーザーが意図的に呼ぶべき」スキルに適しています。user-invocable: falseは、チームのコーディング規約をスキルとして定義しておき、Claudeが参照するが人間がコマンドとして呼ぶことはないケースで使います。
YAMLフロントマター全フィールドの実践的な使い方
SKILL.mdのYAMLフロントマターには11のフィールドがあります。基礎記事では概要を紹介しましたが、ここでは実際の設計判断に役立つ観点で解説します。
基本フィールド
| フィールド | 推奨値・書き方 | 実践上の注意点 |
|---|---|---|
name |
小文字・ハイフン区切り。ディレクトリ名と合わせる | ディレクトリ名と異なる場合、/メニューでの表示がnameになる |
description |
200〜1024文字。動詞から始め”Use when…”を含む | 短すぎると自動発火しない。長すぎてもコンテキスト消費に注意 |
argument-hint |
[path]や[PR番号] [--strict]形式 |
コロンを含む場合は引用符で囲む:argument-hint: "[key: value]" |
version |
"2.1"のように文字列で書く |
Claudeの動作には影響しない。チームでのスキル管理用メタデータ |
実行制御フィールド
実行制御フィールドはスキルの動作モードを変えます。適切に設定することでセキュリティ向上・パフォーマンス最適化・コスト削減ができます。
| フィールド | 値 | 使いどころ |
|---|---|---|
allowed-tools |
Read, Grep, Glob, Bash(git *) |
デフォルトは全ツール許可。不要なツールを制限してセキュリティを高める |
model |
claude-opus-4-6 / claude-haiku-4-5 |
重い分析はOpus、軽い定型処理はHaikuでコスト最適化 |
effort |
low / medium / high / max |
Opusモデルでのみ有効。セキュリティ監査など深い推論が必要な場合にhigh |
context |
fork(現状はこれのみ) |
サブエージェントとして独立したコンテキストで実行。メインセッションをブロックしない |
agent |
Explore / Plan / general-purpose |
context: fork使用時に指定。分析タスクはExploreが適切 |
allowed-toolsはワイルドカードに対応しています。Bash(git *)はgitコマンドのみ許可、WriteFile(src/*)はsrcディレクトリのみ書き込み可能、という粒度で制御できます。本番環境に影響するスキルでは積極的に制限しましょう。
完全なSKILL.md例(全フィールドを活用)
--- name: security-audit description: Performs a comprehensive security audit of source code, checking for OWASP Top 10 vulnerabilities, SQL injection, XSS, authentication flaws, and secrets exposure in environment files or configuration. Generates a structured report with severity levels and remediation steps. Use when the user asks to audit, review security, check vulnerabilities, scan for secrets, or before a production release. argument-hint: "[path] [--strict]" allowed-tools: Read, Grep, Glob, Bash(git log *), Bash(git diff *) model: claude-opus-4-6 effort: high context: fork agent: Explore disable-model-invocation: false user-invocable: true version: "2.1" --- ## セキュリティ監査の実施 対象パス: $ARGUMENTS(省略時はプロジェクト全体) ### 直近の変更内容 !`git log --oneline -20` 以下の観点で監査を実施し、severity(Critical/High/Medium/Low)付きのレポートを作成してください。 1. OWASP Top 10の脆弱性チェック 2. SQLインジェクション・コマンドインジェクション 3. XSSの可能性(HTMLエスケープ漏れ) 4. 認証・認可の実装ミス 5. 環境変数・設定ファイルでの秘密情報の露出 6. 依存パッケージの既知脆弱性(package.json / requirements.txt を確認) レポートは `docs/security-audit-YYYYMMDD.md` として保存してください。
命名規則と設計原則
命名規則:動詞-目的語形式が基本
スキル名はClaude Codeの/コマンドとして入力するものです。短く・意味が明確で・タイプしやすい名前が理想です。基本パターンは「動詞-目的語」形式です。
| 用途 | 良い命名 | 悪い命名 | 悪い理由 |
|---|---|---|---|
| コードレビュー | review-pr / audit-security |
review / check |
何をレビューするか不明。他スキルと衝突しやすい |
| テスト | generate-unit-tests / fix-failing-tests |
test / testing |
動作が不明確。名詞のみは避ける |
| ドキュメント | update-changelog / write-jsdoc |
docs / document |
何のドキュメントか不明 |
| デプロイ | deploy-staging / rollback-prod |
deploy / release |
環境が不明。本番/STGを区別できない |
| 分析 | analyze-bundle / profile-db-queries |
helper / utils |
意味がまったくない名前 |
スキル名に
helper・utils・tool・common を使うと、何をするスキルか伝わりません。descriptionで補完できますが、名前自体が明確なほうがチームメンバーも使いやすくなります。設計原則:3つのルール
長く運用できるスキル設計には、3つの原則があります。
単一責任原則:1つのスキルに1つの目的を持たせます。「コードレビューとコミットと PR 作成を全部やる」スキルは一見便利ですが、descriptionが長くなりすぎて自動発火の精度が落ち、テストやメンテナンスも難しくなります。
500行制限:SKILL.mdの本文は500行以内に収めます。長くなる場合は参照ファイルに切り出します(後述のProgressive Disclosureパターン)。スキルが長すぎると実行時のコンテキスト消費が増え、トークンコストも上がります。
引数より文脈:引数が5個以上必要になったらスキルの分割を検討します。多くの引数が必要なのは、複数の責任を1つのスキルに持たせているサインです。引数の代わりに!`command`で動的コンテキストを注入する設計も有効です。
2層アーキテクチャ:プロジェクト共有と個人スキル
スキルの配置場所は2種類あります。プロジェクトの.claude/skills/と、ホームディレクトリの~/.claude/skills/です。両方に同名のスキルがある場合の優先順位を正確に理解しておく必要があります。
優先順位(高い順)
優先順位は高い順に、Enterprise配布スキル → 個人スキル(~/.claude/skills/)→ プロジェクトスキル(.claude/skills/)→ 組み込みスキルです。
直感と逆の優先順位です。チームメンバーが個人スキルで同名のスキルを持っていると、プロジェクトスキルが上書きされます。チーム内でスキル名が衝突しないよう、プロジェクトスキルの名前にプロジェクト固有のプレフィックスを付けることも一つの対策です。
~/.claude/skills/ # 個人スキル(全プロジェクト共通)
├── my-style/
│ └── SKILL.md # 個人のコーディングスタイル適用
├── quick-note/
│ └── SKILL.md # よく使うメモ・スニペット
└── daily-standup/
└── SKILL.md # 毎日のスタンドアップ用
project/.claude/skills/ # プロジェクトスキル(チームで git 管理)
├── review-pr/
│ └── SKILL.md # チームのPRレビュー基準
├── deploy-staging/
│ └── SKILL.md # ステージングデプロイ手順
└── onboard-check/
└── SKILL.md # 新メンバー向けセットアップ確認
何をどちらに置くかの判断基準
| 情報の種類 | 置く場所 | 理由 |
|---|---|---|
| チームのコーディング規約 | プロジェクト(.claude/skills/) |
全員で統一。gitで管理・レビューできる |
| デプロイ・CI/CD手順 | プロジェクト(.claude/skills/) |
プロジェクト固有の手順。共有必須 |
| チームのPRテンプレート | プロジェクト(.claude/skills/) |
レビュー基準を統一するため共有 |
| 個人のコードスタイル | 個人(~/.claude/skills/) |
個人の好み。他人に強制しない |
| 実験中・開発中のスキル | 個人(~/.claude/skills/) |
品質が安定するまで個人で検証 |
| 特定プロジェクトと無関係な便利ツール | 個人(~/.claude/skills/) |
全プロジェクトで使いたい |
チーム運用のベストプラクティス
- プロジェクトスキルはPRレビューで品質管理する(SKILL.mdの変更もコードと同様にレビュー)
- descriptionの変更はチームで合意を取る(自動発火パターンに影響するため)
- allowed-toolsの変更はセキュリティレビューが必要
- 個人スキルで実験して安定したらプロジェクトスキルに昇格させるフローを作る
- .gitignoreにはSKILL.mdを含めず、settings.local.jsonのみ除外する
# Claude Code の個人設定は共有しない .claude/settings.local.json .claude/MEMORY.md .claude/memory/ # スキルはチームで共有する(除外しない) # .claude/skills/ は git add する
動的コンテキスト注入(!`command`構文)
SKILL.mdの本文に !`シェルコマンド` を書くと、スキルが実行される直前にそのコマンドが実行され、出力がプロンプトに埋め込まれます。これを「動的コンテキスト注入」と呼びます。
使いどころは「スキル実行時の状態をClaudeに渡したい」ときです。PRの差分・Gitのログ・テスト結果・環境情報など、毎回手動でコピペしていた情報を自動化できます。
実践例1:PRレビュースキル
--- name: pr-review description: Reviews a pull request including its diff, description, and existing comments. Checks for bugs, security issues, test coverage, and code style consistency. Use when asked to review a PR, check a pull request, or review changes before merging. argument-hint: "[PR番号](省略時は現在のブランチのPR)" allowed-tools: Read, Grep, Glob, Bash(gh pr *) --- ## PR情報 - URL / 番号: $ARGUMENTS - 差分: !`gh pr diff $ARGUMENTS` - 既存コメント: !`gh pr view $ARGUMENTS --comments` - 変更ファイル一覧: !`gh pr diff $ARGUMENTS --name-only` 以上の情報をもとにコードレビューを行ってください。 ### レビュー観点 1. PRの説明と実際の変更内容が一致しているか 2. バグ・セキュリティ上の問題(SQLインジェクション・XSS等) 3. テストが十分か(新機能・バグ修正にはテストが必須) 4. コードスタイルが既存コードと統一されているか 5. ドキュメント・コメントの更新が必要か
実践例2:スマートコミットスキル
--- name: smart-commit description: Analyzes the current staged git diff and recent commit history to create a contextually appropriate commit message following the project's conventions. Runs git commit automatically after confirmation. Use when user asks to commit, create a commit message, or stage and commit changes. allowed-tools: Read, Bash(git *) --- ## 現在のステージング済み変更 !`git diff --staged` ## 最近のコミット履歴(スタイル参考) !`git log --oneline -10` ## プロジェクトのコミット規約 !`cat .gitmessage 2>/dev/null || echo "(.gitmessageなし)"` 上記の変更内容と既存のコミット履歴のスタイルを参考に、適切なコミットメッセージを作成してください。 Conventional Commits形式(feat/fix/refactor/docs/test/chore)を使い、 件名は50文字以内・日本語で書いてください。 確認後、`git commit -m "メッセージ"` を実行してください。
実践例3:ログ解析スキル
--- name: analyze-errors description: Analyzes recent application error logs to identify patterns, frequency, and root causes. Checks both application logs and system logs. Groups similar errors and prioritizes by frequency and severity. Use when asked to check errors, analyze logs, investigate issues, or troubleshoot recent problems. argument-hint: "[ログファイルパス] [--last-n-lines=500]" allowed-tools: Read, Grep, Bash(tail *), Bash(grep *) --- ## 直近のエラーログ !`tail -200 logs/error.log 2>/dev/null || tail -200 /var/log/app/error.log 2>/dev/null || echo "ログファイルが見つかりません"` ## システムログ(直近1時間) !`journalctl --since "1 hour ago" --priority=err 2>/dev/null || echo "journalctlが利用できません"` $ARGUMENTSが指定されている場合はそのパスを優先して解析してください。 エラーを以下の形式でまとめてください: 1. エラー種別と発生回数 2. 初回・最終発生時刻 3. 推定される原因 4. 優先度(Critical/High/Medium/Low) 5. 推奨される対処法
- コマンドはスキル実行時にClaudeが作業しているマシン上で実行される(サーバー上ではない)
- 長時間実行するコマンドはタイムアウトする可能性がある(目安:30秒以内に完了するもの)
- コマンドの出力がClaudeに送られるため、機密情報が含まれる場合は注意が必要
- コマンドが失敗した場合はエラーメッセージが埋め込まれる(適切なフォールバックを書いておく)
Progressive Disclosure:スキルファイルの階層設計
スキルが複雑になるとSKILL.mdが長くなりがちです。500行制限を守りつつ詳細情報を持たせるには、参照ファイルを使った階層設計が有効です。これを「Progressive Disclosure(段階的開示)パターン」と呼びます。
原則はシンプルです。SKILL.md本文はコア指示に絞り、チェックリスト・テンプレート・例などの詳細は別ファイルに切り出して、ClaudeにReadツールで読ませます。
.claude/skills/full-audit/
├── SKILL.md # メイン(500行以下)
├── reference/
│ ├── owasp-checklist.md # OWASPチェックリスト詳細
│ ├── report-template.md # レポートテンプレート
│ └── severity-guidelines.md # 重要度判定基準
├── examples/
│ └── sample-report.md # 出力例
└── scripts/
└── run-semgrep.sh # 前処理スクリプト
---
name: full-audit
description: Performs a comprehensive security audit using OWASP guidelines and generates
a structured report with severity ratings. Reads reference files for detailed checklist
and report format. Use when asked for a full audit, security review, or pre-release check.
allowed-tools: Read, Grep, Glob, Bash(git log *), Bash(bash .claude/skills/full-audit/scripts/*)
effort: high
context: fork
agent: Explore
---
## セキュリティ監査の実施
### チェックリスト
Read(".claude/skills/full-audit/reference/owasp-checklist.md") を読み込んでから監査を始めてください。
### 出力形式
Read(".claude/skills/full-audit/reference/report-template.md") のテンプレートに従ってレポートを作成してください。
### 重要度の判定基準
Read(".claude/skills/full-audit/reference/severity-guidelines.md") を参照してください。
監査完了後、`docs/security-audit-$(date +%Y%m%d).md` として保存してください。
このパターンの利点は、チェックリストやテンプレートだけを更新する際にSKILL.md本体を変更しなくて済むことです。SKILL.mdの変更はdescriptionへの影響があるためチームの合意が必要ですが、参照ファイルの更新は内容の改訂なので変更コストが低くなります。
context:forkで並列・隔離実行する
context: forkを設定すると、スキルが独立したサブエージェントのコンテキストで実行されます。メインセッションとは切り離された環境で動くため、長時間の処理でもメインセッションをブロックしません。
通常実行とfork実行の違い
| 項目 | 通常実行 | context: fork |
|---|---|---|
| 実行コンテキスト | メインセッションと共有 | 独立したサブエージェント |
| 会話履歴の引き継ぎ | あり | なし(CLAUDE.mdは読み込まれる) |
| メインセッションへの影響 | ブロックする | ブロックしない |
| ツール制限 | allowed-toolsが適用 | allowed-toolsが適用 |
| 権限設定 | settings.jsonを引き継ぐ | settings.jsonを引き継ぐ |
| 向いている処理 | 軽い処理・対話的な処理 | 重い分析・読み取り専用の大規模調査 |
実践例:並列コードレビュースキル
--- name: parallel-review description: Runs security audit, test coverage analysis, and code style review in parallel as independent sub-agents. Generates a consolidated report from all three perspectives. Use when doing a comprehensive review before a release, major PR, or production deploy. context: fork agent: Explore allowed-tools: Read, Grep, Glob, Bash(npm test), Bash(npm run lint), Bash(git diff *) effort: high --- ## リリース前包括レビュー 以下の3つの観点で並列にコードレビューを実施してください。 各観点は独立して分析し、最後に統合レポートとしてまとめてください。 ### 観点1:セキュリティ監査 - OWASP Top 10の脆弱性確認 - 認証・認可の実装ミス - 秘密情報の誤コミット確認 ### 観点2:テストカバレッジ - !`npm test -- --coverage 2>&1 | tail -30` - カバレッジが80%未満のファイルを特定 - テストが存在しない新規ファイルを列挙 ### 観点3:コードスタイル - !`npm run lint 2>&1 | head -50` - チームのコーディング規約との整合性 - コメント・ドキュメントの不足箇所 ### 統合レポート 3観点の結果をまとめ、優先度付きのアクションリストを作成してください。 `docs/release-review-$(date +%Y%m%d).md` として保存してください。
Subagentsとの違いについてはClaude Code Subagents完全ガイドで詳しく解説しています。スキルのcontext:forkはSubagentsの軽量版と考えると分かりやすいです。Subagentsが複数の専門エージェントを動的に組み合わせるのに対し、スキルのforkは単一のスキルを隔離実行するためのものです。
親スキルから子スキルを
/parent-skill child-skill のように直接呼び出す記法は、現時点(2026年3月)の公式ドキュメントに記載がありません。代わりに context: fork + allowed-tools: Skill(...) の組み合わせを使うか、Subagentsを活用してください。Hooksと組み合わせると、スキル実行前後に自動チェックを走らせることもできます。詳細はClaude Code Hooks完全ガイドを参照してください。
チーム運用の設計パターン
スキルを長期的に維持・改善するためにはライフサイクル管理の仕組みが必要です。コードと同様に、スキルも作ったら終わりではなく継続的なメンテナンスが求められます。
スキルのライフサイクル
スキルは4つのフェーズを経ます。個人で試作(個人スキルとして作成・検証)→ チームでレビュー(PRを出してdescription・allowed-toolsをチームで確認)→ 本番運用(プロジェクトスキルとして安定運用)→ 棚卸し(定期的な見直しと更新・アーカイブ)です。
定期棚卸しの判断基準
| スキルの状態 | 対処 |
|---|---|
| 3ヶ月以上使われていない | アーカイブまたは削除 |
| descriptionが現在の機能と乖離している | 更新してPRを出す |
| 同じ目的のスキルが複数存在する | 統合または一方を削除 |
| 引数が5個以上になっている | 分割を検討 |
| SKILL.mdが500行を超えている | 参照ファイルに切り出す |
| allowed-toolsが設定されていない | 最小権限を設定する |
スキル品質チェックリスト
## スキル品質チェックリスト ### description - [ ] 第三人称で始まっている("Extracts..." / "Analyzes..." など) - [ ] 200文字以上ある - [ ] "Use when..." パターンで使用シーンを明記している - [ ] 具体的なキーワード(ファイル形式・コマンド名・エラー名等)を含む ### SKILL.md本体 - [ ] 500行以下に収まっている - [ ] 引数が5個未満(多い場合は分割を検討) - [ ] !`command`の出力に機密情報が含まれないことを確認 ### セキュリティ - [ ] allowed-toolsで不要なツールを制限している - [ ] 破壊的操作のスキルには disable-model-invocation: true を設定 ### 命名 - [ ] 動詞-目的語形式になっている - [ ] 既存スキルと重複していない - [ ] version フィールドでメタデータを記録している
PRレビューで確認すべきこと
- descriptionの変更:自動発火パターンに影響するため必ずチームで確認
- allowed-toolsの変更・削除:セキュリティへの影響をレビュー
- !`command`の追加:機密情報が出力される可能性を確認
- model・effortの変更:コストへの影響を確認
- context: forkの追加:メインセッションへの影響が変わる点を認識
実践的なスキル設計例
設計原則を踏まえた実践的なスキルの完全例を3つ紹介します。実際のプロジェクトでそのまま使えるように設計しています。
例1:PRレビュースキル(動的コンテキスト注入)
--- name: review-pr description: Reviews a GitHub pull request by fetching the diff, description, and existing reviewer comments automatically. Checks for bugs, security vulnerabilities, missing tests, documentation gaps, and style consistency with the codebase. Provides actionable feedback with file names and line numbers. Use when asked to review a PR or pull request, check a specific PR number, or review changes before merging to main. argument-hint: "[PR番号]" allowed-tools: Read, Bash(gh pr *), Bash(git log *) version: "1.0" --- ## PR情報の取得 - 番号: $ARGUMENTS - 差分: !`gh pr diff $ARGUMENTS` - PR概要とコメント: !`gh pr view $ARGUMENTS --comments` - 変更ファイル: !`gh pr diff $ARGUMENTS --name-only` - 最近のコミット: !`git log --oneline -5` ## レビュー観点 ### バグ・ロジックエラー 差分を注意深く読み、潜在的なバグや論理的な誤りを指摘してください。 ### セキュリティ 入力値のバリデーション・認証・SQLインジェクション・XSS・秘密情報の露出を確認してください。 ### テスト 変更に対応するテストが存在するか確認してください。 新機能・バグ修正にはテストが必須です。テストが不足している場合は指摘してください。 ### ドキュメント 公開APIや設定値の変更がある場合、ドキュメントの更新が必要かどうかを確認してください。 レビュー結果はファイル名と行番号を明記して日本語でまとめてください。
例2:チーム共有のデプロイスキル(allowed-tools制限)
--- name: deploy-staging description: Deploys the current branch to the staging environment by running build, tests, and the deploy script in sequence. Checks for uncommitted changes before starting. Use ONLY when explicitly asked to deploy to staging or push to the staging environment. Do NOT use for production deploys. argument-hint: "[--skip-tests]" allowed-tools: Bash(npm run build), Bash(npm test), Bash(bash scripts/deploy-staging.sh), Bash(git status), Bash(git branch) disable-model-invocation: true version: "2.0" --- ## デプロイ前チェック ### 現在のブランチと変更状況 !`git status --short` !`git branch --show-current` 未コミットの変更がある場合は作業者に確認してからデプロイしてください。 ## デプロイ手順 1. ビルド: `npm run build` エラーがあればデプロイを中止してください。 2. テスト: `npm test`($ARGUMENTSに --skip-tests が含まれる場合はスキップ) テストが失敗した場合はデプロイを中止してください。 3. ステージングデプロイ: `bash scripts/deploy-staging.sh` 4. デプロイ結果を報告してください。 ⚠️ 本番環境へのデプロイはこのスキルでは実行しません。
disable-model-invocation: trueにより、このスキルはClaudeが自動的に判断して実行することはありません。ユーザーが明示的に/deploy-stagingとコマンドを入力した場合のみ実行されます。デプロイのような破壊的・不可逆な操作では必ずこの設定を入れましょう。
例3:ドキュメント自動生成スキル(context:fork + 参照ファイル)
---
name: gen-api-docs
description: Generates API documentation from TypeScript source files by reading type
definitions, JSDoc comments, and existing docs. Creates or updates docs in the docs/api/
directory. Use when asked to generate documentation, update API docs, or document a
TypeScript module.
argument-hint: "[ファイルパスまたはディレクトリ]"
allowed-tools: Read, Write, Glob, Grep
context: fork
agent: Explore
effort: medium
version: "1.1"
---
## APIドキュメント生成
対象: $ARGUMENTS
### 手順
1. 対象ファイルのTypeScript型定義とJSDocコメントを読み込む
2. Read(".claude/skills/gen-api-docs/reference/doc-template.md") でテンプレートを確認する
3. 既存のドキュメントがあれば読み込んで差分のみ更新する
4. ドキュメントを `docs/api/` に保存する
### ドキュメントに含めること
- 各関数・クラス・インターフェースの概要
- パラメータの型と説明
- 戻り値の型と説明
- 使用例(JSDocの @example があれば使う)
- 関連するインターフェース・型定義へのリンク
既存ドキュメントとの整合性を保ち、削除せずに更新してください。
よくある質問
Qdescriptionを書いても自動発火しない場合は?
Adescriptionが短すぎる・具体的なキーワードが不足していることが多いです。「何ができるか」「どんな言葉をユーザーが言ったら使うか」を”Use when…”パターンで明記してください。200文字を目安に、具体的なファイル形式・コマンド名・エラー名を含めると精度が上がります。また、disable-model-invocation: trueが設定されている場合は自動発火が無効です。
Q個人スキルとプロジェクトスキルで同名のスキルがある場合は?
A個人スキル(~/.claude/skills/)がプロジェクトスキル(.claude/skills/)より優先されます。意図せず個人スキルがプロジェクトスキルを上書きしている場合は、個人スキルの名前を変えるか削除してください。チームで統一するスキル名には、個人スキルで別の名前を使うよう注意が必要です。
Qallowed-toolsを設定したのにツールを使えない場合は?
Aワイルドカードの書き方を確認してください。Bash(git *)はgitコマンドのみ許可します。ツール名は大文字小文字を区別します(Read・Write・Bash・Grep・Glob等)。また、allowed-toolsに指定していないツールはそのスキル内では使えません。必要なツールが漏れていないか確認してください。
Qcontext:forkと通常実行の違いは?
Acontext: forkはスキルを独立したサブエージェントとして実行します。現在のセッションの会話履歴は引き継がれませんが、CLAUDE.mdとsettings.jsonは引き継がれます。長時間の読み取り専用分析や、メインセッションをブロックしたくない重い処理に向いています。軽い処理・対話的な処理には通常実行のほうが適しています。
Qスキルが増えすぎたら整理する方法は?
A3ヶ月使われていないスキルをアーカイブすることから始めましょう。Gitのログでlast commitを確認し、使用頻度が低いスキルを特定できます。同じ目的のスキルが複数ある場合は統合します。個人スキルと混在している場合は、プロジェクトスキルとして残すものを選別してください。
Qチームメンバー全員が同じスキルを使うには?
A.claude/skills/をgitで管理することで全員が同じスキルを使えます。git cloneした時点でスキルが使える状態になります。CLAUDE.mdにスキル一覧を記載しておくと、新しいメンバーがオンボーディングしやすくなります。なお、個人スキル(~/.claude/skills/)はgit管理外のため各自で設定が必要です。
QSKILL.mdが長くなりすぎたら?
A500行を目安に、超えたら参照ファイルへの切り出しを検討します。チェックリスト・テンプレート・具体例は reference/ や examples/ ディレクトリに分離できます。SKILL.md本文からは Read("パス") で参照させます。スキルを分割して単一責任にすることも有効です。
Qultrathinkをスキルから有効化するには?
Aeffort: max を設定することで、ultrathink相当の深い推論を有効化できます。ただし effort フィールドは claude-opus-4-6 モデルを使用している場合のみ有効です。合わせて model: claude-opus-4-6 を明示的に指定してください。コストが大幅に増加するため、セキュリティ監査・大規模リファクタリング計画など本当に必要な場面に限定することを推奨します。
まとめ
Skills設計で押さえるべきポイントを一覧でまとめます。
| 設計要素 | 原則 | 具体的な実践 |
|---|---|---|
| description | 200文字以上・第三人称・”Use when…”を含む | 動詞から始め、具体的なキーワードを列挙する |
| 命名 | 動詞-目的語形式 | review-pr・deploy-stagingなど目的を明確に |
| allowed-tools | 最小権限の原則 | 使わないツールを制限。Bash(*) は避ける |
| スキルの長さ | SKILL.mdは500行以下 | 詳細は参照ファイルに切り出す |
| 配置場所 | 役割に応じて2層に分ける | チーム共有はプロジェクト・個人の好みはホーム |
| 動的コンテキスト | !`command`で最新情報を自動注入 | git diff・PRコメント・ログなど |
| 隔離実行 | context: forkで重い処理を分離 | 読み取り専用分析・長時間処理に |
| ライフサイクル | 3ヶ月ルールで棚卸し | 使われていないスキルは削除・アーカイブ |
カスタムスキル完全ガイドでSKILL.mdの基本的な作り方を学んだ後、この記事の設計原則を適用することで、長期的に使いやすいスキルを構築できます。
Hooksと組み合わせたスキルの前後処理についてはHooks完全ガイドを、大規模なコードベースへの適用については大規模コードベース対応ガイドを参照してください。
