Spawn a four-person GPU development team with coordinator, verilog specialist, rust digital twin specialist, and verification specialist. Use when a task benefits from parallel RTL + twin + verification work.
Create an agent team for the following task:
Task: $ARGUMENTS
The team has five roles:
gpu-coordinator — Team lead. Decomposes the task, spawns the four specialists, assigns work, resolves cross-cutting issues, and runs final ./build.sh --check before declaring complete.
syskit-specialist — Specification documentation. Keeps requirement, interface, design, and verification docs under doc/ in sync with what the team implements. Updates Spec-ref hashes and maintains traceability.
verilog-specialist — SystemVerilog RTL implementation. Works on components/*/rtl/src/ modules. Reads the digital twin first, then implements RTL to match it bit-exactly. Follows .claude/skills/claude-skill-verilog/SKILL.md and .claude/skills/ecp5-sv-yosys-verilator/SKILL.md.
rust-twin-specialist — Digital twin implementation. Works on crates and . Implements the bit-accurate algorithm in Rust first. Follows . Generates expected outputs for verification.
components/*/twin/integration/gs-twin/.claude/skills/claude-skill-rust/SKILL.mdverification-specialist — Verilator testbenches and synthesis validation. Works on components/*/rtl/tests/ and integration/harness/. Compares RTL output against twin output using shared .hex stimulus. Follows .claude/skills/claude-skill-cpp/SKILL.md.
Spawning is split between the caller and the coordinator — do not conflate the two.
Caller (top-level Claude that invoked this skill):
TeamCreate to create the team.gpu-coordinator via the Agent tool, passing team_name and name: "coordinator". Hand it the task and tell it to spawn the four specialists itself.Coordinator (once spawned):
syskit, rtl, twin, verif) via the Agent tool, with team_name, a name, and the appropriate subagent_type.SendMessage.These rules exist because silent failures here are the #1 way this skill wastes a session.
Agent tool with team_name, name, and subagent_type. This is what actually starts the agent process.SendMessage does NOT spawn agents. It only writes to an inbox file. Sending a message to a name that was never spawned via Agent is a silent no-op — the message sits in an orphan inbox and nothing reads it. Do not rely on "message sent" as evidence that the recipient exists..claude/teams/<team-name>/config.json and confirm every expected name appears in the members array. Any missing name means the Agent call failed or was never made — fix that before proceeding.config.json.To guarantee specialists are actually running before work begins:
coordinator (e.g. rtl ready) before doing anything else."config.json, re-check inboxes, and take the next concrete action (spawn a missing specialist, re-send a prompt, or escalate to the caller).The team follows this order:
doc/design/, pipeline/pipeline.yaml, ARCHITECTURE.md) and decomposes the taskdoc/ to reflect what was implemented, stamps Spec-ref hashes./build.sh --check and confirms all tests pass.hex stimulus files feed both twin and RTL testbenchespipeline/pipeline.yaml must be updated before adding new pipeline units./build.sh --check (Verilator lint, cargo fmt, cargo check, cargo clippy)SendMessage to an unspawned name is a failure, not an assignment