Skip to content

Holocron v1.2.0

Choose a tag to compare

@github-actions github-actions released this 11 May 03:31
· 9 commits to main since this release

Author voice as a first-class concept. v1.1.0's /holocron:adopt flow leaked language suggesting the plugin could "match one of your voice personas" — referring to the critic personas (Lucas, Zahn, Stover, Karpyshyn, Traviss, James Wood). That was a misread of intent. Those personas are reviewers only; the plugin's purpose is to help the author develop their own voice from the start, not to imitate published writers. This release makes that explicit and structural.

The author's voice now lives in a dedicated, canonical document (craft/voice.md) generated during a new dedicated wizard phase (Phase 2: Voice, between Era and Premise). Every agent reads it as authoritative via a project-level CLAUDE.md that pulls in the voice declaration as shared context. The writer agent's hierarchy is explicit: craft/voice.md overrides its built-in literary references (Cusk, Offill, Ishiguro, Karpyshyn, Stover, Zahn, Traviss) every time they conflict. Voice is portable across projects via a new import flow — it's the author's, not the story's. The adopt flow no longer auto-writes the declared voice; it produces raw evidence (craft/voice-analysis.md) and the author authors voice.md themselves during the wizard.

Added

  • templates/standalone-story/craft/voice.md — new canonical author-voice document. Sections: How I sound, Rhythm, Distance & interiority, Register, What I am NOT trying to sound like, Sample paragraph, Imported from. Top-of-file disclaimer states clearly that the critic personas review work; they are not voice targets.
  • templates/standalone-story/CLAUDE.md — new project-level shared agent context. Sections: Author Voice (transcludes voice.md), Craft Rules pointer, Critic Personas reminder, Reference Points (absorbed-not-imitated). This file is read by every Holocron agent when it touches the project.
  • agents/new-project.md — new Phase 2: Voice between Era (Phase 1) and Premise (now Phase 3). Three paths: Import from another Holocron project (voice is yours; it travels with you across projects); Write fresh, guided by open questions that capture the author's words verbatim; Starter template for the author to fill in themselves. Auto-generates craft/voice.md and CLAUDE.md. Adoption-mode integration surfaces craft/voice-analysis.md as raw evidence and asks the writer to author voice.md themselves.
  • Voice surfaces on the dashboard. Briefing tab gets a Voice card (status: declared / evidence-only / missing; 2–3 line excerpt of "How I sound"; last-modified; CTA if missing). Workshop tab gets a Voice section (consistency stats, voice-drift flags from reviews, link to voice.md). --deep mode adds voice-vs-declared consistency: per-chapter sentence rhythm + POV/tense/distance compared against the author's declared voice.

Changed

  • Phase renumbering — schema v2. Inserting Phase 2 (Voice) shifts every downstream phase by one. New order: 0 Setup, 1 Era, 2 Voice, 3 Premise, 4 Characters, 5 World, 6 Roadmap, 7 Dashboard, 8 Ready to Write. .holocron-checkpoint.json bumps to schemaVersion: 2. Existing v1 projects still load — /holocron:go treats the missing 2_voice phase as incomplete and offers to run it before continuing.
  • agents/new-project.md — Phase 3 (formerly Phase 2: Premise & Theme) register question rewritten. Persona-named options removed entirely ("Karpyshyn-style moral grey", "Stover-style intensity", "Traviss-style military", "Zahn-style tactical", "Lucas-mythic-operatic" — gone). Replaced with Story atmosphere: content/emotional-aesthetic descriptors ("Morally-grey protagonist", "Intense / philosophical", "Tactical / military", "System-rigorous", "Operatic / mythic", "Mixed"). Explicit disclaimer above the options: "This is the STORY's atmosphere — its emotional aesthetic. It is separate from YOUR voice (declared in Phase 2). The named critics REVIEW your work; they are not voice models."
  • agents/writer.md — new "The Author's Voice Comes First" section at the top of the agent body, asserting that craft/voice.md is authoritative and overrides every reference and craft default the agent carries. The existing "Your Sensibility" section is preserved but explicitly reframed as absorbed background craft, never voice targets — the section now opens with a guard rail stating the author's declared voice always wins on conflict. The "Before You Write" reading hierarchy is explicit: CLAUDE.md (1) → craft/voice.md (2) → craft/tone.md (3) → README (4) → characters (5) → outline (6) → prior chapters (7). Missing voice.md is a hard-stop, not a fall-through.
  • agents/voice-analyzer.md — reframed from "produces a voice report" to "extracts voice EVIDENCE". Now writes craft/voice-analysis.md directly in adoption mode (was: returned the report inline for the draft-extractor to consume). The output format adds Rhythm & Sentence Patterns, Narrative Distance, Sample Passages, and "What the prose currently AVOIDS" sections. The "Recommendations" section is removed — the author decides what to do with the evidence; the analyzer reports. Frontmatter description explicitly states: does NOT write craft/voice.md (that's the author's to write).
  • agents/draft-extractor.md — output split into three files instead of two. .holocron-adoption.json and craft/voice-analysis.md (raw evidence) and craft/tone.md (mechanics only — no Voice section anymore). The persona-named register field in phase3_premise (renumbered from phase2_premise) is replaced with storyAtmosphere, with persona names explicitly disallowed. The voiceProfile block in the JSON drops the register field and adds characteristicMoves, dashStyle, dialogueQuotes — observation-only data. Phase keys renumbered to match schema v2 (phase3_premise, phase4_characters, phase5_world, phase6_roadmap). Explicit guard rails: never write craft/voice.md; the author authors it during the wizard.
  • skills/adopt/skill.md — description reframed: extracts "voice evidence" (not "voice"). Step-by-step prose updated to make explicit that voice-analyzer produces evidence at craft/voice-analysis.md and the author authors craft/voice.md themselves during the wizard's Voice phase. The rewrite-gate prompt to the writer agent now reads craft/voice.md as authoritative ahead of craft/tone.md (mechanics).
  • skills/dashboard/skill.md — files-read list adds craft/voice.md, craft/voice-analysis.md, and CLAUDE.md. Briefing tab and Workshop tab descriptions updated to surface voice. --deep mode adds voice-vs-declared consistency analysis.
  • templates/standalone-story/craft/tone.md — Voice section stripped. File is now mechanics only (POV, tense, style guide, scene-break marker, internal-thought style, project-specific overrides). Header points readers to voice.md for voice.
  • templates/standalone-story/README.md — "Tone & References" section refactored into "Voice & Craft". The persona-named reference list is reframed as "Critics who will review you" (explicitly: not people to write like). Outside-genre references explained as absorbed-by-the-writer-agent background craft, never voice targets.
  • README.md (plugin root) — Status block, project-structure block, Personas section all updated for the voice-first framing. Personas section header changed to "Personas (reviewers, NOT voice models)" with an explicit disclaimer at the top.
  • .claude-plugin/plugin.json, .claude-plugin/marketplace.json — version bumped to 1.2.0.

Notes

  • Why personas can't be voice models. Karpyshyn, Stover, Zahn, Traviss, Lucas, and James Wood are reviewers carrying single concerns (moral-grey psychology, philosophical violence, system rigor, Mandalorian culture, mythic structure, sentence-craft). They're calibrated to evaluate prose against those concerns — not to generate it. Even when v1.1.0's adopt flow leaked language about "matching a persona's voice", the personas never actually produced prose; the language was a misread of intent. v1.2.0 removes that ambiguity from every file in the plugin.
  • Voice is the author's, not the story's. Voice travels across projects via the import flow in Phase 2. The author's rhythm, distance, and negative space don't restart with each story. Atmosphere (Phase 3) is the story-specific layer — Karpyshyn-energy versus Stover-energy as emotional aesthetics, with no persona names attached.
  • Adopt no longer claims to write the declared voice. v1.1.0 wrote craft/tone.md from the voice-analyzer's report, which conflated raw evidence with a declared voice. v1.2.0 splits them: raw evidence at craft/voice-analysis.md (the analyzer's output), declared voice at craft/voice.md (the author's output, written during the wizard's Voice phase). The two files coexist; the analysis is reference material, the voice is canon.
  • Backwards compatibility. Existing v1 projects open without breaking. The checkpoint schema bumps to v2 but /holocron:go reads either version. v1 projects show a missing-voice card on the Briefing tab until the author runs through the new Phase 2; until then, the writer agent falls back to its absorbed references (with the new hard-stop check: if craft/voice.md is missing, the agent will refuse to write a full chapter and ask the author to declare their voice first).
  • No new critic persona was added. The critique surface is unchanged. v1.2.0 is a voice-architecture release, not a review-tooling release.