実践チュートリアル
Claude Code カスタムスラッシュコマンド
よく使うプロンプトを一言のコマンドに。Markdown ファイルを一度書くだけで、Claude Code が毎回あなたのディレクトリ規約・命名規則・テスト要件に従います。

14 ステップの図解ガイドで、読了は約 5 分。各ステップは元動画の該当シーンへリンクしています。
要点
カスタムスラッシュコマンドは .claude/commands 内の Markdown ファイルで、Claude Code はその内容を1本の大きなプロンプトとして扱います。ファイル名がコマンド名になり、出力先・命名規則・バリアント・テストといった指示を一度書けば、セッションを再起動して /コマンド名 を入力するだけで実行できます。description と argument-hint からなる front matter を加え、$ARGUMENTS を名前付きの値に分解すれば、同じコマンドでも呼び出すたびに別のコンポーネントを生成できます。
元動画について
このページは Net Ninja の Claude Code コースのスラッシュコマンドの回に沿い、カスタム /ui-component コマンドをステップごとに再現したものです。
スクリーンショットは動画のフレームで、著作権は制作者に帰属します。解説文は当サイトの独自執筆です。2026年9月に動画と照合して確認済みです。
カスタムコマンドの置き場所
.claude/commands にある1つの Markdown ファイルが、スラッシュメニューの新しい項目になります。
- 1
組み込みコマンドから始める
スラッシュだけを入力すると、Claude Code 付属のコマンドメニューが開きます。作業ディレクトリを追加する /add-dir、/agents、/clear、/compact、/model、/permissions などが並びます。どれもあらかじめ書かれた操作へのショートカットで、このリストは拡張可能です。残りのガイドではその方法を説明します。

カスタムコマンドがまだない状態の組み込みスラッシュメニュー。0:34 から視聴 - 2
.claude に commands フォルダーを作る
カスタムスラッシュコマンドは、プロジェクトの .claude ディレクトリ内の commands フォルダーに置きます。まだなければ両方を作成してください。このフォルダーに置く Markdown ファイルは、1ファイルが1つのコマンドになり、コマンド名はファイル名になります。

.claude/commands にはコマンドごとに1つの Markdown ファイルを置く。2:03 から視聴 - 3
コマンドを Markdown ファイルとして書く
この ui-component.md は、新しいコンポーネントの置き場所、PascalCase の命名ルール、定義すべきテーマカラーのバリアント、テストファイルの作成とパスするまでの実行を Claude Code に指示しています。@パス 構文で別ファイルをコンテキストとして読み込める点もポイントです。Claude Code にとってこのファイルは、1本の丁寧に作り込まれたプロンプトにすぎません。

完全なプロンプトは1つの Markdown ファイルに収まる。3:06 から視聴
コマンドを最初から最後まで実行する
セッションを再起動し、メニューから /ui-component を選んで、自分のルール通りにコンポーネントを作らせます。
- 4
再起動してメニューに新コマンドを確認する
新しいコマンドファイルはセッション開始時にのみ読み込まれるため、いったん終了して再起動します。スラッシュを入力すると ui-component がメニューの最上部に project コマンドとして表示されます。選択して Enter を押すと実行できます。

新しいセッションで /ui-component が組み込みコマンドの上に現れる。4:05 から視聴 - 5
コマンドが実行しようとしていることを承認する
コマンドファイルにはどのコンポーネントを作るか書かれていないため、Claude Code はカードを選び、ディレクトリを作る mkdir を実行する前に確認してきます。選択肢2を選ぶと、このプロジェクト内の mkdir は今後確認なしで許可され、繰り返し実行がスムーズになります。

今回の実行で最初の承認:Card ディレクトリの作成。4:32 から視聴 - 6
結果を信頼する前に実行サマリーを読む
やがてターミナルに結果がまとめられます。テーマカラーを使った5つのバリアント、3つのサイズ、インタラクティブな状態、パスしたテスト9件、プレビューページの更新です。このサマリーはコマンド実行を確認する最速の手段ですが、各ファイルの中身をざっと目を通す価値はあります。

機能・テスト・プレビューの追加が1つのサマリーブロックに。5:01 から視聴 - 7
ブラウザで成果をプレビューする
コマンドは新しいカードをプロジェクトのプレビューページに追加済みです。スクロールすると、primary・secondary・success・warning・danger の各バリアントが複数サイズとホバー状態つきで表示されます。1回のスラッシュコマンドだけでこれだけ作れます。

ライトモードで描画された生成済みカードのバリアント。6:03 から視聴 - 8
想定していなかったテーマも確認する
プレビューページにはダークモードの切り替えがあり、生成されたコンポーネントはそちらでも成立しています。コマンドファイルが指定したテーマ変数を通じて、同じマークアップが別の配色になります。「テーマ変数の色を使う」と書くことで得られる効果です。

同じコンポーネントが、ダークモードでは CSS 変数で再配色される。6:34 から視聴
コマンドに引数を受けさせる
front matter と $ARGUMENTS で、1つのコマンドが再利用できるジェネレーターに変わります。
- 9
front matter でコマンドを説明する
コマンドファイルの編集は front matter から始めます。--- で挟まれたメタデータブロックです。description はコマンドの目的、argument-hint は期待する引数の形式を示し、どちらもメニューとプロンプト行に表示されます。後でファイルを開かなくても構文を思い出せます。

description と argument-hint をファイルの先頭で一度だけ定義する。7:13 から視聴 - 10
$ARGUMENTS を名前付きの値に分割する
コマンド名の後に入力されたすべては $ARGUMENTS 変数に入ります。ここで紹介されるテクニックは、Markdown の参照形式の行で名前付きの値に分割するものです。[name] にコンポーネント名、[summary] に説明を受け取り、下のタスク指示ではプレースホルダーとして使えます。
![Task section using parsed arguments Task section of a custom slash command file referencing the [name] and [summary] values parsed from the command arguments](/images/guides/claude-code-slash-commands/claude-code-slash-commands-task-arguments.webp)
参照形式の行が $ARGUMENTS 文字列を名前付きの値に分解する。9:01 から視聴 - 11
入力しながらヒントを受け取る
もう一度再起動してメニューからこのコマンドを受け入れると、front matter の2つの効果を確認できます。description がコマンドの目的を示し、ゴーストテキストが引数の形式を示します。コンポーネント名、パイプ、続いて要約です。

front matter の成果:説明とインラインの引数ヒント。9:29 から視聴 - 12
引数つきでコマンドを呼び出す
今回の呼び出しでは、icon を名前、「an icon component for showing icons with a circular background」を要約として渡し、パイプで区切っています。同じコマンドファイルでも、モデルに任せるのではなく指定されたコンポーネントを正確に作れるようになりました。

まず名前、パイプ、続いて1行の要約。9:54 から視聴 - 13
作成されたファイルを確認する
エクスプローラーが、名前付き引数の効果を示しています。components/ui の下に新しい Icon フォルダーがあり、Icon.tsx とテストファイルが入っています。先ほどの Card とまったく同じ構成です。同じコマンド、別の入力、一貫した構造です。

Icon.tsx とそのテストファイルが想定のフォルダーに置かれる。10:27 から視聴 - 14
見える出力を元に反復する
最初の版は絵文字のアイコンを使っていたため、著者が修正を求めました。Claude Code は依頼どおり正式なアイコンライブラリに差し替え、プレビューにはアクションバー、ステータスインジケーター、5つのバリアントが並びます。カスタムコマンドが品質の下限を決め、レビューが上限を決めます。

1ラウンドのフィードバックの後:本物のアイコン、5バリアント、アクションバー。11:52 から視聴