コンテンツにスキップ

skill を書いて手順を残す

tier 2(効いてくる)確認 1 か月前(2026年8月23日)

どこまで来たら使えたと言えるか

面: 両方で同じ

段達成したと言える状態
1. 触る.claude/skills/<name>/SKILL.md を 1 つ作り、/<name> で呼び出せることと /skills に出ることを確認した
2. 入れる繰り返す手順を skill にして、description から Claude が自動で呼ぶ場面と自分で呼ぶ場面が分かれている
3. 効かせる呼び出し制御(disable-model-invocation / user-invocable)と context: fork を用途で選べ、一覧のコンテキストコストを /doctor で見ている

何のためのものか

SKILL.md に指示を書いて Claude の能力を拡張する仕組み。関連する場面で Claude が自動的に使うか、/skill-name で直接呼ぶ。

CLAUDE.md と違い、skill の本文は使用時にのみ読み込まれる。 常に効かせたいものは CLAUDE.md、必要なときだけ出てくればよいものは skill、という切り分けになる。

触る

  1. .claude/skills/<skill-name>/SKILL.md を作る。frontmatter は description だけでよい
  2. /skill-name で呼ぶ。コマンド名はディレクトリ名から決まる(name は一覧の表示ラベルを変えるだけ)
  3. /skills で一覧を見る

.claude/commands/deploy.md と .claude/skills/deploy/SKILL.md はどちらも /deploy を作り、同じように動く。既存の .claude/commands/ はそのまま動く。

編集はセッション中に反映される(live change detection)。ただしセッション開始時に存在しなかったトップレベルの skills ディレクトリを作った場合は再起動が要る。

入れる

置き場所と description を決める。

置き場所適用範囲
~/.claude/skills/<skill-name>/SKILL.md自分の全プロジェクト
.claude/skills/<skill-name>/SKILL.mdそのプロジェクトのみ。バージョン管理にコミットして配る
  • description は「何をするか・いつ使うか」を書く。 Claude はこれで適用を判断する。トリガーになる言い回しは when_to_use に足せる
  • 引数を受けるなら $ARGUMENTS、$1 のような位置指定、arguments frontmatter で宣言した $name が使える
  • ${CLAUDE_SKILL_DIR} と ${CLAUDE_PROJECT_DIR} は本文でも allowed-tools の Bash ルールでも置換される
  • 手順の途中で現在の状態が要るなら dynamic context injection。!`<command>` は送信前に実行され、出力で置き換わる(複数行は ```! のフェンス)
  • SKILL.md は 500 行未満に保ち、詳細は補助ファイルへ移す

効かせる

呼び出しの制御を使い分ける。

frontmatterユーザーが呼べるClaude が呼べる
(既定)はいはい
disable-model-invocation: trueはいいいえ(description もコンテキストに入らない)
user-invocable: falseいいえはい
  • 重い調査は context: fork。 skill の内容が subagent を駆動するプロンプトになり、会話履歴へのアクセスは無い。既定でバックグラウンドで動き、background: false で呼び出したターン内に結果を待つ
  • allowed-tools は「そのターンだけの事前承認」。 次のメッセージ送信で解除される。セッション全体で効かせたいなら permission 設定に allow ルールを書く
  • 一覧のコストを見る。 skill 名と description の一覧はコンテキストに読み込まれ、予算はモデルのコンテキストウィンドウの 1%。溢れると呼び出し回数の少ない skill から description が落ちる。/doctor で見積もりと主な要因が分かる

落とし穴

  • frontmatter の YAML が壊れていると、/skill-name は動くのに自動では呼ばれない。 メタデータ空で読み込まれるため description によるマッチングが効かない。--debug でパースエラーを確認する
  • 呼び出した skill の本文はセッションの残りの間コンテキストに留まる。 行ごとに継続的なトークンコストになる
  • Claude Code は後のターンで skill ファイルを再読み込みしない。 編集した内容を効かせたいなら呼び直す
  • バックグラウンドで動く forked skill の編集は /rewind で戻せない。 git で戻す
  • context: fork はタスクを持つ skill にしか意味が無い。ガイドラインだけの skill を fork しても、実行可能なプロンプトを受け取らない

根拠と前後

このページが書ける範囲は、根拠にした facts に書かれていることだけです。 仕様そのものはそちらを読んでください。