他のHubSpot Hubやツールとの連携・統合も視野に入れることで、さらに大きな効果が期待できます。
他のHubSpot Hubやツールとの連携・統合も視野に入れることで、さらに大きな効果が期待できます。
ブログ目次
HubSpot導入、AI活用、CRM整備、業務効率化までをまとめて支援しています。記事で気になったテーマを、そのまま相談ベースで整理できます。
Claude Codeのカスタムサブエージェントは、.claude/agents/ディレクトリにMarkdownファイルを配置するだけで、特定の業務に特化した専用AIワーカーを定義できる機能です。——「コードレビュー専門」「デバッグ専門」「データ分析専門」など、役割ごとにエージェントを分離することで、指示の再現性と品質の安定性が向上します。各サブエージェントはカスタムシステムプロンプト、特定のツールアクセス、独立した権限を備えた独自のコンテキストウィンドウで実行されます。
Claude Codeでカスタムエージェントを構築したいエンジニアに向けた記事です。
.claude/agents/ディレクトリの基本構造と、カスタムサブエージェントの作成手順 — サブエージェントは、ClaudeCodeに「専門的な役割」を与えるための仕組みです。サブエージェントは、Claude Codeに「専門的な役割」を与えるための仕組みです。通常のClaude Codeは汎用的なAIアシスタントとして動作しますが、サブエージェントを定義すると、特定のタスクに最適化された振る舞い・知識・制約を持つ専門家として動作します。
サブエージェントが役立つ主なシーンは以下の通りです。
~/.claude/agents/)をプロジェクト横断で再利用Claudeは各サブエージェントの
descriptionフィールドを使用して、タスクを委譲するかどうかを自動判断します。明確なdescriptionを書くことが、適切な委譲の鍵になります。
Claude Codeには、以下の組み込みサブエージェントが含まれています。
| サブエージェント | モデル | ツール | 用途 |
|---|---|---|---|
| Explore | Haiku(高速) | 読み取り専用 | ファイル検出、コード検索、コードベース探索 |
| Plan | 継承 | 読み取り専用 | プランモード中のコードベース研究 |
| General-purpose | 継承 | すべて | 複雑な研究、マルチステップ操作、コード変更 |
これらに加えて、以下で説明するカスタムサブエージェントを独自に作成できます。
カスタムサブエージェントは .claude/agents/(プロジェクトレベル)または ~/.claude/agents/(ユーザーレベル)にMarkdownファイルとして配置します。
.claude/
├── CLAUDE.md
├── settings.json
└── agents/
├── code-reviewer.md ← コードレビュー専門
├── debugger.md ← デバッグ専門
└── data-scientist.md ← データ分析専門
/agentsコマンドを使うと、インタラクティブにサブエージェントを作成・管理できます。
/agents
「Create new agent」を選択し、Project-level(.claude/agents/)またはUser-level(~/.claude/agents/)を選択します。「Generate with Claude」を選ぶと、説明文からシステムプロンプトと設定を自動生成してくれます。
サブエージェントファイルは、YAMLフロントマターで設定を行い、その後のMarkdown本体がシステムプロンプトになります。
---
name: code-reviewer
description: Expert code review specialist. Use proactively after code changes.
tools: Read, Glob, Grep, Bash
model: sonnet
---
You are a senior code reviewer. When invoked:
1. Run git diff to see recent changes
2. Focus on modified files
3. Begin review immediately
Review checklist:
- Code is clear and readable
- No exposed secrets or API keys
- Proper error handling
- Good test coverage
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name |
string | はい | 小文字とハイフンの一意な識別子 |
description |
string | はい | Claudeがこのサブエージェントに委譲する条件の説明 |
tools |
string | いいえ | 使用可能なツール(カンマ区切り)。省略時は全ツール継承 |
disallowedTools |
string | いいえ | 拒否するツール。継承リストから除外 |
model |
string | いいえ | sonnet/opus/haiku/完全なモデルID/inherit。デフォルトはinherit |
permissionMode |
string | いいえ | default/acceptEdits/dontAsk/bypassPermissions/plan |
maxTurns |
number | いいえ | 最大エージェントターン数 |
skills |
list | いいえ | スタートアップ時にコンテキストに読み込むスキル |
mcpServers |
list | いいえ | このサブエージェントで利用可能なMCPサーバー |
hooks |
object | いいえ | サブエージェントにスコープされたライフサイクルフック |
memory |
string | いいえ | 永続メモリスコープ: user/project/local |
background |
boolean | いいえ | trueでバックグラウンドタスクとして実行 |
isolation |
string | いいえ | worktreeで一時的なgit worktreeで実行(リポジトリの分離コピー) |
isolation: worktreeを設定すると、サブエージェントは一時的なgit worktreeで実行され、リポジトリの分離されたコピーが提供されます。
---
name: experimental-refactor
description: Experimental refactoring that needs isolation from main working tree
isolation: worktree
---
worktree分離が有効な場合、サブエージェントがファイルを変更しても、メインのワーキングツリーには影響しません。サブエージェントが変更を加えなかった場合、worktreeは自動的にクリーンアップされます。
設計判断の基本方針: 「このサブエージェントの変更がメインブランチに影響を与えるリスクがあるか」を基準に判断します。コードレビューのような読み取り専用タスクにはworktreeは不要です。実験的なリファクタリングや並列ブランチでの作業にはisolation: worktreeが有効です。
memoryフィールドは、会話をまたいで存続する永続ディレクトリをサブエージェントに提供します。
| スコープ | 保存先 | 適したユースケース |
|---|---|---|
user |
~/.claude/agent-memory/{エージェント名}/ |
すべてのプロジェクト横断で学習を記憶させたい場合 |
project |
.claude/agent-memory/{エージェント名}/ |
プロジェクト固有の知識で、バージョン管理で共有可能な場合 |
local |
.claude/agent-memory-local/{エージェント名}/ |
プロジェクト固有だが、gitにコミットすべきでない場合 |
memoryが有効な場合、サブエージェントのシステムプロンプトにメモリディレクトリの読み書き指示が自動的に追加されます。メモリディレクトリのMEMORY.mdの最初の200行もコンテキストに注入されます。
---
name: code-reviewer
description: Reviews code for quality and best practices
memory: user
---
You are a code reviewer. As you review code, update your agent memory with
patterns, conventions, and recurring issues you discover.
推奨のデフォルトスコープはuserです。サブエージェントの知識が特定のコードベースにのみ関連する場合は、projectまたはlocalを使用します。
BtoBマーケティングでブログ記事を量産する場合、品質の一貫性を保つことが課題になります。レビュー専門サブエージェントを定義すれば、全記事に同じ基準でレビューを適用できます。
---
name: seo-reviewer
description: SEO記事の品質を評価する専門エージェント。記事のレビュー依頼時に使用。
tools: Read, Glob, Grep
model: sonnet
memory: project
---
# SEO記事レビュー専門エージェント
**あなたはSEO記事の品質レビューを行う専門家です。**
あなたはSEO記事の品質レビューを行う専門家です。
### レビュー基準
#### コンテンツ品質
- 3,000文字以上であること
- H2/H3の見出し構造が適切であること
- です/ます調で統一されていること
- 実名事例のみ使用(匿名A社/B社は禁止)
#### SEO最適化
- メタディスクリプション120文字以内
- 主要キーワードがH1とH2に含まれていること
- 内部リンクが3本以上含まれていること
- FAQセクションが3問以上あること
Before: レビューのたびに評価基準を口頭で伝え直し、レビュアーによって評価のブレが発生。
After: Claudeがタスク内容からseo-reviewerサブエージェントに自動委譲し、一貫したレビューが実行される。
HubSpot CRMの設定作業を自動化する場合、APIの仕様やレート制限、プロパティの命名規則など、守るべきルールが多数あります。
---
name: hubspot-operator
description: HubSpot APIを使ったCRM設定・データ操作を行う専門エージェント
tools: Bash, Read, Write, Glob
model: inherit
memory: user
---
# HubSpot API操作専門エージェント
あなたはHubSpot CRMの設定を自動化する専門家です。
#### API操作ルール
- レートリミット: 10秒間に100リクエスト以内
- PATCH後は必ずGETで反映を確認
- 日本語テキストの文字化けをGETレスポンスで検証
#### プロパティ命名規則
- グループ名: snake_case
- プロパティ名: snake_case
- 表示名: 日本語(正式名称)
Before: HubSpot APIの仕様やレート制限を毎回プロンプトに記載。漏れがあるとAPIエラーや意図しない設定変更が発生。
After: Claudeがタスク内容を判断してhubspot-operatorに委譲し、APIルールが常に適用された状態で安全に操作できる。
エラーの根本原因を分析し、修正まで行うサブエージェントです。コードレビューと異なり、Editツールを含めてバグ修正を可能にしています。
---
name: debugger
description: Debugging specialist for errors and test failures. Use proactively when encountering any issues.
tools: Read, Edit, Bash, Grep, Glob
model: inherit
---
# デバッグ専門エージェント
あなたはエラーの根本原因分析と修正の専門家です。
#### デバッグプロセス
1. エラーメッセージとスタックトレースの解析
2. 再現手順の特定
3. 障害箇所の分離
4. 最小限の修正の実装
5. 修正の動作確認
#### 出力フォーマット
- 根本原因の説明
- 診断の根拠
- 具体的なコード修正
- テストアプローチ
- 再発防止の推奨事項
Before: エラー調査の出力がメインコンテキストを圧迫し、デバッグ完了後の作業に必要なコンテキストが失われる。
After: デバッグ作業がサブエージェントの独立したコンテキストで完結し、要約のみがメイン会話に返される。
Claudeはリクエスト内容とサブエージェントのdescriptionを照合して、自動的にタスクを委譲します。積極的な委譲を促すには、descriptionに「Use proactively」と記載します。
特定のサブエージェントを明示的に使いたい場合は、以下のように指示します。
Use the code-reviewer subagent to look at my recent changes
background: trueを設定するか、実行中にCtrl+Bでバックグラウンドに移行---
name: test-runner
description: Run test suite in background
background: true
---
セッション限定のサブエージェントを--agentsフラグでJSON形式で渡すこともできます。ディスクに保存されないため、クイックテストや自動化スクリプトに便利です。
claude --agents '{
"code-reviewer": {
"description": "Expert code reviewer. Use proactively after code changes.",
"prompt": "You are a senior code reviewer.",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
}
}'
サブエージェントのフロントマター内にhooksを定義すると、そのサブエージェントがアクティブな間だけ実行されるライフサイクルフックを設定できます。
---
name: db-reader
description: Execute read-only database queries
tools: Bash
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: "./scripts/validate-readonly-query.sh"
---
この例では、PreToolUseフックでBashコマンドを実行前に検証し、SQLの書き込み操作(INSERT/UPDATE/DELETE等)をブロックしています。
mcpServersフィールドで、サブエージェント専用のMCPサーバーを定義できます。メイン会話には影響せず、サブエージェントの開始時に接続、終了時に切断されます。
---
name: browser-tester
description: Tests features in a real browser using Playwright
mcpServers:
- playwright:
type: stdio
command: npx
args: ["-y", "@playwright/mcp@latest"]
---
skillsフィールドで、スタートアップ時にスキルコンテンツをサブエージェントのコンテキストに注入できます。
---
name: api-developer
description: Implement API endpoints following team conventions
skills:
- api-conventions
- error-handling-patterns
---
| 良い命名 | 悪い命名 | 理由 |
|---|---|---|
seo-reviewer |
agent1 |
役割が一目でわかる |
hubspot-operator |
hs |
略称すぎて判別困難 |
test-generator |
everything-agent |
スコープが広すぎる |
カスタムサブエージェントは「1つの専門領域」に特化させるのが鉄則です。「レビューもテスト作成もドキュメント更新もできるエージェント」を作ると、CLAUDE.mdと変わらない汎用的な指示になり、サブエージェントの利点が失われます。
最初は必要最小限のツールだけを付与し、必要に応じて追加するアプローチを推奨します。読み取り専用タスクにはRead, Glob, Grepのみ、コード修正が必要なタスクにはEditを追加、といった段階的な設計が安全です。
プロジェクトレベルのサブエージェント(.claude/agents/)はGitにコミットして、チーム全体で共有・改善できるようにしましょう。ただし、APIキーやトークンなどの機密情報はエージェント定義に直接書かず、環境変数で参照する設計にしてください。
他のHubSpot Hubやツールとの連携・統合も視野に入れることで、さらに大きな効果が期待できます。
まずは自社の現状を棚卸しし、最も効果が見込める領域から第一歩を踏み出してみてください。
属人化を防ぎ、チーム全体で再現可能な仕組みとして標準化することが成功の鍵です。
自社の業務フローや要件に応じて、段階的にカスタマイズしていくことをおすすめします。
.claude/agents/にMarkdownファイルを配置するだけで、業務特化型の専用AIワーカーを定義できる仕組みですCLAUDE.mdはプロジェクト全体に適用される共通ルールを定義するファイルです。カスタムサブエージェントは特定の役割に特化した振る舞いを定義するファイルです。CLAUDE.mdが「チーム全体のルールブック」なら、カスタムサブエージェントは「個々のメンバーのジョブディスクリプション」に相当します。サブエージェントはCLAUDE.mdのルールを継承しませんが、独自のシステムプロンプト内で必要なルールを記述できます。
はい、プロジェクトレベル(.claude/agents/)のサブエージェントはGit管理を推奨します。チームメンバー全員が同じエージェント定義を使えるようになります。ユーザーレベル(~/.claude/agents/)は個人の環境に保存されるため、Git管理の対象外です。いずれの場合も、APIキーやトークンなどの機密情報はエージェント定義に直接書かず、環境変数で参照する設計にしてください。
いいえ、サブエージェントは他のサブエージェントを生成できません。ネストされた委譲が必要な場合は、メイン会話からサブエージェントをチェーン(順序立てて使用)するか、スキルを使用してください。ただし、claude --agentsでメインスレッドとして起動したエージェントは、toolsフィールドにAgent(worker, researcher)のように記述することで、特定のサブエージェントの生成を許可できます。
memoryのスコープによって保存先が異なります。userスコープは~/.claude/agent-memory/{エージェント名}/に、projectスコープは.claude/agent-memory/{エージェント名}/に、localスコープは.claude/agent-memory-local/{エージェント名}/に保存されます。projectスコープはGitにコミットしてチームで共有できますが、顧客データや機密情報が含まれる場合は.gitignoreに追加してください。
参考リンク
株式会社StartLinkは、事業推進に関わる「販売促進」「DXによる業務効率化(ERP/CRM/SFA/MAの導入)」などのご相談を受け付けております。 サービスのプランについてのご相談/お見積もり依頼や、ノウハウのお問い合わせについては、無料のお問い合わせページより、お気軽にご連絡くださいませ。
株式会社StartLink 代表取締役。累計150社以上のHubSpotプロジェクト支援実績を持ち、Claude CodeやHubSpotを軸にしたAI活用支援・経営基盤AXのコンサルティング事業を展開。
HubSpotのトップパートナー企業や大手人材グループにて、エンタープライズCRM戦略策定・AI戦略ディレクションを経験した後、StartLinkを創業。現在はCRM×AIエージェントによる経営管理支援を専門とする。