0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

毎回同じプロンプトを書くのをやめる — Claude Codeのカスタムスラッシュコマンド実践ガイド

0
Posted at

Claude Codeを毎日使っていると、こういう瞬間が必ずあります。

  • 「このコミットメッセージ、いつものフォーマットで書いて」を毎回手打ちしている
  • レビュー依頼のプロンプトが長くて、過去のチャットからコピペして探している
  • PRの説明文を生成させる指示が人によって微妙に違い、出力がブレる
  • 「テスト書いて」と言うたびに、毎回「正常系と異常系を分けて、モックは使わず…」と前提を書き直している

これ、全部同じプロンプトを毎回手で書いている無駄です。

賢いモデルを使っていても、入力が毎回ブレれば出力もブレます。そして何より、同じことを毎日タイプし続けるのは単純に時間の損失です。

これを解決するのがカスタムスラッシュコマンドです。.claude/commands/ にMarkdownファイルを1枚置くだけで、/コマンド名 という自作コマンドが生まれます。よく使うプロンプトを「コマンド化」して、ワンコマンドで呼び出せるようにする機能です。

この記事では、スラッシュコマンドを「なんとなく知っている」状態から「反復作業を実際に潰せる」状態まで持っていきます。作り方・引数・実例・運用のコツまで、すべてコピペで今日から試せます。


スラッシュコマンドの正体は「Markdownファイル1枚」

難しく考える必要はありません。カスタムスラッシュコマンドの実体は、プロンプトを書いたMarkdownファイルです。

置き場所は2つあります。

置き場所 パス スコープ Git管理
プロジェクト用 .claude/commands/ そのリポジトリ内だけ できる(チームで共有)
ユーザー用(個人) ~/.claude/commands/ 全プロジェクト共通 自分専用

ファイル名がそのままコマンド名になります。.claude/commands/review.md を作れば /review が、commit.md を作れば /commit が使えるようになります。

まずは最小の例を作ってみます。

mkdir -p .claude/commands

.claude/commands/commit.md:

現在のステージされた変更内容を確認し、Conventional Commits 形式で
コミットメッセージを1つ提案してください。

ルール:
- 1行目は `type(scope): 概要` 形式(72文字以内)
- type は feat / fix / docs / refactor / test / chore から選ぶ
- 本文には「何を」ではなく「なぜ」変えたかを書く
- 日本語で書く

これだけです。Claude Codeのチャットで /commit と打てば、このファイルの中身がそのままプロンプトとして実行されます。

Before(毎回手打ち):

「ステージした変更を見て、Conventional Commits形式で
 コミットメッセージ書いて。1行目は72文字以内で、本文には
 なぜ変えたかを書いて、日本語で…」
(毎回この長文をタイプ or 過去ログからコピペ)

After(コマンド化):

/commit

タイプ量が1/20以下になり、しかも毎回まったく同じ品質基準で出力されます。チームで .claude/commands/ をGitに入れておけば、全員のコミットメッセージのフォーマットが揃います。


引数を受け取る — $ARGUMENTS$1 $2

固定プロンプトだけでも便利ですが、本領は引数を渡せるところにあります。

すべてまとめて受け取る $ARGUMENTS

コマンド名の後ろに書いた文字列は、$ARGUMENTS という変数に丸ごと入ります。

.claude/commands/explain.md:

次のコードまたは概念を、初学者にもわかるように説明してください。
専門用語には必ず一言の補足を付けること。

対象: $ARGUMENTS

使い方:

/explain useEffectのクリーンアップ関数

$ARGUMENTS の部分が「useEffectのクリーンアップ関数」に置き換わって実行されます。

位置引数 $1 $2 $3

複数の引数を別々に扱いたいときは、$1 $2 のように位置で受け取れます。

.claude/commands/rename.md:

プロジェクト全体で、シンボル名 `$1``$2` にリネームしてください。

手順:
1. まず `$1` の定義箇所と全参照箇所を grep で洗い出す
2. インポートパス・型定義・テストファイルも漏れなく対象にする
3. 文字列リテラル内の偶然の一致は変更しない
4. 変更したファイルの一覧を最後に報告する

使い方:

/rename getUserData fetchUserProfile

$1getUserData$2fetchUserProfile に展開されます。引数の意味が固定されるので、「どっちが新旧だっけ」と毎回考えずに済みます。

変数 中身 使いどころ
$ARGUMENTS 引数全部を1つの文字列で 自由テキスト1個を渡す(説明・検索語など)
$1 $2 $3 スペース区切りの位置引数 旧名/新名、ファイル名/出力先など役割が決まっている

コマンドを「ただのプロンプト」から「実行手順書」に進化させる

ここからが、スラッシュコマンドを本当に効かせるためのコツです。

コマンドファイルは単なる定型文の置き場ではありません。「このタスクをやるときの手順とルール」を全部書き込んだ実行手順書として設計すると、毎回の指示の質が一気に安定します。

例として、PR説明文を生成するコマンドを「雑な版」と「手順書版」で比べます。

雑な版(.claude/commands/pr.md):

このブランチの変更からPRの説明文を書いて。

これでも動きますが、出力は毎回バラバラです。差分の見落としもあるし、フォーマットも安定しません。

手順書版:

現在のブランチと main の差分から、PR の説明文を作成してください。

## 手順
1. `git diff main...HEAD --stat` で変更ファイルの全体像を把握する
2. 主要な変更を `git diff main...HEAD` で読む
3. 下記テンプレートを埋める

## 出力テンプレート(このまま埋めて出力)
### 概要
(このPRが何を解決するか2〜3行)

### 変更内容
- (箇条書き。ファイル単位ではなく「機能/意図」単位で)

### 動作確認
- [ ] (レビュアーが確認すべき項目をチェックリストで)

### 影響範囲・注意点
(破壊的変更・マイグレーション要否があれば明記。なければ「なし」)

## ルール
- 推測で機能を書かない。差分から読み取れる事実だけを書く
- セキュリティに関わる変更(認証・権限・秘密情報)は冒頭に⚠️付きで明記

/pr と打つだけで、毎回この手順とフォーマットでPR説明文が出てきます。レビュアー視点の「動作確認チェックリスト」まで自動で付くので、PRの質そのものが底上げされます。

ポイントは3つです。

  1. 手順(何を読むか)を書く — Claudeに「どのコマンドで情報を集めるか」まで指示すると、見落としが減る
  2. 出力フォーマットを固定する — テンプレートを埋めさせると出力がブレない
  3. 禁止事項を書く — 「推測で書くな」のような制約が、ハルシネーションを抑える

そのまま使える実例コマンド5本

コピペして .claude/commands/ に置けば、すぐ使えるものを並べます。自分のプロジェクトに合わせて中身を調整してください。

1. /review — 差分のセルフレビュー

.claude/commands/review.md:

ステージ済み(なければ working tree)の変更をセルフレビューしてください。

観点:
- バグ・例外処理漏れ・nullチェック漏れ
- 命名と既存コードスタイルの一貫性
- テストが必要なのに無い箇所
- 秘密情報のハードコードや危険なログ出力

出力:
- 指摘ごとに「ファイル:行 / 重大度(高中低) / 内容 / 修正案」
- 重大度「高」が1件もなければ最後に「LGTM」と書く

2. /test — テスト生成の前提を固定

.claude/commands/test.md:

$ARGUMENTS のテストを作成してください。

前提(毎回これに従う):
- 正常系・境界値・異常系を必ず分けて書く
- このプロジェクトのテストフレームワークと既存テストの書き方に合わせる
- 過剰なモックは避け、実際の入出力で検証する
- テストケース名は「何を検証するか」が日本語で読めるようにする

使い方: /test src/utils/parseDate.ts

3. /doc — 関数・モジュールのドキュメント化

.claude/commands/doc.md:

$ARGUMENTS について、ドキュメントコメント(JSDoc / docstring 等、言語に合わせる)を
追加してください。

- 引数・戻り値・投げうる例外を明記
- 使用例を1つ含める
- 実装の中身ではなく「使う側が知るべきこと」を書く

4. /refactor — 安全なリファクタの型

.claude/commands/refactor.md:

$ARGUMENTS をリファクタリングしてください。

鉄則:
- 外部から見た振る舞いは変えない(入出力・公開APIは維持)
- 1コミットで完結する小さな単位に絞る
- 変更前後で壊れうるテストを先に確認する
- リファクタの意図を3行で説明してから差分を提示する

5. /onboard — プロジェクト把握を一発で

.claude/commands/onboard.md:

このプロジェクトの全体像を把握して、次を報告してください。

1. 何をするプロジェクトか(README / package.json 等から)
2. 主要なディレクトリ構成と各役割
3. 開発を始めるためのセットアップ手順
4. テスト・ビルド・起動の各コマンド
5. 触る前に注意すべき箇所(設定ファイル・秘密情報・生成物など)

長文のファイル中身は貼らず、要点だけ箇条書きで。

新しいリポジトリを開いた直後やセッション再開時に /onboard を打つと、毎回同じ観点でプロジェクトを把握できます。


サブフォルダで名前空間を切る

コマンドが増えてくると一覧が散らかります。.claude/commands/ の下にフォルダを切ると、コマンド名に名前空間が付きます。

.claude/commands/
├── git/
│   ├── commit.md     → /git:commit
│   └── pr.md         → /git:pr
├── test/
│   └── unit.md       → /test:unit
└── review.md         → /review

git/commit.md/git:commit として呼び出せます。種類ごとにフォルダを分けておくと、補完候補も見やすく、チームで共有したときに「どこに何があるか」が一目でわかります。


スラッシュコマンドとスキルファイルの使い分け

「再利用可能なスキルファイル」という、もう一歩進んだ仕組みもあります。両者は似ていますが、向いている用途が違います。

スラッシュコマンド スキルファイル
実体 .claude/commands/ のMarkdown スキルとして定義した手順書セット
起動 /コマンド名 を手で打つ タスク内容に応じて自動的に参照される
向いている用途 「今これをやれ」という単発の定型作業 「この種の作業はこう進める」という一連の方法論
/commit /pr /test 「リファクタはPlan→Implement→Verifyの3段で進める」等の作業フロー全体

ざっくり言うと、

  • 毎回手で呼びたい定型作業 → スラッシュコマンド
  • 作業の進め方そのもの(方法論)を再利用したい → スキルファイル

の使い分けです。まずはスラッシュコマンドから始めて、「同じ手順を何度もコマンドに書いている」と気づいたら、その手順をスキルファイルとして切り出す、という順番が現実的です。


運用のコツ — 作った後に効かせるための5つ

コマンドは作って終わりではありません。実際に「使われ続ける」状態にするためのコツをまとめます。

コツ1: 既に2回やった作業だけコマンド化する

最初から完璧なコマンド集を作ろうとすると挫折します。同じプロンプトを2回手で書いた瞬間が、コマンド化のサインです。「これ前も書いたな」と思ったらファイルにする。これだけで自然に必要なコマンドだけが揃います。

コツ2: コマンドは短く、責務を1つに

1つのコマンドに「テスト書いて、ドキュメントも書いて、コミットもして」と詰め込むと、毎回どれかが雑になります。/test /doc /commit と分けて、必要なものを順に打つほうが結果が安定します。

コツ3: 出力フォーマットを必ず固定する

前述の通り、テンプレートを埋めさせる形にすると出力がブレません。「箇条書きで」「この見出しで」「最後にチェックリストを」など、出力の形を明示するのが効果が大きいです。

コツ4: .claude/commands/ をGitに入れてチームで共有

プロジェクト用コマンドはリポジトリにコミットできます。チーム全員が同じ /review /pr を使えば、レビュー観点もPR形式も自動で揃います。コマンド集 = チームの作業標準のコード化です。

コツ5: 使わないコマンドは消す

増やしすぎると、自分でも何があるか把握できなくなります。1ヶ月使わなかったコマンドは消す。コマンド集は「資産」ではなく「よく使う道具箱」として最小に保つのがコツです。


まとめ

カスタムスラッシュコマンドは、「毎回同じプロンプトを書く無駄」を構造的に消すための機能です。

やること 効果
.claude/commands/xxx.md を置く /xxx で呼べる自作コマンドになる
$ARGUMENTS $1 $2 を使う 引数を渡して汎用化できる
手順・出力フォーマット・禁止事項を書く 毎回同じ品質で出力が安定する
サブフォルダで名前空間を切る コマンドが増えても整理できる
Gitで共有する チームの作業標準をコード化できる

ポイントは、コマンドを「定型文の置き場」ではなく「実行手順書」として書くこと。手順・フォーマット・制約まで書き込んだコマンドは、賢いモデルの出力ブレを抑え、毎回安定した結果を返します。

まずは1本、いちばんよく手打ちしているプロンプト(多くの人は /commit/review)をファイルにするところから始めてみてください。タイプ量と出力品質の両方が、その日から変わるはずです。


補足: 試すための無料リポジトリ

本記事の内容を実際のプロジェクトで試すには、土台となるCLAUDE.mdとフォルダ構成があるとスムーズです。私が使っているスターター構成を無料で公開しています。

無料スターター(GitHub):
https://github.com/noguso245-jpg/claude-code-skills-starter

さらに踏み込んで、ワークフローやサブエージェント設計を「実行可能なスキルファイル」としてまとめたパッケージも用意しています。手元で /コマンド として呼び出せる形です。

まずは無料リポジトリから試して、もっと体系的に使いたくなったら検討してもらえれば十分です。記事の内容だけでも効果は出ます。


最新のTipsはXでも発信しています: @k___n___t_1125

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?