Author a Skinned Character Test Case
Scaffold an asset-generation test case for
an organic character: one continuous skin bound to a model-invented skeleton,
deforming smoothly across its joints, sculpted with the mc-skin, sn-skin, or
dc-skin binary. Read
Authoring a Skinned Character Test Case
for the full procedure;
Skinned cases is the
authoritative schema.
A rigid machine that articulates about pivots, such as a tank or a mech, belongs in a mesh-animation or voxel-animation case. A character that never deforms belongs in a static mesh-model case.
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, voxel, tool, output, model 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 # the character and tool behavior; seededA run seeds the brief, <binary>.config.json, and a rig.json pre-populated
with the required animations alone, with the skinning binary on PATH. Its
--help is the operation contract. Core emits the single mesh.glb and the
filled rig.json on render. The case declares no [[reference]] and carries
no target mesh.
- Pick a catalog slug and the character to sculpt: a body whose motion is continuous skin deformation, achievable with the CSG primitives.
- Pick the
asset_kindfrom the character’s surface:mc-skinnedfor low-poly,sn-skinnedfor smooth mid-fidelity,dc-skinnedfor sharp-edged and armored. It fixes[tool].binaryto the matching-skinbinary. - Write
specs/brief.md: the character, silhouette, orientation (+z forward, y up), the exact opaque#rrggbbpalette, the required animations and how each reads as continuous-skin deformation, that the skeleton is the model’s to invent, and thatrenderemits the geometry. Keep the brief self-contained. - Write
prompt.hbs. It renders in strict mode against{{variant.*}},{{#each specs}},{{workspace}},{{time_limit_hours}}, and{{voxel.*}}. Point the model at the binary’s--helpand state the hard requirements: sculpt and rig only through the tool, author every animation, andrenderbefore returning. - Write
test-case.toml: metadata (name,difficulty,tags), the requiredchangelog,type = "asset-generation",asset_kind("mc-skinned","sn-skinned", or"dc-skinned"), and thevariantslist. - Declare
[voxel]for the field bounds:width,height(up),depth, and abackgroundused as the preview clear color. - Declare
[tool]with the skinning binary and apreview, and[output]with anactionslog. Both name single files. A skinned case is the animated kind that emits one whole-body mesh, so the{part}token is rejected. - Declare
[model]carrying[[model.animation]]entries by identity alone: a uniquename, aloopflag, and anauto_playflag, wheretruemeans a continuous breathing idle. The skeleton, weights, period, and F-curves are the model’s. - Declare the single
overall[[domain]]. The character is judged as a whole against its brief on that one rating, so the case declares no[[review_item]]checklist, no[[reference]], no[build], and no[[check]].
Worked examples: siege-husk for mc-skinned, caldera-slag for sn-skinned,
and sunfront-trooper for dc-skinned.
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, including a stray
{part} token and a missing required table. seed writes the seeded repository
under tmp/, where you confirm the brief, the tool config, and the pre-seeded
rig.json are self-contained.
Next steps
Section titled “Next steps”- Run a Test Case to exercise it end to end.
- Review a Run to score how convincingly the skin deforms across joints.