Consolidate Variations
Invoke as /consolidate-variations.
Use this skill after the user has built and evaluated multiple UI layout variations (typically generated via /ux-variations --layout-mode, built via /prototype, and evaluated via /uat --variant-evaluation (check .agents/project.json.enabled_packs for product-testing — if product-testing is not enabled, recommend npx skillpacks install product-testing from the project shell, first)). This skill compares the variations, interviews the user on what works and what doesn't in each one, cherry-picks the best elements, resolves conflicts where preferred choices are incompatible, and produces a single consolidated prototype for post-prototype production specification.
Users with manually built variations (not from the /ux-variations pipeline) can also use this skill directly, but consolidation should not happen before the user has reviewed the variants and captured evidence.
Follow DESIGN-TREE-LOOP.md for prototype-phase routing, state storage, approval boundaries, and task classification. Consolidation requires UAT evidence or explicit user readiness plus explicit consolidation decisions before writing prototypes/{topic}/consolidated/.
Design-Tree Flow
This skill runs the unified 5-stage design-tree flow (interrogation → research → design → plan → implement(scoped)) from DESIGN-TREE-LOOP.md, converging the validated tree into a cohesive MVP. The ## Process steps below group by stage:
- Stage 0 — Interrogation: the stage-zero loop in
## Interrogation Page / INTERROGATION-PAGE.md plus the variation-selection checkpoint — confirm which evaluated variations to consolidate and the UAT evidence backing each.
- Stage 1 — Research: read the built variations,
design/ux-variations-[topic].md, design/ui-requirements-[topic].md, design/flow-tree-[topic].yaml, and the /uat --variant-evaluation evidence.
- Stage 2 — Design: interview keep/reject per variation, resolve conflicts, and decide the consolidated direction.
- Stage 3 — Plan: the keep/reject/resolve matrix is the build-plan slice this run realizes.
- Stage 4 — Implement (scoped): runnable — build the consolidated MVP under
prototypes/{topic}/consolidated/, mark the tree consolidated, and pass the single binding alignment gate before any canonical write.
Per-branch iteration contract. Each session cold-starts, reads the flow-tree manifest, resolves the validated variation set ready to converge, runs the staged flow, writes the consolidated MVP on approval, and stops with the handoff in ## Next Work.
Modify-back. When consolidation surfaces a flaw in an upstream node, record a modify decision whose targets[] re-opens that model_ref or user-flow branch; convergence resumes once the re-opened node is re-approved.
Process
0. Product-Path Scope Resolution
Resolve research scope by product path before using code or app structure as a hint:
- If
$ARGUMENTS names a non-archived research/{slug}/ directory or a product-path ID whose scope_path points there, use that path. Treat {slug} as the product/app name, not the ICP, audience, or segment label.
- If
$ARGUMENTS names only research/_archive/{slug}/ or a manifest entry with status: archived or legacy status: abandoned, stop and warn that the path is archived; do not write or update scoped outputs there.
- Read
research/.progress.yaml when present. Normalize legacy active_path to active_paths on read and write back active_paths on manifest updates. Treat legacy abandoned as archived; exclude archived, abandoned, deferred, revisit_candidate, promoted, and any scope_path under research/_archive/ from active target selection.
- If active product paths exist in the manifest, use those paths. If multiple active paths exist, ask which one to target unless this skill explicitly supports cross-path output.
- If no active manifest target exists, list non-archived product directories under
research/, excluding research/_archive/ and dot directories. Auto-select only when exactly one exists; ask when multiple exist.
- If no product directories exist, use flat
research/ single-product mode.
- Detect monorepo/app/package structure only as a secondary hint. Suggest creating a missing
research/{slug}/ product path when code clearly exposes an app, but do not require code or monorepo detection before using research/{slug}/.
When product path {slug} is active, read research under research/{slug}/, read pre-prototype design artifacts under design/{slug}/, write prototype output under prototypes/{topic}/, and treat top-level research/*.md and design/*.md files as flat-mode documents or cross-path summaries.
Resolve context
- Read
.agents/project.json if it exists.
- Read
README.md, AGENTS.md, CLAUDE.md, relevant docs/, specs/, research/, route files, component directories, and design artifacts when present.
- Locate the variation plan:
design/ui-layout-variations-[topic].md or design/ux-variations-[topic].md.
- Locate the content requirements:
design/ui-requirements-[topic].md or equivalent content contract.
- Locate the flow-tree manifest:
design/flow-tree-[topic].yaml or design/{slug}/flow-tree-{topic}.yaml when present.
- Locate variant evaluation evidence:
research/uat-variant-evaluation-[topic].md, product-path-scoped equivalents, research/uat-plan.md result logs, screenshots, notes, recordings, or explicit user-provided review notes.
- Locate built implementations: scan route files, component directories, and any variation-specific directories or branches.
- If the variation spec or implementations cannot be found, ask the user to point to them.
Evidence gate
- If no evaluation evidence exists and the user has not explicitly said they already reviewed the variants and is ready to converge, stop and recommend
/uat --variant-evaluation (check .agents/project.json.enabled_packs for product-testing — if product-testing is not enabled, recommend npx skillpacks install product-testing from the project shell, first).
- Do not infer a winner from specs alone. Built variants need hands-on review or explicit user readiness before consolidation.
- If some variants are unreviewed, ask whether to exclude them, evaluate them first via
/uat --variant-evaluation (check .agents/project.json.enabled_packs for product-testing — if product-testing is not enabled, recommend npx skillpacks install product-testing from the project shell, first), or include them as spec-only references.
Present variation inventory
- List each variation with a one-line summary of its approach.
- Note build status for each: built and reviewed, built but unreviewed, partially built, spec-only.
- Note evidence status for each: result log present, user notes present, no evidence.
- Use AskUserQuestion to confirm which variations the user has reviewed and wants to evaluate. Skip unreviewed or unbuilt variations unless the user wants to include them from spec alone.
Interview per variation
- For each reviewed variation, ask using AskUserQuestion (1–3 questions per turn):
- What works well in this variation? Name specific elements, regions, or interactions.
- What doesn't work? What feels wrong, cluttered, sparse, or confusing?
- Any specific component, region, or interaction you want to keep in the final design?
- Anything to explicitly reject — never use this approach?
- Record responses as structured annotations per variation:
- Keep: elements the user wants in the final design (with source variation)
- Reject: elements the user never wants (with source variation)
- Neutral: elements the user has no strong opinion on
Cross-variation synthesis
- Present a Consolidation Matrix showing each design dimension and which variation's approach the user preferred:
| Design Element |
Variation A |
Variation B |
Variation C |
Winner |
| Container pattern |
card grid |
data table |
list+detail |
? |
| Detail view |
modal |
sidebar |
full-page |
? |
| Navigation |
top-nav |
side-nav |
tabs |
? |
| ... |
... |
... |
... |
... |
- Fill in winners based on the interview. Mark conflicts where preferred choices from different dimensions are incompatible (e.g., user wants sidebar detail from Variation B but also wants the full-width card grid from Variation A — these compete for horizontal space).
- For each conflict:
- Present the tension clearly
- Offer 2–3 resolution options with tradeoffs
- State a recommendation
- Use AskUserQuestion to resolve
- Continue until every row in the matrix has a winner and all conflicts are resolved.
Build consolidated prototype
- Merge the best elements from variation prototypes into a single runnable artifact at
prototypes/{topic}/consolidated/.
- Build only after UAT evidence and user consolidation decisions identify which elements to keep, reject, or resolve.
- The consolidated prototype must reflect:
- Layout skeleton (regions, proportions, scroll behavior)
- Primary content pattern (how items are displayed)
- Detail view pattern (how full item details are accessed)
- Navigation pattern and placement
- Action placement (create, edit, delete, bulk, contextual)
- Density and spacing approach
- Responsive behavior at mobile, tablet, and desktop breakpoints
- States rendering (empty, loading, error, partial, offline)
- Use AskUserQuestion to confirm the consolidated design before building the prototype.
Coverage checkpoint
- Verify every content requirement from
design/ui-requirements-[topic].md has a UI home in the consolidated prototype.
- Verify every user action has a placement (button, menu item, keyboard shortcut, or gesture).
- Verify all states (empty, loading, error, partial, full, offline, permission-denied) are accounted for.
- Flag any gaps and resolve via AskUserQuestion before writing.
Deliverables
- Write the consolidated prototype to
prototypes/{topic}/consolidated/.
- Write the consolidation interview log to
design/consolidate-variations-[topic]-interview.md in flat mode or design/{slug}/consolidate-variations-[topic]-interview.md in product-path mode.
- Update the scoped flow-tree manifest to mark consolidated branches as
consolidated or promoted-to-prototype when applicable.
Alignment Page
When this skill produces durable deliverables (research, specs, plans, reports, prototypes, or any document output), build a full-depth HTML alignment page following ALIGNMENT-PAGE.md in this skill's directory. Output: alignment/consolidate-variations-{topic}.html.
Next Work
Next work: after the consolidated MVP is approved, run the post-prototype research pass (/research-roadmap --post-prototype) and then formalize the MVP into a production spec with /spec-interview.
Recommended next command: /spec-interview.
Invoke With YAML
Emit the agent_routing payload with the exact resolved next-invocation command, {slug}/{topic} filled to literal values: /research-roadmap --post-prototype, then /spec-interview.
Constraints
- Do not proceed without evaluation evidence unless the user explicitly says they have reviewed the variants and is ready to converge.
- Do not pick winners without user input. Present the matrix and let the user decide.
- Do not ignore conflicts. If two preferred choices are spatially or functionally incompatible, surface the tension and resolve it explicitly.
- The consolidated prototype must preserve the approved UI branch detail from
/ui-interview and be concrete enough for /spec-interview to extract production implementation requirements.
- Do not lose content requirements. Every data field, action, and state from the requirements spec must appear in the final design.
- Do not bias toward the first or last variation reviewed. Present them neutrally and let the user's feedback and evaluation evidence drive the outcome.
- Do not use
tasks/todo.md for consolidation branch progress or human review. Human evaluation belongs in tasks/manual-todo.md; implementation fixes may enter tasks/todo.md only after human evidence exists.
- When recommending a skill from another pack, verify the pack is installed via
.agents/project.json enabled_packs. If not installed, recommend npx skillpacks install <pack-name> from the project shell, before the target skill.
Archive-First Replacement Policy
- Before replacing or substantively rewriting an existing canonical research/design/spec document (
research/**/*.md, design/**/*.md, specs/**/*.md, or docs/specifications/**/*.md), copy the current file to docs/history/archive/YYYY-MM-DD/HHMMSS/<original-relative-path>.
- Preserve the archived snapshot exactly as it existed before the change; do not edit the archived copy after creating it.
- After the archive snapshot exists, write the updated document to the original canonical path.
- Report both the archive path and the updated canonical path in the final output.
- New files do not need archive snapshots. Append-only updates do not need archive snapshots unless an existing section is regenerated or rewritten.
Interrogation Page
Before producing research, run the stage-zero interrogation loop following INTERROGATION-PAGE.md in this skill's directory. Build one HTML page per round at interrogation/consolidate-variations-r{N}-{branch}.html, starting with the assumptions manifest as round 1, and loop until the confidence gate passes. This skill cannot advance to stage one (the framework/scope alignment page) until the confidence gate passes with at least one completed interrogation round and every interview area covered or waived. Each round page must contain at least one genuinely open input (data-open-input).
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.
1---2name: consolidate-variations-313description: Compare multiple built UI variations, interview the user on what works and what doesn't, cherry-pick best elements, resolve conflicts, and produce a final consolidated prototype4---5
6# Consolidate Variations
7
8Invoke as `/consolidate-variations`.
9
10Use this skill after the user has built and evaluated multiple UI layout variations (typically generated via `/ux-variations --layout-mode`, built via `/prototype`, and evaluated via `/uat --variant-evaluation` (check `.agents/project.json.enabled_packs` for `product-testing` — if `product-testing` is not enabled, recommend `npx skillpacks install product-testing` from the project shell, first)). This skill compares the variations, interviews the user on what works and what doesn't in each one, cherry-picks the best elements, resolves conflicts where preferred choices are incompatible, and produces a single consolidated prototype for post-prototype production specification.
11
12Users with manually built variations (not from the `/ux-variations` pipeline) can also use this skill directly, but consolidation should not happen before the user has reviewed the variants and captured evidence.
13
14Follow `DESIGN-TREE-LOOP.md` for prototype-phase routing, state storage, approval boundaries, and task classification. Consolidation requires UAT evidence or explicit user readiness plus explicit consolidation decisions before writing `prototypes/{topic}/consolidated/`.
15
16## Design-Tree Flow
17
18This skill runs the unified **5-stage design-tree flow** (`interrogation → research → design → plan → implement(scoped)`) from `DESIGN-TREE-LOOP.md`, converging the validated tree into a cohesive **MVP**. The `## Process` steps below group by stage:
19
20- **Stage 0 — Interrogation**: the stage-zero loop in `## Interrogation Page` / `INTERROGATION-PAGE.md` plus the variation-selection checkpoint — confirm which evaluated variations to consolidate and the UAT evidence backing each.
21- **Stage 1 — Research**: read the built variations, `design/ux-variations-[topic].md`, `design/ui-requirements-[topic].md`, `design/flow-tree-[topic].yaml`, and the `/uat --variant-evaluation` evidence.
22- **Stage 2 — Design**: interview keep/reject per variation, resolve conflicts, and decide the consolidated direction.
23- **Stage 3 — Plan**: the keep/reject/resolve matrix is the build-plan slice this run realizes.
24- **Stage 4 — Implement (scoped)**: **runnable** — build the consolidated MVP under `prototypes/{topic}/consolidated/`, mark the tree `consolidated`, and pass the single binding alignment gate before any canonical write.
25
26**Per-branch iteration contract.** Each session cold-starts, reads the flow-tree manifest, resolves the validated variation set ready to converge, runs the staged flow, writes the consolidated MVP on approval, and stops with the handoff in `## Next Work`.
27
28**Modify-back.** When consolidation surfaces a flaw in an upstream node, record a `modify` decision whose `targets[]` re-opens that `model_ref` or user-flow branch; convergence resumes once the re-opened node is re-approved.
29
30## Process
31
32### 0. Product-Path Scope Resolution
33
34Resolve research scope by product path before using code or app structure as a hint:
35
361. If `$ARGUMENTS` names a non-archived `research/{slug}/` directory or a product-path ID whose `scope_path` points there, use that path. Treat `{slug}` as the product/app name, not the ICP, audience, or segment label.
372. If `$ARGUMENTS` names only `research/_archive/{slug}/` or a manifest entry with `status: archived` or legacy `status: abandoned`, stop and warn that the path is archived; do not write or update scoped outputs there.
383. Read `research/.progress.yaml` when present. Normalize legacy `active_path` to `active_paths` on read and write back `active_paths` on manifest updates. Treat legacy `abandoned` as `archived`; exclude `archived`, `abandoned`, `deferred`, `revisit_candidate`, `promoted`, and any `scope_path` under `research/_archive/` from active target selection.
394. If active product paths exist in the manifest, use those paths. If multiple active paths exist, ask which one to target unless this skill explicitly supports cross-path output.
405. If no active manifest target exists, list non-archived product directories under `research/`, excluding `research/_archive/` and dot directories. Auto-select only when exactly one exists; ask when multiple exist.
416. If no product directories exist, use flat `research/` single-product mode.
427. Detect monorepo/app/package structure only as a secondary hint. Suggest creating a missing `research/{slug}/` product path when code clearly exposes an app, but do not require code or monorepo detection before using `research/{slug}/`.
43
44When product path `{slug}` is active, read research under `research/{slug}/`, read pre-prototype design artifacts under `design/{slug}/`, write prototype output under `prototypes/{topic}/`, and treat top-level `research/*.md` and `design/*.md` files as flat-mode documents or cross-path summaries.
45
461. **Resolve context**
47 - Read `.agents/project.json` if it exists.
48 - Read `README.md`, `AGENTS.md`, `CLAUDE.md`, relevant `docs/`, `specs/`, `research/`, route files, component directories, and design artifacts when present.
49 - Locate the variation plan: `design/ui-layout-variations-[topic].md` or `design/ux-variations-[topic].md`.
50 - Locate the content requirements: `design/ui-requirements-[topic].md` or equivalent content contract.
51 - Locate the flow-tree manifest: `design/flow-tree-[topic].yaml` or `design/{slug}/flow-tree-{topic}.yaml` when present.
52 - Locate variant evaluation evidence: `research/uat-variant-evaluation-[topic].md`, product-path-scoped equivalents, `research/uat-plan.md` result logs, screenshots, notes, recordings, or explicit user-provided review notes.
53 - Locate built implementations: scan route files, component directories, and any variation-specific directories or branches.
54 - If the variation spec or implementations cannot be found, ask the user to point to them.
55
562. **Evidence gate**
57 - If no evaluation evidence exists and the user has not explicitly said they already reviewed the variants and is ready to converge, stop and recommend `/uat --variant-evaluation` (check `.agents/project.json.enabled_packs` for `product-testing` — if `product-testing` is not enabled, recommend `npx skillpacks install product-testing` from the project shell, first).
58 - Do not infer a winner from specs alone. Built variants need hands-on review or explicit user readiness before consolidation.
59 - If some variants are unreviewed, ask whether to exclude them, evaluate them first via `/uat --variant-evaluation` (check `.agents/project.json.enabled_packs` for `product-testing` — if `product-testing` is not enabled, recommend `npx skillpacks install product-testing` from the project shell, first), or include them as spec-only references.
60
613. **Present variation inventory**
62 - List each variation with a one-line summary of its approach.
63 - Note build status for each: built and reviewed, built but unreviewed, partially built, spec-only.
64 - Note evidence status for each: result log present, user notes present, no evidence.
65 - Use AskUserQuestion to confirm which variations the user has reviewed and wants to evaluate. Skip unreviewed or unbuilt variations unless the user wants to include them from spec alone.
66
674. **Interview per variation**
68 - For each reviewed variation, ask using AskUserQuestion (1–3 questions per turn):
69 - What works well in this variation? Name specific elements, regions, or interactions.
70 - What doesn't work? What feels wrong, cluttered, sparse, or confusing?
71 - Any specific component, region, or interaction you want to keep in the final design?
72 - Anything to explicitly reject — never use this approach?
73 - Record responses as structured annotations per variation:
74 - **Keep**: elements the user wants in the final design (with source variation)
75 - **Reject**: elements the user never wants (with source variation)
76 - **Neutral**: elements the user has no strong opinion on
77
785. **Cross-variation synthesis**
79 - Present a **Consolidation Matrix** showing each design dimension and which variation's approach the user preferred:
80
81 | Design Element | Variation A | Variation B | Variation C | Winner |
82 |---|---|---|---|---|
83 | Container pattern | card grid | data table | list+detail | ? |
84 | Detail view | modal | sidebar | full-page | ? |
85 | Navigation | top-nav | side-nav | tabs | ? |
86 | ... | ... | ... | ... | ... |
87
88 - Fill in winners based on the interview. Mark conflicts where preferred choices from different dimensions are incompatible (e.g., user wants sidebar detail from Variation B but also wants the full-width card grid from Variation A — these compete for horizontal space).
89 - For each conflict:
90 - Present the tension clearly
91 - Offer 2–3 resolution options with tradeoffs
92 - State a recommendation
93 - Use AskUserQuestion to resolve
94 - Continue until every row in the matrix has a winner and all conflicts are resolved.
95
966. **Build consolidated prototype**
97 - Merge the best elements from variation prototypes into a single runnable artifact at `prototypes/{topic}/consolidated/`.
98 - Build only after UAT evidence and user consolidation decisions identify which elements to keep, reject, or resolve.
99 - The consolidated prototype must reflect:
100 - Layout skeleton (regions, proportions, scroll behavior)
101 - Primary content pattern (how items are displayed)
102 - Detail view pattern (how full item details are accessed)
103 - Navigation pattern and placement
104 - Action placement (create, edit, delete, bulk, contextual)
105 - Density and spacing approach
106 - Responsive behavior at mobile, tablet, and desktop breakpoints
107 - States rendering (empty, loading, error, partial, offline)
108 - Use AskUserQuestion to confirm the consolidated design before building the prototype.
109
1107. **Coverage checkpoint**
111 - Verify every content requirement from `design/ui-requirements-[topic].md` has a UI home in the consolidated prototype.
112 - Verify every user action has a placement (button, menu item, keyboard shortcut, or gesture).
113 - Verify all states (empty, loading, error, partial, full, offline, permission-denied) are accounted for.
114 - Flag any gaps and resolve via AskUserQuestion before writing.
115
116## Deliverables
117
118- Write the consolidated prototype to `prototypes/{topic}/consolidated/`.
119- Write the consolidation interview log to `design/consolidate-variations-[topic]-interview.md` in flat mode or `design/{slug}/consolidate-variations-[topic]-interview.md` in product-path mode.
120- Update the scoped flow-tree manifest to mark consolidated branches as `consolidated` or `promoted-to-prototype` when applicable.
121
122### Alignment Page
123
124When this skill produces durable deliverables (research, specs, plans, reports, prototypes, or any document output), build a full-depth HTML alignment page following `ALIGNMENT-PAGE.md` in this skill's directory. Output: `alignment/consolidate-variations-{topic}.html`.
125
126## Next Work
127
128**Next work:** after the consolidated MVP is approved, run the post-prototype research pass (`/research-roadmap --post-prototype`) and then formalize the MVP into a production spec with `/spec-interview`.
129
130**Recommended next command:** `/spec-interview`.
131
132## Invoke With YAML
133
134Emit the `agent_routing` payload with the exact resolved next-invocation command, `{slug}`/`{topic}` filled to literal values: `/research-roadmap --post-prototype`, then `/spec-interview`.
135
136## Constraints
137
138- Do not proceed without evaluation evidence unless the user explicitly says they have reviewed the variants and is ready to converge.
139- Do not pick winners without user input. Present the matrix and let the user decide.
140- Do not ignore conflicts. If two preferred choices are spatially or functionally incompatible, surface the tension and resolve it explicitly.
141- The consolidated prototype must preserve the approved UI branch detail from `/ui-interview` and be concrete enough for `/spec-interview` to extract production implementation requirements.
142- Do not lose content requirements. Every data field, action, and state from the requirements spec must appear in the final design.
143- Do not bias toward the first or last variation reviewed. Present them neutrally and let the user's feedback and evaluation evidence drive the outcome.
144- Do not use `tasks/todo.md` for consolidation branch progress or human review. Human evaluation belongs in `tasks/manual-todo.md`; implementation fixes may enter `tasks/todo.md` only after human evidence exists.
145- When recommending a skill from another pack, verify the pack is installed via `.agents/project.json` `enabled_packs`. If not installed, recommend `npx skillpacks install <pack-name>` from the project shell, before the target skill.
146
147## Archive-First Replacement Policy
148
149- Before replacing or substantively rewriting an existing canonical research/design/spec document (`research/**/*.md`, `design/**/*.md`, `specs/**/*.md`, or `docs/specifications/**/*.md`), copy the current file to `docs/history/archive/YYYY-MM-DD/HHMMSS/<original-relative-path>`.
150- Preserve the archived snapshot exactly as it existed before the change; do not edit the archived copy after creating it.
151- After the archive snapshot exists, write the updated document to the original canonical path.
152- Report both the archive path and the updated canonical path in the final output.
153- New files do not need archive snapshots. Append-only updates do not need archive snapshots unless an existing section is regenerated or rewritten.
154
155## Interrogation Page
156
157Before producing research, run the stage-zero interrogation loop following `INTERROGATION-PAGE.md` in this skill's directory. Build one HTML page per round at `interrogation/consolidate-variations-r{N}-{branch}.html`, starting with the assumptions manifest as round 1, and loop until the confidence gate passes. This skill **cannot advance to stage one** (the framework/scope alignment page) **until** the confidence gate passes with at least one completed interrogation round and every interview area covered or waived. Each round page must contain at least one genuinely open input (`data-open-input`).
158
159## Default Shipping Contract
160
161Follow the shared shipping contract convention in CLAUDE.md.