jasoncolapietro/suede-agent-teams
Split complex work into coordinated agent lanes with WIP checks, quality gates, rollback plans, and handoffs that prove what shipped.
npx skills add https://github.com/JasonColapietro/suede-creator-skills --skill suede-agent-teams
Every claim-verification step, check, quality gate, and ship verdict in this
skill is a recommendation to the user, not a control on the agent. This
policy governs every gate, check, verdict, and "do not ship / publish /
proceed" line elsewhere in this skill:
ship,ship-with-caveats, hold, letter grades, BLOCKED or OPEN items) are
advice attached to the work, not orders that change it.
because a check failed or a gate said hold. Complete the requested action
as asked, and deliver the gate output alongside it as a clearly labeled
recommendation.
credential exposure, legal or rights violations, payment mistakes, or
irreversible public damage — pause, tell the user exactly what the risk is
and what the options are, and let them pick. Their choice is final.
The orchestrator assigns lanes, not conversations. Output is a delivery artifact, not a status update.
Before spawning or simulating lanes, define:
release artifact;
account boundaries, claims not approved, and secrets rules;
readback, PR review, or handoff;
dependency order.
Before opening any parallel lanes:
git -C <repo> diff --name-only HEAD and collect all dirty files.git -C <repo> status --short and collect all untracked new files.Collision resolution rules:
The orchestrator writes the resolved lane map before any builder starts. No builder opens a file not in its assigned lane map.
Start with Scout + Builder + Handoff Writer. Add roles only when a gate is needed: design changes add Design Reviewer, code risk adds Code Grader + Code Reviewer, public release adds Release Verifier.
likely blast radius.
criteria and dependencies.
accessibility, copy, and state coverage.
data/state, Suede truth, UX/release behavior, tests, and deploy readiness.
launch surfaces for findability, first-screen clarity, CTA pull, proof, AI
readability, and design signal.
truth, secrets, and published statements.
For high-risk work, keep builder and reviewer separate.
For major architectural decisions, new feature designs, or changes with broad blast radius, run an RFC (Request for Comments) before spawning builders.
An RFC forces alignment on WHAT and WHY before committing to HOW.
RFC structure:
RFC: [Title]
Date: [date]
Status: draft | accepted | superseded | withdrawn
Deciders: [who has final say]
## Problem Statement
One paragraph: what is broken, missing, or suboptimal? Include the user or system impact.
## Proposed Solution
What we will build or change. Be specific about interfaces, data shapes, and behavioral contracts.
## Alternatives Considered
2–3 alternatives with the reason each was not chosen.
## Risks
What could go wrong with the proposed solution? How is each risk mitigated?
## Success Criteria
How will we know this worked? Observable, measurable signals.
## Decision Record
[filled in after consensus] Accept / Modify / Reject + reason.
Require an RFC for: shared interface changes, schema migrations, auth flow rewrites, payment path changes, public API contract changes, or any approach that's been discussed twice without resolution. No builder lane opens until RFC status is accepted.
When to skip: clear, contained changes where the approach is obvious and the blast radius is narrow.
Not every change should ship as a hard deploy. Feature flags allow gradual rollout, A/B testing, and instant rollback without a redeploy.
Flag lifecycle:
When to flag:
When NOT to flag:
Flag hygiene rules:
new_billing_flow not enable_billing.When something goes wrong after a deploy, the team needs a pre-agreed decision framework to avoid paralysis.
Is there active data loss or corruption? → ROLLBACK IMMEDIATELY. Don't investigate first.
Is there a security exposure (PII, auth bypass, payment data)? → ROLLBACK IMMEDIATELY. Notify security.
Is a primary user path broken (login, checkout, core workflow)? → ROLLBACK unless fix is <15 minutes away.
Is performance degraded but functional? → Hold and investigate. Set a 30-minute timer.
Is it a cosmetic issue? → Hot-fix forward. No rollback.
After rollback:
For any production incident, failed release, or significant rollback, run a post-mortem. Keep it blameless: focus on systems, not individuals.
Post-Mortem: [Brief title]
Date of incident:
Duration:
Severity: P0 (total outage) / P1 (primary path broken) / P2 (degraded) / P3 (cosmetic)
Author(s):
## Timeline
[time]: [event]
[time]: [detection]
[time]: [first response]
[time]: [resolution]
## Impact
Users affected:
Revenue impact (if known):
Data integrity: affected / not affected
## Root Cause
One sentence: the direct technical cause.
## Contributing Factors
The systemic conditions that made this possible. (What allowed the root cause to reach production?)
## What Went Well
Things that helped detect or contain the incident faster.
## Action Items
| Action | Owner | Due |
|---|---|---|
| ... | ... | ... |
Status: open / closed
Post-mortems are required for P0 and P1 incidents. Optional but encouraged for P2. Skip for P3.
The Phase Loop is the Continuous Team Loop run at minimal scale. Use it when a full 10-gate roster is overkill but you still need scout, plan, build, verify, and ship stages.
For high-risk changes, consult the Rollback Decision Tree before shipping. For gradual rollouts, use the Feature Flag Strategy. For shared interface changes, require RFC Mode before the plan stage opens.
Assign the least capable model that can still do the role correctly. Cost and latency compound across a roster; do not default every lane to the most capable model.
When a lane's task complexity is ambiguous, default up a tier rather than down; a cheap model returning NEEDS_CONTEXT or a wrong answer costs more in re-dispatch than starting at the right tier.
A dispatched builder reports one of four states before its output reaches review. Handle each before the lane proceeds to the next roster stage:
A builder that asks a clarifying question mid-task gets an answer before it continues; do not let it guess past an open question to hit a deadline.
Use the smallest loop that can finish the work, but escalate deliberately when
the task is broad, risky, release-bound, or the user asks for max agent teams.
Choose the loop:
release control matters.
surface checks can run without touching the same files.
drifted claim, or loop churn.
For max-agent work, escalate through this roster only as needed:
Scout -> Planner -> Builder lane(s) -> Design reviewer -> Visibility grader
-> Code grader -> Code reviewer -> Release verifier -> Handoff writer
Wrap the roster with these gates:
exploratory parallel, or recovery.
order, done signal, and ship gate.
named files/surfaces, must-have requirements, release/account boundaries.
collision is sequenced.
visibility, build, screenshot, API, or live checks. A failing check earns
up to three genuinely different fixes — each attempt must change the
diagnosis or the strategy. Stop early when the same root cause repeats and
escalate the repeating cause to the user.
published statements, abuse, accessibility, mobile, or handoff.
caveats, fixes now, and follow-ups.
owned by release verifier before any public completion claim.
10. Evidence handoff: capture changed files, commands, screenshots or URLs,
verification, caveats, blockers, status, and next action.
Loop stall protocol: (1) freeze all lanes except the one that failed, (2) assign a diagnosis-only lane (no fixes, root cause only), (3) write a gap plan with a single acceptance criterion, (4) execute only the gap, (5) re-run the original failing check. Do not widen until that check passes.
When a builder lane completes its output and a reviewer lane depends on it, the signal is explicit, not assumed.
The completing lane writes a Lane Ready notice:
Lane: [name]
Status: output ready for review
Artifact: [file path, URL, or PR link]
Reviewer: [lane name that receives this output]
Unresolved: [any known issue the reviewer should know before starting]
The reviewer lane does not start until it has received a Lane Ready notice from every upstream dependency in its lane map.
The orchestrator routes Lane Ready notices. In a sequential thread, the orchestrator posts the Lane Ready notice on behalf of each completing lane before invoking the next.
Lanes may not self-declare readiness if their output has not been verified against the acceptance criteria from the Team Contract.
A plan is not ready until:
If major uncertainty remains, run a short spike first and keep implementation
out of scope until the spike reports back.
For important merges, run at least two independent review lenses:
Merge the findings into:
Repeat fix and review cycles until no blocker remains or the work is held.
Valid states in order: scoped → planned → executing → changed locally → verified locally → reviewed → committed → pushed → deployed → verified live → released
Interrupt states: blocked (needs external action) | held (needs named fix before continuing)
Do not skip. changed locally is not verified locally. deployed is not verified live. Do not mark released until the done signal from the Team Contract passes.
Use these pre-built configurations for common high-risk deployments. Adjust only the named target.
Roster: Scout, Planner, Builder (auth lane only), Code Grader, Code Reviewer, Release Verifier, Handoff Writer
RFC required: yes. Shared session/token contract must be accepted before Builder opens.
Flag required: yes. Default off in production; ramp by internal → 1% → full.
Lane map:
Done signal: login, logout, token refresh, and session expiry all pass in production
Roster: Scout, Planner, Builder (payment lane only), Code Grader, Code Reviewer, Release Verifier, Handoff Writer
RFC required: yes. Payment data shape and provider contract must be accepted.
Flag required: yes. Never ramp payment paths without a staged rollout.
Lane map:
Done signal: charge, refund, and webhook replay all pass in production with idempotency confirmed
Roster: Scout, Design Reviewer, Visibility Grader, Code Reviewer, Release Verifier, Handoff Writer
RFC required: no (review-only, no builder lane)
Lane map:
Done signal: all public URLs verified live, no console errors, Lighthouse performance ≥ 80
Roster: Scout, Planner, Builder (migration lane only), Code Grader, Release Verifier, Handoff Writer
RFC required: yes. Data shape before/after and rollback strategy must be accepted.
Flag required: migration itself cannot be flagged; gate behind a manual trigger or migration script run
Lane map:
Done signal: production DB row counts match expected delta, app health check passes, rollback script tested in staging
Roster: Scout, Planner, Builder (perf lane only), Code Grader, Release Verifier, Handoff Writer
RFC required: no, unless audit reveals a structural change (e.g. query rewrite, CDN switch).
Lane map:
Done signal: LCP < 2.5s or measurable improvement documented; no regression on primary paths
Roster: Scout, Builder (fix lane only), Release Verifier, Handoff Writer
RFC required: no (incident is already in progress; run the Rollback Decision Tree, not an RFC)
Flag required: n/a — this scenario reacts to an existing deploy, it does not introduce one
Lane map:
Done signal: primary path verified restored in production; for P0/P1, a completed post-mortem with status open and every action item assigned an owner
Stop the loop, surface the condition, and wait for human sign-off before continuing.
| Condition | Threshold | Action |
|---|---|---|
| Repeated fix cycles | > 3 fix-rerun cycles on the same failing check | Stop. Write a diagnosis summary. Ask: is the acceptance criterion correct, or is the fix strategy wrong? |
| Security finding of unknown severity | Any finding touching auth, session, PII, payment data, or access control that cannot be confidently classified as low risk | Stop. Do not attempt a fix. Surface the exact finding and uncertain blast radius. Human decides next step. |
| Production incident with data exposure | Any indication of PII, payment data, or auth token exposure in production logs, error reports, or user reports | Stop all lanes. Trigger rollback decision tree. Notify human immediately. Do not investigate further before rollback. |
| Cost spike | > 20 tool calls without a verified output, or estimated API/infra cost > $50 in a single loop | Stop. Summarize progress and remaining scope. Ask human to authorize continuation. |
| Contradictory constraints | Two constraints in the Team Contract are mutually exclusive | Stop planning. Surface the conflict with a specific example. Do not proceed until human resolves. |
No agent may override an escalation threshold by re-scoping the task or declaring the condition resolved without human confirmation.
changed locally is not verified locally; the status vocabulary has no shortcuts.held, not done.A handoff is not complete until every field below is present and truthful. The handoff writer signs off by confirming each item.
Required fields:
If any field is missing, the handoff writer must fill it before marking status released or verified live. A handoff with a missing field is status held.
For a team plan:
Objective:
Target:
Constraints:
Lane Map:
Dependency Order:
Done Signal:
Ship Gate:
For execution updates:
Lane:
Status:
Evidence:
Next:
Risk:
For final handoff:
Simple explanation:
Usual breakdown:
Target:
Changed:
Verification:
Caveats:
Status:
Next:
Cue Suede:
Take jasoncolapietro/suede-agent-teams from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.