
手動実行だけのスキル(スラッシュコマンド)には disable-model-invocation 設定を入れたい【Claude Code】
タイトルほぼそのままの内容です。
Claude Code のスキル(スラッシュコマンド ※以降、単にスキルと呼びます ) にはフロントマターが設定できます。 フロントマターは、スキルの名前・説明・使用できるツール・呼び出し制御などの動作を定義します。
そして、フロントマターの1フィールドに disable-model-invocation という項目があります。 これを true に設定すると、Claude がこのスキルを自動的にロードすることを防ぎます。
手動実行 (やタイミングを制御したいワークフロー)では disable-model-invocation: true を追加しましょう。コンテキスト節約にもなります。
---
name: deploy
description: Deploy the application to production
disable-model-invocation: true
---
# Example Skill
...
…伝えたいことは以上ですが、前提知識や実際の試行結果を以降で書いていきます!
前提
スキルとは
Claude Code の スキル は Claude の機能を拡張するための仕組みです。 SKILL.md ファイルに指示を記述して、Claude が使えるツールキットに追加します。 Claude は会話内容に関連する場合にスキルを自動的にロードするか、 /skill-name で直接呼び出すことができます。
スキルは .claude/skills に配置します。 保存場所によりスコープ(適用範囲)が決まります。
| 場所 | パス | 適用対象 |
|---|---|---|
| 個人スキル | ~/.claude/skills/<skill-name>/SKILL.md |
すべてのプロジェクト |
| プロジェクト | .claude/skills/<skill-name>/SKILL.md |
このプロジェクトのみ |
スキルディレクトリには SKILL.md 以外にもリファレンスファイルやスクリプトを配置でき、Claude はそれらを参照(実行)できます。
スラッシュコマンドとは
Claude Code の スラッシュコマンド は、 インタラクティブセッション中に Claude の動作を制御するコマンドです。 /help や /clear などの組み込みコマンドと、ユーザー定義のカスタムコマンドがあります。
カスタムスラッシュコマンドは、頻繁に使用するプロンプトを Markdown ファイルとして定義できます。
| コマンドタイプ | 保存場所 | 適用対象 |
|---|---|---|
| プロジェクトコマンド | .claude/commands/ |
チームと共有 |
| 個人コマンド | ~/.claude/commands/ |
すべてのプロジェクト |
なお、カスタムスラッシュコマンドはスキルにマージされています。 今まで通り利用はできるものの、実態はスキルとして動作します。
スキルを手動実行する
/skill-name でスキル(スラッシュコマンド)を直接呼び出せます。 引数を渡すこともできます(例: /fix-issue 123 )。
フロントマター
スキルファイルの先頭にはフロントマターを記述できます。 フロントマターはYAML形式で、スキルの名前・説明・使用できるツール・呼び出し制御などの動作を定義します。
主要な設定項目は以下の通りです。
| フィールド | 説明 |
|---|---|
name |
スキル名(省略時はディレクトリ名) |
description |
スキルの説明(Claude が自動ロード判断に使用) |
allowed-tools |
許可するツールのリスト |
model |
使用するモデル(例: claude-sonnet-4-20250514) |
disable-model-invocation |
true で自動ロードを無効化(手動実行のみ) |
詳細は フロントマターリファレンス を参照ください。
disable-model-invocation フィールドについて
disable-model-invocation は、スキルの自動ロードを制御するフロントマター設定です。
デフォルトでは、Claude は会話内容に関連するスキル (の description) を自動的にロードします。 disable-model-invocation: true を設定すると、この自動ロードを無効化できます。
手動実行専用のスキル(デプロイ、リリースなど)では、この設定を有効にすることで意図しないタイミングでの実行を防げます。 また、不要なコンテキスト消費を抑えられるメリットもあります。
disable-model-invocation 設定の効果を確認してみる
実際に効果を確認するため、以下の4つのスキル・コマンドを配置しました。
| 名前 | 種類 | disable-model-invocation | 配置場所 |
|---|---|---|---|
| test1-command-default | コマンド | なし(デフォルト) | .claude/commands/test1-command-default.md |
| test2-command-manual | コマンド | true |
.claude/commands/test2-command-manual.md |
| test3-skill-default | スキル | なし(デフォルト) | .claude/skills/test3-skill-default/SKILL.md |
| test4-skill-manual | スキル | true |
.claude/skills/test4-skill-manual/SKILL.md |
/context コマンドでロードされたコンテキストを確認できます。 実行してみると、 disable-model-invocation: true を設定したものはロードされていないことが分かります。

/context コマンドの実行結果
一方、手動実行では全てのスキル・コマンドが候補に表示されます。

手動実行時のスキル候補一覧
おわりに
以上、disable-model-invocation 設定の紹介ブログでした。 手動実行専用のスキルには disable-model-invocation: true を設定しましょう。 意図しない自動ロードを防ぎ、コンテキストも節約できます。
ちなみに、本ブログを書いたきっかけは、 いつの間にか大量のスラッシュコマンドがコンテキストに入っていることに気づいたからでした。
以上、参考になれば幸いです。










