discovery-drafting
This skill should be used when the user asks to "pantsing", "discovery write", "write without an outline", "discovery draft", "write into the dark", "story kernel", "reconcile a chapter", "reverse outline", "cut a subplot", "dead end", "drafting sprint", "writing cadence", or wan
Install
npx skills add https://github.com/danjdewhurst/story-skills/tree/main/skills/discovery-drafting
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install danjdewhurst-story-skills@llmmart
git clone https://github.com/danjdewhurst/story-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole danjdewhurst/story-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Discovery Drafting
Overview
Draft by discovery ("pantsing"): start from a one-paragraph story kernel rather than a beat sheet, write forward, then reconcile each chapter back into the story bible through a structured loop (extract entities → reverse outline → diff against the bible → reconcile). This is the complement to chapter-writing's outline-first workflow. The bible is maintained after the prose, not before — which the repo's import-style entity extraction and continuity checks already support.
Prerequisites
A story project must already exist (created via the story-init skill), with
at least a story.md and one character. No plot structure is required to
start — arcs get built during reconciliation.
When to Use
- The user wants to draft without outlining first, or identifies as a discovery writer
- Starting a project from a situation/character rather than a plot
- NOT for mysteries or other clue-dependent genres where setup must precede
payoff (use chapter-writing; see
genre-craft) - NOT for revising existing chapters (use
revision-continuity) - The user can switch modes per project or per chapter; record the mode so audits know which discipline applies
Workflow
- Write the story kernel. Consult
references/story-kernel.mdand draft the one-paragraph kernel with the user (character in a situation, a want, an obstacle, a tone signal). Store it instory.mdunder## Story Kerneland setdraft-mode: discoveredin frontmatter. - Draft forward. Write the chapter from the kernel using the session
shape in
references/drafting-cadence.md(re-read → write → close with a next-session note). Write forward only; park bible questions as[TODO: check bible]inline rather than stopping. Follow the prose craft inchapter-writing/references/writing-guidelines.mdand the scene-grain tools in thescene-craftskill as usual — discovery changes planning order, not prose standards. - Run the reconcile loop. After each chapter, follow
references/reconcile-loop.mdexactly:- Extract new entity/promise candidates (import-style, user-approved)
- Reverse-outline the chapter into the chapter file and
scenes/records - Diff against the bible (new / contradiction / enrichment / dangling)
- Reconcile: update the bible or revise the chapter — never neither
- Append post-hoc chapter notes; set chapter frontmatter
mode: discovered
- Batch review every 3–5 chapters. Re-read post-hoc notes, sweep the
promise/question ledgers for dangling setups, and cut dead ends per
references/dead-ends.md(abandoned ledger entries keep a recorded reason; cut characters getstatus: cut, not deletion). - Hold the cadence. Keep the agreed
draft-target(seereferences/drafting-cadence.md); at midpoint and draft completion, hand the batch torevision-continuityfor developmental checks before continuing. - Close the loop on mode. When the draft is complete, every
mode: discoveredchapter must have post-hoc notes and a completed diff — flag any that don't as unfinished maintenance, then hand the manuscript torevision-continuityfor revision passes.
Conventions
story.mdfrontmatterdraft-mode: discoveredmarks a discovery project; per-chaptermode: discovered/mode: outlinedtracks mixed projects.- Chapters carry a
## Chapter Notes (post-hoc)section recording what was discovered, what was cut, and open questions — the project's memory of why the bible looks the way it does. - Entity candidates extracted from prose are presented for user approval
before bible files are created (same discipline as
story import). - Cut threads are logged, not erased: abandoned promises/questions keep
status: abandonedwith a reason; cut characters keep their file withstatus: cut. - Bidirectional links and kebab-case ids follow the story-init conventions exactly — discovery changes when the bible is written, not how.
CLI Maintenance
Use the Story CLI when it is available. If story is not installed, use bun run story -- from the Story Skills repository checkout or the bundled fallback node ../story-maintenance/scripts/story.js with the same arguments, resolving the path relative to this skill folder. If no CLI is available, perform the registry, backlink, and word-count checks manually.
After each reconcile loop:
story wordcount . --write
story reindex .
story links .
story validate .
story continuity .
Reference Files
references/story-kernel.md- The one-paragraph kernel: character in a situation, want, obstacle, tone signalreferences/reconcile-loop.md- The core loop: extract entities/promises → reverse-outline → diff against the bible → reconcile;mode: discoveredflagreferences/dead-ends.md- Recognizing and cutting dead ends: cut/fold/prune, abandoned ledger entries, the darling logreferences/drafting-cadence.md- Daily targets, batch reviews, session shape, recovering a broken cadence
Files (story-skills)
-
references
-
dead-ends.md 2.7 KB
# Cutting Dead Ends Discovery drafting produces dead ends: subplots that stall, characters who arrive and do nothing, mysteries that turn out uninteresting. Cutting them is the job — but in a bible-tracked project, cutting has bookkeeping. ## Recognizing a dead end A thread is a dead end when it meets two of these: - It has not advanced for **two consecutive chapters** despite appearing. - Removing it changes nothing downstream (no promises depend on it, no character's arc needs it). - The writer's interest in it is gone — and the reconcile loop's post-hoc notes say so explicitly. "Might be useful later" without a concrete plan is hoarding, not craft. Distinguish a dead end from a **slow burn**: a slow burn has a planned payoff recorded in `continuity/promises/` with a target chapter. If the payoff exists in the ledger, the thread is alive — leave it. ## Cutting procedure 1. **Decide with the user.** Cutting is a story decision. Present: what the thread is, where it appears (chapters/scenes), what depends on it, and the recommendation (cut, fold, or keep). 2. **Choose the cut type:** - **Cut clean:** the thread never mattered. Remove its scenes' claims (or leave the scenes if they do other work) and delete its ledger entries. - **Fold:** the thread's best element survives inside another thread (the interesting character joins an existing subplot; the clue becomes part of the main mystery). Record the fold in both threads' notes. - **Prune:** keep the thread but strip it to a single scene or mention — it becomes texture, not a thread. 3. **Bookkeeping (this is the part people skip):** - Mark removed promises/questions in `continuity/promises/` and `continuity/questions/` as `status: abandoned` with a reason — never just delete them. An abandoned record explains to future agents why the setup has no payoff; a deleted record looks like a forgotten setup. - Update affected scene records' `state-changes` if the cut removes a change other chapters assumed. - If a character is cut, set their file's `status: cut` (do not delete the file — it documents the decision) and remove them from registries. - Update `plot/timeline.md` for any removed events. 4. **Run maintenance:** `story reindex .`, `story links .`, `story validate .`, `story continuity .` — the checker should confirm nothing still references the cut thread. ## The darling log Keep a `## Cut Threads` section in the project's notes (or in `continuity/state.md` if the project prefers) listing every cut: what it was, why it was cut, where its pieces went. Cut material is compost — a folded character or a pruned subplot often returns in a later book. The log is how the later book finds it. -
drafting-cadence.md 3 KB
# Drafting Cadence and Sprints Discovery drafting works best in a rhythm: write forward in bursts, reconcile in batches. This reference sets the cadence; the reconcile loop (`reconcile-loop.md`) is what the batch reviews execute. ## Daily targets Agree on a target with the user at the start of a discovery project and record it in `story.md` frontmatter: ```yaml draft-target: "{e.g. 1500 words/day, or 1 chapter/week}" ``` Rules for targets: - **Words, not quality.** The target measures forward motion. Reconcile loops and revision passes are separate scheduled work, not things that happen "when the draft feels ready." - **Small enough to keep daily.** A missed target should be recoverable the next day. Chronic misses mean the target is wrong, not the writer — renegotiate it. - **Track streaks, not totals.** Record per-session word counts in the chapter notes or a simple `## Draft Log` in `story.md` notes. The log is motivation data, not a performance review. ## Batch reviews Do not reconcile after every writing session if sessions are short — batch the reconcile loop: - **After every chapter** is the minimum (the loop's diff step needs a whole chapter to be meaningful). - **Every 3–5 chapters**, run a batch review: re-read the post-hoc notes for the batch, check the promise/question ledgers for dangling setups, scan for dead ends (see `dead-ends.md`), and confirm the kernel still generates momentum. - **At the midpoint and at draft completion**, run the `revision-continuity` developmental checks on the batch before continuing: arc progression, pacing, character-state carry-forward. ## Session shape A discovery session has three phases; keep them separate: 1. **Re-read (10–15 min):** the kernel, the previous chapter's post-hoc notes, and the last few pages of prose. No editing — re-reading is for voice and momentum, not revision. 2. **Write (the bulk):** forward only. When stuck, cycle back a few hundred words and try a different choice. Do not open the bible mid-session — note questions in the chapter file as `[TODO: check bible]` and resolve them in the reconcile loop. 3. **Close (5 min):** jot a `[TODO]` line at the end of the chapter file with where the next session should start ("Mara is about to open the door — decide what's behind it"). Future-you is a different person; leave them a map. ## When cadence breaks - **Stuck for two sessions:** the chapter may need its kernel refreshed — re-read the story kernel and ask what the character wants *right now*. Or the reconcile loop was skipped and contradictions are jamming the draft: run the loop before writing another word. - **Draft wandering:** chapters accumulate but nothing deepens — run the `theme-craft` working-premise exercise on what the draft actually argues, then check whether the next chapter can test that premise. - **Reconcile backlog:** more than two chapters without a loop means the bible is now fiction about a different book. Stop drafting, run the loops in order, then resume. -
reconcile-loop.md 4 KB
# The Reconcile Loop The reconcile loop is the core discipline of discovery drafting: after each discovered chapter, extract what the chapter invented, reverse-outline it, diff it against the bible, and reconcile. This is what makes pantsing compatible with a markdown-first story bible — the bible is maintained *after* the prose, not before. ## The loop (run after every chapter, before the next) ### 1. Extract new entities and promises Treat the finished chapter like `story import` treats a manuscript: 1. Read the chapter prose and list every new **entity candidate**: characters, locations, factions, artifacts, systems/rules the chapter introduced or implied. Present candidates to the user for approval, exactly as the import workflow does — do not auto-create bible files. 2. List every new **promise** (setup needing payoff) and **question** (mystery raised). Check each against `continuity/promises/` and `continuity/questions/` for duplicates before creating new records. ### 2. Reverse-outline the chapter Write the outline the chapter *would* have had if it had been planned — after the fact: - One line per scene: what the scene accomplishes, POV, location. - State changes the scene made (feeding the scene record in `scenes/`). - Promises planted, questions raised, foreshadowing laid. Store the reverse outline in the chapter file above the prose (same convention as chapter-writing's approved outlines) and create/update the `scenes/` records. ### 3. Diff against the bible Compare the reverse outline and entity candidates against the existing bible: - **New** — genuinely new elements: create the files (after user approval). - **Contradiction** — the chapter says X, the bible says Y: one of them is wrong. Decide with the user which one, then fix the loser. - **Enrichment** — the chapter deepens something the bible sketched: update the bible file (character voice detail, location texture, system rule). - **Dangling** — a promise or question with no plausible payoff yet: keep it open in the ledger, but flag it in the chapter notes so the next reconcile loop checks it again. ### 4. Reconcile Apply the diff: update bible files, registries, `continuity/state.md`, `plot/timeline.md`, and the chapter/scene records. The two legal outcomes are **update the bible** (the chapter discovered something true) or **revise the chapter** (the chapter broke something true). "Leave both" is not an outcome — unresolved diffs become continuity bugs. ## Post-hoc chapter notes After the loop, append a `## Chapter Notes (post-hoc)` section to the chapter file recording: - What was discovered (new entities, rules, relationships). - What was cut or left dangling. - Any open questions for future chapters. These notes are the project's memory of *why* the bible looks the way it does. Future agents read them before drafting the next chapter. ## The `mode: discovered` flag Every chapter drafted in discovery mode carries this frontmatter: ```yaml mode: discovered ``` The flag tells the CLI and later audits that the reconcile loop is a **required step** for this chapter: a discovered chapter without post-hoc notes and a completed diff is unfinished work, not a stylistic choice. When `story.md` uses `draft-mode: discovered`, treat missing post-hoc notes on any chapter as a maintenance finding. Chapters written outline-first in a mixed project use `mode: outlined` (or omit the field). ## Reconcile checklist (per chapter) - [ ] Entity candidates extracted and user-approved; new files created - [ ] New promises/questions checked for duplicates, then recorded - [ ] Reverse outline written into the chapter file - [ ] Scene records created/updated with state changes - [ ] Diff run: every contradiction resolved (bible updated OR chapter revised) - [ ] `continuity/state.md`, `plot/timeline.md`, registries updated - [ ] Post-hoc notes appended; `mode: discovered` in frontmatter - [ ] `story wordcount . --write`, `story reindex .`, `story links .`, `story validate .`, `story continuity .` -
story-kernel.md 2.9 KB
# The Story Kernel A story kernel is a one-paragraph starting point for discovery drafting — enough to write from, not enough to be an outline. It replaces the beat sheet as the draft's seed. Write the kernel before chapter one, then let the chapters discover the rest. ## Kernel contents One paragraph, 3–6 sentences, containing: 1. **A character in a situation** — who, and what unstable position they're in. 2. **A want** — what the character wants badly enough to act on. 3. **An obstacle or pressure** — what stands in the way, or what will go wrong if they don't act. 4. **A tone/genre signal** — one phrase that sets the register (noir, wonder, dread, farce). What the kernel deliberately omits: plot beats, an ending, a theme statement, a cast list, worldbuilding. Those get discovered (and reconciled later — see `reconcile-loop.md`). Example (original, for illustration): > A retired cartographer who falsifies maps for smugglers discovers her > latest commission describes a city that shouldn't exist — and someone is > paying in real gold to reach it. She wants the money and wants to know if > she drew something true by accident. The client is lying about why they > need the route, and her old guild contacts are watching. A tense, > low-magic caper with the unease of a ghost story. ## Recording the kernel Store the kernel in `story.md` under a `## Story Kernel` section, and mark the project as discovery-drafted in frontmatter: ```yaml draft-mode: discovered ``` This tells every later skill and audit that chapters were written without a pre-planned outline, so the reconcile loop (not the outline) is the source of truth for what happened. ## Using the kernel - **Starting a session:** re-read the kernel, then ask "what's the most interesting thing that could happen next?" Write that. - **When stuck:** cycle back a few hundred words and try a different choice (the canonical discovery-writer recovery). Do not stop to outline forward. - **When the kernel stops generating:** the kernel has done its job when chapters have their own momentum. Promote discovered elements into the bible via the reconcile loop; the kernel itself never needs updating. - **Kernel vs. premise:** the kernel is a situation, not a theme. If a working premise emerges during drafting (see the `theme-craft` skill), record it as `premise:` in `story.md` — but do not force the draft to serve a premise that arrived late. ## When discovery mode is wrong Use the outline-first `chapter-writing` workflow instead when: the story has hard external constraints (a mystery whose fair-play clues must be planted — see `genre-craft`), the user explicitly wants a beat sheet, or repeated reconcile loops show the draft wandering without deepening. Discovery is a method, not an identity — switch modes per project, and mark the switch in `story.md` (`draft-mode: outlined` for chapters written outline-first; mixed-mode projects are fine, tracked per chapter).
-
-
SKILL.md 5.4 KB
--- name: discovery-drafting description: This skill should be used when the user asks to "pantsing", "discovery write", "write without an outline", "discovery draft", "write into the dark", "story kernel", "reconcile a chapter", "reverse outline", "cut a subplot", "dead end", "drafting sprint", "writing cadence", or wants to draft a story by discovery with retrospective bible reconciliation. --- # Discovery Drafting ## Overview Draft by discovery ("pantsing"): start from a one-paragraph story kernel rather than a beat sheet, write forward, then reconcile each chapter back into the story bible through a structured loop (extract entities → reverse outline → diff against the bible → reconcile). This is the complement to chapter-writing's outline-first workflow. The bible is maintained *after* the prose, not before — which the repo's import-style entity extraction and continuity checks already support. ## Prerequisites A story project must already exist (created via the story-init skill), with at least a `story.md` and one character. No plot structure is required to start — arcs get built during reconciliation. ## When to Use - The user wants to draft without outlining first, or identifies as a discovery writer - Starting a project from a situation/character rather than a plot - NOT for mysteries or other clue-dependent genres where setup must precede payoff (use chapter-writing; see `genre-craft`) - NOT for revising existing chapters (use `revision-continuity`) - The user can switch modes per project or per chapter; record the mode so audits know which discipline applies ## Workflow 1. **Write the story kernel.** Consult `references/story-kernel.md` and draft the one-paragraph kernel with the user (character in a situation, a want, an obstacle, a tone signal). Store it in `story.md` under `## Story Kernel` and set `draft-mode: discovered` in frontmatter. 2. **Draft forward.** Write the chapter from the kernel using the session shape in `references/drafting-cadence.md` (re-read → write → close with a next-session note). Write forward only; park bible questions as `[TODO: check bible]` inline rather than stopping. Follow the prose craft in `chapter-writing/references/writing-guidelines.md` and the scene-grain tools in the `scene-craft` skill as usual — discovery changes *planning order*, not prose standards. 3. **Run the reconcile loop.** After each chapter, follow `references/reconcile-loop.md` exactly: - Extract new entity/promise candidates (import-style, user-approved) - Reverse-outline the chapter into the chapter file and `scenes/` records - Diff against the bible (new / contradiction / enrichment / dangling) - Reconcile: update the bible **or** revise the chapter — never neither - Append post-hoc chapter notes; set chapter frontmatter `mode: discovered` 4. **Batch review every 3–5 chapters.** Re-read post-hoc notes, sweep the promise/question ledgers for dangling setups, and cut dead ends per `references/dead-ends.md` (abandoned ledger entries keep a recorded reason; cut characters get `status: cut`, not deletion). 5. **Hold the cadence.** Keep the agreed `draft-target` (see `references/drafting-cadence.md`); at midpoint and draft completion, hand the batch to `revision-continuity` for developmental checks before continuing. 6. **Close the loop on mode.** When the draft is complete, every `mode: discovered` chapter must have post-hoc notes and a completed diff — flag any that don't as unfinished maintenance, then hand the manuscript to `revision-continuity` for revision passes. ## Conventions - `story.md` frontmatter `draft-mode: discovered` marks a discovery project; per-chapter `mode: discovered` / `mode: outlined` tracks mixed projects. - Chapters carry a `## Chapter Notes (post-hoc)` section recording what was discovered, what was cut, and open questions — the project's memory of why the bible looks the way it does. - Entity candidates extracted from prose are presented for user approval before bible files are created (same discipline as `story import`). - Cut threads are logged, not erased: abandoned promises/questions keep `status: abandoned` with a reason; cut characters keep their file with `status: cut`. - Bidirectional links and kebab-case ids follow the story-init conventions exactly — discovery changes when the bible is written, not how. ## CLI Maintenance Use the Story CLI when it is available. If `story` is not installed, use `bun run story --` from the Story Skills repository checkout or the bundled fallback `node ../story-maintenance/scripts/story.js` with the same arguments, resolving the path relative to this skill folder. If no CLI is available, perform the registry, backlink, and word-count checks manually. After each reconcile loop: ```shell story wordcount . --write story reindex . story links . story validate . story continuity . ``` ## Reference Files - **`references/story-kernel.md`** - The one-paragraph kernel: character in a situation, want, obstacle, tone signal - **`references/reconcile-loop.md`** - The core loop: extract entities/promises → reverse-outline → diff against the bible → reconcile; `mode: discovered` flag - **`references/dead-ends.md`** - Recognizing and cutting dead ends: cut/fold/prune, abandoned ledger entries, the darling log - **`references/drafting-cadence.md`** - Daily targets, batch reviews, session shape, recovering a broken cadence
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.