A storytelling operating system on Claude Code. Inspired by and modeled on career-ops, adapted for narratives, brand guidelines, and story craft.
- Drafts stories in your voice, structured with proven frameworks (STAR, Hero's Journey, SCQA, Pixar/BAB/Cole)
- Lints your voice with a measured Voice Fingerprint of your own corpus
- Runs parallel persona critiques (Audience Simulator) — every piece reviewed by a skeptical CFO, a busy exec, a junior IC, etc. — each one a subagent
- Renders your brand guidelines to a polished distributable Brand Guide PDF
- Supports a hybrid protagonist model: you personally + 2–3 brands, each with isolated voice/messaging/audiences
- Tracks every draft, every critique, every published piece
Same as career-ops: Claude-as-OS-kernel reading and writing Markdown + YAML. No hidden state. Every decision, every voice rule, every audience persona is in a text file you can read, edit, and version. The AI is the interface — you say "make my brand voice punchier" and Claude edits your files.
/story-ops → discovery menu
/story-ops draft <idea> --brand=X --structure=scqa --surface=linkedin
/story-ops rewrite <file> --brand=X
/story-ops critique <file> --brand=X → Audience Simulator
/story-ops voice-check <file> --brand=X → Voice Fingerprint linter
/story-ops brand-guide --brand=X → render PDF
/story-ops tracker → status across all stories
/story-ops mine <transcript> --brand=X → extract story candidates
# 1. Install deps (Playwright for the brand-guide PDF)
npm install
npx playwright install chromium
# 2. First run in Claude Code triggers onboarding
# Answer 3 questions: protagonists, surfaces, voice notes.
# 3. Try it
# /story-ops draft --brand=personal --structure=scqa "idea: why I built story-ops"story-ops/
├── .claude/skills/story-ops/SKILL.md # router
├── CLAUDE.md # master instructions
├── DATA_CONTRACT.md # user-layer vs system-layer
├── modes/ # execution prompts
├── config/profile.yml # protagonists
├── brands/<brand>/ # per-brand voice/messaging/audiences/visual/corpus
├── stories/{drafts,published}/ # your pieces
├── templates/ # story structures, surface formats, brand-guide HTML
├── scripts/ # Node utilities (.mjs)
├── data/ # pipeline inbox, feedback log
├── reports/ # critique outputs
└── output/ # rendered PDFs
See DATA_CONTRACT.md for what's gitignored (user layer) and what's committed (system layer).
Maintain brands/<b>/{voice,messaging,audiences,visual}.* as markdown + YAML. Run /story-ops brand-guide --brand=X → polished distributable PDF with palette swatches, typography specimens, do/don't examples.
scripts/voice-fingerprint.mjs samples brands/<b>/corpus/ and emits measured features: sentence-length distribution, reading level, device frequencies, n-gram signatures. /story-ops voice-check lints drafts against the fingerprint + hand-written rules in voice.md. If your corpus is empty, fingerprint runs in seed mode from voice.md alone and matures as you publish.
Every critique run launches N subagents in parallel — one per persona in brands/<b>/audiences.yml. Each persona returns a lens-specific review (what they reward, what they punish). The main agent synthesizes consensus vs divergence into a single report.
Seeded for later: Narrative Continuity Check, Repurposing Graph, Pillar Drift Detector, Hook Library, Pattern Analysis on engagement, Multi-language voice variants, Quote/Receipt manager, Publishing-cadence meter.
The career-ops pattern is by santifer. story-ops adapts the same OS-kernel approach for storytelling.