/fix-issue 123 と入力すると、Claude Codeはチームの基準が添付された完全なプロンプトに展開します。カスタムスラッシュコマンドはClaude Codeで最も安価な自動化です — 1つのマークダウンファイル、設定は不要 — そして見逃しがちな方法で変更されました:カスタムコマンドはスキルに統合されました。 .claude/commands/ ファイルは引き続き動作しますが、統合モデルはバグのように見えるいくつかの事柄(引数が展開されない、ツール権限がタスク途中で消える)を説明し、コマンドがこれまで持っていなかった機能を追加します。
以下は、2026年7月下旬時点の公式ドキュメントで検証された現在の動作です。
単一ファイル版は引き続き動作します
プロジェクトにマークダウンファイルを配置します:
<!-- .claude/commands/fix-issue.md -->
---
description: "Fix a GitHub issue by number"
---
Fix GitHub issue $ARGUMENTS following our coding standards.
Read the issue with `gh issue view`, locate the relevant code,
implement the fix, and add a regression test.
Enter fullscreen mode Exit fullscreen mode
/fix-issue 123 と入力すると、$ARGUMENTS が 123 に置換された内容が送信されます。
統合により、このファイルと .claude/skills/fix-issue/SKILL.md のスキルはどちらも /fix-issue を作成し、同じ動作をします。スキルが追加する機能:
- 必要な時のみClaudeが読み込む(テンプレート、スクリプト、リファレンスドキュメントなどの)サポートファイル用のディレクトリ
- 誰が呼び出せるかを制御するフロントマター(あなた、Claude、または両方)
- 自動呼び出し:会話が説明に一致するとClaudeが読み込めます
コマンドとスキルが同じ名前を共有する場合、スキルが優先されます。実践的なルール:使い捨ての個人用ショートカットは commands/ に残し、成長させたり共有したりするものは skills/ に属します。(実際にトリガーする説明の書き方は別トピックです — SKILL.mdガイド で取り上げました。)
引数:$ARGUMENTS、$0、クォートルール
3つの展開ルールで、ほぼすべての混乱をカバーできます:
1. $ARGUMENTS は入力された文字列全体です。 /fix-issue 123 high-priority → $ARGUMENTS は 123 high-priority になります。
2. インデックスアクセスは0ベースでシェルクォートされます。 $ARGUMENTS[0](または短縮形の $0)は最初の引数です。クォートで単語をグループ化します:
/migrate-component "search bar" React Vue
→ $0 = search bar, $1 = React, $2 = Vue
Enter fullscreen mode Exit fullscreen mode
3. 値が欠落した場合の動作はプレースホルダーの種類によって異なります。 一致する引数がないインデックス付きプレースホルダー(1つの引数しか渡していない場合の $2)は、テキスト内に変更されずに残ります。フロントマターで宣言された名前付きプレースホルダーは空文字列に展開されます。散文にリテラルのドル記号付き数字($1.00)が必要な場合はエスケープします:\$1.00。
もう1つの安全網:引数を渡したのにファイルに $ARGUMENTS が一切含まれていない場合、Claude Codeは入力内容を ARGUMENTS: <your input> として末尾に追記するので、入力が黙って破棄されることはありません。
ライブデータ挿入:!`command`
これは定型プロンプトを根拠のあるものに変える機能です。以下のような行:
## Current diff
!`git diff HEAD`
Enter fullscreen mode Exit fullscreen mode
は、Claudeが何も見る前にシェルコマンドを実行し、出力でプレースホルダーを置き換えます。Claudeは実際の差分を受け取るので、「差分を取得せよ」という指示ではなく、モデルが実際に見たことのない差分を「要約」する可能性もなくなります — ツールの往復が1回減ります。
置換は1パスです:コマンドの出力が別の !`…` プレースホルダーを出力して2回目の展開を起こすことはありません。データとして扱い、マクロとしては扱いません。
allowed-tools は1ターン限定の許可であり、セッション設定ではありません
統合モデルで最もよくある驚きです。以下のようなフロントマター:
allowed-tools: Bash(git add:*), Bash(git commit:*)
Enter fullscreen mode Exit fullscreen mode
は、これらのツールをスキルが呼び出されたターンに限り事前承認します。次のメッセージを送信すると許可はクリアされます — スキルの内容はコンテキストに残っていてもです。「同じコマンドなのにClaudeがまた許可を求めるのはなぜ?」という疑問は通常これが原因です:指示は残りますが、許可は残りません。スキルを再呼び出しすると許可が再適用されます。
関連する2つの注意点:
-
allowed-toolsは何も制限しません。リストにないツールは通常の権限設定の下で引き続き利用可能です。 -
${CLAUDE_SKILL_DIR}は本文とallowed-toolsの両方で展開されるため、スキルはスクリプトを同梱し、そのスクリプトの呼び出しだけを事前承認できます — プロンプトもワイルドカードも不要です。
セッション全体で持続する許可が必要な場合は、代わりに権限ルールに属します — allow/deny/askのマッチングロジックはそれ自体が地雷原です。
誰が呼び出せるかを決める
デフォルトでは、あなたとClaudeの両方が任意のスキルを呼び出せます。2つのフロントマタースイッチでこれを変更できます:
-
disable-model-invocation: true— あなただけがトリガーできます。タイミングが重要な副作用を持つものに使用します:/deploy、/commit、/send-release-notes。モデルがコードが「準備できたように見える」だけでデプロイするのを防ぎます。 -
user-invocable: false— Claudeだけが読み込めます。有意義なアクションではない背景知識(legacy-system-contextスキルなど)に使用します。
スキルの説明は常にコンテキスト内にあるので、Claudeは存在するものを把握できます;本文は呼び出し時に読み込まれます。
本文は持続します — 常駐命令のように書く
一度呼び出されると、レンダリングされた内容はセッションの残り期間中、会話に残ります(同一スキルを再呼び出しすると重複ではなく短い「すでに読み込み済み」メモが追加されます)。2つの結果:
- すべての行が繰り返し発生するトークンコストになります。やるべきことを述べ、理由の長文は省略します。
- 指示は常駐ルール(「Yを編集した後は常にXを実行する」)として書き、一度きりの手順としては書きません — Claudeは後続ターンでファイルを再読み込みしません。
コンテキスト圧縮後、最近のスキルは固定トークン予算内で再添付されるため、長時間のセッションでは古いスキルがサイレントで削除される可能性があります — 詳細は圧縮で生き残るものを参照してください。
スラッシュコマンドが不適切な場合
- Claudeが常に知っておくべき事実 → CLAUDE.mdの1行。
- 繰り返し貼り付けている手順 → スキル。それが最適な使い所です。
- 毎回、確定的に実行する必要があるもの → フック。スキルはモデルが従うことを選択することに依存しますが、フックはそうではありません。
- コンテキストに収まらない大きすぎる参照資料 → サポートファイル付きのスキル。SKILL.mdから参照され、オンデマンドで読み込まれます。
クイック落とし穴チェックリスト
-
$0は最初の引数(0ベース)。クォートで単語をグループ化 - 一致しない
$Nはリテラルのまま;一致しない名前付き引数は空になる -
!`command`はClaudeが何も読む前に実行される;1パス -
allowed-toolsは次のメッセージでクリアされる - バンドル済みスキルと同じ名前のプロジェクトスキル(
code-review)はそれを置き換える -
.claude/commands/は引き続き動作する;スキルが推奨パス
Rulestackをメンテナンスしています — Claude Code、Cursor、Codex向けのバージョン管理されたルール&スキルパックで、このような変更と同期しています:https://rulestack.gumroad.com?ref=devto
AIコーディングワークフローの日次ノートはBlueskyで公開:https://bsky.app/profile/ai-shop.bsky.social
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.