Execute Phase 1 research pipeline using Claude Code native team infrastructure.
The skill (main session) handles team lifecycle: TeamCreate, coordinator + worker
spawning, task monitoring, and cleanup. The coordinator teammate manages task graphs
and directs workers via SendMessage.
<Use_When>
Starting a new RTL design from specification
User says "research team", "Phase 1 team", "parallel research"
Have complex spec requiring multi-expert parallel analysis
Need maximum parallelism for tree-of-thought candidate exploration
</Use_When>
<Do_Not_Use_When>
Simple single-domain design (use p1-spec-research for simpler flow)
Already have Phase 1 artifacts complete (proceed to Phase 2)
Only need domain consultation (use domain-consult)
</Do_Not_Use_When>
Prerequisites
No phase prerequisites (this is the first phase).
Specification documents should be available in specs/ directory.
Execution
# Step 1: Team creation (main session = leader)
TeamCreate(team_name="p1-research", description="Phase 1 research: tree-of-thought parallel candidate exploration")
# Step 2: Write team-config.json for hook consumption
Write(".rat/state/team-config.json", json.dumps({
"team_mode": true,
"team_name": "p1-research",
"leader_session_id": "<current_session_id>",
"coordinator_name": "coordinator",
"worker_count": 4,
"phase": "p1",
"created_at": "<ISO_TIMESTAMP>"
}))
# Step 3: Prepare directories
Bash("mkdir -p docs/phase-1-research reviews/phase-1-research .rat/scratch/phase-1")
# Step 4: Create initial task graph
t1 = TaskCreate(subject="T1: Solution Tree Construction",
description="Build tree-of-thought solution candidates from spec analysis")
t2 = TaskCreate(subject="T2: Solution Tree Validation",
description="Validate and rank solution candidates")
TaskUpdate(taskId=t2, addBlockedBy=[t1])
t4b = TaskCreate(subject="T4b: Interconnect Analysis",
description="Analyze interconnect topology for top candidates")
TaskUpdate(taskId=t4b, addBlockedBy=[t2])
t4c = TaskCreate(subject="T4c: Power Analysis",
description="Analyze power characteristics for top candidates")
TaskUpdate(taskId=t4c, addBlockedBy=[t2])
# Step 5: Spawn coordinator as teammate (orchestrator)
Agent(team_name="p1-research", subagent_type="rtl-agent-team:p1-research-team-orchestrator",
name="coordinator", description="P1 research coordination",
prompt="You are the Phase 1 research coordinator in team 'p1-research'. "
)
Agent(team_name=, subagent_type=,
name=, description=,
prompt=
)
Agent(team_name=, subagent_type=,
name=, description=,
prompt=
)
Agent(team_name=, subagent_type=,
name=, description=,
prompt=
)
Agent(team_name=, subagent_type=,
name=, description=,
prompt=
)
:
coordinator_signaled_phase_complete:
tasks = TaskList()
(t.status == t tasks):
TeamDelete()
Bash()
Bash()