Interactive

Agent Teams

Agent Teamsのチームメイトとして.claude/agents/で定義したカスタムエージェントを指定できます。どうやらsubagent_typeパラメータにカスタムエージェント名を渡すことで動作します。

カスタムエージェントをチームメイトにする

.claude/agents/my-agent.mdで定義したエージェントをsubagent_typeに指定します。

// チームメイトとして起動
Task({
  subagent_type: "my-agent",
  team_name: "my-team",
  name: "teammate-1",
  prompt: "タスクの内容"
})

// チームリードとして起動
TeamCreate({
  team_name: "my-team",
  agent_type: "my-agent"
})

カスタムプロンプトの適用

カスタムエージェントのMarkdown本文は# Custom Agent Instructionsセクションとしてシステムプロンプトにインライン展開されます。リーダーからのメッセージ経由ではなく、システムプロンプトに直接埋め込まれます。

2026-02-22に検証した結果、frontmatterのpermissionModeskillsmemoryなどの設定もチームメイトに反映されることを確認しました。ただしdisallowedToolsはチームメイト起動時に効いていない可能性があります。

チームメンバーとしての起動を検出する

カスタムエージェントは単独起動とチームメンバー起動の両方で使われる可能性があります。チームメンバーとして起動された場合にのみ、システムプロンプトに# Agent Teammate CommunicationセクションとSendMessageツールが追加されます。この差分を利用してプロンプト内で条件分岐を記述できます。

---
name: my-agent
description: My agent
model: opus
---

# チームメンバーとして起動された場合

SendMessage ツールが利用可能な場合、あなたはチームメンバーとして動作している。
作業完了時にリーダーへ報告する。

# 単独で起動された場合

SendMessage ツールが利用できない場合、あなたは単独で動作している。
ユーザーに直接応答する。

これは自然言語による指示であり、LLMがシステムプロンプトの内容を解釈して判断します。ツールの有無は明確に判別できるため、実用上は十分に機能します。

チーム名の制約

~/.claude/teams/<name>/~/.claude/tasks/<name>/のディレクトリが残っている場合、同名のチームは作成できずランダム名が割り当てられます。TeamDeleteを呼ばずにセッションが終了した場合もディレクトリは残り続けます。

古いディレクトリを手動で削除すれば名前の再利用が可能です。

rm -rf ~/.claude/teams/<old-team-name>
rm -rf ~/.claude/tasks/<old-team-name>