From guild
Style-neutral parallel-spawn primitive for the guild-* substrate family. Takes a list of subagent_types and a shared brief; spawns them in parallel via a single Agent tool message; returns each agent's output attributed by name. Internal substrate skill — composed by guild-validate, guild-whiteboard, and custom loops. Does not aggregate, validate roles, or iterate.
How this skill is triggered — by the user, by Claude, or both
Slash command
/guild:guild-spawn agents=<comma-separated names> brief=<text> [per_agent_context=<json-map>]agents=<comma-separated names> brief=<text> [per_agent_context=<json-map>]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
The base primitive of the `guild-*` substrate family. Spawns N
The base primitive of the guild-* substrate family. Spawns N
subagents in parallel via a single Agent tool message and returns their
outputs attributed by agent name. Style-neutral — does one capability,
no loop opinions.
This skill is infrastructure for higher-level guild primitives
(guild-whiteboard, guild-validate) and any custom loop that wants
parallel agent invocation. It does not know about evaluators, whiteboard
engineers, panels, or any role semantics. Those are the caller's concern.
agents — comma-separated subagent_type names, e.g.
evaluator-contract-fit,evaluator-a11y. Order is preserved in the
output.brief — shared task description handed to every spawned agent.
Can be a short prompt or a multi-section packet (e.g. the evaluation
packet shape used by guild-validate). Passed verbatim.per_agent_context (optional) — JSON-encoded map from agent name to
an extra context string. When present, the named agent receives the
shared brief followed by its context appended under a clearly
delimited section. Agents not named in the map receive only the
shared brief. Example:
{"evaluator-a11y":"Focus on form labels.","evaluator-tokens":"This artifact only touches CSS modules."}agents is empty, refuse with guild-spawn-error: empty agents list.brief is missing or empty, refuse with guild-spawn-error: missing brief..claude/agents/. Claude Code
surfaces invalid subagent_type errors at spawn time; the caller
handles them.agents:
brief.per_agent_context was provided and contains a key matching
the agent name, append its value to the prompt under a
clearly-delimited section, e.g.:
<brief>
## Context for <agent-name>
<per-agent context value>
per_agent_context receive only the brief.Agent tool call per entry in agents. Each call uses
subagent_type: <agent> and the composed prompt from step 2.
The parallel invocation is the whole point of this primitive —
do not serialize.Explicitly the caller's responsibility, not the substrate primitive's:
guild-validate aggregates verdicts; guild-whiteboard reads a
shared file; a different loop might do something else.guild-spawn spawns any named
subagent_type.{
"agents": ["<name1>", "<name2>", ...],
"outputs": [
{ "agent": "<name1>", "output": "<text or error>" },
{ "agent": "<name2>", "output": "<text or error>" },
...
]
}
If an individual spawn fails (Claude Code surfaces a tool-use error),
the entry's output field carries the error text and the caller is
responsible for distinguishing failed entries.
Agent directly N times — they
don't need this skill.agents list → guild-spawn-error: empty agents list. Stop.brief → guild-spawn-error: missing brief. Stop.output field for that agent. Do not raise.
The caller sees the failure pattern in aggregate.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub krambuhl/agents --plugin guild