Digests a finished build into the handful of things the human should actually look at — assumptions the builder made, spec deviations, workarounds, judgment calls on ambiguous plan wording. Read-only, never gates or fixes anything. pr-describe invokes this automatically while writing every PR, so it doesn't normally need to be run by hand — but it's user-invocable for an earlier look once feature-build finishes a feature, before a PR exists. Use when asked to "review decisions", "what decisio...
Installs into .claude/skills of the current project.
Are you the author of Decision Review?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mattbrailsford-decision-review)
---
name: decision-review
description: >-
Digests a finished build into the handful of things the human should actually look at —
assumptions the builder made, spec deviations, workarounds, judgment calls on ambiguous plan
wording. Read-only, never gates or fixes anything. pr-describe invokes this automatically
while writing every PR, so it doesn't normally need to be run by hand — but it's
user-invocable for an earlier look once feature-build finishes a feature, before a PR exists.
Use when asked to "review decisions", "what decisions were made", "what should I check" or
"what needs my attention" on a finished build.
user-invocable: true
argument-hint: [path to the feature's plan folder, optional]
---
# decision-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`/`Write` needed — this is a report), gating a commit (that's
`reviewer`'s job, already done per task inside the loop), writing the PR description (that's
`pr-describe` — hand this skill's output to its "Special things to note" section instead of
duplicating the digest in a second file).
## Preflight
1. Resolve the plan folder: the path given in the argument; else match the current
branch/worktree name against a plan folder the way `feature-build` does (see the project's
`CLAUDE.md`); else stop and ask.
2. Confirm `BUILD-LOG.md` has 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.md` or
`ARCHITECTURE.md` says 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 `reviewer`
`FAIL` inside 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
1. Read `DECISION-LOG.md` end to end. Keep only entries timestamped from this feature's build
phase (from when `feature-build` cut the branch onward). Earlier entries belong to
`feature-explore`/`feature-design`/`feature-plan` — the user already weighed in during those phases'
interviews; don't re-surface settled ground.
2. Read `BUILD-LOG.md` for what each task claimed to verify, as context for the entries above.
3. 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.
4. Cross-check the diff against `SPEC.md`/`ARCHITECTURE.md` for 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.
5. 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`.
6. 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`.