decision-review
Lists what a human should check after a build: the builder's assumptions, spec deviations, workarounds and judgment calls. Read-only. pr-describe runs it for every PR; run it by hand for an earlier lo
SKILL.mdplugins/umbraco-devkit/skills/decision-review/SKILL.md
GitHubdecision-review
feature-build runs unsupervised across many tasks. Each builder dispatch reports back
"any decision the plan left implicit that it had to make," and the loop logs those to
DECISION-LOG.md (see that skill's step 6). In a fully autonomous run, the PR is the one
checkpoint guaranteed to get a human look, so pr-describe always invokes this skill while
writing that PR — nobody has to remember to trigger a separate review step. This skill doesn't
decide anything itself; it decides what's worth the user's attention and hands back a short,
ranked list.
Scope
- IN: read
DECISION-LOG.md,BUILD-LOG.md, and the feature's diff since it branched from trunk; surface the subset worth a human's eyes; rank them. - OUT: fixing anything (no
Edit/Writeneeded — this is a report), gating a commit (that'sreviewer's job, already done per task inside the loop), writing the PR description (that'spr-describe— hand this skill's output to its "Special things to note" section instead of duplicating the digest in a second file).
Preflight
- Resolve the plan folder: the path given in the argument; else match the current
branch/worktree name against a plan folder the way
feature-builddoes (see the project'sCLAUDE.md); else stop and ask. - Confirm
BUILD-LOG.mdhas at least one entry. If it's empty or missing, nothing has been built yet — say so and stop rather than reviewing an empty diff.
What counts as worth surfacing
Flag something only if a different, equally reasonable choice existed and the outcome could plausibly matter to the person who owns the feature. Four categories:
- Assumption — filled a gap the plan or spec left open, without asking.
- Deviation — the implementation does something other than what
SPEC.mdorARCHITECTURE.mdsays it does. - Workaround — routed around a bug, a missing dependency, a CMS-version gap, or a flaky
test, instead of a clean fix. (A weakened or skipped spec is already an automatic
reviewerFAILinside the loop, so a surviving one here means it slipped through — call that out as the top-priority item, not just another workaround.) - Judgment call — ambiguous plan wording resolved one way among several defensible ones.
Skip pure implementation mechanics — variable names, which loop construct, formatting, file layout inside an already-agreed extension point. Nobody needs to sign off on those.
Workflow
- Read
DECISION-LOG.mdend to end. Keep only entries timestamped from this feature's build phase (from whenfeature-buildcut the branch onward). Earlier entries belong tofeature-explore/feature-design/feature-plan— the user already weighed in during those phases' interviews; don't re-surface settled ground. - Read
BUILD-LOG.mdfor what each task claimed to verify, as context for the entries above. - Read the full diff since the branch point (
git diff <base>...HEAD), with enough surrounding code to judge each flagged item in context, not just the changed lines. - Cross-check the diff against
SPEC.md/ARCHITECTURE.mdfor anything that reads as a deviation but was never logged — the builder is supposed to report these, but this step catches what leaked through rather than trusting the log is complete. - For each surviving item, write one line:
file:line, category tag, what happened, why it matters, and a recommended action —Looks fine as documented/Needs a decision from you/Consider reverting. - Sort most consequential first — anything touching user-facing behavior or a public API above an internal implementation choice; an unmitigated FAIL-worthy workaround above either.
Report
Print the list directly in the reply — don't create a new file in the plan folder. Write each
item following plain-writing. If nothing
survives steps 1–4, say plainly "nothing needs your review" and stop; don't pad an empty
result with the search process.
Hand off
Suggested next: pr-describe — fold anything real from this list into its "Special things to
note" section, then open the PR per git-workflow.
This is the post-build half of plan scrutiny; feature-interrogate is the pre-build half,
run by hand before feature-build on a plan worth the extra confidence. Neither replaces the
other: this one reads what actually got decided during a real build, that one stress-tests
intent before any code exists.