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:
2026-07-12 11:15:34 -05:00
parent a3506f7f02
commit b15bd2bb1e
6 changed files with 643 additions and 1 deletions

9
.gitignore vendored
View File

@@ -60,4 +60,11 @@ Thumbs.db
# ─────────────────────────────────────────────
# Claude Code harness session/state files
# ─────────────────────────────────────────────
.claude/
# Ignore every .claude/ dir anywhere in the tree...
**/.claude/
# ...but keep the repo-root .claude/skills/ dir: project-local skills are
# checked-in tooling, versioned like code. (Re-include the root dir, drop its
# other contents, then re-include skills/.)
!/.claude/
/.claude/*
!/.claude/skills/