@@ -31,8 +31,8 @@ project subagents (`ux-designer`, `frontend-developer`, `backend-developer`,
3131 product owner retargeting ` .claude/lanes.json ` , never a workaround.
3232- After each phase, update the pipeline state file (Phase 0) before starting
3333 the next phase — it is what makes the run resumable via ` /feature-resume ` .
34- - Do not skip phases, do not do an agent 's work yourself, do not commit unless
35- the product owner asks.
34+ - Do not skip phases beyond what the run 's recorded Tier permits (Phase 0.5),
35+ do not do an agent's work yourself, do not commit unless the product owner asks.
3636
3737## Phase 0 — Pipeline state file
3838
@@ -45,7 +45,9 @@ otherwise NNN = highest in `docs/specs/` + 1. Create
4545# Pipeline state — NNN-<slug>
4646
4747Status: in-progress <!-- in-progress | complete | stopped -->
48- Current phase: 1 — Design
48+ Current phase: 0.5 — Triage
49+ Tier: (pending — set in Phase 0.5) <!-- 1 Trivial | 2 Standard | 3 Complex — <rationale> -->
50+ Lightened/skipped phases: (set after triage)
4951QA fix-loop iteration: 0/2
5052Design fix-loop iteration: 0/2
5153
@@ -80,12 +82,54 @@ product owner to add a `.claude/lanes.json` (copy the plugin's
8082` templates/lanes.json ` and adapt the paths) before continuing. Never write
8183` .claude/lanes.json ` yourself — it is the product owner's protected file.
8284
85+ ## Phase 0.5 — Triage & tiering
86+
87+ Score the ask's complexity, record it, and announce it — the tier sets how much
88+ each later phase does (see the "Tier gate" line under each phase). ** Start at
89+ Tier 3 and earn down** — bias toward more process, not less.
90+
91+ Tier-3 escalators — if ANY holds, the run is ** Tier 3 (Complex)** :
92+ - net-new UI structure, layout, or user flow;
93+ - a new or changed design token / visual language;
94+ - a multi-surface change (net-new UI * and* a new/changed backend contract);
95+ - a security, data-handling, auth, or persistence tradeoff.
96+
97+ Otherwise:
98+ - ** Tier 1 — Trivial** : confined to copy/text/labels, a single existing-token
99+ value swap, or a config/static-content tweak. No new structure, no new
100+ endpoint, no logic/state change.
101+ - ** Tier 2 — Standard** : a self-contained feature reusing existing layout
102+ patterns and tokens; may add a small endpoint or field; no net-new design
103+ language.
104+
105+ Rules:
106+ - ** Tie-break: when torn between two tiers, pick the higher one.**
107+ - ** Ambiguity is never scored away.** If you cannot confidently place the ask,
108+ treat that as a Tier-3 signal or raise it under OPEN QUESTIONS (the hard-stop
109+ rule still applies) — never a silent downgrade.
110+ - ** Product-owner override wins.** If the ask carries ` --tier=N ` , or the owner
111+ says "treat this as trivial/standard/full", use that tier and log the override
112+ in the Open questions log.
113+
114+ Set ` Tier: N — <one-line rationale> ` and ` Lightened/skipped phases: <list> ` in the
115+ state file, update ` Current phase ` to ` 1 — Design ` , and ** state the tier and what
116+ it lightens/skips to the product owner in your first status message** before
117+ running Phase 1.
118+
83119## Phase 1 — Design
84120
85121Invoke ` ux-designer ` (Mode 1) with the ask and instruct it to write
86122` docs/specs/NNN-<slug>.md ` . Wait, then read the spec. Proceed only when
87123STATUS is ` ready-for-dev ` .
88124
125+ ** Tier gate.** Tier 3: ` ux-designer ` Mode 1 (full spec). Tier 2: Mode 1 * light* —
126+ reuse existing layout and tokens; include a wireframe only if the layout changes.
127+ Tier 1: ` ux-designer ` ** Mode 0** — a quick brief (numbered, testable acceptance
128+ criteria + a one-line API contract if backend is involved; no wireframe, no new
129+ tokens). All three still write ` docs/specs/NNN-<slug>.md ` and must return STATUS
130+ ` ready-for-dev ` ; if a Tier-0/1 change turns out to need a new token or layout,
131+ that is an escalator — the designer raises it and the run moves up a tier.
132+
89133## Phase 2 — Implementation (parallel)
90134
91135In a single message, invoke both:
@@ -96,12 +140,25 @@ This is safe because the spec pre-defines the API contract and the two agents
96140own disjoint files. Exception: if the spec leaves the API contract undefined,
97141run backend first and pass its contract block to the frontend afterwards.
98142
143+ ** Tier gate.** Invoke only the dev agent(s) the change actually needs (still in a
144+ single parallel message when both apply). A Tier 1 copy/style change is usually
145+ frontend-only; a Tier 1 API tweak is usually backend-only.
146+
99147## Phase 3 — QA
100148
101149Invoke ` qa-engineer ` (Mode 1) with the spec path and the changed-files lists
102- from both dev handoffs. Remind it to capture rendered evidence with
103- ` tools/browser.js ` into ` docs/qa/evidence/NNN-<slug>/ ` for browser-behavior
104- criteria — the design verification in Phase 5 consumes those screenshots.
150+ from both dev handoffs. The qa-engineer first runs the declared gates from
151+ ` .claude/qa.json ` (or the zero-dep defaults) and reports their results, then
152+ authors tests for whatever the gates don't cover. Remind it to capture rendered
153+ evidence with ` tools/browser.js ` into ` docs/qa/evidence/NNN-<slug>/ ` for
154+ browser-behavior criteria — the design verification in Phase 5 consumes those
155+ screenshots.
156+
157+ ** Tier gate.** Every tier runs the declared gates — QA is never zeroed. Tier 1:
158+ gates + a targeted check of the changed behavior, and ** no new test-plan doc** .
159+ Tier 2: gates + authored tests for the gaps + a test plan. Tier 3: the above +
160+ full evidence capture. Pass the run's tier to the qa-engineer so it picks the
161+ right depth.
105162
106163## Phase 4 — QA fix loop (max 2 iterations)
107164
@@ -125,6 +182,12 @@ evidence directory `docs/qa/evidence/NNN-<slug>/` (if QA produced one). It
125182writes ` docs/design-reviews/NNN-<slug>.md ` and returns APPROVED or
126183CHANGES REQUIRED.
127184
185+ ** Tier gate.** Tier 3: ` ux-designer ` Mode 2 (full). Tier 2: Mode 2 * delta* —
186+ verify only the changed surface. Tier 1: ** skip design verification entirely
187+ unless the change touched layout or tokens** ; if it did, run Mode 2 delta. When
188+ skipped, record it in the state file's ` Lightened/skipped phases ` and go straight
189+ to Phase 7.
190+
128191## Phase 6 — Design fix loop (max 2 iterations)
129192
130193If CHANGES REQUIRED — batch findings by owning area exactly as in Phase 4
@@ -133,6 +196,9 @@ If CHANGES REQUIRED — batch findings by owning area exactly as in Phase 4
133196re-review. If still not APPROVED after 2 iterations, stop and report the open
134197findings to the product owner.
135198
199+ ** Tier gate.** This loop only runs when Phase 5 ran and returned CHANGES
200+ REQUIRED. If Phase 5 was skipped (Tier 1, no layout/token change), skip Phase 6.
201+
136202## Phase 7 — Documentation
137203
138204Once the design is APPROVED, the feature is at its final shipped state — the
@@ -142,6 +208,10 @@ both dev handoffs, and the design-review verdict. It creates or idempotently
142208updates the root ` README.md ` and the project docs under ` docs/project/ `
143209(overview + a per-feature note) to match what actually shipped.
144210
211+ ** Tier gate.** Tier 3/2: ` technical-writer ` Mode 1 + Mode 2 (README + overview +
212+ a per-feature note). Tier 1: ** overview/README touch only** — update just the
213+ sections the change affects; skip the per-feature note.
214+
145215The writer's lane covers ` README.md ` and ` docs/project/ ` only — do not author
146216these docs yourself. Treat its handoff footer like any other agent's: if its
147217OPEN QUESTIONS is anything other than "none" (e.g. a missing ` .env.example ` , a
@@ -151,8 +221,10 @@ answers.
151221
152222## Phase 8 — Report to the product owner
153223
154- Present a summary table: phase · agent · artifacts written · status. State
155- the final QA verdict, design verdict, and the docs updated in Phase 7, list any
156- open items, and ask the product owner for acceptance. On acceptance, set the
224+ Present a summary table: phase · agent · artifacts written · status. Lead with
225+ the run's ** Tier and the phases it lightened or skipped** (so the owner sees what
226+ was traded for speed), then state the QA gate results and final QA verdict, the
227+ design verdict (or that verification was skipped and why), and the docs updated in
228+ Phase 7. List any open items and ask the product owner for acceptance. On acceptance, set the
157229state file's ` Status: complete ` (and the backlog row to ` done ` , if one exists).
158230Do not commit unless they ask.
0 commit comments