カスタムコマンドを作ろう — 同じ指示を何度も書かない!
この記事の内容
- Claude Codeのカスタムコマンドは、Markdownファイルを置くだけで作成できます
- コマンドはスラッシュ(
/コマンド名)で呼び出すまでコンテキストを消費しません - 引数(
$1、$2)を使うことで、テンプレート型のコマンドも作れます - コマンドはプロジェクト共有用と個人用(全プロジェクト共通)の2種類があります
- 繰り返し使う指示はコマンド化することで、作業効率が大幅に向上します
カスタムコマンドとは何か
Claude Codeを使っていると、同じような指示を何度も入力する場面が出てきます。たとえば週報のフォーマット指定、メールの書き方ルール、コードレビューの手順などです。
こういった指示をCLAUDE.mdに書くことも可能です。しかしCLAUDE.mdはセッションの最初から常にコンテキストに読み込まれるため、週に1回しか使わないような情報をずっと載せておくのはコンテキストの無駄遣いになります。
そこで活用したいのがカスタムコマンドです。カスタムコマンドは「必要なときだけコンテキストに注入する」仕組みで、呼び出すまでは一切コンテキストを消費しません。コマンドをいくら多く用意しても、呼び出す前の段階ではほぼコンテキストに影響しないため、命令集として大量に用意しておくことができます。
カスタムコマンドの作り方
カスタムコマンドの作成方法は非常にシンプルです。所定のディレクトリにMarkdownファイルを置くだけです。
ファイルの配置場所
個人用(全プロジェクトで使いたい場合):
プロジェクト共有用(チームで使いたい場合):
ディレクトリの作成
mkdir -p ~/.claude/commands
すでにディレクトリが存在する場合は何も起きないので、このコマンドは安全に実行できます。
コマンドの命名ルール
ファイル名がそのままコマンド名になります。たとえば週報.mdというファイルを作ると、/週報というコマンドで呼び出せます。
実例1:週報コマンドを作る
週報を自動で作成するコマンドを作ってみましょう。Claude自身にコマンドファイルを作ってもらうこともできます。
Claudeへの指示例:
Claudeが作成したファイルが意図通りかどうか確認したい場合は、エクスプローラーやテキストエディタで~/.claude/commands/週報.mdを開いて確認できます。
コマンドの呼び出し方
Claude Codeのチャット欄で以下のように入力するだけです。
スラッシュを入力すると使用可能なコマンドの一覧が表示されるので、そこから選択することもできます。コマンドを選ぶと、Markdownファイルの中身がコンテキストに注入され、Claudeがその指示に従って動き始めます。
週報コマンドの場合、ClaudeはClaude Codeとのこれまでの会話履歴、Gitのログ、プロジェクト内のファイルなどを参照しながらレポートを作成してくれます。
実例2:引数付きのメールコマンドを作る
毎回同じ形式でビジネスメールを書きたいけれど、メールの内容は毎回異なる、というケースがあります。このような場合は引数を使ったコマンドが便利です。
コマンドファイルの書き方
~/.claude/commands/メール.mdに以下のように記述します。
以下の要件でビジネスメールを作成してください。
要件:$ARGUMENTS
- 丁寧かつ簡潔な文体
- 件名を必ずつけること
- 署名はエビスダで統一
$ARGUMENTSと書いた部分に、コマンド呼び出し時にスペースの後ろに書いたテキストが入ります。
呼び出し方
コマンド名の後ろにスペースを1つ空けて内容を書くと、その文字列が$ARGUMENTSとして渡されます。Claudeは定形のメール作成指示と組み合わせて、適切な文面を自動生成してくれます。
実例3:複数引数を使った翻訳コマンド
引数を1つだけでなく、複数に分けて渡すこともできます。翻訳コマンドで「言語」と「テキスト」を別々に指定する例を見てみましょう。
コマンドファイルの書き方
~/.claude/commands/翻訳.mdに以下のように記述します。
以下のテキストを$1に翻訳してください。
テキスト:$2
自然な表現で、原文のニュアンスを保つこと。
$1が1番目の引数、$2が2番目の引数に対応します。
呼び出し方
スペースで区切って書くことで、最初のスペースまでが$1(言語)、以降が$2(翻訳するテキスト)として渡されます。言語ごとに別々のコマンドを作る必要がなく、1つのコマンドで多言語翻訳に対応できます。$3、$4と引数を増やすことも可能です。
コンテキスト管理との組み合わせ
コマンドを効率よく使うためには、/clearコマンドとの組み合わせが重要です。
長いやり取りの後にコマンドを実行すると、それまでの会話履歴がすべてコンテキストに残った状態でコマンドが処理されます。メールを1通作って、また別のメールを作って、という使い方を続けると、前のメールの内容が不要な形でコンテキストを圧迫します。
推奨の使い方:
/メール 来週の会議を欠席したいを実行して出力を得る- 結果を確認したら
/clearでコンテキストをリセット - 次のコマンドを
/メール 先日のセミナーのお礼を伝えたいでゼロから実行する
この「コマンド実行 → 出力確認 → クリア → 次のコマンド」というサイクルを意識することで、コンテキストを節約しながら効率よく作業できます。
CLAUDE.mdとカスタムコマンドの使い分け
| CLAUDE.md | カスタムコマンド | |
|---|---|---|
| 読み込みタイミング | 毎回(常時) | 呼び出した時だけ |
| 向いている内容 | 常に必要なルール・スタイル | 特定作業の手順・定型処理 |
| コンテキスト消費 | 常に消費 | 呼び出し時のみ消費 |
- 常に覚えておいてほしいこと →
CLAUDE.mdに書く - 必要なときだけ呼び出したいこと → カスタムコマンドに書く
まとめ
カスタムコマンドは、~/.claude/commands/にMarkdownファイルを置くだけで作成できる、非常にシンプルかつ強力な仕組みです。呼び出すまでコンテキストを消費しないため、多数のコマンドを用意しておいても問題ありません。
引数($ARGUMENTSや$1、$2)を活用することで、テンプレート化した柔軟なコマンドも作れます。コマンドファイル自体をClaudeに作ってもらうことも可能なので、「この作業を次回もやりそうだな」と思ったら、その場でClaudeに「コマンドにしておいて」と依頼するだけで準備が整います。
同じ指示を2回・3回と繰り返し入力しているなと気づいたら、それはカスタムコマンドにする絶好のタイミングです。/clearと組み合わせながら、自分だけのコマンド集を育てていくことで、Claude Codeとの作業がより快適になっていきます。