name: monster-creation
description: Author a complete Alaria bestiary creature — canon-integrated lore + at least one outward codex edge + a validated 5e statblock — at Monster-Manual quality, without the convergence/monotony that destroys a bestiary at scale. Carries the anti-slop bar (the one diagnostic: does it hand a GM a live lever this session?) and the anti-convergence rules that are the value-add over plain lore-writing: the death-residue section is OPTIONAL not mandatory, the cinderbound/galebound bound-family litany is banned, resolution beats rotate, CR/role spread is a hard batch gate, naming heads diversify, and a batch passes a read-five-in-a-row gate before it ships. Use when writing any new content/codex/entities/creature-*.md, when running or reviewing a batch, or whenever you need the bestiary quality contract in one place. This skill is the front door; the detailed contract is context/method-taxonomy.md.
Monster creation — the Alaria bestiary quality contract
A creature is not a lore page. It is a complete package: canon-integrated lore + ≥1 outward codex edge + a validated 5e statblock. A lore-only creature does not count, and a statted creature with a generic concept is filler. The ceiling is a Monster Manual; the floor is "this hands a GM something to run." Most of the rules below exist to keep that quality from collapsing into one template repeated 500 times — that convergence, not any single weak entry, is the failure mode this skill prevents.
Read first (don't restate these — reference them)
context/method-taxonomy.md — the full contract: anti-slop bar (§1), the biome-aiming matrix (§2), niche spread (§3), voice (§5), statblock authoring (§6), edges (§7), dedup (§8), CR/role + beat rotation (§9), entity skeleton (§10), checklists + the batch gate (§11). This skill is the distilled front door to it.
content/codex/stats/README.md — the locked statblock format. Author against it; copy a template (black-dragon-dnd5e.yaml, galebound-dnd5e-standard.yaml) and adapt. Do not reinvent the schema here.
docs/worldbuilding/lore-style-guide.md — the voice standard, and world-systems-invariants.md — canon. Consult invariants before any planar/strand/death/magic claim.
- Exemplars (the bar): read
creature-lacuna.md, creature-sunkite.md, creature-pale-congregation.md in full — including their <!-- author-notes -->.
The anti-slop bar — ships only if all eight (method §1, condensed)
- One-sentence distinct hook = the blurb (≤25 words). If it could describe three other entries, it fails.
- Ecological logic — what it eats, what eats it, what it does to people, what people do back. It sits in a food web.
- A reason it exists HERE — a specific named place (with id) or a cosmological condition, never generic global fauna.
- Canon-consistent — every planar/strand/death/magic claim checks against the invariants; conflicts go in
<!-- author-notes -->, never papered over; nothing downstream of the deferred daemon-lineage mechanic (a daemon as MAKER via createdBy is fine).
- No two samey — collision-check name AND concept; when a near-neighbor exists, the dedup goes in
<!-- author-notes --> (the "DEDUP / WHAT IT IS NOT" block), NOT in the public body. Public prose defines the creature POSITIVELY — never a "what it is not" / "Not the X" / "How it differs from Y" section or paragraph. A reader who never heard of the neighbor must not be made to learn it. If, and only if, a distinction is a live at-the-table lever (turning does nothing; it works the dark the lookalike works the light), state it as ONE positive clause woven into the relevant section — never its own header, never a contrast list.
- Voice clean (see below).
- A validated statblock that expresses the fiction; CR chosen from the lore first, then built to.
- ≥1 outward edge tying it into canon (
attunedTo / inhabits / originatedIn / createdBy / participatedIn / worships), authored one direction on the new file, target id verified to exist.
The single diagnostic, applied to every entry: does this hand a GM a live lever they can pull this session? A predator that closes a trade route, a harvested material with a body count, a behavior that changed and no one knows why, a haunt that destroying only makes worse. If not, raise the bar until it does.
Anti-convergence — the heart, and the value-add over plain lore-writing
The pilot proved the floor is high; it also proved that the strong moves converge. Each rule below targets a real pilot tell. These are batch-level obligations, not per-creature niceties.
- The "what it leaves behind when it dies" section is NOT mandatory — the default is to skip it. The CTO is explicit: "I don't necessarily ALWAYS want a 'what it leaves behind' section if it doesn't make sense for that monster." Write one ONLY when the residue is BOTH findable/mechanically distinct AND a live GM lever; it is forbidden on footnote/minor creatures. If the honest answer is "an ordinary carcass" or "it drifts away," say it in one clause and move on. The pilot stretched this onto 16 of 18 standard entries — across 500, a residue section on every creature is the single biggest monotony risk.
- Ban the bound-family litany. Never define a residue by reciting the cinderbound-leaves-heat / galebound-scatters / heftbound-concusses / lodebound-leaves-a-stone list (verbatim in 5/20). If a contrast sharpens it, contrast against exactly ONE named neighbor, once; the full recitation at most once per batch.
- Rotate the "not undead" disclaimer. "Not undead / no necromancer reads it / turning it does nothing" is canon-hygiene, not a lead — state it once, briefly, never as the opener, vary the wording.
- Rotate resolution beats (≤1 per batch, corpus tally). At most one creature per ~5 may resolve on each: (i) killing is futile, clearing buys a season; (ii) holds its catch and disgorges on death; (iii) rescue-clock (kill it in time to recover the victim); (iv) the corpse seeds/becomes the next of its kind. Flag any beat over ~15% of the corpus.
- CR + role spread is a hard gate. Every batch of ~5 includes ≥1 at CR ≤1 AND ≥1 at CR ≥8, ≤2 of any role; a batch clumped in CR 3–7 is rejected. Steer toward the corpus deficit against the 35/35/20/10 target.
- Naming-head diversity. Add the compound head (
-hound/-back/-wade/-wake/-maw/-kin) to the reserved-pattern check; ≤1 of any head per batch; grep the corpus before coining (the pilot shipped 3 "-hound").
- Read-five-in-a-row (the batch gate). Before a batch ships, one reviewer reads all ~5 back-to-back: do they share section order, rhythm, closer, a repeated beat? Structural sameness is the failure the per-creature checklist cannot see. Converge on any axis → rebuild the offenders.
Voice (method §5; lore-style-guide is authoritative — don't restate it)
No boldface anywhere. Straight quotes only. Definitional opening sentence (what it IS + its core wrongness, no warm-up). No rule-of-three / tidy triads. No AI-vocab. No "not X but Y" construction or cousins ("not so much X as Y", "not merely X but Y", "not a X, but a Y") in public prose; define positively or split into concrete contrasting sentences. NO dedicated differentiation section in public prose (### What it is not, ### Not the <creature>, ### How it differs…) — that defines by negation against another entry; the dedup belongs in author-notes (rule 5). Hard burstiness — vary sentence length deliberately. Headers ###, sentence-case. Hooks as *italic titles.* pointing outward to a GM lever. No "scholars believe" hedges (scholar attribution is approval-gated — leave quest-givers unnamed). Mysteries MUST have answers; the hidden answer goes in <!-- author-notes -->. Length follows weight: a footnote prey beast is 2–3 tight sentences with no headers; a cosmologically-grounded singleton earns multi-section depth — earn each section.
Lock-ins (the pilot got these right — they are required, not optional)
- Author-notes discipline (non-negotiable). Every creature logs, in a trailing
<!-- author-notes --> block: the GM answer to any in-text mystery, the canon-coherence proof, every dedup / "what it is NOT" check, and every edge decision. This is what makes a creature auditable; one without it is incomplete.
- Food-web cross-referencing within a biome cluster. A batch sharing a biome names the predator/prey/scavenger links between its creatures and the existing fauna — not five unconnected beasts in one swamp.
- Aim at the deficit. Pull from method §2 (thin biomes — ocean, desert, grass, swamp, slab-underside) and §3 (empty niches — ooze, fungal, daemon-spawned, prey-base, scavenger). Stop adding dragons and northern ice-beasts.
The complete package — what you create per creature
content/codex/entities/creature-<slug>.md — frontmatter per method §10 (id, name, entityType: creature, blurb, tags, weight, atmosphere, relations, role + statblocks refs, review), body in house voice, trailing <!-- author-notes -->.
content/codex/stats/<id>.yaml — sidecar statblock; filename MUST equal the id inside; base on an SRD-5.1 analog, reflavor. Compute mods/saves/skills/HP-vs-hitDice/passivePerception/PB and spell DC (8+PB+mod) / attack (PB+mod) BY HAND — the lint is blind to several. Format per content/codex/stats/README.md.
Definition of done (run before shipping a creature)
- The per-creature checklist in method §11 passes — every box.
node scripts/codex.mts report statlint --strict reports 0 warnings for your block id(s).
- One outward edge, target id verified, one direction only;
node scripts/codex.mts report lint errors 0 after the central build.
- Re-read your blurb: is it the one distinct-hook sentence, ≤25 words, that no other entry could carry?
- The diagnostic, one more time: a GM reading this finds a live lever inside a minute. If not, it is not done.
- If shipping as part of a batch: the read-five-in-a-row gate (above) passes — no shared closer, no repeated beat, CR/role/naming-head spread satisfied.