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のカスタムスラッシュコマンドを作ってみた〜Skillsとの違いも整理〜

0
Posted at

この記事について

Claude Codeで「カスタムスラッシュコマンド」を作る手順を、実際に動かした例つきでまとめます。あわせてSkills(SKILL.md)との違い・使い分けも紹介します。

カスタムスラッシュコマンドとは

/コマンド名 と入力すると、あらかじめ用意しておいたMarkdownファイルの内容がClaudeへの指示として渡される機能です。定型的な指示を毎回書き直さずに呼び出せます。

配置場所

スコープ パス 用途
プロジェクト用 <プロジェクト>/.claude/commands/コマンド名.md そのリポジトリだけで使う
ユーザー全体用 ~/.claude/commands/コマンド名.md 全プロジェクト共通で使う

サブディレクトリを切ると /カテゴリ:コマンド名 のように名前空間化できます(例: .claude/commands/docker/ps.md/docker:ps)。

手順1: 最小サンプルを作る(/greet <name>

.claude/commands/greet.md を新規作成し、以下の内容を書きます。

---
description: 指定した名前に挨拶する(スラッシュコマンドの動作確認用サンプル)
argument-hint: [name]
---

$ARGUMENTS さんに、元気か尋ねる短い挨拶メッセージを日本語で書いてください。

保存するだけで完了です。Claude Code自体の再起動は不要で、次にセッションを開始するか/メニューを開いた時点で自動認識されます。

動作確認

/greet 太郎 と入力すると、$ARGUMENTS の部分が「太郎」に置換された指示文がClaudeに渡り、次のように挨拶メッセージが返ってきます。

太郎さん、こんにちは!お元気ですか?最近どうお過ごしですか?

手順2: 実用サンプルを作る(/dockps

コマンド実行結果を埋め込む例として、Dockerコンテナの稼働状況を確認するコマンドを作ります。

.claude/commands/dockps.md

---
description: 現在のDockerコンテナ稼働状況を確認する
allowed-tools: Bash(docker compose ps:*)
---

以下は現在のDockerコンテナ状況です。

!\`docker compose ps\`

異常終了しているコンテナがあれば指摘してください。

!\command` と書いた部分は、コマンドを実行してその出力結果を本文に埋め込む記法です。allowed-tools` で使ってよいBashコマンドの範囲を事前指定しておくことで、実行のたびに許可プロンプトが出るのを防げます。

frontmatterで指定できる主なフィールド

フィールド 内容
description コマンドの説明。/help一覧やClaudeの自動判断材料に使われる
argument-hint ユーザーへの引数ヒント表示(例: [name]
allowed-tools このコマンド実行時に無許可で使えるツール
model このコマンド専用にモデルを指定
disable-model-invocation trueにすると、Claudeが自律的に呼ぶことを禁止し、ユーザーが手動で/と打った時だけ動く

本文中で使える特殊記法

  • $ARGUMENTS … 引数全体を渡す
  • $1, $2 … 位置引数(bashの$1と同様の考え方)
  • !`bashコマンド` … コマンドを実行し、その出力結果を埋め込む
  • @ファイルパス … 指定したファイルの内容を参照・埋め込む

Skills(SKILL.md)との違い

観点 スラッシュコマンド Skills
ファイル形式 .claude/commands/name.md の単一Markdown .claude/skills/name/SKILL.md を含むディレクトリ(補助スクリプトや参照ファイルを同梱できる)
呼び出し方 ユーザーが明示的に /name と入力した時のみ ユーザーの/name呼び出しに加えて、Claudeが会話の文脈からdescriptionを見て自律的に判断して呼ぶ
得意なこと 定型的な短い指示。確実に同じ動作をさせたい処理 複雑な手順、複数ファイルの参照、条件分岐を伴う判断が必要な処理
実行の確実性 高い(人間が明示的に起動するので誤発火しない) descriptionの書き方次第で発火精度が変わる

実装上はほぼ同一の機構で、.claude/commands/*.md に置いたファイルはSkillとしても認識されます(今回作成したgreet/dockpsもSkill一覧に表示されました)。主な違いは「ユーザーが明示的に呼ぶか」「Claudeが文脈から自動判断して呼ぶか」という発火条件の違いです。

メリット・デメリット

スラッシュコマンド

  • 良い点: シンプルで見通しが良い、誤動作しない、すぐ作れる
  • 弱い点: 自動発火はしない(毎回/で呼ぶ必要がある)、複雑な多段階ロジックには不向き

Skills

  • 良い点: 会話の流れから自動的に呼ばれる、補助ファイル(スクリプト・参照資料)を同梱できる、複雑な判断ロジックを書ける
  • 弱い点: descriptionの精度が発火の質を左右する(曖昧だと誤って呼ばれたり、逆に呼ばれるべき時に呼ばれなかったりする)

使い分けの目安

  • 毎回自分で明示的に打つ短い定型処理 → スラッシュコマンド(例: docker compose ps確認、git status確認など)
  • 文脈に応じてClaudeに自動判断させたい/複数ファイルや手順書を伴う複雑な処理 → Skills

まずはスラッシュコマンドで小さく試して、内容が複雑化・自動化したくなったらSkillsに昇格させる、という流れが無理がないと思います。

動作反映・確認方法

  1. .claude/commands/ 配下にMarkdownファイルを保存する
  2. Claude Code自体の再起動は不要
  3. / とだけ入力するとコマンド一覧が表示されるので、そこで存在確認できる
  4. /コマンド名 引数 の形で実行する

不要になった場合はファイルを削除するだけで、コマンド/Skill一覧からも消えます。

まとめ

カスタムスラッシュコマンドは、Markdownファイル1つで定型処理を/nameから呼び出せる手軽な仕組みです。自動判断させたい複雑な処理はSkillsに任せつつ、確実に自分で呼びたい処理はスラッシュコマンドとして切り出す、という使い分けがおすすめです。

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?