Claude Code のカスタムスラッシュコマンド(スキル)を作る:繰り返す指示をコマンド化する

Claude Code 公開:

Claude Code で自分専用のスラッシュコマンドを作る方法を解説します。.claude/skills と .claude/commands の違い、引数の受け取り方、frontmatter で使えるオプション、チームで共有するときの置き場所を紹介します。

検証日 2026年9月7日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. 2 つの形式:スキルとコマンド
  2. 最小構成のスキルを作る
  3. 引数を受け取る
  4. Bash の実行結果を埋め込む
  5. frontmatter で使える主なオプション
  6. 補助ファイルを同梱する(スキルの利点)
  7. 運用のコツ
  8. まとめ

「このプロジェクトのルールでコードレビューして」「Conventional Commits 形式でコミットメッセージを書いて」のように、毎回同じ長い指示を打っているなら、それはスラッシュコマンドにする候補です。

Claude Code では、Markdown ファイルを 1 つ置くだけで /review/commit のような自分専用のコマンドを定義できます。この記事では、現在の主流である スキル形式を中心に、従来の commands 形式との関係、引数の扱い、チーム共有の方法をまとめます。

KEY POINT

この記事で分かること

  • スキル(SKILL.md)とコマンド(commands/*.md)の違いと使い分け
  • 引数、frontmatter オプション、Bash 実行結果の埋め込み
  • そのまま使えるコマンド例(レビュー、コミット、テスト生成)

2 つの形式:スキルとコマンド

形式置き場所呼び出し特徴
スキル.claude/skills/<名前>/SKILL.md/<名前> または Claude が自動判断補助ファイル(スクリプト、テンプレート)を同じフォルダに同梱できる
コマンド.claude/commands/<名前>.md/<名前>1 ファイルで完結。以前からある形式

現在はスキル形式が推奨です。description に「いつ使うか」を書いておくと、ユーザーが /名前 と打たなくても、Claude が状況に応じて自動で読み込みます。明示的に呼び出したいだけなら、どちらの形式でも動作は同じです。

ユーザー全体で使うものは ~/.claude/skills/~/.claude/commands/ に置きます。プロジェクトとユーザーで同名のコマンドがある場合、区別のために接頭辞付きで表示されます。

最小構成のスキルを作る

mkdir -p .claude/skills/review

.claude/skills/review/SKILL.md:

---
name: review
description: 変更中のコードをこのプロジェクトの規約に沿ってレビューする。ユーザーが「レビューして」と言ったときにも使う。
---

現在の git diff を対象に、次の観点でレビューしてください。

1. CLAUDE.md の規約違反(型、命名、禁止ライブラリ)
2. エラーハンドリングの漏れ
3. テストが追加・更新されているか
4. セキュリティ上の懸念(入力検証、秘密情報のハードコード)

指摘は「重大 / 改善提案 / 軽微」に分類し、ファイル名と行番号を添えてください。
問題がない観点は「問題なし」と 1 行で書いてください。

保存後、対話中に /review と入力すると実行されます。新しく追加したコマンドが一覧に出ないときは、セッションを再起動してください。

用語解説

frontmatter: Markdown 先頭の --- で囲まれた部分です。name(コマンド名)と description(説明)のほか、後述の allowed-toolsargument-hintmodel などを書けます。

引数を受け取る

$ARGUMENTS は入力された引数全体、$1$2 は空白区切りの個別引数に置き換わります。

.claude/skills/fix-issue/SKILL.md:

---
name: fix-issue
description: GitHub Issue 番号を受け取り、内容を確認して修正する
argument-hint: <issue番号>
---

GitHub Issue #$1 を `gh issue view $1` で読み、次の手順で対応してください。

1. 再現手順を整理し、必要なら失敗するテストを先に書く
2. 原因を特定して修正する
3. テストを実行し、結果を報告する
4. コミットメッセージは「fix: <要約> (#$1)」の形式にする

/fix-issue 123 のように呼び出します。argument-hint は入力補完に表示されるヒントです。

Bash の実行結果を埋め込む

本文中に ! で始まる行を書くと、コマンド実行前にそのシェルコマンドが実行され、結果が指示に埋め込まれます。実行を許可するツールは allowed-tools で限定します。

.claude/skills/commit/SKILL.md:

---
name: commit
description: ステージ済みの変更から Conventional Commits 形式のコミットメッセージを作成してコミットする
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git diff:*), Bash(git commit:*)
---

## 現在の状態
- ステータス: !`git status --short`
- ステージ済みの差分: !`git diff --cached`

## 指示
上記の差分から Conventional Commits 形式(feat / fix / docs / refactor / test / chore)のコミットメッセージを日本語で作成し、コミットしてください。
1 行目は 50 字以内、本文には変更理由を書いてください。

差分の内容がそのまま指示に含まれるため、Claude が改めて git diff を実行する手間が省けます。

frontmatter で使える主なオプション

キー意味
nameコマンド名(スキルでは必須。省略時はフォルダ名)
description説明。自動呼び出しの判断材料になる
argument-hint引数のヒント表示
allowed-toolsこのコマンド内で確認なしに使えるツール
modelこのコマンド実行時に使うモデル(例: claude-sonnet-5)

正確なキー名や新しいオプションは公式ドキュメントで確認してください。

補助ファイルを同梱する(スキルの利点)

スキルのフォルダには、テンプレートやスクリプトを一緒に置けます。

.claude/skills/new-component/
├── SKILL.md
├── template.tsx
└── template.test.tsx

SKILL.md から「template.tsx をコピーして命名を置き換える」と指示すれば、毎回同じ雛形からコンポーネントを生成できます。長い指示をコマンド本文に書くよりも、雛形を実ファイルとして置く方が結果が安定します。

運用のコツ

  • CLAUDE.md との分担: 常に守るルールは CLAUDE.md、特定の作業手順はスキルに書きます。すべてを CLAUDE.md に書くとコンテキストを圧迫します(CLAUDE.md の書き方)。
  • 自動呼び出しを抑えたい場合: description を「ユーザーが /名前 と明示したときだけ使う」と書くと、意図しない自動実行を減らせます。
  • サブエージェントとの組み合わせ: 長いレビューは、スキルからサブエージェントを呼ぶと本体のコンテキストを汚しません(サブエージェントの作り方)。

まとめ

  • .claude/skills/<名前>/SKILL.md を置くだけで /<名前> コマンドになる
  • $ARGUMENTS / $1 で引数、!`コマンド` で Bash の実行結果を埋め込める
  • allowed-tools でコマンド内の自動許可範囲を限定する
  • 常時ルールは CLAUDE.md、作業手順はスキル、という分担にする

よくある質問

スラッシュコマンドとスキルは何が違いますか?
どちらも Markdown で書いた指示を再利用する仕組みです。スキル(.claude/skills/名前/SKILL.md)は説明文に基づいて Claude が自動で呼び出すこともでき、補助ファイルを同梱できます。従来の .claude/commands/名前.md も引き続き使えます。
コマンドに引数を渡せますか?
はい。本文中の $ARGUMENTS が入力された引数全体に、$1 や $2 が個別の引数に置き換わります。
チームで共有するにはどうすればよいですか?
リポジトリの .claude/skills/ または .claude/commands/ に置いて Git にコミットします。個人用は ~/.claude/ 配下に置きます。

参考にした一次情報

この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。