Judge the current branch's changes against the design decisions in DECISIONS.md.
Look
- Read
DECISIONS.md in the repo root. If it doesn't exist, stop and
report that instead of judging.
- Find the base: the repo's default branch, unless the user names one.
- Read the full diff (
git diff <base>...HEAD) and open every changed
file, so each change is judged in the context of the file it lands in.
Judge
Check the change against each decision in DECISIONS.md, in order. A
decision is identified by its heading text — use that exact name
everywhere in the report; never number the decisions.
- Only the decisions in the file. No other findings, no style feedback, no
improvement suggestions.
- A violation needs evidence you can point at in this change: a file and
line, a whole file, or the set of files involved. If it doesn't clearly
break a written decision, it isn't a violation.
- The same wrong pattern in two places is two violations.
Report
Output exactly this structure, and nothing else. Use real markdown
headings so the report renders grouped by decision:
# JUDGMENT · <branch> vs <base> · <n> violations
## ❌ <DECISION NAME, UPPERCASE>
**<where>**
<what the code does, one sentence>
- **What breaks:** <the concrete consequence of shipping this as is, one sentence>
- **Potential fix:** <the smallest concrete change that satisfies the decision, one sentence>
Rules for the report:
- One
## section per violated decision, in DECISIONS.md order. Prefix
the heading with ❌ and set the decision name in uppercase. A decision
with no violations gets no section.
- One
**<where>** block per violation, ordered by file within its
section. <where> is file:line for a single spot, the file for a
file-wide problem, or the files involved when the violation spans
several.
- The What breaks line names a real failure with a trigger, even one
that arrives later (e.g. "rename a column in loyalty and refunds
break"), never a vague quality complaint ("this hurts maintainability").
- The Potential fix line must be actionable without reading anything else: name
the concrete mechanism to use, not just the one to avoid (e.g. "Move
the merge steps into an
app/Actions/MergeIdeas action and have the
controller call it", not "don't do this in the controller").
If there are no violations:
# JUDGMENT · <branch> vs <base> · clean
Every decision in DECISIONS.md holds for this change.
1---2name: judge-arch3description: Judge the current branch's changes against the repo's DECISIONS.md design decisions. Use when asked to judge, check, or review a change or branch against the decisions.4---56Judge the current branch's changes against the design decisions in DECISIONS.md.78## Look9101. Read `DECISIONS.md` in the repo root. If it doesn't exist, stop and11 report that instead of judging.122. Find the base: the repo's default branch, unless the user names one.133. Read the full diff (`git diff <base>...HEAD`) and open every changed14 file, so each change is judged in the context of the file it lands in.1516## Judge1718Check the change against each decision in DECISIONS.md, in order. A19decision is identified by its heading text — use that exact name20everywhere in the report; never number the decisions.2122- Only the decisions in the file. No other findings, no style feedback, no23 improvement suggestions.24- A violation needs evidence you can point at in this change: a file and25 line, a whole file, or the set of files involved. If it doesn't clearly26 break a written decision, it isn't a violation.27- The same wrong pattern in two places is two violations.2829## Report3031Output exactly this structure, and nothing else. Use real markdown32headings so the report renders grouped by decision:3334```35# JUDGMENT · <branch> vs <base> · <n> violations3637## ❌ <DECISION NAME, UPPERCASE>3839**<where>**40<what the code does, one sentence>41- **What breaks:** <the concrete consequence of shipping this as is, one sentence>42- **Potential fix:** <the smallest concrete change that satisfies the decision, one sentence>43```4445Rules for the report:4647- One `##` section per violated decision, in DECISIONS.md order. Prefix48 the heading with ❌ and set the decision name in uppercase. A decision49 with no violations gets no section.50- One `**<where>**` block per violation, ordered by file within its51 section. `<where>` is `file:line` for a single spot, the file for a52 file-wide problem, or the files involved when the violation spans53 several.54- The **What breaks** line names a real failure with a trigger, even one55 that arrives later (e.g. "rename a column in loyalty and refunds56 break"), never a vague quality complaint ("this hurts maintainability").57- The **Potential fix** line must be actionable without reading anything else: name58 the concrete mechanism to use, not just the one to avoid (e.g. "Move59 the merge steps into an `app/Actions/MergeIdeas` action and have the60 controller call it", not "don't do this in the controller").6162If there are no violations:6364```65# JUDGMENT · <branch> vs <base> · clean6667Every decision in DECISIONS.md holds for this change.68```