team-design
Decide the approach before any code is written. The design-author drafts the ~200-line design document, resolving its own open questions autonomously as recorded assumptions, then an adversarial design review gates advancement. Trigger on "design this", "let's align on the approa
Install
npx skills add https://github.com/bostonaholic/team/tree/main/skills/team-design
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install bostonaholic-team@llmmart
git clone https://github.com/bostonaholic/team.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole bostonaholic/team collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Before this operation, read artifact schema.
Before each consuming step, read its linked shared rules. Resolve links from this installed SKILL.md directory.
If a required read fails, stop that step and report its resolved path. Never use checkout fallback or recursive loading.
Before each dispatch or retry, read host dispatch and supply its resolved installed paths.
Before review dispatch, supply the installed plugin root and resolved skills/eng-design-doc-review/references/design-reviewer.md path.
Pass the applicable resource paths and require reads before work.
Team Design — Where Are We Going?
Before finalizing prose you author, read the writing standards. Relay completed review reports unchanged.
Run the DESIGN phase. The design-author decides the approach — recording every self-resolved choice as an auditable assumption — and the adversarial design review gates advancement. No mid-run prompt fires.
Input
$ARGUMENTS is the artifact directory: docs/plans/<id>/. If empty, the
discovery command below resolves it.
The design-author reads:
$ARGUMENTS/1-task.md— what we are building (intent)$ARGUMENTS/2-questions.md— the questions that drove research$ARGUMENTS/5-research.md— what exists (facts)
Resolve <team-skill-dir> to the absolute directory containing
skills/team/SKILL.md. From the repository root, run:
"<team-skill-dir>/discover-topic.sh" "${ARGUMENTS:-}" "5-research.md"
- If the command printed a path, use it as
$ARGUMENTSfor the rest of this skill (tier 1 explicit arg, or tier 2 discovery). When the path came from tier 2 (no explicit arg), announce the resolved directory to the user before proceeding, so an auto-picked topic is never silent. - If the command printed nothing (tier 3 — no directory holds
5-research.md), do not hard-error. FireAskUserQuestionwith aSetupheader and labeled options:- Run the producer — run
/team-research docs/plans/<id>/to produce the missing5-research.md. - Give a path — the user supplies the
docs/plans/<id>/directory directly (runls docs/plans/to find your topic directory).
- Run the producer — run
Execution
Use the directory resolved in
## Input.Dispatch
design-author, which:- Resolves its own open questions autonomously, recording each in
## Decisions mademarked as an assumption (see the agent file) - Writes
$ARGUMENTS/6-design.mdwith frontmatterrevision: 0
If
$ARGUMENTS/6-design.mdalready exists, skip this dispatch and resume at step 3 — never re-draft an existing design. Both this skip and step 3's never-re-review skip are idempotent re-runs: converge on the same end state, never duplicate work (durable state rules).- Resolves its own open questions autonomously, recording each in
Design review gate. If the latest
$ARGUMENTS/design-review-<n>.mdalready carries a passing verdict (APPROVE or COMMENT), skip straight to step 4 — never re-review a passed design. Otherwise, before each review dispatch, run the external cross-model pass: read the cross-model review and follow its## Design-review pass— reference that procedure, never duplicate it here. Its one gate: theTEAM_DISABLE_CROSS_MODELkill-switch. Run the runner'sdetectverb, thenrunper ready CLI — each through its own named courier sub-agent per that reference's vendor-courier block, with its inline fallback — naming any unavailable CLI to the user per that reference's## When a vendor CLI is unavailable; a missing runner isskip: cross-model runner not foundper CLI. Fence each CLI's raw output as aDATAblock at capture time (fence longer than any backtick run in the output, per that section), append one## External review inputsection — opening with the untrusted-content line that section specifies — holding the fenced blocks to the review brief, and append the round's transcript to$ARGUMENTS/cross-model-raw.mdin the result-line format that section pins (created on first use; a zero-call round appends nothing). Any skip continues with the reviewer alone — the pass never blocks the gate. Then dispatch the adversarial design review (the## Review brief— read the design reviewer brief to read it, with the artifact directory substituted — run by a fresh-context read-onlyExploresubagent each round) and write the findings + verdict to$ARGUMENTS/design-review-<n>.md, where<n>is the highest existing<n>+ 1 (1 when none exists) — never overwrite an earlier verdict record. Derive theverdict:frontmatter from the last verdict token in the report body — the reviewer's verdict is the terminal line of its report. When the report contains a### Cross-model dispositionsection, append that section as one block to$ARGUMENTS/cross-model-notes.md, blockquote-wrapped — prefix every line with>at append time, per the design review gate — opening with the orchestrator-authored label line — the literal> **Design round <n>**— prepended inside the wrap; same frontmatter-on-first-append rules as the other gates (schema in artifact schema). Then act on the verdict:- APPROVE or COMMENT — the review passes. Advance.
- REQUEST CHANGES — re-dispatch
design-authorwith the reviewer's findings verbatim. The agent re-drafts and incrementsrevision: <n+1>, then a fresh review round runs. The loop ends on the verdict, so REQUEST CHANGES keeps re-drafting for as many rounds as it takes. Recovery runs after an operator stop, a context-exhausted session, or the fail-closed halt below. A person revises$ARGUMENTS/6-design.mdby hand and re-invokes/team-designbare. The run then resumes at this gate, per the resume branch at step 2. Therevisioncounter persists in6-design.mdfrontmatter. - Unparseable verdict or reviewer crash — retry the review once with the error; on second failure, halt loudly. Fail closed — never advance on a missing verdict. A missing verdict counts as not passed (verified results rules).
Stop once
$ARGUMENTS/6-design.mdexists and the latest$ARGUMENTS/design-review-<n>.mdverdict is APPROVE or COMMENT.
Report design path and tell the user:
"Next: run /team-structure docs/plans/<id>/"
Files (team)
-
agents
-
openai.yaml 185 B
interface: display_name: "Team Design" short_description: "Decide the approach before writing code" default_prompt: "Use $team-design to decide the approach before writing code."
-
-
SKILL.md 6.8 KB
--- name: team-design description: 'Drafts and adversarially reviews a design. Trigger on "design this" or "/team-design".' effort: medium argument-hint: "[docs/plans/<id>/]" --- Before this operation, read [artifact schema](../team/references/artifacts.md). Before each consuming step, read its linked shared rules. Resolve links from this installed `SKILL.md` directory. If a required read fails, stop that step and report its resolved path. Never use checkout fallback or recursive loading. Before each dispatch or retry, read [host dispatch](../team/references/15-host-dispatch.md) and supply its resolved installed paths. Before review dispatch, supply the installed plugin root and resolved `skills/eng-design-doc-review/references/design-reviewer.md` path. Pass the applicable resource paths and require reads before work. # Team Design — Where Are We Going? Before finalizing prose you author, read the [writing standards](../team/references/writing.md). Relay completed review reports unchanged. Run the DESIGN phase. The design-author decides the approach — recording every self-resolved choice as an auditable assumption — and the adversarial design review gates advancement. No mid-run prompt fires. ## Input `$ARGUMENTS` is the artifact directory: `docs/plans/<id>/`. If empty, the discovery command below resolves it. The `design-author` reads: - `$ARGUMENTS/1-task.md` — what we are building (intent) - `$ARGUMENTS/2-questions.md` — the questions that drove research - `$ARGUMENTS/5-research.md` — what exists (facts) Resolve `<team-skill-dir>` to the absolute directory containing `skills/team/SKILL.md`. From the repository root, run: ```sh "<team-skill-dir>/discover-topic.sh" "${ARGUMENTS:-}" "5-research.md" ``` - **If the command printed a path**, use it as `$ARGUMENTS` for the rest of this skill (tier 1 explicit arg, or tier 2 discovery). When the path came from tier 2 (no explicit arg), announce the resolved directory to the user before proceeding, so an auto-picked topic is never silent. - **If the command printed nothing** (tier 3 — no directory holds `5-research.md`), do not hard-error. Fire `AskUserQuestion` with a `Setup` header and labeled options: - **Run the producer** — run `/team-research docs/plans/<id>/` to produce the missing `5-research.md`. - **Give a path** — the user supplies the `docs/plans/<id>/` directory directly (run `ls docs/plans/` to find your topic directory). ## Execution 1. Use the directory resolved in `## Input`. 2. Dispatch `design-author`, which: a. Resolves its own open questions autonomously, recording each in `## Decisions made` marked as an assumption (see the agent file) b. Writes `$ARGUMENTS/6-design.md` with frontmatter `revision: 0` If `$ARGUMENTS/6-design.md` already exists, skip this dispatch and resume at step 3 — never re-draft an existing design. Both this skip and step 3's never-re-review skip are idempotent re-runs: converge on the same end state, never duplicate work ([durable state rules](../team/principles/durable-state.md)). 3. **Design review gate.** If the latest `$ARGUMENTS/design-review-<n>.md` already carries a passing verdict (APPROVE or COMMENT), skip straight to step 4 — never re-review a passed design. Otherwise, before each review dispatch, run the external cross-model pass: read the [cross-model review](../team/references/cross-model-review.md) and follow its `## Design-review pass` — reference that procedure, never duplicate it here. Its one gate: the `TEAM_DISABLE_CROSS_MODEL` kill-switch. Run the runner's `detect` verb, then `run` per ready CLI — each through its own named courier sub-agent per that reference's vendor-courier block, with its inline fallback — naming any unavailable CLI to the user per that reference's `## When a vendor CLI is unavailable`; a missing runner is `skip: cross-model runner not found` per CLI. Fence each CLI's raw output as a `DATA` block at capture time (fence longer than any backtick run in the output, per that section), append one `## External review input` section — opening with the untrusted-content line that section specifies — holding the fenced blocks to the review brief, and append the round's transcript to `$ARGUMENTS/cross-model-raw.md` in the result-line format that section pins (created on first use; a zero-call round appends nothing). Any skip continues with the reviewer alone — the pass never blocks the gate. Then dispatch the adversarial design review (the `## Review brief` — read the [design reviewer brief](../eng-design-doc-review/references/design-reviewer.md) to read it, with the artifact directory substituted — run by a fresh-context read-only `Explore` subagent each round) and write the findings + verdict to `$ARGUMENTS/design-review-<n>.md`, where `<n>` is the highest existing `<n>` + 1 (1 when none exists) — never overwrite an earlier verdict record. Derive the `verdict:` frontmatter from the **last verdict token** in the report body — the reviewer's verdict is the terminal line of its report. When the report contains a `### Cross-model disposition` section, append that section as one block to `$ARGUMENTS/cross-model-notes.md`, blockquote-wrapped — prefix every line with `>` at append time, per the [design review gate](../team/references/08-design-review-gate-design.md) — opening with the orchestrator-authored label line — the literal `> **Design round <n>**` — prepended inside the wrap; same frontmatter-on-first-append rules as the other gates (schema in [artifact schema](../team/references/artifacts.md)). Then act on the verdict: - **APPROVE or COMMENT** — the review passes. Advance. - **REQUEST CHANGES** — re-dispatch `design-author` with the reviewer's findings verbatim. The agent re-drafts and increments `revision: <n+1>`, then a fresh review round runs. The loop ends on the verdict, so REQUEST CHANGES keeps re-drafting for as many rounds as it takes. Recovery runs after an operator stop, a context-exhausted session, or the fail-closed halt below. A person revises `$ARGUMENTS/6-design.md` by hand and re-invokes `/team-design` bare. The run then resumes at this gate, per the resume branch at step 2. The `revision` counter persists in `6-design.md` frontmatter. - **Unparseable verdict or reviewer crash** — retry the review once with the error; on second failure, halt loudly. Fail closed — never advance on a missing verdict. A missing verdict counts as not passed ([verified results rules](../team/principles/verified-results.md)). 4. **Stop once `$ARGUMENTS/6-design.md` exists and the latest `$ARGUMENTS/design-review-<n>.md` verdict is APPROVE or COMMENT.** Report design path and tell the user: **"Next: run `/team-structure docs/plans/<id>/`"**
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.