Criteria Builder π
Tick the boxes, get a judge's rubric
- criteria
Once you've automated image generation, the next obvious thing to automate is judging the results - and the pack's Vision LLM Judge and Ouroboros Critic Settings both take a criteria string, one name: description line per thing you want scored. Criteria Builder π exists so you never have to hand-write that string. Tick criteria on the node, and it assembles the rubric for you.
The node ships a catalog of curated criteria - overall quality, prompt compliance, anatomy, hands, face, composition, perspective, camera, lighting, color, sharpness, detail, background, style consistency, realism, aesthetics, text - each with a model-guiding description that the pack has already written. Each criterion is a toggle, so you build your rubric by switching things on. The descriptions aren't filler either: they tell the judging model what to actually look for ("correct finger count, natural shape and pose, no fused, missing or extra digits"), which measurably steers its verdicts.
The inputs that matter:
- The criteria toggles - most are off by default;
overall_quality,prompt_compliance,anatomy,camera, andtextstart on. That's a sensible baseline for a first run. extra- onename: descriptionline per criterion you want that isn't in the catalog.criteria_in- an optional upstream criteria string merged first, so you can chain builders or start from an existing set. Duplicates (by name) are removed.
The output:
criteria- the assembled string. Wire it into Vision LLM Judge's or Ouroboros Critic Settings'criteriafield via right-click β Convert widget to input. Empty output = single overall score.
Two design details are worth knowing. First, the catalog is data, not code: criteria_presets/catalog.json ships it, and dropping a catalog.user.json next to it (same shape) adds your own criteria without touching the shipped file - so your additions survive a git pull. Second, empty output is meaningful: with nothing ticked, the judge falls back to one overall score, so the node doubles as an on/off switch between "single number" and "full rubric."
The trap to avoid is over-ticking. A rubric with twelve criteria produces twelve score fields per image, and most comparisons only need four or five. Start from the defaults, add hands if you're generating people, and resist the temptation to turn everything on.
Install via ComfyUI Manager (search "Kinburg-Nodes") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kinburg/Kinburg-Nodes
then restart. The node itself has no dependencies - it's catalog lookups and string assembly. It earns its keep only once the Vision LLM Judge is running, which needs a vision-capable GGUF + mmproj of your own (the pack auto-installs llama-cpp-python via install.py). One-author personal pack, per-package docs, 1395 automated checks.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| overall_quality | BOOLEAN | true | overall image quality β matches the intended style, no artifacts, no excess noise, correct proportions, good color reproduction |
| prompt_compliance | BOOLEAN | true | how accurately the image follows the generation prompt β subjects, attributes, counts and relations are all present and correct |
| anatomy | BOOLEAN | true | all required limbs present, no extra or missing limbs, correct joint placement, natural and proportional body |
| hands | BOOLEAN | false | hands and fingers β correct finger count, natural shape and pose, no fused, missing or extra digits |
| face | BOOLEAN | false | face quality β symmetry, natural features, correct eyes and teeth, no distortion, consistent with the intended subject |
| composition | BOOLEAN | false | composition and framing β balanced layout, clear focal point, good use of the frame, no awkward cropping |
| perspective | BOOLEAN | false | perspective and geometry β consistent vanishing points and scale, no warped or physically impossible structures |
| camera | BOOLEAN | true | camera angle and camera settings (lens, depth of field, framing) match the intent |
| lighting | BOOLEAN | false | lighting β believable direction and intensity, coherent shadows and highlights, matches the described mood |
| color | BOOLEAN | false | color β pleasing coherent palette, accurate white balance, no oversaturation or unwanted color casts |
| sharpness | BOOLEAN | false | sharpness and focus β the subject is crisp where intended, no unwanted blur and no over-sharpening halos |
| detail | BOOLEAN | false | level of detail β fine textures and small elements render cleanly, no mushy or smeared areas |
| background | BOOLEAN | false | background β coherent with the scene, no distracting artifacts, correct depth and separation from the subject |
| style_consistency | BOOLEAN | false | style consistency β one coherent art style throughout, no clashing rendering styles within the image |
| realism | BOOLEAN | false | photorealism β looks like a real photograph, believable materials and skin, no tell-tale AI look (use only for realistic targets) |
| aesthetics | BOOLEAN | false | aesthetic appeal β overall attractiveness and visual impact, tasteful and pleasing to look at |
| text | BOOLEAN | true | if the prompt requests text β present, character-accurate, correct color/font/size/placement; if the prompt has NO text, give the top score |
| extraopt | STRING | Extra criteria, one per line ('name: description'), appended after the toggled ones. For anything not in the catalog. | |
| criteria_inopt | STRING | Optional upstream criteria string merged FIRST β chain builders, or start from an existing set. Duplicates (by name) are removed. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| criteria | STRING | β |