はじめに
「テストを書いて」「ドキュメントを生成して」「セキュリティレビューして」。Claude Codeを使っていると、似たような指示を何度も繰り返すことはありませんか? Skills機能を使えば、よく使うプロンプトをスラッシュコマンドとして登録し、たった一言で呼び出せるようになります。
この記事では、カスタムスラッシュコマンドの作成方法と、すぐに使える実用的なコマンド例を3つ紹介します。
Skills機能とは
Skills機能は、Claude Codeの動作を拡張するための仕組みです。SKILL.md というMarkdownファイルに指示を書くと、Claude Codeがそれをツールキットに追加します。作成したスキルは /スキル名 のスラッシュコマンドで呼び出せるほか、会話の内容に関連する場合にはClaudeが自動的に読み込むこともできます。
CLAUDE.mdは会話開始時に毎回読み込まれますが、スキルは呼び出されたときだけ読み込まれます。そのため、長い手順書やチェックリストはスキルにしておくと、普段のコンテキストを圧迫しません。
スキルファイルの配置場所
スキルの保存先によって、誰がそれを使えるかが決まります。
| 保存場所 | パス | 対象範囲 |
|---|---|---|
| 個人用 | ~/.claude/skills/<スキル名>/SKILL.md | すべてのプロジェクト |
| プロジェクト用 | .claude/skills/<スキル名>/SKILL.md | このプロジェクトのみ |
チームで共有したい場合はプロジェクトの .claude/skills/ ディレクトリに配置し、個人的に使いたい場合はホームディレクトリの ~/.claude/skills/ に配置します。
カスタムコマンドの作り方
スキルディレクトリを作成する
まず、スキル用のディレクトリを作ります。ディレクトリ名がそのままコマンド名になります。
# プロジェクト用(チームで共有)
mkdir -p .claude/skills/code-doc
# 個人用(すべてのプロジェクトで使用)
mkdir -p ~/.claude/skills/code-docSKILL.mdを作成する
ディレクトリ内に SKILL.md ファイルを作成します。YAMLフロントマターで動作を設定し、本文にClaudeへの指示を書きます。
---
description: 指定されたコードのドキュメントを自動生成する
---
## 指示
$ARGUMENTS のドキュメントを生成してください。$ARGUMENTS はコマンド実行時に渡された引数に置き換わります。
コマンドをテストする
Claude Codeで /code-doc src/utils.ts のように実行して、動作を確認します。
実用コマンド例
1. /code-doc: コードのドキュメントを自動生成
関数やクラスのJSDocコメントやREADMEのAPI仕様セクションを自動生成するコマンドです。
.claude/skills/code-doc/SKILL.md:
---
description: 指定されたファイルのコードドキュメントを自動生成する。ドキュメント生成やAPI仕様の記述を依頼されたときに使用する。
argument-hint: [ファイルパス]
---
## 対象
$ARGUMENTS
## 指示
対象ファイルのドキュメントを生成してください。以下のルールに従うこと。
### 関数・メソッド
- JSDoc/docstring形式でコメントを追加する
- パラメータの型・説明・デフォルト値を記述する
- 戻り値の型と説明を記述する
- 使用例を1つ以上含める
### クラス
- クラスの責務を1〜2文で説明する
- publicメソッドの一覧と概要を記述する
### モジュール全体
- ファイル先頭にモジュールの目的を記述する
- エクスポートされている要素の概要を列挙する
ドキュメントは既存のコードスタイルに合わせること。使い方:
/code-doc src/services/auth.ts
2. /test-gen: テストコードを自動生成
指定したファイルに対するテストコードを生成するコマンドです。
.claude/skills/test-gen/SKILL.md:
---
description: 指定されたファイルのテストコードを生成する。テスト作成を依頼されたときに使用する。
argument-hint: [ファイルパス]
---
## 対象
$ARGUMENTS
## 指示
対象ファイルのテストコードを生成してください。以下の方針に従うこと。
### テストの構成
- テスト名は「何を」「どういう条件で」「どうなるか」がわかる命名にする
- 正常系・異常系・境界値の3パターンを網羅する
- テストはdescribe/itブロックで論理的にグループ化する
### テストの内容
- 各テストは独立して実行可能にする(テスト間の依存をなくす)
- モック・スタブは必要最小限にとどめる
- アサーションは具体的な値で検証する
### ファイル配置
- テストファイルは対象ファイルと同じディレクトリ構造で配置する
- ファイル名は `対象ファイル名.test.拡張子` とする
プロジェクトで使用しているテストフレームワークを検出し、それに合わせたテストを生成すること。使い方:
/test-gen src/utils/validation.ts
3. /review-security: セキュリティ観点でのレビュー
コードをセキュリティの観点からレビューし、脆弱性や改善点を報告するコマンドです。
.claude/skills/review-security/SKILL.md:
---
description: 指定されたファイルやディレクトリをセキュリティ観点でレビューする。脆弱性チェックやセキュリティ改善を依頼されたときに使用する。
argument-hint: [ファイルパスまたはディレクトリ]
disable-model-invocation: true
---
## 対象
$ARGUMENTS
## 指示
対象のコードをセキュリティ観点でレビューしてください。
### チェック項目
1. **インジェクション攻撃**: SQLインジェクション、XSS、コマンドインジェクション
2. **認証・認可**: 認証バイパス、権限昇格、セッション管理の不備
3. **データ保護**: 機密情報の平文保存、ログへの機密情報出力
4. **入力検証**: 未検証の外部入力、型チェックの不足
5. **依存関係**: 既知の脆弱性を持つライブラリの使用
6. **設定**: デバッグモードの残存、過度に緩いCORS設定
### レポート形式
各指摘は以下の形式で報告すること:
- **深刻度**: Critical / High / Medium / Low
- **該当箇所**: ファイル名と行番号
- **問題点**: 何が問題なのか
- **リスク**: 悪用された場合の影響
- **修正案**: 具体的な修正コード
指摘がない場合でも「問題は見つかりませんでした」と明記すること。セキュリティレビューのように意図的に実行したいコマンドには disable-model-invocation: true を設定しましょう。これにより、Claudeが会話の流れから勝手にレビューを開始することを防げます。
使い方:
/review-security src/api/
パラメータの受け取り方
スキルでは $ARGUMENTS を使ってコマンドの引数を受け取れます。さらに、個々の引数を位置で取り出すことも可能です。
---
description: コンポーネントを別のフレームワークに移行する
arguments: [component, from, to]
---
$component コンポーネントを $from から $to に移行してください。このスキルは /migrate-component SearchBar React Vue のように呼び出すと、$component が SearchBar、$from が React、$to が Vue に置き換わります。
名前付き引数の代わりに、$ARGUMENTS[0](または短縮形の $0)のようにインデックスでアクセスすることもできます。
チームでコマンドを共有する方法
プロジェクトの .claude/skills/ に配置する
チームで共有したいスキルは .claude/skills/ ディレクトリに作成します。
mkdir -p .claude/skills/code-doc
# SKILL.md を作成・編集バージョン管理にコミットする
.claude/skills/ をgitにコミットすれば、チーム全員がそのコマンドを使えるようになります。
git add .claude/skills/
git commit -m "チーム共有のカスタムスキルを追加"チームに周知する
新しいスキルを追加したら、チームメンバーに使い方を共有しましょう。Claude Codeで「利用可能なスキルは何ですか?」と聞くと、一覧を確認できます。
プロジェクト固有のルールに基づくコマンド(テスト生成、コードレビューなど)はプロジェクトの .claude/skills/ に配置し、汎用的なコマンド(git操作のショートカットなど)は個人の ~/.claude/skills/ に配置するのがおすすめです。
まとめ
- Skills機能を使うと、よく使うプロンプトをスラッシュコマンドとして登録できる
SKILL.mdをMarkdownで記述し、.claude/skills/ディレクトリに配置するだけで利用可能$ARGUMENTSでコマンドに引数を渡せるため、柔軟なコマンドを作成できる- プロジェクトの
.claude/skills/にコミットすれば、チーム全体でコマンドを共有できる disable-model-invocation: trueを設定すると、手動実行のみに制限できる