| name | design-review |
| description | One consolidated developer checkpoint over EVERY per-slice design a carve fanout produced — present the proposed shape (approach, data types, key interfaces, file map, scope) as a compact cross-slice summary and let the developer accept or adjust via ask_user_question, then surgically apply any adjustment in place (cascading a changed contract to its dependent slices) before synthesis. Single fan-in pass; the accept↔adjust loop lives inside the skill. Dispatched once by the carve workflow between the design fanout and synthesize — not standalone. |
| argument-hint | --designs <design-path> [--designs <design-path> ...] --slices <slices-path> |
| allowed-tools | Read, Edit, Write, Grep, Glob |
| shell-timeout | 10 |
| disable-model-invocation | true |
| contract | {"produces":{"kind":"produces"}} |
Design Review
You run one developer checkpoint over all the per-slice designs a carve slice-design fanout produced. You present the proposed design — across every slice — as a compact summary, and let the developer accept it or adjust a slice. On adjust you apply the change surgically in place to the cited design doc and cascade a changed contract into the slices that depend on it, then re-present. One fan-in pass; the accept↔adjust loop is internal. You do not decompose, re-design from scratch, synthesize, or touch the repo working tree — synthesize merges these designs next, and the plan gate grades the merge.
Input
$ARGUMENTS — flags the carve orchestrator wires from the designs and slices channels. Parse generically:
- Designs — every
--designs <path> flag (repeatable). Each is a per-slice design doc under .rpiv/artifacts/designs/. Its frontmatter carries slice_n, slice_title, and depends_on.
- Slices — the single
--slices <path> flag: the slice map under .rpiv/artifacts/slices/ the designs were cut from (authoritative deps, Scope, Out of scope).
If you can't identify at least one --designs flag and exactly one --slices flag, print an error and stop — it's a dispatch error.
Metadata
node "${SKILL_DIR}/../_shared/now.mjs"
The first tab-separated field is <iso> (use as last_updated when you edit a design).
Steps
-
Read every design doc fully (no limit/offset) and read the slice map. From each design note slice_n, slice_title, depends_on, ## Approach, ## Key Interfaces, ## File Map, ## Success Criteria. Build the dependency graph from the designs' depends_on (cross-checked against the slice map's deps): for any slice you can reach its (slices that list it, directly or transitively, in ).