Author an Asset-Generation Test Case
Scaffold an asset-generation test case of
asset_kind sprite or sprite-sheet: a 2D image a model draws with the draw
or draw-sheet binary, one recorded operation at a time, to match a written
brief. Read
Authoring an Asset-Generation Test Case
for the full procedure;
Sprite cases is the
authoritative schema.
The sibling asset kinds each have their own quickstart: 3D models and rigs, UI art, PBR materials, particle effects, and audio.
Layout
Section titled “Layout”A version lives at
test-cases/asset-generation/<difficulty>/<slug>/<version>/. A version with runs
recorded against it is frozen; revise a case by adding a new version.
test-cases/asset-generation/<difficulty>/<slug>/<version>/ test-case.toml # manifest: type, asset_kind, canvas, tool, output variants/ # one standalone TOML file per variant prompt.hbs # rendered into the harness instruction; not seeded changelog.md # required per-version entry; not seeded description.md # site blurb; not seeded specs/brief.md # what to draw and how the tool behaves; seededThe case is reviewed by a human against its brief, so it declares no
[[reference]] and carries no target image.
- Pick a catalog slug and the subject to draw. It should read clearly at the canvas size and need no in-game context.
- Write
specs/brief.md: the subject, its silhouette, the exact palette, framing, and how the tool behaves, including that--helplists the operations. Keep it self-contained; the model sees only the seeded files. - Write
prompt.hbs. It renders in strict mode against{{variant.*}},{{#each specs}},{{workspace}}, and{{time_limit_hours}}. Point the model at the binary’s--help. - Write
test-case.toml: metadata (name,difficulty,tags), the requiredchangelog,type = "asset-generation",asset_kind("sprite", the default, or"sprite-sheet"), thevariantslist, and the[canvas],[tool], and[output]tables. - A sprite-sheet case adds the
[sheet]table:[[sheet.frame]]entries, each carrying just anindex, and named[[sheet.sequence]]animations, each carrying aslug, an orderedframeslist, and anfpsrate. - Declare the single
overall[[domain]]a human rates the drawing under. The drawing is judged as a whole against its brief on that one rating, so the case declares no[[review_item]]checklist, no[build], and no[[check]].
Worked examples: spectra-fighter, spectra-flux, spectra-prism, and
spectra-shard for single sprites; lanternjaw, drifter, gloamfin,
flarefish, trench-walls, and flare-bloom for sprite sheets. Read the one
matching the kind you are authoring.
Validate
Section titled “Validate”Run these for every variant.
npm run lint:specstcab prompt --test-case <slug> --version <version> --variant <variant>tcab seed --test-case <slug> --version <version> --variant <variant>prompt catches strict-mode template and manifest errors. seed writes the
seeded repository under tmp/, holding the brief, draw.config.json, an empty
layers.json, and a blank starting frame per declared frame.
Next steps
Section titled “Next steps”- Create a Single-Sprite Variant
or
Create a Sprite-Sheet Variant,
picked by the case’s
asset_kind. - Run a Test Case to exercise it end to end.