A subagent for Claude Code
judge
moody
Hand it a finished thing and whatever standard exists. It returns pass, revise, or fail — and tells you how strong the standard it used actually was.
A verdict grounded in a known-good example is not the same as one graded against criteria the judge invented. This one says which it was.
View on GitHubThe verdict
Pass, revise, or fail
One of three, never a score out of ten. A number invites you to argue with the decimal instead of reading the gaps.
Graded in a clean context
It runs fresh and never sees the conversation that produced the artifact, so it cannot be talked into liking something by the reasoning that made it.
The tiers
It resolves the strongest standard you actually supplied, and declares which one it used.
- IdealA known-good example to grade against — the strongest basis
- RubricExplicit criteria you wrote down
- SpecA written description the criteria get derived from
- InferredNothing supplied — it invents criteria and says so
Below the ideal tier it prints the criteria before the verdict, so you can reject the basis rather than the grade. An unreadable standard drops a tier and says so, instead of quietly downgrading.
The gaps
Gaps come back sorted blocking first, each with a concrete fix rather than an observation. "The introduction is weak" is not a gap; "the introduction never states what the document decides" is.
Blocking
The artifact does not do its job until this is fixed.
Minor
Worth fixing, but the thing works without it. Kept separate so a long list of nits cannot masquerade as a failure.
How it runs
Manual trigger only. No schedule, no hook, nothing in a pipeline — you invoke it when you want a second opinion, through the paired slash command that collects the artifact and the standard and dispatches without pre-judging either.
Read-only by construction. It can read, search, and list files, and it cannot run commands. A grader that can modify the thing it is grading is not a grader.
Deliberately out of scope: it carries no safety or policy dimension, and no efficiency or trajectory dimension. Permission modes enforce the first for real, and nothing in the stack captures the execution traces the second would need.