Claude Code Skill由来コマンドの設計方法 ── カスタムSlashコマンドを自作する

Claude CodeのBuilt-inコマンドだけでは物足りなくなったら、次のステップは Skill由来コマンド(カスタムSlashコマンド) の自作です。.claude/commands/ ディレクトリにマークダウンファイルを置くだけで、自分だけのコマンドが対話セッションに登場します。本記事では、コマンドファイルの仕組みから実際の作成手順、引数の受け渡し、デバッグ方法までを解説します。Built-inコマンドの基本操作と、CLAUDE.md(Skills)の仕組みを理解している方を対象としています。


SkillからSlashコマンドへの変換の仕組み

.claude/commands/ ディレクトリにマークダウンファイルを配置すると、そのファイル名がSlashコマンド名として自動認識されます。

プロジェクトルート/
  .claude/
    commands/
      project-setup.md    → /project-setup として利用可能
      daily-check.md      → /daily-check として利用可能
      code-quality.md     → /code-quality として利用可能

コマンドファイルの中身は Claudeへのプロンプト です。スラッシュコマンドを実行すると、ファイルの内容がそのままプロンプトとしてClaudeに送信されます。


プロジェクトスコープとユーザースコープ

Skill由来コマンドには2つの配置場所があります。

  • プロジェクトスコープ: .claude/commands/ に配置。そのプロジェクト内でのみ有効。Gitにコミットすればチームで共有できる。
  • ユーザースコープ: ~/.claude/commands/ に配置。全プロジェクトで利用可能。個人の汎用コマンド向け。
# プロジェクトスコープ
~/my-project/.claude/commands/project-setup.md

# ユーザースコープ
~/.claude/commands/quick-status.md

実際にコマンドを作ってみる

/project-setup コマンドの作成

プロジェクト初期セットアップ用のコマンドを作成します。
ここでは、【Claude Code】printモード入門|パイプ連携とスクリプト活用の基本 などで使用した ~/readme-pipeline-demoを使用しています。

mkdir -p .claude/commands

cat << 'EOF' > .claude/commands/project-setup.md
プロジェクトの初期セットアップ状態を確認し、必要な手順を実行してください。

## 確認項目

1. **ディレクトリ構造の確認**
   - src/ ディレクトリが存在するか
   - tests/ ディレクトリが存在するか
   - docs/ ディレクトリが存在するか

2. **設定ファイルの確認**
   - .gitignore が存在し、適切な内容か
   - CLAUDE.md が存在するか
   - README.md が存在するか

3. **Git状態の確認**
   - Gitリポジトリが初期化されているか
   - リモートリポジトリが設定されているか

## 出力形式

以下の形式でチェック結果を報告してください:

[OK] 項目名 - 詳細
[NG] 項目名 - 不足している内容と推奨アクション

不足しているものがあれば、作成するかどうかユーザーに確認してください。
EOF

Claude Codeを再起動して /project-setup を実行すると、定義した確認項目がすべてチェックされ、[OK] / [NG] 形式で結果が返ります。

/daily-check コマンドの作成

日次チェック用のコマンドも同様に作成できます。

cat << 'EOF' > .claude/commands/daily-check.md
日次の開発チェックルーティンを実行してください。

## チェック項目

### 1. Git状態の確認
- 未コミットの変更があるか確認する
- 現在のブランチ名を表示する
- 直近3件のコミットログを表示する

### 2. コード品質の簡易チェック
- src/ 配下のファイル一覧を表示する
- TODO や FIXME コメントが含まれるファイルを検索する

### 3. CLAUDE.md の確認
- CLAUDE.md の最終更新日を確認する
- 記載されているルールの件数を数える

## 出力形式

=== Daily Check Report ===
Date: (今日の日付)

[Git Status]
- Branch: xxx
- Uncommitted changes: あり/なし

[Code Quality]
- Total files in src/: N
- TODO/FIXME found: N件

[CLAUDE.md]
- Last updated: yyyy-mm-dd
- Rules count: N

=== End of Report ===
EOF

引数付きコマンドを作る

$ARGUMENTS プレースホルダーを使えば、コマンド実行時に追加情報を渡せます。

cat << 'EOF' > .claude/commands/check-file.md
次のファイルについて、以下の観点に基づき品質チェックを実行してください: $ARGUMENTS

## チェック観点

1. **構文チェック**: 文法エラーがないか
2. **スタイル**: コーディング規約に準拠しているか(CLAUDE.mdを参照)
3. **エラーハンドリング**: 例外処理が適切か
4. **ドキュメント**: docstring や型ヒントが記述されているか

## 出力

各観点について以下の形式で報告してください:

- [PASS] 観点名: 問題なし
- [WARN] 観点名: 改善推奨 - 詳細
- [FAIL] 観点名: 修正必要 - 詳細

最後に総合判定(PASS / WARN / FAIL)を表示してください。
EOF

このコマンドは /check-file src/main.py のように引数付きで呼び出せます。$ARGUMENTSsrc/main.py に置き換わり、そのファイルに対してチェックが走ります。


ユーザースコープコマンドで全プロジェクト共通化

プロジェクトをまたいで使いたい汎用コマンドは ~/.claude/commands/ に配置します。

mkdir -p ~/.claude/commands

cat << 'EOF' > ~/.claude/commands/quick-status.md
現在の作業環境の状態を簡潔に報告してください。

1. 現在のディレクトリのGit状態(ブランチ名、変更の有無)
2. CLAUDE.md が存在するかどうか
3. .claude/commands/ にカスタムコマンドがいくつあるか

1行ずつ簡潔に出力してください。
EOF

どのプロジェクトディレクトリでも /quick-status として利用できます。


デバッグのポイント

Skill由来コマンドが期待通りに動かないときは、以下を順番にチェックしましょう。

問題原因対処法
/ 入力時に候補に出ない配置場所が間違っている.claude/commands/(複数形)直下にあるか確認
実行しても何も起きないファイルが空か構文エラーファイル内容が有効なプロンプトか検証
引数が渡らない$ARGUMENTS の記述ミス大文字で $ARGUMENTS と正確に記述しているか確認
意図しない動作をするプロンプトの指示が曖昧指示をより具体的に書き直す

特に多いのが ディレクトリ名のタイプミスcommand vs commands)です。Claude Codeを再起動してから / を入力し、候補に表示されるか確認するのが最も確実です。


次に試してみよう

自分の日常業務で繰り返し行っている作業を1つ選び、それをSkill由来コマンドとして作成してみてください。$ARGUMENTS を活用した引数対応にも挑戦すると、コマンドの汎用性がぐっと上がります。


さらに深く学びたい方へ
Claude Codeの Skills・MCP・Agent・Hooks・Plugin を体系的に学べる実践ガイドを Zenn Book で公開中です。
全5章・41記事のハンズオン教材を、章ごとに順次公開しています。現在公開中の章は無料で読めます。
Claude Code 実践ガイド|Skills・MCP・Agent・Hooks・Plugin(Zenn Book)