Runs the ASD impl-review phase iteratively until DoD met: dispatches seven internal reviewers (and asd-external-review when enabled) in parallel against the sprint's code and tests, aggregates verdicts, and on unresolved findings sets state.json.review_fixes_pending and routes back to impl fix mode. Use when asd-sprint dispatches impl-review, or when the user explicitly asks to run or re-run impl-review for the active sprint.
Installation
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Runs the ASD impl-review phase iteratively until DoD met: dispatches seven internal reviewers (and asd-external-review when enabled) in parallel against the sprint's code and tests, aggregates verdicts, and on unresolved findings sets state.json.review_fixes_pending and routes back to impl fix mode. Use when asd-sprint dispatches impl-review, or when the user explicitly asks to run or re-run impl-review for the active sprint.
AskUserQuestion — escalation on FAIL or iteration cap reached
Task — parallel reviewer dispatch; PM for state + decisions-log. impl-review does NOT dispatch devs — finding fixes are routed to the impl phase (fix mode).
Read <sprint>/state.json → set phase=impl-review, increment reviews.impl.iteration (it is 0 at sprint creation, so 1 on first entry; +1 on every impl-review entry of the impl⇄impl-review cycle; the intervening impl fix-mode phase never touches it; see sprint-lifecycle.md "Review iteration counters" for increment and rollback-reset rules). NN = the resulting value, zero-padded.
Compute severity floor for current iteration per review-policy.md cumulative-budget algorithm (uses reviews.impl.iteration)
Create folder <sprint>/reviews/impl/iter-NN/ if absent
Parallel dispatch via Task — every reviewer is spawned as a fresh agent each iteration (clean-context dispatch per review-policy.md); no reviewer is reused across iterations:
if review.external_review=enabled → asd-external-review with phase=impl-review
payload to each: diff (iter 1 = git diff <base>...HEAD; iter 2+ = git diff + last commit), iteration N, review output dir <sprint>/reviews/impl/iter-NN/, severity floor, relevant context paths, language.chat, language.docs. The payload carries no authoring rationale and no prior-iteration verdicts; the incremental diff scopes the input, not the reviewer's context. For asd-external-review on iter ≥ 2, also pass the previous iteration's finding set (for stalemate detection)
each reviewer writes <sprint>/reviews/impl/iter-NN/<reviewer>.md per t_review.md (or t_review-report.md for external) with first-line verdict token [REVIEW-impl-<reviewer>]: ...
Wait all REVIEW_DONE signals
Parse first-line verdict tokens from all reviewer files; record the per-reviewer verdicts under state.jsonreviews.impl.verdicts["iter-NN"]; aggregate. impl-review does NOT fix findings itself — fixes are routed to the impl phase (fix mode):
All APPROVE → DoD met:
dispatch asd-pm via Task: append decisions-log entry "impl-review iter NN: APPROVE", clear state.json.review_fixes_pending (set null)
emit phase COMPLETED with NEXT: pr
Any FAIL → escalation (impl-review owns review escalation):
parse FAIL findings; group by escalation cause (concept / requirement / contract change; new abstraction; scope expansion; complexity increase)
AskUserQuestion in language.chat: present each FAIL using Complication Approval format from core.md; collect decisions
on user override → mark that finding resolved (no fix needed); exclude it from the fix set
on user accept → keep that finding in the fix set; note the approved change in its reviewer file
then continue to the routing step below with the surviving findings
Any unresolved finding remains (CONCERNS findings, plus FAIL findings the user accepted for fix) → route to impl fix mode:
dispatch asd-pm via Task: set state.json.review_fixes_pending = "iter-NN" (the current impl-review iteration; the impl fix-mode phase reads findings from <sprint>/reviews/impl/iter-NN/); append decisions-log entry "impl-review iter NN: <CONCERNS/FAIL summary> → impl fix"
emit phase COMPLETED with NEXT: impl
All FAIL overridden, no CONCERNS (escalation left zero unresolved findings) → treat as DoD met by user override: PM appends decisions-log "impl-review iter NN: APPROVE by override", clears review_fixes_pending; emit COMPLETED with NEXT: pr
Iteration cap reached (the next impl-review iteration would exceed all severity-tier budgets per review-policy.md) — checked when step 7 would route to impl fix mode:
AskUserQuestion: override cap and continue / accept current findings / abort sprint
on override → route to impl fix mode (reviews.impl.iteration keeps incrementing — not reset; severity floor stays pinned at critical; PM sets review_fixes_pending, emit COMPLETED NEXT: impl)
on accept → emit COMPLETED with NEXT: pr, note "iteration cap reached, user accepted"
on abort → emit ABORT
Any reviewer QUESTION / FAILED / ABORT → relay, halt
Iteration severity floor (reference)
See .asd/rules/review-policy.md for the cumulative-budget algorithm. Phase skill computes floor and passes to reviewer payload so reviewers drop findings below floor.