About judge-arch
judge-arch is a code-review skill for checking the current branch against the repository’s DECISIONS.md. It limits findings to documented decisions and formats violations in a prescribed report.
Key features
- 01Checks changes against DECISIONS.md
- 02Reads the full diff and changed files
- 03Reports only evidenced decision violations
- 04Groups findings by decision heading
Use cases
- 01Reviewing a branch before merging
- 02Checking whether implementation follows written design decisions
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ unlearndev/ skills --skill judge-archAfter installing, type/judge-archin Claude Code to confirm it loaded.
Details
From the project READMEJudge the current branch's changes against the design decisions in DECISIONS.md.
Look
- Read
DECISIONS.mdin 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>isfile:linefor 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/MergeIdeasaction 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.
Comments
Markdown supported