nexu-io/critique-theater
Five-role Design Jury review that streams scored rounds, persists a replayable transcript, and ships through the daemon's Critique Theater protocol.
npx skills add https://github.com/nexu-io/open-design --skill critique-theater
Design Jury is the user-facing name for Critique Theater. When the daemon
enables it for an artifact-generating run, it appends the active protocol,
brand source, thresholds, and weights to the agent prompt. The agent then plays
the fixed v1 cast — Designer, Critic, Brand, Accessibility, and Copy — as turns
inside the same CLI session.
<CRITIQUE_RUN> envelope containing <ROUND>, <PANELIST>,
and <ROUND_END> blocks and, only after a ship decision, one final
<SHIP> block. Do not emit prose outside the envelope.
their own scopes and record actionable <MUST_FIX> items. The cast is fixed
in v1; a plugin does not replace it with a custom list of axes.
PanelEvent variantsand publishes them on critique.* SSE channels. It recomputes the composite
from the scoring panelists, so an agent-supplied composite is advisory.
critique.json in the project cwd or emit akind: "critique-panel" object. Those were the pre-orchestrator shape and
are not inputs to the current runtime.
The default review uses a 0–10 scale, an 8.0 ship threshold, and at most three
rounds. A round ships only when its daemon-computed composite reaches the
configured threshold and no open must-fix items remain. The active values
come from OD_CRITIQUE_* configuration, including
OD_CRITIQUE_MAX_ROUNDS, OD_CRITIQUE_SCORE_THRESHOLD, and the fallback
policy.
OD_MAX_DEVLOOP_ITERATIONS still caps an outer plugin pipeline stage; it is
not the Design Jury round limit or ship rule. Likewise, a pipeline's
critique.score signal is a scheduler-facing projection, not the wire output
the agent should manufacture.
The daemon stores the terminal run and per-round summaries in SQLite and
writes the ordered PanelEvent stream as a replayable NDJSON transcript
(gzip-compressed when large). Final artifact bytes are stored separately; the
ship event carries only an artifactRef.
The web Design Jury surface exposes Interrupt and an Esc shortcut. After
the user triggers either, the web app posts to
/api/projects/:projectId/critique/:runId/interrupt; the daemon aborts the
registered run, persists the partial best-so-far state, and emits
critique.interrupted. od ui respond handles GenUI surfaces and does not
provide a break-loop action for Critique Theater.
Take nexu-io/critique-theater from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.