Skip to content

Critic loop

The critic loop raises the quality of finished work with independent, harsh critics. It is a first-class part of Weld: rubrics are versioned project packs, scores live on Work items, and the merge queue can refuse to auto-merge work below target.

A rubric says what “8.5 art” means for this game. It lists dimensions (for example art, gameplay, code, ux), score anchors that describe what a 4, a 7 and a 9 look like, weights and a target. Rubrics are knowledge packs written and versioned by the humans on the team, usually in .claude/skills/rubric-<kind>/. weld game new adds one for the chosen art style.

Without a project rubric, Weld uses a built-in one: code, ux, art or gameplay.

  1. Make the best version you can. Critics on a half-done draft waste budget.
  2. Independent critique. N critic subagents (3 by default) run in parallel. Each sees only the rubric and the artifact (a diff, files, screenshots from a game.smoke run), never the author’s reasoning, the iteration number or earlier scores. Each returns strict scores from 0 to 10 per dimension, with justification and concrete issues.
  3. Aggregate. The median per dimension, then a weighted overall score. A spread of 3 or more points between critics means the rubric’s anchors are ambiguous, and you are told.
  4. Decide. Target met: stop. Not met and iterations remain: fix the top issues and go again with new critics, which never remember earlier rounds. Cap reached (3 by default, never more than 5): stop and report honestly.

A typical report: art 6.5 → 7.8 → 8.6 (3 iterations, 3 critics, target 8.0 met). Anything that only passed on the last allowed iteration gets a recommended human spot-check.

The critic-loop skill drives this inside Claude Code when you ask Claude to “polish”, “get this to an 8” or “review against the rubric”.

Scores for the merge gate are recorded only by a hub-issued critic run that a human starts. The author never grades its own work, and the weld_score tool isn’t available to agents.

Terminal window
weld agents critique # the project's rubric pack, else the built-in code rubric
weld agents critique --rubric art --critics 3
weld agents critique --no-record # just print the scores

weld agents critique runs one round of critics on git diff main...HEAD, binds it to the commit at the head of the Work’s branch, and records the medians plus overall on your Work item. The hub numbers the iterations. Scores show on the Work item, the dashboard and in quality metrics.

Set targets per project:

Terminal window
weld agents targets # show them
weld agents targets ux=8.5 code=7.5 # set
weld agents targets ux= # remove one
weld agents targets --require-critic true

The merge queue auto-merges only when, for the commit being merged, the latest score in every target dimension meets its target. Below target, the merge waits for a human, who can improve the work or override (weld merge override <merge id>). With --require-critic true, Work with no scores at all also needs a human.

The critics and the agent are told the same rules: never edit the rubric or the target to pass, never steer critics, never shrink the artifact to hide weak parts, never add text aimed at critics, never delete tests or content to remove a complaint. Improve the work, or stop and report.