BioErrorLog Tech Blog

試行錯誤の記録

Claude Code: カスタムスラッシュコマンドの作り方を理解する

Claude Codeのカスタムスラッシュコマンドの作り方の基本を備忘録にまとめます。

はじめに

私は日頃Claude Codeを使ってコーディングしています。

しかし、いまだにカスタムスラッシュコマンドを自分で作ったことがなかったので、作り方をここにメモします。

# 作業環境
$ claude --version
1.0.113 (Claude Code)

The English translation of this post is here.

Claude Codeカスタムスラッシュコマンドとは何か

まず、Claude Code にはスラッシュコマンドという便利な仕組みがあります。

  • /clear
  • /init
  • /compact

などですね。

これらビルトインのスラッシュコマンドに対して、カスタムスラッシュコマンドはユーザー自身が定義可能なスラッシュコマンドです。

一言で言うなら、プロンプトをあらかじめmarkdownに定義しておいて、コマンドですぐ呼び出せるようにしておく機能です。

カスタムスラッシュコマンドの作り方

カスタムスラッシュコマンドは、.claude/commands/配下にmarkdownファイルを置くことで作成可能です。 そのmarkdownファイル名が、そのままカスタムスラッシュコマンド名になります。

.claude/commands/の場所によって、プロジェクトコマンドと個人コマンドの2種類に分けられます。

  • プロジェクトコマンド
    プロジェクトフォルダの.claude/commands/ディレクトリにmarkdown ファイルを配置すると、そのプロジェクト内でのみコマンドが利用可能になります。 リポジトリを使うメンバー全員で共有できるので、チームで共通の定型作業を自動化するのに最適です。
  • 個人コマンド
    ~/.claude/commands/ディレクトリに置いたコマンドは、自分専用として全プロジェクトで利用できます。

それでは、実例を見ながらカスタムスラッシュコマンドの具体的な作り方を見ていきます。

主な文法とカスタムスラッシュコマンド例

プロンプトのみ

まず、カスタムスラッシュコマンドは.claude/commands/ディレクトリにmarkdown ファイルをコマンド名と同じ名前で作成して、そこにただプロンプトを記載しておくだけでも機能します。

例:

.claude/commands/analyze.md:

Analyze this code and explain the architecture.

これだけで、Claude Code上で/analyzeと打つだけで、コードを解析してアーキテクチャを解説するカスタムスラッシュコマンドが作成できます。

カスタムスラッシュコマンド`/analyze`が作成された様子

以降、カスタムスラッシュコマンドの定義に利用できる便利な機能を見ていきます。

引数

カスタムスラッシュコマンドは/<command-name> [arguments]として引数を受け取ることもできます。

シェルスクリプトのように$1, $2といった位置引数を指定するか、$ARGUMENTSでまとめて取得することが可能です。

例:

.claude/commands/fix-issue.md:

Fix issue #$1 with priority $2.

これは次のように実行できます。

/fix-issue 123 high

bashコマンドの実行

フロントマターに allowed-tools を指定すると、コマンド実行時に bash コマンドを実行してその結果をプロンプトに埋め込むこともできます。 (フロントマターについては後の章で別途取り上げます)

bashコマンドを!付きで記載しておくことで、コマンドを実行されることが可能です。

例:Git の差分を読み込んで解説させるコマンド

.claude/commands/git-diff.md:

---
allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git log:*)
description: Explain the git diff
---

# Context
- Current git status: !`git status`
- Current git diff: !`git diff HEAD`

# Task
Based on the above changes, explain the git diff

これを /git-diff で実行すると、現在の差分を参照して内容を解説してくれます。

ファイル参照

コマンド内でファイルの中身を読み込ませたい場合は、@<file path> を使います。

例:

Compare @src/old-version.js with @src/new-version.js and summarize the differences.

このように書いておくと、実際のファイルの内容がプロンプトに埋め込まれるので便利です。

フロントマター

"bashコマンドの実行"の章で少し触れましたが、フロントマターにカスタムスラッシュコマンドのメタ情報を設定できます (フロントマターとは、markdownなどで使われる、ドキュメント冒頭に記載されるメタデータブロックのことです)。

設定できるメタデータには次の項目があります。

  • allowed-tools : 使用を許可するツール
  • argument-hint : 引数のヒント(コマンド入力時に補完表示される)
  • description : コマンドの説明
  • model : 使用するモデルの指定

例:

---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
argument-hint: [message]
description: Create a git commit
model: claude-3-5-haiku-20241022
---

Create a git commit with message: $ARGUMENTS

おわりに

以上、カスタムスラッシュコマンドの作り方を簡単にまとめました。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

参考