Define and maintain character canon under spec/characters/ (identity, motive, resources, behavioral boundaries, relationships, state variables). Use when designing main cast, or when outline/chapters show OOC risk.
Call this skill without being asked when you observe any of the following:
spec/characters/ entries and summarize confirmed character invariants.references/QUESTIONS.md).spec__propose (one entry per id) and follow the template assets/templates/character-entry.md (structure only; do not copy its sample YAML into body)spec__applyspec__query / spec__get to find and read existing entries before creating new ids.spec__propose to generate a reviewable diff; apply with spec__apply only after approval.assets/ is for templates only.spec/characters/ is the OOC prevention layer: it locks down what a character wants, what they can do, what they won’t do, and what relationships/constraints shape their choices.
It exists to:
Owns
Does not own
spec/world/spec/system/ (characters reference them; do not redefine)spec/timeline/Requires (upstream)
spec/premise/ so character roles/arc pressure match the reader promise.spec/system/ for ability boundaries.spec/factions/ for affiliation constraints.Provides (downstream)
Routing rule
At minimum, for each main character, the entry should make these answerable without guessing:
Belongs in spec/characters/:
Does not belong in spec/characters/:
spec/world/spec/system/spec/characters/ (one character per file), each beginning with YAML frontmatter containing a stable id.assets/templates/character-entry.md as the default structure.spec__propose / spec__apply) instead of editing spec files directly.When outline/fine-outline relies on a character constraint (motivation, boundary, relationship, knowledge state), add an anchor @spec:<id> pointing back to the relevant character entry. Anchors are constraints, not provenance.
references/QUESTIONS.mdreferences/PITFALLS.mdreferences/GATE.md