スキルの自動起動と手動起動を切り替える手順
結論
スキルは既定で「あなたも呼べる・Claudeも呼べる」状態です。SKILL.mdの項目を1行足すだけで、この2つの入口を別々に閉じられます。デプロイや送信のように、勝手に走ると困る作業を手動だけに寄せておけば、意図しない実行を心配せずに済みます。
入口は2つある
呼び出しには2つの経路があります。あなたが/スキル名と打つ経路と、話の流れに合っているとClaudeが自分で読み込む経路です。切り替えはSKILL.mdのフロントマター(---で挟んだ設定部分)に書きます。
disable-model-invocation: true… あなただけが呼べます。Claudeからは呼べませんuser-invocable: false… Claudeだけが呼べます。/のメニューには出ません
前者は、副作用のある作業や、走らせる時機を自分で決めたい作業に向きます。公式ドキュメントは/commit・/deploy・/send-slack-messageを例に挙げ、「コードが仕上がったように見えるからといって、Claudeの判断でデプロイされては困る」と説明しています。
後者は、命令ではなく背景知識をまとめたスキル向けです。古い仕組みの成り立ちを説明するようなスキルは、Claudeが知っていればよく、人が/から呼ぶ意味がありません。
コンテキストの載り方も変わる
この2つは、読み込まれ方にも差が出ます。ふだんのセッションでは、スキルの説明文(description)だけがコンテキストに置かれ、中身は呼ばれたときに読み込まれます。disable-model-invocation: trueを付けたスキルは、その説明文すらコンテキストに載りません。Claudeが選ぶ余地をなくすためです。
もう1つ、pathsという項目もあります。ファイルの場所をパターンで指定すると、それに合うファイルを扱っているときにだけ自動で読み込まれます。常時は邪魔だが、特定の場所を触るときだけ効かせたいスキルに向く設定です。
前提条件
- 対象のスキルの
SKILL.mdを編集できること - そのスキルをどちらの入口で使いたいかが決まっていること
- フロントマターは
---で挟んだ範囲に書く形式です。本文側に書いても効きません
手順
- 対象のスキルの
SKILL.mdを開きます - 先頭の
---で挟まれた範囲に、descriptionがあるか確かめます - 自分だけが呼ぶスキルにするなら
disable-model-invocation: trueを1行足します - Claudeにだけ使わせるなら、代わりに
user-invocable: falseを足します。両方を同時に書くと、どちらからも呼べなくなります - 保存し、Claude Codeで
/を入力して一覧の見え方を確かめます
検証の考え方
確かめ方は、閉じた入口ごとに変えます。disable-model-invocation: trueを付けた場合は、そのスキルが担当しそうな頼み方をわざとしてみてください。Claudeが自分から使わなければ意図どおりです。/スキル名で自分から呼べることも、あわせて確かめます。
user-invocable: falseを付けた場合は逆に、/の一覧に出てこないことを見ます。出てこないのが正しい状態です。
限界と注意
この設定が変えるのは呼び出しの可否だけで、スキルの中身や権限は変わりません。手動でしか呼べないようにしても、呼んだあとにClaudeが何をするかは、書いてある指示のとおりです。
なお、いったん呼び出されたスキルの内容は、そのセッションの会話に残り続けます。あとから設定を変えても、すでに読み込まれた分がその場で消えるわけではありません。設定を変えたら、新しいセッションで確かめてください。
学習上の注意
「勝手に動かない」ことと「安全である」ことは別です。手動起動に寄せれば実行の時機は握れますが、実行後の結果を確かめる手間は残ります。設定で守れる範囲を過大に見積もらず、影響の大きい操作ほど結果を自分の目で確認してください。
出典・参考
- C: 一次発表 Extend Claude with skills