AIコーディングツール

Claude Code スラッシュコマンド:カスタムコマンドをAからZまで作る(2026)

2026年8月20日5分で読めます

Claude Code のカスタムスラッシュコマンドは、.claude/commands/ の中に置く単なる Markdown ファイルです。ファイル名がそのままコマンド名になり、ファイル本文が実行されるプロンプトになります。.claude/commands/review.md を作成して /review と入力すれば、Claude はファイルに書かれたとおりに動作します。コマンドへのデータの受け渡しは $ARGUMENTS(または $1$2)で行い、動作は YAML フロントマターで設定でき、さらにライブの bash 出力をプロンプトに直接差し込むこともできます。2026 年時点でカスタムコマンドは Skills に統合されましたが、以前のコマンドファイルはそのまま問題なく動作します。

- 本ガイドは code.claude.com/docs/skills の公式ドキュメント(2026/08/20 閲覧)に準拠しています。以前の slash-commands ページは現在ここへリダイレクトされ、組み込みコマンドの一覧は code.claude.com/docs/commands(「Slash」が外れて「Commands」に)へ移動しました。Claude Code のドキュメントは更新が速いため、一部のフィールドは最近のビルド(Claude Code v2.1.x 以降)が必要です。

Claude Code のスラッシュコマンドとは?(組み込み vs カスタム)

Claude Code におけるスラッシュコマンドとは、/ で始まり、チャットセッション内で直接入力して何かをすばやく実行するコマンドのことです。Anthropic の公式用語集では現在これを「Command」と呼んでいます(製品表記から「Slash」が削除されました)。ただし本ガイドでは、多くの人が今もこの語で検索していることから、タイトルと本文で検索語の「slash command(スラッシュコマンド)」を使い続けます。種類は2つあり、混同しやすいので注意しましょう。

組み込みコマンドは Anthropic から Claude Code に標準搭載されており、インストールは不要です。ほぼ毎日使うことになるものをいくつか挙げます。

  • /help - 利用可能なコマンドをすべて一覧表示する
  • /clear - 会話履歴を消去し、クリーンなコンテキストで開始する
  • /compact - 会話を圧縮してコンテキストを節約する
  • /init - プロジェクト用の CLAUDE.md ファイルを生成する
  • /model - 使用するモデルを切り替える
  • /status - セッション・アカウント・コンテキストの状態を確認する

カスタムコマンドは、よく使うプロンプトを1回のキー入力にまとめるために自分で作成するものです。端的に言えば、カスタムスラッシュコマンドとは .claude/commands/ 内の Markdown ファイルであり、ファイル名がコマンド名、ファイル本文が呼び出したときに Claude が実行するプロンプトになります。「このチェックリストに沿って現在の差分をレビューして…」と毎回貼り付ける代わりに、一度保存して /review と入力するだけで済みます。

うれしいのは、カスタムコマンドが組み込みコマンドと同じメニューに並ぶことです。/ と入力するとメニューが表示され、組み込みコマンドとあなたのコマンドの両方が候補に出ます。.claude/commands/ フォルダをリポジトリにコミットすれば、チーム全体で同じコマンドセットを共有できます。これこそ、カスタムコマンドが「コピペのプロンプト」を大きく上回る理由です。

では、なぜ毎回プロンプトを貼り付けないのでしょうか。実用的な理由が3つあります。よく使うプロンプトはたいてい長く、記憶を頼りに入力すると一行抜けてしまいます。チームの各人が少しずつ違う書き方をするため、結果にばらつきが出ます。そしてプロンプトを改善しても、その改善をほかのメンバーに反映させる手段がありません。コマンドファイルにすれば、この3つがすべて解決します。プロンプトは1か所にまとまり、全員が同じコマンドを呼び出し、ファイルを編集すれば全員分が更新されます。言い換えれば、カスタムコマンドは「個人の裏ワザ」を、コードのようにバージョン管理できる「共有ツール」に変えてくれるのです。

最初のカスタムスラッシュコマンドを作る(.claude/commands

Claude にコードの変更をレビューさせる /review コマンドを作ってみましょう。手順は3ステップ、どれもコピペですぐ使えます。

ステップ1 - コマンド用フォルダを作成します。プロジェクトのルートで実行してください。

mkdir -p .claude/commands

Windows PowerShell には mkdir -p がないため、次を使います。

New-Item -ItemType Directory -Force .claude/commands

ステップ2 - そのフォルダ内に review.md を作成します。ファイル名(.md を除いた部分)がコマンド名になります。ファイル本文がプロンプトです。

You are a strict reviewer. Review the current code changes.

Focus on:
- Logic bugs and unhandled edge cases
- Security holes (unvalidated input, leaked secrets)
- Naming, clarity, and duplicated code

For each issue: give the file + line, the severity,
and a concrete fix. No vague praise.

ステップ3 - コマンドを実行します。Claude Code のセッション内で実行してください。

/review

Claude はファイルの内容をプロンプトとして読み込み、すぐに実行します。これで完了です。1行もコードを書かずに、最初のカスタムコマンドが作れました。

ヒント:ファイルを作ったばかりなのに / メニューにコマンドが表示されない場合は、末尾近くの「よくある問題」セクションへ進んでください。たいていはフォルダを間違えているか、セッションの再起動が必要なだけです。

コマンドに引数を渡す($ARGUMENTS$1、名前付き引数)

融通の利かないコマンドはあまり再利用されません。本当の威力は引数から生まれます。コマンド名の後に入力したテキストが、プロンプトに差し込まれるのです。

すべてを取得する - $ARGUMENTSこの変数はコマンド名の後のテキストをすべて取り込みます。.claude/commands/fix-issue.md を作成します。

Fix GitHub issue #$ARGUMENTS. Read the issue description,
find the root cause in the code, then write a fix with tests.

/fix-issue 123 と入力すると $ARGUMENTS123 になります。/fix-issue 123 security first と入力すると $ARGUMENTS は文字列全体の 123 security first になります。

位置引数 - $1$2各引数を分けて扱いたいときは位置変数を使います。たとえば .claude/commands/rename.md です。

Rename the variable `$1` to `$2` across every open file,
keeping the logic intact and updating all references.

/rename oldName newName と入力すると $1oldName$2newName になります。複数語の引数は引用符で囲みます:/rename "user id" "customer id"

名前付き引数 - arguments フロントマター。$1/$2 の代わりに意味のある名前を使いたい場合は、フロントマターで宣言し(次のセクション参照)、名前で参照します。arguments: [from, to] と宣言すると、引数の順にマッピングされた $from$to が使えます。

置換変数のクイックリファレンス:

変数意味入力 -> 値
$ARGUMENTSコマンド名の後のテキストすべて/fix-issue 123 urgent -> 123 urgent
$1, $2...位置引数(空白で分割)/rename a b -> $1=a, $2=b
"multi word"複数語の引数をまとめるために引用符で囲む/rename "old id" new -> $1=old id
$from (named)arguments: [from, to] フロントマターからマッピング/rename a b -> $from=a

注:現在の Skills ページには、上記の1始まりの $1/$2 形式に加えて、0始まりの $ARGUMENTS[N]/$N 形式($0 が最初の引数)も記載されています。本稿執筆時点ではドキュメントに両方が登場するため、特定のインデックスに依存する前に最新のドキュメントを確認してください。

どれを使うべきでしょうか。ルールはシンプルです。コマンドが「1つの自由記述テキスト」(issue の説明、質問、説明対象のスニペット)を受け取るだけなら、$ARGUMENTS で十分で、最も柔軟です。決まった順番でちょうど決まった数の引数が必要なら(rename:何を -> 何に)、位置引数の $1/$2 のほうが明快です。名前付き引数が役立つのは、混同しやすい引数が複数あるコマンドのときだけで、その場合は $from/$to のほうが $1/$2 より読みやすくなります。

$ARGUMENTS と位置引数の詳細は Claude Code ドキュメント(2026/08/20 閲覧)にあります(現在は Skills ページに統合され、独立した slash-commands ページはもうありません)。すべてのコマンド構文をさっと確認したいときは、Claude Code チートシートを手元に置いています。

フロントマター:YAML でコマンドを設定する

コマンドファイルの先頭に、動作を設定するための YAML のフロントマターブロック(2本の --- 行の間)を追加できます。これはコマンドの安全性と利便性を実際に左右する部分なのに、ほとんどのガイドが完全に飛ばしてしまう要素です。

フィールド働き
description/ メニューに表示される短いテキスト(毎回追加する価値あり)
argument-hintコマンド名の横に表示される引数のヒント。例:<issue-number>
allowed-toolsコマンドが使えるツールを制限する。例:Bash(git *) のみ
disable-model-invocationClaude が自分でこのコマンドを呼ぶのを止める。入力したときだけ実行される
modelコマンドを特定のモデルで強制的に実行する
arguments名前付き引数を宣言する(上記セクション参照)

すべて任意ですが、実際に毎回追加する価値があるのは description だけです。次は、git 以外は一切触らせない .claude/commands/commit.md の例です。

---
description: Create a conventional commit from staged changes
argument-hint: [optional scope]
allowed-tools: Bash(git add:*), Bash(git commit:*), Bash(git diff:*)
---

Look at the staged changes and write one tight, accurate
conventional commit (feat/fix/docs/refactor...).
If nothing is staged, tell me to `git add` first.

allowed-tools を正しく設定すると、コマンドは事前に定めた数個の git コマンドしか実行できなくなります。Claude に何でも自由に実行させるより、はるかに安全です。シェルに触れるコマンドでは、身につけておく価値のある習慣です。

!`bash` でライブデータを差し込む(およびファイル参照)

コマンドは、あなたに貼り付けさせる代わりに現在のコンテキストを自分で取得できると、格段に強力になります。Claude Code では !`<command>` 構文で bash コマンドの出力をそのままプロンプトに差し込むことができます。

理解すべき要点:!`...` の中のコマンドは、Claude がプロンプトを読む前に実行され、その出力が内容に直接差し込まれます。これは Claude がコマンドの実行を判断しているのではなく、すでに実行済みなのです。次は、現在の差分を自分で取得する /review コマンドです。

Review the diff below and point out bugs + security risks:

!`git diff HEAD`

/review と入力すると、Claude Code は git diff HEAD を実行し、その結果を取得してその場に貼り付け、そのあとで初めてプロンプト全体を Claude に渡します。もう手作業で差分をコピーする必要はありません。

複数行の bash ブロックには、! で始まるフェンス付きブロックを使います。

```!
git status --short
git log --oneline -5
```

注:!`...` は行頭または空白の後に置いてください。テキスト中でリテラルの $(たとえば \$1.00 のような価格)を使いたい場合は、引数として読み取られないよう \ でエスケープします。

コマンドの共有:プロジェクト vs 個人 + サブフォルダ

カスタムコマンドは、スコープの異なる2つの場所に置けます。

  • プロジェクト - リポジトリのルートにある .claude/commands/。git にコミットすればチーム全体でセットを共有できます。プロジェクト固有のコマンドに最適です:/deploy/test、チームのコミット規約など。
  • 個人 - ホームディレクトリの ~/.claude/commands/。あなたのマシン限定ですが、すべてのプロジェクトで使えます。個人の習慣に最適です:/explain/tldr

名前が衝突した場合は、プロジェクトのコンテキストに近いため、通常はプロジェクトレベルのコマンドが優先されます。

サブフォルダでコマンドをグループ化する(名前空間)。コマンドが増えてきたら、サブフォルダを作ってグループ化しましょう。たとえば .claude/commands/git/commit.md は、コマンドを git グループの下に表示し、/ メニューを整理して検索しやすく保ちます。

この「リポジトリごとに設定し、コミットしてチームで共有する」という仕組みは、まさに CLAUDE.md ファイルの精神そのものです。初めて知る方は、リポジトリ用の CLAUDE.md を書く方法を読んでおくと、両者がうまく補い合います。CLAUDE.md が共有の規約を示し、.claude/commands/ が繰り返しの操作をまとめてくれます。

コピペで使えるコマンドテンプレート5選(すぐ実行可能)

私が実際に日々使っているセットです。.claude/commands/ にコピーして、自分のスタックに合わせて調整してください。

1. /review - 現在の差分をレビューするreview.md):

---
description: Review current changes for bugs and security risks
---

Review the diff below, prioritizing logic bugs and security holes:

!`git diff HEAD`

For each issue: give file:line, severity, and a concrete fix.

2. /commit - Conventional Commitcommit.md):

---
description: Write a conventional commit from staged changes
allowed-tools: Bash(git add:*), Bash(git commit:*), Bash(git diff:*)
---

Look at `git diff --staged` and write one accurate
conventional commit. Do not add AI references to the message.

3. /test - テストを実行して失敗を修正するtest.md):

---
description: Run the test suite and fix failing tests
argument-hint: [optional test file path]
---

Run the tests for $ARGUMENTS (run everything if empty).
If any test fails: read the error, find the root cause, fix
the code or the test, then rerun until green.

4. /docs - ドキュメンテーション文字列を書くdocs.md):

---
description: Write docstrings for the open file
---

Write docstrings for the functions/classes in the open file.
Follow the language's convention, list parameters, return
values, and errors that can be thrown. Keep it short, don't
repeat the function name.

5. /fix-issue - 番号で issue を修正するfix-issue.md):

---
description: Fix a GitHub issue by number
argument-hint: <issue-number>
---

Fix issue #$ARGUMENTS: read the description, find the root
cause, write a fix with tests, briefly explain the fix.

[2026年の新情報] カスタムコマンドが Skills に統合、そして「Slash Command」は「Command」に

これは、現在のガイドの多くがまだ追いつけていない大きな変更です。公式の Claude Code Skills ドキュメント(2026/08/20 閲覧)によると、カスタムコマンドは Skills に統合されました。公式用語集の「非推奨・名称変更された用語」の表にはっきり書かれています。「Slash commands → Commands」(製品表記から「Slash」を削除)、「Custom commands → Skills」、そして「Skills はカスタムコマンドの推奨される後継です」と明記されています。とはいえ、以前の .claude/commands/ ファイルは今も問題なく動作します。

具体的には、.claude/commands/deploy.md ファイルと .claude/skills/deploy/SKILL.md スキルは、同じフロントマターの仕組みを使ってどちらも /deploy コマンドを作成します。あなたにとって重要なのは、以前の .claude/commands/*.md ファイルが今も問題なく動くという点です。急いで移行する必要はありません。

では、いつ Skill へ移行すべきでしょうか。Skill はコマンドと2つの点で異なります。(1) フォルダなので、プロンプトのそばにサポートファイル(スクリプト、テンプレート、参照ドキュメント)を置けます。(2) コマンドを入力しなくても、目の前のタスクに関連していれば Claude が自動で読み込めることです。要するに、コマンドは単発の手動実行アクションに、スキルは自動で起動させたい複雑で複数ファイルにわたる機能に向いています。

さらに深く知りたい方は、Claude Code の Skills とは何かを読み、続いてカスタムスキルの作り方をご覧ください。概念がまだ混ざってしまう場合は、skills vs subagents vs hooks vs MCP の記事が整理してくれます。

よくある問題とヒント

  • コマンドが / メニューに表示されない。正しいフォルダ(.claude/commands/、複数形で先頭にドット)にいるか、ファイルに .md 拡張子が付いているかを確認してください。サブフォルダを初めて作ったときは、再スキャンさせるために Claude Code のセッションを再起動します。
  • 引数が展開されない。プロンプトに $2 があるのに引数を1つしか渡さなければ、$2 はそのままの文字として残ります。引数の数が決まっていないときは $ARGUMENTS を使いましょう。
  • $ が変数と誤読される。通常のテキストでリテラルのドル記号を使いたいときは、\$1.00\ 付き)と書きます。
  • コマンドにしないほうがよいとき。1回きりの作業や、毎回内容が変わる作業なら、プロンプトを直接入力するほうが速いです。コマンドが真価を発揮するのは、その操作が繰り返し行われ、安定しているときだけです。何でもコマンドにしないでください。肥大化してめったに使わないコマンドセットは、/ メニューを散らかすだけです。

自分で書きたくない?既製のコマンドセットを使おう

コマンドを自分で書くのは、仕組みを理解し、主導権を保つうえで最良の方法です。少なくとも最初の数個は手作業で作ることを誰にでもおすすめします。とはいえ、よくあるワークフロー向けにすでに設計・テスト済みのコマンドとスキルのセットが欲しいなら、AgentKit の既製コマンド・スキルセットを見てみてください。ホームページによれば、Claude Code 向けに 108 以上のスキルと 45 の AI エージェントをバンドルし、Engineer Kit と Marketing Kit に分かれています。通常の .claude/commands/ ファイルと同じようにすべてカスタマイズできるので、ゼロから始める必要がないだけです。直接確認したい方は、こちらから AgentKit を試せます(リンク経由で20%オフ)。サイトには返金保証(具体的な条件の記載なし)とキットの生涯アップデートが明記されています。

よくある質問(FAQ)

カスタムスラッシュコマンドはどこに保存されますか?

プロジェクトのルートにある .claude/commands/(git にコミットするとチームで共有)か、ホームディレクトリの ~/.claude/commands/(自分のマシン限定ですが、すべてのプロジェクトで使用可)です。.md 拡張子を除いたファイル名がコマンド名になります。

コマンドに複数の引数を渡すには?

$ARGUMENTS を使うとコマンド名の後のテキストを一度にすべて取得でき、$1$2… で各位置引数を扱えます。複数語の引数は引用符で囲みます:/rename "old id" new

カスタムコマンドは組み込みコマンドとどう違いますか?

組み込みコマンド(/help/clear/compact…)は Anthropic から Claude Code に標準搭載されています。カスタムコマンドは、自分やチームのプロンプトをまとめて Markdown ファイルとして作成するものです。両方とも / メニューに一緒に表示されます。

コマンドの中でターミナルコマンドを実行できますか?

はい。!`<command>` 構文を使います。bash コマンドが先に実行され、その出力が Claude に読まれる前にプロンプトへ差し込まれます。たとえば !`git diff HEAD` とすれば、コマンドが現在の差分を自分で取得します。

コマンドをコミットしてチーム全体で共有できますか?

はい。リポジトリのルートの .claude/commands/ にコマンドを置き、git にコミットします。リポジトリをクローンした全員が同じコマンドセットを手に入れ、チームのワークフローを同期させられます。

カスタムコマンドは Skills とどう違いますか?

2026 年時点で両者は統合されており、以前のコマンドファイルも引き続き動作します。違いは、コマンドが手動で呼び出す単一のプロンプトファイルであるのに対し、スキルはサポートファイルを保持でき、Claude が関連すると判断すれば自動で読み込めるフォルダである点です。コマンドは単発の操作に、スキルは複雑な機能に向いています。

まとめと次のステップ

カスタムスラッシュコマンドは、繰り返すプロンプトを共有ツールに変える最も手軽な方法です。Markdown ファイル1つ、キー入力1回で、チーム全体が恩恵を受けます。まずは /review/commit から始め、安全性が必要になったらフロントマターを追加し、ワークフローが複雑になってきたら Skill へ移行しましょう。Claude Code の Skills とは何かカスタムスキルの作り方を読み進めるか、Claude Code チートシートを開いて、いつでも構文を調べてください。

今すぐ Claude Code をもっと強くしたい?すべてのコマンドを手作業で作る時間がないなら、既製のコマンド・スキルセットを使えば、セットアップを飛ばしてすぐに作業に取りかかれます。あとから自由にカスタマイズも可能です。

AgentKit の料金を見る(リンク経由で20%オフ)→

J

Jasmine

著者 · Jasmine Daily

Jasmine Dailyを綴る書き手。思ったこと、経験したこと、日々の瞬間を書き留めています。正直に、急がず、完璧でなくても。

Jasmine Daily

まだ読みものが待っています。

この記事が心に響いたなら、ジャーナルのほかのページものぞいてみてください。

次に読む

関連する投稿