SEN PRODUCT BLOG

千株式会社のプロダクト開発メンバーによるブログ

Claude Code CLIのカスタムコマンドとサブエージェントが簡単にできて面白いぞって話

はじめに

はじめまして!

ものづくり部/パートナー開発の25卒しんちゃんです。

元々はCursorをよく使っていたのですが、最近はClaude Code CLIメインでの運用をしています。

計画書の生成。調査・実装フローで活用という形です。

今回はClaude Code CLIでカスタムコマンドサブエージェントという2つの機能を使ってみて、すごく便利だったので紹介したいと思います。

どちらも開発効率を大幅にアップできる機能なので、ぜひ最後まで読んでもらえると嬉しいです!


🎯 Claude CLIのカスタムコマンドって何?

元々、Claude Code CLIにはビルトインコマンドが用意されています。 例えば /help/cost などですね。

これらに加えて、オリジナルのコマンドを追加する形です。

やり方としては簡単で、決められた場所にMarkdownファイルを置くだけになります。


🛠️ 配置場所とそれぞれの役割

1. プロジェクトコマンド: .claude/commands/

  • プレフィックス: /project:
  • 用途: チーム開発で共有するプロジェクト固有のコマンド
  • バージョン管理: Gitなどでチームメンバーと共有される
  • 適用例: PRへの自動レビュー、レビューを認識して修正など

2. グローバルコマンド: ~/.config/claude/commands/

  • プレフィックス: なし(直接コマンド名)
  • 用途: 個人用の汎用的なコマンド
  • バージョン管理: 個人設定のため共有されない

🔄 実際のカスタムコマンド例

今回は作成例や活用例がないとわかりにくいと思ったので、日報の自動化を作成してみました。

自分が実際に作成した個人用の日報自動作成コマンド(/project:nippou

このコマンドは、当日のSlackの投稿を取得して、Slackの特定のチャンネルに日報として投稿するものです。

---
nippou: Bash(git:*), Bash(npm:*), Read(*.md), Fetch(*)
description: "指定したSlackチャンネルから今日の自身の投稿を取得し、日報フォーマットに整形して、ターゲットチャンネルへ自動で投稿します。"
---

概要
------------------------------------
指定したSlackチャンネルから今日の自身の投稿を取得し、日報フォーマットに整形して、ターゲットチャンネルへ自動で投稿します。

------------------------------------
1. データの取得 (Fetch)
------------------------------------
- ツール: Slack API
- 取得元チャンネルID:{チャンネルID}
- 取得対象: 今日の日付における、実行ユーザー自身の投稿すべて

------------------------------------
2. 日報のフォーマット (Format)
------------------------------------
取得した投稿内容を、以下のテンプレートに沿って整形します。

テンプレート:
## Do(実行・今日やったこと)
- {{取得した投稿内容がここに入る}}
- {{内容に応じてリスト化する}}

## Action(改善)
- {{改善に関する投稿内容がここに入る}}
- {{内容に応じてリスト化する}}

------------------------------------
3. 日報の投稿 (Post)
------------------------------------
- 投稿先チャンネルID:{チャンネルID}
- 実行内容: 上記でフォーマットしたMarkdownテキストを、指定したチャンネルにメッセージとして投稿します。

さらに、この投稿先はSlackだけでなく、特定のGithubのディスカッションなどにもコメントで連携して投稿することも可能です。

MCPサーバーとの連携

カスタムコマンドを強力にするのが、MCP(Model Context Protocol)サーバーです。 .mcp.json で外部サービスとの連携を設定できます。

{
  "mcpServers": {
    "slack": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack@latest"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-YOUR_SLACK_BOT_TOKEN_HERE",
        "SLACK_TEAM_ID": "T0-YOUR_SLACK_TEAM_ID_HERE"
      }
    },
    "github": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github@latest"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_YOUR_GITHUB_PERSONAL_ACCESS_TOKEN_HERE"
      }
    }
  }
}

これによって、Claude Code CLIからSlack、GitHub、などに直接アクセスできるようになります。


💼 私たちの開発チームでの活用例:AI駆動の開発を目指して

個人利用だけでなく、私たちの開発チームでもカスタムコマンドを積極的に活用しています。

例えば、GithubのPRを読み取って実行計画を出すカスタムコマンドを作成し、AI駆動の開発を行っています。

---
pr-review: Github(*), Read(*.md)
description: "指定されたPRの内容を解析し、実装計画とレビューポイントを自動生成します。"
---

1. PRの内容解析
- 変更されたファイルとその差分を取得
- コミットメッセージから意図を読み取り
- 関連するissueやドキュメントを参照

2. 実行計画の生成
- 実装の流れを時系列で整理
- 潜在的なリスクやエッジケースを特定
- テスト観点の提案

3. レビューポイントの提示
- コードの品質チェック項目
- パフォーマンスへの影響
- セキュリティ観点での注意点

例としてこのような内容のコマンドを開発チーム内で共有することで、レビューの品質向上と属人化の防止をしています。

⚠️ AI駆動レビュー導入の前提条件

AIによるコードレビューで品質向上を実現するには、以下の基盤ドキュメントの整備が前提となります:

  • 「コーディングガイドライン」
  • 「コード品質憲章」
  • 「アーキテクチャ設計書」
  • 「チーム開発規約」

この基盤があってこそ、AIが適切な観点でレビューを行い、チーム全体の開発品質向上につながります。


🤖 サブエージェント作成でさらに効率化

Claude Code CLIでサブエージェント作成してみました。

試しに仕様調査と分析のサブエージェント(spec-investigator)を作成してみたところ、かなり良い感触!

実際に作成したサブエージェントがこちらです:

---
name: spec-investigator
description: コードベースの仕様調査と分析を専門に行うサブエージェント。調査のみを実行し、変更は行わない。
color: blue
---

あなたは仕様調査と分析の専門エージェントです。

**重要な制約:**
- **絶対にコードファイルの変更・作成・削除は行わない**
- **リファクタリングやコード改善は行わない**
- **役割は読み取り専用の分析とレポート作成のみ**

**調査手順:**
1. **要件整理**: 調査対象と範囲を明確化
2. **コードベース分析**: 関連ファイルとロジックを調査
3. **依存関係の把握**: クラス関係とデータフローを理解
4. **仕様書作成**: 発見事実を構造化してレポート

**レポート基準:**
- 確認できた事実と不明な点を明確に分離
- 関連ファイルパスを必ず記載
- 処理フローを段階的に説明
- 推測は行わず「不明」として記載

**出力形式:**
1. **調査対象**: 何を分析したか
2. **確認事実**: 発見した内容
3. **処理フロー**: ステップバイステップの説明
4. **関連ファイル**: 調査したファイル一覧
5. **不明点**: 判明しなかった内容

🌟 サブエージェントの4つの主要メリット

サブエージェント活用で実感した4つの大きなメリットについて、詳しく説明します:

1. 📋 コンテキストの分割

プロンプト汚染がなくなったのが一番良かった点です。 通常のClaude Code CLI利用だと、会話が長くなるにつれて最初の指示が薄れてしまうことがあります。

  • 複雑な文脈に惑わされず、特定ドメインに集中できる
  • メインの会話セッションでの「プロンプト汚染」を防止
  • より集中したタスク管理が可能

2. 🎯 専門性の向上

サブエージェントは特定のタスクに特化したシステムプロンプトを持つことができます。

  • 詳細なシステムプロンプトのカスタマイズが可能
  • 特定ドメインに最適化することでタスク成功率が向上
  • 例:調査専用、実装専用、レビュー専用など

3. 🔄 再利用性

ですがサブエージェントなら、毎回決められたルール通りの手順を再利用可能でした。

  • プロジェクト単位、個人単位でのスコープ作成
  • チームプロジェクト間での共有が可能
  • ナレッジとワークフローの継承が容易

4. 🔒 権限の分離

普段は勝手にClaude Code CLI側が変更までしてしまうこともよくあるのですが、調査専門のサブエージェントを作ることで、「調査のみ」という制約をしっかり守ってくれます。

  • サブエージェントごとに異なるツール、MCPサーバーの権限設定
  • エージェントの役割に基づく詳細なアクセス制御
  • 「最小権限の原則」に従ったセキュリティ運用

特に「絶対にコードファイルの変更・作成・削除は行わない」という制約を明記することで、読み取り専用の動作を保証できています。

調査→計画→実装という段階的なアプローチができるようになって、開発の精度が上がりました。

🛠️ サブエージェントの作成方法

実際にサブエージェントを作成する手順も簡単に紹介します!

作成手順

  1. Claude Code CLIでエージェント作成 /agents コマンドを入力してサブエージェント管理画面を開く

  2. スコープの選択

    • プロジェクト単位: .claude/agents/ (チーム共有)
    • 個人単位: ~/.config/claude/agents/ (個人用)
  3. 作成方法の選択

    • Generate with Claude: プロンプトから自動生成
    • Manual configuration: 手動で設定
  4. エージェント設定

    • 使用するツールの選択
    • エージェントの色指定
    • プレビュー確認後、作成完了

ファイル構造

---
name: エージェント名
description: どのようなタスクで呼び出されるか
color: blue
---

システムプロンプト(エージェントの詳細な指示)

使用方法

  • Claude Code CLIが自動判断して適切なエージェントを呼び出し
  • または明示的にエージェント名を指定して呼び出し

📈 実際にやってみてどうだった?

1. 作業の標準化

チーム内での手順が統一され、属人化を防げる。新メンバーでも同じ品質で作業できる。

2. 複雑なワークフローの自動化

MCPとつなぐことで、複数のサービス(Slack、GitHub、DB)を跨いだ処理を一つのコマンドで実行できる。

3. コンテキストの保持

長いプロンプトを毎回書く必要がなく、コマンド一つで詳細な指示を実行できる。

4. チーム共有

プロジェクト内のカスタムコマンドはGitで共有されるため、チーム全体で活用できる。

5. 時短効果

今回の例だと、日報など毎日時間がかかってしまうものをサッとまとめられるのはでかい。 小さいことだけど、積み重なると結構大きい感覚。

6. 現状だとレビュー負荷は増えた

生成したコードを理解・検証する必要がある 実装速度に対して、レビュー待ちのPRが増える などがあるかと思います。 この辺はドメイン知識をフォルダに蓄積して、育てていければと考えてます。


🎉 おわりに

Claude Code CLIのカスタムコマンドは、単純だけど強力な機能でした。 特にMCPサーバーと組み合わせることで、開発フローの自動化がすごく楽になります。

定型作業や、複雑な手順書が必要な作業は、カスタムコマンドを作成してプロジェクト内でどんどん共有できればと思います。 一度作ってしまえば、チーム全体の生産性向上に直結するので👍

今後はカスタムコマンドをさらにMCP周りと一緒に便利化させていきたいですね。

サブエージェントについても、FE専門・BE専門のドメイン知識を持たせたエージェントをチーム内で共有していこうと取り組み中です💪


💼 お問い合わせ

私たちと一緒に、幼保業界や写真業界のDXを進めていく仲間を募集中です!

AI活用やカスタムコマンドについてもっと詳しく知りたい方がいれば、ぜひ気軽に連絡してくださいね!

📋 採用情報