Claude Codeには /sc: プレフィックスでカスタムコマンドを定義できる仕組みがある。本番稼働中の自動化プロジェクトでは、108セッション・2,390ユーザーメッセージを通じて、10種類のカスタムコマンドを合計3,126回使用してきた。
本記事では、どのコマンドがいつ・なぜ使われるのかを実データで分析し、カスタムコマンド設計の実践的なガイドを記録する。
使用回数データ:108セッションの実績
コマンド別使用回数
1/sc:implement 801回 ████████████████████████████████████████ (25.6%)2/sc:design 682回 ██████████████████████████████████ (21.8%)3/sc:analyze 599回 ██████████████████████████████ (19.2%)4/sc:git 385回 ███████████████████ (12.3%)5/sc:document 270回 █████████████ ( 8.6%)6/sc:troubleshoot 218回 ██████████ ( 7.0%)7/sc:save 68回 ███ ( 2.2%)8/sc:improve 64回 ███ ( 2.0%)9/sc:test 29回 █ ( 0.9%)10/sc:brainstorm 10回 ▏ ( 0.3%)11 ──────12合計 3,126回 108セッション / 2,390ユーザーメッセージセッションあたりの使用頻度
1session_stats = {2 "total_sessions": 108,3 "total_commands": 3126,4 "avg_per_session": 28.9,5 "total_user_messages": 2390,6 "command_ratio": 3126 / 2390, # 1.31: メッセージ1回あたり1.3回のコマンド7}ユーザーメッセージ1回あたり平均1.3回のコマンドが実行されている。つまり、ほぼ全てのやり取りで何らかのコマンドが使われている計算だ。
各コマンドの使いどころ
/sc:implement(801回):コードを書く
最多使用。実際のコーディング作業を実行する。
1使用タイミング:2 - 設計が固まった後の実装フェーズ3 - バグ修正4 - 新機能追加5 - リファクタリング6
7使用パターン:8 /sc:design → (設計承認) → /sc:implement → /sc:test801回のうち約60%は /sc:design の後に呼ばれている。「設計してから実装する」というフローが定着している証拠だ。
/sc:design(682回):設計する
2番目に多い。アーキテクチャ設計、データフロー設計、インターフェース設計を行う。
1使用タイミング:2 - 新機能の実装前3 - 既存機能の大規模リファクタリング前4 - データパイプラインの変更前5
6出力例:7 - モジュール構成図8 - データフロー図9 - インターフェース定義10 - 影響範囲分析682回という数字は、「AIに設計を任せる」のではなく「AIと設計を議論する」スタイルを反映している。設計は1回で確定しない——修正・再設計を含めてこの回数になる。
/sc:analyze(599回):分析する
3番目に多い。コード品質・セキュリティ・パフォーマンスの3軸で分析する。
1使用タイミング:2 - デプロイ前の品質チェック3 - 大規模変更後の影響分析4 - 定期的なコードベース品質監査5 - QAワークフローの第1ステップ6
7出力例:8 品質: 循環的複雑度 最大19、関数行数 最大45行9 セキュリティ: ハードコードされたシークレット 0件10 パフォーマンス: N+1クエリパターン 0件599回は「手動レビューでは不可能な頻度」だ。人間のレビュアーに599回の品質チェックを依頼したら、コストは膨大になる。AIコマンドだからこそ実現できる頻度である。
/sc:git(385回):Gitオペレーション
スマートなコミットメッセージ生成とGit操作を行う。
1# /sc:git が生成するコミットメッセージの例2commit_messages = [3 "feat(pipeline): リトライ制御の状態機械を実装",4 "fix(api): 外部API認証エラー時のリトライロジック修正",5 "refactor(common): commonLogger のProtocolパターン適用",6 "test(pipeline): 安定期における処理判定のエッジケーステスト追加",7]385回のうち、約70%はコミット操作だ。残り30%はブランチ作成、差分確認、マージ操作に使われている。
/sc:troubleshoot(218回):トラブルシュート
エラー発生時の原因分析と解決策提案を行う。
1使用タイミング:2 - テスト失敗時3 - 本番エラー発生時4 - ビルドエラー時5 - 原因不明の挙動変化時6
7分析フロー:8 1. エラーメッセージの解析9 2. 関連ファイルの確認10 3. 変更履歴の確認11 4. 根本原因の特定12 5. 修正案の提示/sc:brainstorm(10回):ブレインストーム
最少使用。要件発見や新しいアイデアの探索に使う。
1使用例:2 "新しいエラーフィルターのアイデアが欲しい"3 "エラーハンドリング戦略を根本的に見直したい"10回しか使われていない理由は明確だ。ブレインストーミングは「コマンドで構造化する」よりも「自然言語で対話する」方が向いている。「こういう問題があるんだけど」と自由に話す方が、コマンドの型に嵌めるより発想が広がる。
QAワークフローチェーン
4つのコマンドが連鎖する品質保証フロー。CLAUDE.mdに記載し、Git commit前に自動実行される。
1/sc:analyze → /sc:test → /sc:improve → /sc:document2 ↓ ↓ ↓ ↓3 品質分析 テスト実行 改善提案 ドキュメント更新4 599回 29回 64回 270回なぜ /sc:test が29回と少ないのか
テスト実行自体は /sc:implement の中でも頻繁に行われている。/sc:test はQAワークフローの正式なステップとしてのテスト実行であり、個別のテストランは /sc:implement 内でカバーされている。
1テスト実行の内訳(推定):2 /sc:implement 内での個別テスト: ~400回3 /sc:test での正式QAテスト: 29回4 /sc:troubleshoot 内での検証テスト: ~100回カスタムコマンドの定義方法
各コマンドはスキルファイルとして定義されている。
1# /sc:analyze - コード分析と品質評価2
3## Triggers4- コード品質評価のリクエスト5- セキュリティ脆弱性のスキャン6- パフォーマンスボトルネックの特定7
8## Actions91. 変更されたファイルを特定102. 品質メトリクス(循環的複雑度、関数行数、ネスト深度)を計算113. セキュリティパターンをスキャン124. パフォーマンスアンチパターンを検出13
14## Output15- 品質スコア2 collapsed lines
16- セキュリティ検出事項17- パフォーマンス改善推奨1# /sc:troubleshoot - エラー診断と解決2
3## Triggers4- テスト失敗時5- エラーメッセージの調査依頼6- 原因不明の挙動変化7
8## Actions91. エラーメッセージを解析102. スタックトレースから関連ファイルを特定113. 最近の変更履歴(git log)を確認124. 根本原因を推定135. 修正案を複数提示14
15## Output3 collapsed lines
16- 根本原因分析17- 修正案(優先度付き)18- 再発防止策設計のポイント
1command_design_principles = {2 "single_responsibility": "1コマンド = 1つの明確な目的",3 "clear_triggers": "いつ使うべきかが明確",4 "structured_output": "出力フォーマットが統一されている",5 "composable": "コマンド同士を連鎖できる",6}進化の記録
カスタムコマンドは最初から10種類あったわけではない。必要に応じて追加されていった。
1Phase 1(開始時):2 /sc:analyze のみ3 → 「品質チェックを定型化したい」というニーズから4
5Phase 2(1ヶ月後):6 + /sc:implement, /sc:design7 → 「設計と実装を明確に分離したい」8
9Phase 3(2ヶ月後):10 + /sc:git, /sc:test, /sc:troubleshoot11 → 「Git操作とテスト実行も構造化したい」12
13Phase 4(3ヶ月後):14 + /sc:document, /sc:improve, /sc:save15 → 「QAワークフローを完成させたい」4 collapsed lines
16
17Phase 5(4ヶ月後):18 + /sc:brainstorm19 → 「要件探索もコマンド化してみよう」(結果: あまり使わなかった)Phase 5の /sc:brainstorm が使われなかった事実は重要だ。「全てをコマンド化すればいい」わけではない。構造化が有効なタスクと、自由な対話が有効なタスクがある。
使用パターンの分析
典型的なセッション内のコマンド流れ
1施策実装セッション(典型的な30メッセージのセッション):2 /sc:design ×3 設計議論3 /sc:implement ×8 実装4 /sc:test ×1 テスト実行5 /sc:analyze ×2 品質チェック6 /sc:improve ×1 改善提案7 /sc:document ×1 ドキュメント更新8 /sc:git ×3 コミット・PR作成9 自然言語対話 ×11 議論・確認・方針決定10
11バグ修正セッション(典型的な15メッセージのセッション):12 /sc:troubleshoot ×3 原因調査13 /sc:implement ×4 修正14 /sc:test ×1 検証15 /sc:git ×2 コミット1 collapsed line
16 自然言語対話 ×5 状況説明・確認コマンドの共起パターン
1co_occurrence = {2 ("design", "implement"): 0.85, # designの85%はimplementが続く3 ("analyze", "improve"): 0.72, # analyzeの72%はimproveが続く4 ("troubleshoot", "implement"): 0.68, # troubleshootの68%はimplementが続く5 ("implement", "git"): 0.91, # implementの91%はgitが続く6}学んだこと
1. 使用頻度はimplementとdesignが圧倒的——コードを書く前の設計に時間をかけている証拠
implement(801回)とdesign(682回)で全体の47%を占める。designが2位という事実は、「AIに設計を任せる」ではなく「AIと設計を繰り返す」開発スタイルを表している。実装前の設計議論に時間をかけることで、手戻りを減らしている。
2. analyzeの599回は「品質チェックの習慣化」を示す——手動では不可能な頻度
599回のコード分析を人間のレビュアーに依頼したら、工数的に破綻する。カスタムコマンドによる自動化だからこそ、この頻度でのチェックが実現できている。品質保証は「たまにやる特別なこと」ではなく「毎回やるルーティン」になった。
3. brainstormが少ないのは、対話的な探索は自然言語の方が向いているから
10回しか使われなかった /sc:brainstorm は失敗ではない。「全てを構造化すべきではない」という学びだ。ブレインストーミングは型に嵌めるより自由に話す方が発想が広がる。コマンド化が有効なのは、繰り返し実行される定型的なタスクだ。
まとめ
scコマンド3,126回の使用データから見える実践的な知見は以下の3点だ。
- 設計と実装のコマンド分離が開発品質を上げる:
/sc:design→/sc:implementの流れを定着させることで、「設計なしの即実装」を防ぐ。designの682回は設計議論への投資を数値化したものだ - QAワークフローのコマンドチェーンが品質保証を自動化する: analyze → test → improve → document の4段階をCLAUDE.mdに記載し、commit前に自動実行させることで、人間のレビュアーなしでも品質を維持できる
- コマンド化すべきタスクと自然言語が向くタスクの境界を見極める: 繰り返し実行される定型タスク(分析、テスト、Git操作)はコマンド化が有効。探索的なタスク(ブレインストーミング)は自然言語の対話が向いている