feat(skills): add project-local world-building skill
Author gritty, disposition-gated Margreave content (lore bible + hand-authored quest/item/location/origin JSON) that reconciles against existing canon before writing, holds the world's hard-by-default / warm-when-earned NPC tone, and keeps the content_build --check gate green. - SKILL.md: read-before-write workflow, read-only on existing canon (propose diffs, require approval), build+check+pytest as the done bar. - references/schema.md: full bible + JSON contract, secrecy scale, gate model. - references/tone.md: tone contract + NPC disposition-warmth model. - scripts/canon_index.py: dumps existing ids for reconciliation. - evals/: 3 test cases (all green in isolated-worktree runs). Un-ignore /.claude/skills/ so project skills are versioned like code; all other .claude/ dirs (root + nested api/client) stay ignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HuHRPE7VfppUJEaoGBEUqZ
This commit is contained in:
104
.claude/skills/world-building/references/tone.md
Normal file
104
.claude/skills/world-building/references/tone.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# Tone — the Margreave
|
||||
|
||||
The world's voice. Distilled from charter §3 (tone), §7 (Luck), §9 (companions).
|
||||
Read before writing any `body`, persona, or narrative prose. Getting this right is
|
||||
most of the job — the schema is easy; the voice is the product.
|
||||
|
||||
## The core stance
|
||||
|
||||
**Gritty, not grim.** The reference is Batman in the DC comics — not Warhammer,
|
||||
not Care Bears. The world has real problems and does not care about the player.
|
||||
People get hangovers, vomit, curse, get infected wounds. But it is not a misery
|
||||
engine. Grimdark is as wrong as cozy. The world is *indifferent*, and indifference
|
||||
is harder and more interesting than cruelty.
|
||||
|
||||
**The world is played straight.** Comedy emerges from situation, never from the
|
||||
narrator. Nothing is ever "hilariously" anything. The narrator is dry and does not
|
||||
wink. When you're tempted to make prose funny, make the *situation* absurd and
|
||||
describe it flatly instead.
|
||||
|
||||
## Register
|
||||
|
||||
- **Profanity** is permitted and should feel *earned*, not decorative.
|
||||
- **Violence has weight.** Don't gloss it and don't wallow.
|
||||
- **Sex exists** and is discussed the way adults discuss it — bluntly, and mostly
|
||||
as a source of trouble.
|
||||
- **Bodies are real.** Fatigue, hunger, cold, drink, injury. The world touches the
|
||||
characters physically.
|
||||
|
||||
## The narrator voice
|
||||
|
||||
Dry. Economical. Observational. States what is, lets the reader feel the weight.
|
||||
It never editorializes, never reassures, never jokes. A good body reads like
|
||||
someone who has seen a lot and is not impressed, telling you the truth plainly.
|
||||
|
||||
Look at the `duncarrow.md` bodies: "prosperous and orderly place, which is exactly
|
||||
the reputation its mayor has spent fifteen years building and depends on." The
|
||||
menace is in the plain statement, not in adjectives.
|
||||
|
||||
## NPCs: hard by default, warm when earned
|
||||
|
||||
This is the load-bearing pattern for the user's world. **The world doesn't care
|
||||
about you — but a person who comes to trust you does.** That arc is what the
|
||||
disposition ladder exists to deliver, and it's what makes the coldness bearable.
|
||||
|
||||
### Default posture: guarded
|
||||
|
||||
A Margreave NPC meets a stranger with wariness, not hostility — they have their
|
||||
own troubles and no reason to spend them on you. Mechanically:
|
||||
|
||||
- `start_disposition` is usually `cold` or `neutral`, rarely `warm`.
|
||||
- A frightened or burned NPC withholds **more** than a stranger would expect, not
|
||||
less (fear reads as prickliness — Mera Fenn is the model). `hostile` is a
|
||||
reachable floor: push them, threaten, side against them, and they close entirely.
|
||||
- What they reveal is gated. Low rungs get you surface; the personal and the
|
||||
dangerous sit higher up.
|
||||
|
||||
### The warm turn: real, specific, earned
|
||||
|
||||
When the player climbs the ladder, two things change together:
|
||||
|
||||
1. **They reveal more** — deeper `knows` gates unlock.
|
||||
2. **Their manner softens** — write the persona and `disposition_notes` so that at
|
||||
`warm`/`trusted` the dryness turns to something human: fondness, relief at being
|
||||
heard, blunt loyalty. Old Teague's "dryness turns to something almost fond."
|
||||
|
||||
The warmth is never sycophantic and never a personality transplant — a hard person
|
||||
stays recognizably themselves, just no longer guarded against *you*. That's more
|
||||
affecting than a switch from mean to nice.
|
||||
|
||||
**Don't** write an NPC who is friendly from hello (breaks the world) or one who
|
||||
stays cold no matter what (makes the ladder pointless and the world hopeless). The
|
||||
range between those poles is the whole design.
|
||||
|
||||
## The companions set the tone (charter §9)
|
||||
|
||||
If you write companion content, hold these exactly — they carry the register:
|
||||
|
||||
- **Cadwyn Vell (Bard, NPC-only):** genuinely talented, reflexively lies about
|
||||
small things and truthfully about large ones, does not know he is the problem and
|
||||
never becomes self-aware. Florid performing, clipped when scared. The source of
|
||||
chaos.
|
||||
- **Brannoc Thane (Sellsword):** dry, warm, economical, twenty years past his
|
||||
prime and at peace with it. Says devastating things in the tone of a man
|
||||
discussing weather. Holds the humiliation log — the callback engine. Not a grump;
|
||||
*fond* of you, which is what makes it land.
|
||||
- The pair dislike each other mildly and permanently, and neither will leave the
|
||||
other. Cadwyn generates, Brannoc annotates. Don't add a third to the loop.
|
||||
|
||||
## Luck's fingerprint (charter §7)
|
||||
|
||||
If content touches Luck: it is **visible in prose, never in numbers.** Never state
|
||||
a Luck value; render a descriptor ("Fortune spits on you"). Bad luck costs
|
||||
**dignity, not progress** — embarrassment, inconvenience, property damage, social
|
||||
catastrophe, minor injury. Never quest failure, permanent loss, or death. A cursed
|
||||
item that grants power at a Luck cost (+STR / −LCK) is the most interesting kind of
|
||||
item — lean into that.
|
||||
|
||||
## Quick self-check before you ship a body
|
||||
|
||||
- Did the narrator stay dry and out of the joke?
|
||||
- Is the hardness *indifference*, not sadism?
|
||||
- Does the NPC start guarded, with a real warm turn available up the ladder?
|
||||
- Would profanity/violence/sex here feel earned, not decorative?
|
||||
- Does anything contradict an existing canon body? (If yes → reconcile, don't ship.)
|
||||
Reference in New Issue
Block a user