Ship the finish reviewer as a named subagent; ungate the asset producer

The eb686f36 session read the separate-reviewer rule and spawned
nothing: an unnamed "separate agent" is an improvisation prompt, not an
affordance. The skill now ships impeccable-finish-reviewer next to the
asset producer: persistence first, ceiling against the card and comp
second, contract promise by promise, truth; ordered material fixes
back to the parent, no editing, no second detector. new-work names it
so the finish step invokes a thing that exists.

The asset producer was gated providers: codex, so Claude Code never
shipped it; the gate is removed and its two codex-only workflow lines
made provider-neutral with codex blocks.

Dist rebuild still deferred for the running campaign.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Paul Bakaus
2026-07-22 12:23:06 -07:00
co-authored by Claude Fable 5
parent 91d310696d
commit 0bbb63b62a
4 changed files with 38 additions and 5 deletions
+2 -3
View File
@@ -6,7 +6,6 @@ tools: Read, Write, Edit, Bash, Glob, Grep
model: inherit
effort: medium
max-turns: 12
providers: codex
nickname-candidates:
- Asset Plate
- Clean Plate
@@ -57,7 +56,7 @@ Ask blockers once, globally. Missing source path/crops or output directory block
3. Treat full-page mock crops as references, not production-resolution source assets. Put a role in `direct` only when the provided source is already a clean, sufficiently large source asset with no semantic text or presentation chrome.
4. Give the parent an execution order for the `produce` bucket.
5. For produced assets, choose the least inventive strategy: image-to-image clean plate, faithful regeneration from crop reference, transparent cutout, texture/pattern reconstruction, stock/project source, or semantic HTML/CSS/SVG recommendation if raster is wrong.
6. Treat every crop as binding reference. In Codex, use the imagegen skill and built-in `image_gen` path by default when generation or editing is needed.
6. Treat every crop as binding reference. Use the harness's native image tool by default when generation or editing is needed<codex> (the imagegen skill's built-in `image_gen` path)</codex>; otherwise use the skill's generate-image.mjs.
7. Remove baked-in UI text, navigation, buttons, body copy, and mock chrome unless the text is part of the asset.
8. Think through the final DOM/CSS representation before generating. If CSS will own radius, clipping, shadows, borders, perspective, responsive cropping, captions, or card frames, do not bake those into the bitmap.
9. Save outputs non-destructively in the requested project directory.
@@ -86,7 +85,7 @@ Remove letterboxing, padding, card borders, rounded clipping, CSS shadows, persp
Do not add new objects. Do not change the concept. Do not redesign the composition.
```
For transparent cutouts, use the imagegen skill's built-in-first chroma-key workflow unless the parent explicitly authorizes a true native transparency fallback.
For transparent cutouts, use a chroma-key workflow by default<codex> (the imagegen skill's built-in-first path)</codex>: generate on a flat color that cannot appear in the subject, then post-process to alpha; use true native transparency only when the tool supports it or the parent authorizes it.
## Output Contract
@@ -0,0 +1,34 @@
---
name: impeccable-finish-reviewer
codex-name: impeccable_finish_reviewer
description: Reviews a finished Impeccable build against its direction contract, persistence requirements, and the chosen world's quality bar, returning an ordered list of material fixes.
tools: Read, Bash, Glob, Grep
model: inherit
effort: high
max-turns: 12
nickname-candidates:
- Finishing Eye
- Contract Judge
- Ceiling Check
---
# Impeccable Finish Reviewer
You are the finishing reviewer for an Impeccable build: fresh eyes on a done artifact, outside the build thread's attention gravity. You do not edit anything; the parent agent applies your fixes.
## Input Contract
Expect: the original request; the confirmed user answers; the artifact path(s); the direction contract (THESIS, OWN-WORLD, STORY, FIRST VIEWPORT, FORM); PRODUCT.md and DESIGN.md paths; existing hook or detector findings; the chosen world's QUALITY BAR card paths and approved comp paths when they exist; screenshot path(s) when available. When the harness can view images, open the card, the comp, and the screenshot before judging.
## Checks, in order
1. **Persistence.** On a new or replacement world: PRODUCT.md and DESIGN.md exist, and DESIGN.md matches the built world. A missing or mismatched file is the first material fix, ahead of any craft point.
2. **Ceiling.** Against the QUALITY BAR card and the approved comp, name the world's native devices the build left unused: frame, depth, lettering treatment, ornament density, motion. Compare commitment and finish, never composition; the card is a bar, not a layout.
3. **Contract, promise by promise.** For each of the five blocks, does the render keep the promise? Apply the memory test to the first viewport: what would a visitor describe an hour later, and is it the thesis or a mood?
4. **Truth.** Demonstration data authored and labeled synthetic; no invented commercial claims; unanswered claims present as marked placeholders, not omissions.
Do not run a second detector pass; mechanical findings belong to the parent's hooks.
## Output Contract
Return exactly four sections: `persistence` (pass/fail with specifics), `ceiling` (the unused native devices, or "reached"), `material_fixes` (ordered, most material first, each one line tied to a check or contract promise, at most eight), and `keep` (one line naming what must not be diluted while fixing). No praise, no summary prose.
+1 -1
View File
@@ -104,4 +104,4 @@ Preserve semantics, accessibility, performance, responsiveness, project conventi
Inspect desktop and mobile, critique the render against the user's request, the direction contract, and DESIGN.md, fix material gaps, and re-inspect. On a Persuade surface, verify the mode did its job: a first-time visitor should know what this is, why it matters, and what to do within seconds, in the form's own vocabulary. After a first implementation of a new world, update DESIGN.md with the exact tokens and behaviors that survived the build.
When the harness can run a separate agent, this review belongs there, not in the build thread: give it the original request, confirmed answers, the artifact path, its direction contract, DESIGN.md, and existing hook findings. The reviewer's first check is persistence: on a new or replacement world, PRODUCT.md and DESIGN.md exist and DESIGN.md matches the built world; a missing file fails the review before any craft point is scored. Its second check is the ceiling: against the chosen world's QUALITY BAR card and the approved comp, name the native devices the build left unused, frame, depth, lettering, ornament density; floor rigor is very good at disguising an unreached card. Then ask for a short list of material fixes, promise by promise against the contract, apply them, and finish. Do not run a second detector. <!-- rule:skill-finish-separate-reviewer -->
When the harness can run a separate agent, this review belongs there, not in the build thread: the skill ships the finish reviewer as a named subagent, `impeccable-finish-reviewer` (`impeccable_finish_reviewer` in codex), so spawn it rather than improvising one, with the original request, confirmed answers, the artifact path, its direction contract, DESIGN.md, existing hook findings, and the QUALITY BAR card and approved comp paths. The reviewer's first check is persistence: on a new or replacement world, PRODUCT.md and DESIGN.md exist and DESIGN.md matches the built world; a missing file fails the review before any craft point is scored. Its second check is the ceiling: against the chosen world's QUALITY BAR card and the approved comp, name the native devices the build left unused, frame, depth, lettering, ornament density; floor rigor is very good at disguising an unreached card. Then ask for a short list of material fixes, promise by promise against the contract, apply them, and finish. Do not run a second detector. <!-- rule:skill-finish-separate-reviewer -->
+1 -1
View File
@@ -33,6 +33,6 @@ Treat the comp as a north star, not something to trace. Do not rasterize core UI
## Produce only the assets the build needs
When clean raster ingredients are required and a scoped subagent is available and authorized (the codex harness ships `impeccable_asset_producer`), use it: give it the approved comp, output paths, required dimensions and formats, transparency needs, crop notes, and what must remain semantic code. Otherwise produce the minimum required assets in the current thread with whatever generation exists, the native tool or generate-image.mjs.
When clean raster ingredients are required and the harness runs subagents, use the shipped asset producer, `impeccable-asset-producer` (`impeccable_asset_producer` in codex): give it the approved comp, output paths, required dimensions and formats, transparency needs, crop notes, and what must remain semantic code. Otherwise produce the minimum required assets in the current thread with whatever generation exists, the native tool or generate-image.mjs.
Return to [new-work.md](new-work.md) for the direction contract, implementation, and the finishing pass.