Claude Code の Skills は、よく使う手順を SKILL.md に書いておき、/名前 で呼び出したり、Claude に自動で使わせたりする仕組みです。
- 置き場所:プロジェクトは .claude/skills/名前/SKILL.md、自分用は ~/.claude/skills/名前/SKILL.md
- 書き方:
---で囲んだ設定(name・description など)と、手順の本文 - 呼び出し:/名前 引数。引数は本文の $ARGUMENTS に入る
- 以前の .claude/commands/*.md も動く(今は Skills に統合された扱い)
2026年10月23日に公式Skills資料を再照合しました。コードと出力は9月29日の記録を保持しており、今回の実機再実行結果ではありません。
手元の確認は、2026年9月29日に Windows 11 の Claude Code 2.1.284 で、練習用のフォルダー(C:\demo\cc-b)を使って行いました。
最小のスキルを作って動かした
試す場合は、対象プロジェクト内に.claude/skills/hello-demo/を作り、以下の内容をSKILL.mdというファイル名で保存してください。
そのプロジェクトを作業ディレクトリーとして、次のclaudeコマンドを実行します。
.claude/skills/hello-demo/SKILL.md---
name: hello-demo
description: 名前を受け取って、決まった形のあいさつ文を返す練習用のスキル。
---
次の形の1行だけを返す。ほかの説明は書かない。
こんにちは、$ARGUMENTS さん。練習用スキルが動きました。claude -p "/hello-demo 田中"こんにちは、田中 さん。練習用スキルが動きました。/hello-demo のあとの「田中」が、本文の $ARGUMENTS に入りました。
対話セッションの開始後に初めて.claude/skills/などの最上位skillsフォルダーを作った場合は、/reload-skillsで読み込みます。
起動時に存在しなかったフォルダーはまだ監視されていないため、そのセッション中に内容を変更したときも/reload-skillsを実行してください。
呼出し名が認識されない場合は、ファイル名・保存場所・/メニューの名前・user-invocableの設定を確認します。
置き場所
| 場所 | 使える範囲 |
|---|---|
| ~/.claude/skills/名前/SKILL.md | そのパソコンの全プロジェクト(自分用) |
| .claude/skills/名前/SKILL.md | そのプロジェクト(コミットすればチームで共有) |
| プラグインの skills/名前/SKILL.md | /プラグイン名:スキル名 で呼ぶ |
基本の呼出し名はフォルダー名で、nameによる指定もできます。ただし、プラグインや同名の入れ子スキルなどは接頭辞を含むため、/メニューの実際の名前を確認してください。
この表の自分用スキルは、そのPCで動くセッション向けです。
クラウドでは手元の~/.claude/skills/を読みません。claude.aiアカウントで有効にしたスキルを使う方法があります。プロジェクトのクラウドスレッドではリポジトリの.claude/skills/も使えず、それ以外のクラウドセッションではコミットしたスキルを使えます。自前ホスト環境にはアカウント同期の例外があります。
主な設定(フロントマター)
| 項目 | 働き |
|---|---|
| name | コマンドの名前 |
| description | 何のスキルか。Claude が自動で使うかを決める材料(省略すると本文の最初の行) |
| disable-model-invocation: true | Claude は自動で使わず、/名前 で呼んだときだけ動く |
| user-invocable: false | /メニューに表示せず、手入力の/名前でも実行しない。Claude側からの呼出しは可能 |
| allowed-tools | そのスキルを呼んだターンの間だけ、確認なしで使えるツール |
| argument-hint | 引数の書き方のヒント |
| paths | 現在の作業ディレクトリを基準にglobが一致するファイルを扱うときに自動読込み(範囲外は不一致) |
| context: fork | 別のサブエージェントの文脈で実行する |
allowed-tools は、使えるツールを列挙したものだけに制限する設定ではありません。
事前許可は次のユーザーメッセージで解除されます。deny/askなどの通常の優先規則は残り、列挙していないツールも通常の権限設定に従います。
組織が allowManagedPermissionRulesOnly を有効にしている場合、個人・プロジェクトのスキルの allowed-tools は無視され、管理側のルールに従います(Claude Code v2.1.282以降)。
引数
- $ARGUMENTS:/名前 のあとに書いたもの全部
$0・$1(それぞれ$ARGUMENTS[0]・$ARGUMENTS[1]の短縮):1つ目・2つ目の引数(0 から数える)- 本文に受け皿が無いときは、本文の最後に「ARGUMENTS: 入力」が足される
- ${CLAUDE_SKILL_DIR} でスキルのフォルダーを参照できる
空白を含む文字列を1つの位置引数として渡す場合は、/名前 "hello world" secondのように引用符で囲みます。
この例では$0がhello world、$1がsecondとなり、$ARGUMENTSには入力した引数全体が入ります。
対応する入力がない位置引数は置換されずに残るため、必須の引数を省略したときの扱いもスキル本文に書いておくと確認しやすくなります。
旧形式の .claude/commands
以前のカスタムコマンド(.claude/commands/名前.md)も、同じように動きました。
---
description: 旧形式(.claude/commands)の練習用コマンド
---
次の1行だけを返す:「旧形式のコマンド greet-old が $ARGUMENTS で動きました」claude -p "/greet-old テスト"旧形式のコマンド greet-old が テスト で動きました公式ドキュメントでは、コマンドは Skills に統合され、新しく作るなら補助のファイルを置ける Skills がすすめられています。
Windowsの Git Bash で呼ぶときの注意
Git Bash で claude -p "/context" のように / で始まる1語だけを渡すと、Git Bash がパスと見なして「C:/Program Files/Git/context」に書き換えてしまいました。
MSYS_NO_PATHCONV=1 を付けて実行するか、PowerShell から実行すると、そのまま渡せます。
MSYS_NO_PATHCONV=1 claude -p "/context"書くときのコツ
- SKILL.mdは500行未満が目安(必須の上限ではない)。詳しい資料は別のファイルに分けて、同じフォルダーに置く
- description に「いつ使うか」を具体的に書く
- 自動で呼び出させず、自分で実行のタイミングを決めたいなら disable-model-invocation: true
毎回守らせたい決まりごとは、スキルではなく CLAUDE.md に書きます(CLAUDE.mdの書き方)。
役割ごとに別の担当を作るなら、サブエージェントの設定方法を見てください。
まとめ
- .claude/skills/名前/SKILL.md に書き、/名前 で呼ぶ
- 引数は $ARGUMENTS・$0・$1
- 旧形式の .claude/commands も動く
- Git Bash では MSYS_NO_PATHCONV=1 を付ける
参考:Claude Code公式「Skills」(配置・呼び出し・権限を2026年10月23日に再照合)。
コード例と出力は、2026年9月29日のClaude Code 2.1.284での実行記録を保持しています。
よくある質問:Claude CodeのSkills
Claude CodeのSkillsとは、何ですか?
よく使う手順を SKILL.md に書いておき、/名前 で呼び出したり、Claude に自動で使わせたりする仕組みです。
--- で囲んだ設定(name・description など)と、手順の本文で書きます。
スキルは、どこに置けばよいですか?
自分用は ~/.claude/skills/名前/SKILL.md(そのパソコンの全プロジェクト)、プロジェクト用は .claude/skills/名前/SKILL.md(コミットすればチームで共有)に置きます。
プラグインの skills/名前/SKILL.md は /プラグイン名:スキル名 で呼びます。
基本の呼出し名はフォルダー名で、nameによる指定もできます。ただし、プラグインや同名の入れ子スキルなどは接頭辞を含むため、/メニューの実際の名前を確認してください。
クラウドセッションでも、自分用のスキルは使えますか?
手元の ~/.claude/skills/ は読まれないため、使えません。
claude.aiアカウントで有効にする方法があります。プロジェクトのクラウドスレッドではリポジトリ内のスキルは利用できません。その他のクラウドセッションでは.claude/skills/へのコミットも選択肢です。自前ホスト環境は同期条件も確認します。
Claudeに自動で使わせず、自分で呼んだときだけ動かすには?
フロントマターに disable-model-invocation: true を書くと、Claude は自動で使わず、/名前 で呼んだときだけ動きます。
user-invocable: falseは/メニューから隠すだけでなく、手入力の/名前による実行も止めます。Claude側からの呼出しは可能です。
allowed-tools は、使えるツールを制限する設定ですか?
制限する設定ではありません。
事前許可は次のユーザーメッセージで解除されます。deny/askなどの通常の優先規則は残り、列挙していないツールも通常の権限設定に従います。
組織が allowManagedPermissionRulesOnly を有効にしている場合、個人・プロジェクトのスキルの allowed-tools は無視され、管理側のルールに従います(Claude Code v2.1.282以降)。
引数は、どう渡しますか?
/名前 のあとに書いたもの全部が $ARGUMENTS に入ります。
$0・$1 は1つ目・2つ目の引数(0 から数えます)です。
本文に受け皿が無いときは、本文の最後に「ARGUMENTS: 入力」が足されます。
${CLAUDE_SKILL_DIR} でスキルのフォルダーを参照できます。
以前の .claude/commands は、まだ使えますか?
記事の確認では、同じように動きました。
公式ドキュメントでは、コマンドは Skills に統合され、新しく作るなら補助のファイルを置ける Skills がすすめられています。
Windowsの Git Bash で、スキルを呼ぶときの注意は? 書くコツは?
Git Bash で claude -p "/context" のように / で始まる1語だけを渡すと、Git Bash がパスと見なして書き換えてしまいました。
MSYS_NO_PATHCONV=1 を付けて実行するか、PowerShell から実行すると、そのまま渡せます。
書くコツは、推奨目安の500行未満を意識して詳しい資料は別ファイルへ分ける、description に「いつ使うか」を具体的に書く、の2つです。
毎回守らせたい決まりごとは、スキルではなく CLAUDE.md に書きます。
なお、記事のコード例と出力は2026年9月29日の Claude Code 2.1.284 での記録です。
最新は公式ページで確認してください。
