Cross spec review
Skill tsergeytovarov/super-puper-powers/skills/cross-spec-review
Use when spec-review passed and docs/spp/04-specs/ contains more than one spec - reviews the whole spec set for interface consistency, seam gaps, contradictions and build orderFrom its SKILL.md
npx -y skills add tsergeytovarov/super-puper-powers --skill cross-spec-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.5 KB, as published. Nobody here has run it
Cross-Spec Review
Overview
When a product decomposes into multiple sub-project specs, each spec passes its own spec-review in isolation — but isolation is exactly the blind spot. A reviewer looking at spec A alone has no way to notice that spec B calls the same interface by a different name, or that a scenario spanning both sub-projects is fully described in neither. This skill dispatches a single independent reviewer subagent that reads the entire spec set at once, the only vantage point from which those cross-spec defects are visible.
Core principle: One subagent, one clean context, all specs at once. Not one subagent per spec, not a subagent that inherits the authoring session — a single review pass over the complete set, the same way an implementer would need to hold the whole set in mind to build any one piece of it correctly.
Process
-
Confirm the trigger. This skill only runs when
docs/spp/04-specs/contains more than one spec. A single spec has no seams to check — readdocs/spp/pipeline-state.mdto confirmsubproject_orderis still relevant, and skip straight back tospec-writingif there is in fact only one spec. -
Locate the inputs. Every spec file under
docs/spp/04-specs/(excludingsummary-for-review.md, which is the product-facing output, not an input). Optionally the MVP scope and stack files if the reviewer needs them to judge feasibility of a cross-spec contract, but the primary input is the full spec set itself. -
Dispatch one clean-context subagent with the whole set. Give it every spec file at once — not the authoring session's history, not your own design rationale, not a summary you wrote of what each spec contains. The subagent must read the specs directly, the same way a stranger building against all of them would. Do not split this into one dispatch per spec; a subagent that only ever sees one spec at a time cannot catch a mismatch between two of them.
-
The reviewer checks:
- Interface consistency between sub-projects — names, types, and contracts that one spec defines and another consumes must match exactly. A shared identifier spelled two different ways, or a payload shape described differently on each side, is a defect.
- Seam gaps — any scenario that crosses two sub-projects (starts in one, continues in another) needs the handoff itself described: what crosses the seam, in what shape, and who is responsible for what on each side. A scenario that's covered inside each spec individually but never actually connected at the boundary is a gap.
- Contradictions — statements in one spec that conflict with statements in another (not just within a single spec, which
spec-reviewalready covers). - Build order — the dependency graph across sub-projects: which ones the others depend on, and therefore what must be built first. This isn't advisory color; it's a required output (see below).
-
Findings carry severity: Critical / Important / Minor, same scale as
spec-review. Fix every Critical and Important finding — in whichever spec(s) it lives — before the gate. -
Repeat until clean. Re-invoke the subagent (fresh clean context again, not the same instance carrying prior findings, with the updated full spec set) after fixing. Loop until a review pass returns zero Critical/Important findings — same fix/re-review loop as
spec-review, no cap on rounds, exit condition is a clean pass. -
Write the recommended build order to state. Once the review is clean, the subagent's recommended sub-project implementation order goes into the
subproject_orderfield indocs/spp/pipeline-state.md— a list of sub-project slugs in build order. This is not optional even on a clean pass with no findings:subproject_orderhas two downstream consumers —plan-writinguses it to order the plans it writes, and the phase-6 orchestrator uses it to order execution. Leaving itnullbreaks both. -
No findings file. Same as
spec-review: the subagent's report lives in its response for that dispatch, nothing persists to disk for it. What persists is the outcome — append an entry to the Decisions log indocs/spp/pipeline-state.mdrecording how many rounds the review took and the final result (e.g., "cross-spec-review: 1 round, clean pass, subproject_order: [api, worker, dashboard]"). This keeps the pipeline resumable if a session ends mid-review. -
Next skill. Control returns to
spec-writingto produce the product summary and run the user-facing gate. This skill does not talk to the user and does not advancecurrent_phaseitself.
Red Flags
Never:
- Review specs one at a time, even by dispatching several subagents in parallel — a per-spec view cannot see a seam gap or an interface mismatch that only exists in the relationship between two specs. It must be one subagent holding the whole set at once.
- Leave
subproject_orderunwritten after a clean pass. A clean review with no findings still owes the state file a build order; skipping it silently breaksplan-writingand the phase-6 orchestrator, which both read that field expecting a value. - Wave through an interface name or type that differs between two specs because "the meaning is obviously the same" — an implementer building against one spec won't see the other, and a mismatch here becomes a runtime bug that adversarial review is specifically meant to catch before it's written.
- Mark a scenario that crosses a seam as covered because each side individually mentions it — check that the handoff itself (what crosses, in what shape, who owns what) is actually described, not just that both ends exist.
- Skip logging the round count, outcome, and resulting
subproject_orderto the Decisions log — without it, a resumed session can't tell whether this gate already passed or what order was decided. - Reuse the same reviewer subagent across rounds instead of dispatching fresh each time with the updated spec set — a subagent that already saw its own prior findings is no longer an independent reviewer.
Next step
When this stage is complete, tell the user in their own language that:
- this stage is done;
- the next logical step is the
plan-writingskill; - they should start it in a fresh chat so that skill gets clean context.
Do not auto-invoke the next skill. The user drives the transition — offer, do not proceed.