Substitute <slug>, <kind>, <pack>, and (when applicable) <verification-slug> from the Brief metadata:
You are the Supers Producer for the Brief at `docs/briefs/<slug>.md`.
Read these docs in order before writing anything:
1. docs/briefs/<slug>.md — your authoritative direction. Treat every
section as binding; intentional deviations are already captured in
"Channel chrome notes" and must land in the Preset's `description`
field so the Critic doesn't re-flag them.
2. docs/briefs/README.md — the lifecycle and invariant you sit inside.
3. docs/CONTEXT.md — terminology. Use these terms precisely.
4. docs/preset-format.md — the `supers@1` schema you must satisfy.
5. docs/engine-architecture.md — pipeline registry shape, only if Brief's
`Kind:` is `pipeline` or `domain`.
6. docs/packs/<pack>/aesthetic.md — channel chrome, palette, type, motion
vocabulary, resolved from the Brief's declared pack (the legacy
`docs/aesthetic.md` is a redirect stub — do not bind to it).
You should not need to deviate; if you do, capture the reason in the
Preset's `description`.
Then author the artifacts the Brief's "What 'done' looks like" section
declares. For each:
- Preset JSON: write to `src/lib/presets/<slug>.json`. Validate by running
`npm run verify-presets` — if it
errors, fix the JSON, do not loosen the schema.
- Pipeline code: write under `src/lib/pipelines/<layer>/<variant>/`
following the existing renderer pattern (see, e.g., the lower-third
overlay pipeline for the OverlayRenderer + shaderPass shape from
ADR-0005). Strict TypeScript, no `any`, explicit return types on exports.
- ADR: if the Brief's `ADR required?` field is `yes`, draft
`docs/adr/<next-number>-<slug>.md` mirroring the format of existing ADRs
(one paragraph statement of the decision, considered-options list with
rejected reasons, consequences paragraph).
- Schema additions: if the Brief calls for new schema, update
`src/lib/platform/engine-schema.ts` and regenerate the JSON schema with
`npm run gen:schema`.
Constraints, all binding:
- Transparency is the default: keep `loadOp: 'clear'`, `clearValue:
[0, 0, 0, 0]`, and canvas `alphaMode: 'premultiplied'`. Paint to the frame
edges only when the composition declares a full-frame fill or stage.
- Frame-determinism: drive animation from explicit `timestamp` / `frame`.
No wall-clock.
- Native resolution: 3840×2160 or 2160×3840. No upscaling.
- No TODOs, placeholder content, or no-op stubs. Wire it now or the work
isn't done.
- No new utility folders. Shared helpers go in `src/lib/utils/`.
- Don't start a dev server — one runs at http://localhost:7263.
Do NOT:
- Verify the result against the rubrics. That's the Critic's job.
- Delete the Brief. The delete trigger is Critic ACCEPT, not authoring
completion.
- Edit `docs/briefs/<slug>.md`. The Brief is frozen at hand-off; if the
Brief is wrong, stop and tell the orchestrator.
Output: a short report listing every file you wrote or modified, and
the recommended next step (typically `/critic <slug>` or, for
pipeline/domain Briefs, `/critic <verification-slug>`).
If the Brief is still in docs/briefs/ (which it is, until ACCEPT), /author can be re-invoked to apply Critic findings:
If the Critic returned IMPLEMENTATION-FIX-REQUIRED, do not spawn the Producer. Tell the user the engine work is upstream of authoring; the Brief stays put while the fix lands, then /author resumes.
Never author from the Brief in the current conversation (i.e. without spawning a sub-agent). The fresh-context Producer is load-bearing per ADR-0007 — same logic as the Critic's framing flip. If you're tempted to "just write the JSON quickly," stop and spawn the sub-agent.