writers-helper
Guide any writer, fiction or nonfiction, through the whole writing lifecycle: premise and planning, outlining and worldbuilding, research, drafting and finishing, editing and revision, breaking creative blocks, generating position-aware prompts and exercises, building sustainable
Install
npx skills add https://github.com/magnus919/agent-skills/tree/main/writers-helper
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install magnus919-agent-skills@llmmart
git clone https://github.com/magnus919/agent-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole magnus919/agent-skills collection as a plugin from our marketplace. Git is the plain clone.
README
writers-helper — Your personal writer's assistant
A complete writing companion for fiction and nonfiction: it helps you plan a book, research it, draft it, revise it, break through creative blocks, build writing habits, and take it all the way to a publisher — proposals, query letters, agents, and book deals included.
Why Install This Skill
Most writing advice either tells you how to write a first draft or how to sell a finished book — rarely both, and never in one place. This skill covers the entire arc, from "I have an idea" to "my book is on a shelf," using lessons distilled from a 44-book library of writing craft and publishing guides.
Install it and your agent becomes a writing partner that actually understands the craft: it can diagnose why a scene stalls, generate prompts aimed at exactly where your story is in its structure, run revision passes in the right order, analyze your manuscript's stats, draft a query letter that follows the one-page rules, and track your submissions to agents and publishers. It also coaches the human side of writing — habits, blocks, rejection, and motivation — because that is where most books die.
What You Get
| What | What it does |
|---|---|
SKILL.md |
The routing hub: operating principles, working modes (planner, coach, editor, business partner), and stage-by-stage guidance |
references/ (10 files) |
Deep expert material: planning and worldbuilding, craft and structure, prose and style, drafting, editing, creative blocks and prompts, habits, publishing and career, genre conventions, and a pitfalls-and-solutions catalog |
templates/ (13 files) |
Fill-in worksheets: premise canvas, story outline, scene skeleton, character profile, worldbuilding questionnaire, session plan, critique checklist, revision plan, prompt cards, book proposal, query letter, synopsis, submission log |
scripts/ (5 tools) |
Practical Python helpers: position-aware prompt generator, session planner, manuscript stats analyzer, habit journal, submission tracker |
evals/ |
The skill's own quality test cases |
Quick Start
Tell your agent what you're working on and where you are. That's it — the skill routes from there.
"Help me outline my novel — I have a premise but no structure."
"I'm 30,000 words in and the middle has stalled. What's wrong?"
"Write me a query letter for my finished thriller."
"Build me a book proposal for my nonfiction idea about local history."
For the tools:
# Generate 3 prompts for the crisis section of your story
python3 writers-helper/scripts/writing-prompt.py --position crisis --count 3
# Analyze a draft
python3 writers-helper/scripts/manuscript-stats.py mydraft.txt
# Plan a 60-minute writing session
python3 writers-helper/scripts/session-planner.py --minutes 60 --target-words 1000
Each script is Python 3, standard library only, and non-interactive. Run with --help for options.
Triggers
- "I want to write a book / story / poem" and need help planning, drafting, or finishing
- "I'm stuck / blocked / procrastinating on my writing" and need a diagnosis and a way forward
- "Give me writing prompts or exercises"
- "Help me edit / revise / polish my draft"
- "Write me a query letter / book proposal / synopsis"
- "How do I find an agent / publisher / get published / negotiate a book deal?"
- "Track my submissions" or "keep me writing daily"
Requirements
- Python 3.8+ for the scripts (standard library only — no pip installs)
- No API keys, no network access
- The templates and references are plain Markdown; use them in any editor
Skill manifest
Writing — The Writer's Personal Skill
Help one writer (or one writing project) move from idea to published book. This skill is a synthesis of classic writer's-craft teaching — distilled from a 44-book writing library — covering every stage: planning, research, drafting, revision, creative blocks, prompts, habits, and the business side (proposals, query letters, agents, publishers, deals).
Operating principles (non-negotiable)
- Protect the draft. During drafting: no critique, no re-reading, no mid-draft research. Keep a "gaps" list for facts to verify later. First drafts are raw material; quality gates belong to revision.
- Know where the story is. Before generating a prompt, a scene, or feedback, ask which structural position the story occupies (beginning / halfway / crisis / climax). Position-aware guidance beats generic advice every time.
- Diagnose before prescribing. When a writer is stuck, name the actual cause first — fear, energy, thin material, broken scene, wrong fix — then match the remedy. Never hand out a generic "keep writing."
- Sequence revision. Structure first, then prose, then mechanics. Enforce a rest period and trusted readers before line editing. Do not let polish hide a broken story.
- Numbers are contracts. Word counts, page counts, act lengths, and format specs exist for a reason. Check work against them and surface mismatches as questions.
- Voice sovereignty. The author's voice and final judgment outrank yours. Every suggestion is provisional; preserve and serve the writer's voice, never flatten it into your own.
- Honest economics. Show real money math for deals, royalties, and self-publishing. Flag fee-charging "agents," reading fees, and vanity-press traps.
- Copyright hygiene. Never reproduce text from published sources. Paraphrase and synthesize ideas; write original examples.
Intake — first questions
Before doing anything, establish:
- Project type: fiction or nonfiction; genre; format (novel, short story, picture book, poetry, proposal, essay...).
- Stage: idea, planning, research, drafting, revising, polishing, submitting, published.
- Goal & deadline: what "done" means and when (use the goal math in
references/workflow-and-planning.mdto turn this into a daily target). - Audience: who the writing is for; the reader relationship shapes voice and structure.
- Constraint: one-page deliverable, word-count cap, publisher requirements, collaboration.
Then choose a working mode (below) and the reference(s) that fit.
Working modes
| Mode | Use when | Route to |
|---|---|---|
| Planner | Starting a project; needs premise, outline, worldbuilding, research plan | references/workflow-and-planning.md, references/craft-and-structure.md, references/genres-and-formats.md |
| Coach | Blocked, unfocused, or building habits; wants prompts and exercises | references/blocks-and-prompts.md, references/habits-and-lifestyle.md, scripts/writing-prompt.py, scripts/session-planner.py |
| Editor | A draft exists; needs critique, revision passes, line editing, proofreading | references/editing-and-revision.md, references/prose-and-style.md, scripts/manuscript-stats.py |
| Business partner | Query letters, proposals, agents, publishers, deals, submissions | references/publishing-and-career.md, templates/book-proposal.md, templates/query-letter.md, templates/synopsis.md, templates/submission-log.md, scripts/submission-tracker.py |
Stage routing
| Stage | What to do | Read |
|---|---|---|
| Idea → premise | Test the idea, write a one-line pitch, check the high-concept bar | references/workflow-and-planning.md |
| Planning | Outline, backward design, scene staking, worldbuilding, goal math | references/workflow-and-planning.md, references/craft-and-structure.md, templates/premise-canvas.md, templates/story-outline.md, templates/worldbuilding-questionnaire.md |
| Research | Write first, verify later; keep a gaps list; avoid rabbit holes | references/workflow-and-planning.md |
| Drafting | Session ritual, flow sprints, finishing momentum | references/drafting-and-process.md, scripts/session-planner.py, scripts/habit-log.py |
| Blocked | Diagnose the block type, then apply the matched fix; generate prompts | references/blocks-and-prompts.md, scripts/writing-prompt.py |
| Revising | Rest, trusted readers, structure-first passes, scene questions | references/editing-and-revision.md, templates/critique-checklist.md, templates/revision-plan.md |
| Polishing | Prose passes, grammar, proofreading; measure the manuscript | references/prose-and-style.md, scripts/manuscript-stats.py |
| Submitting | Query, synopsis, proposal, agent list, tracking | references/publishing-and-career.md, templates/query-letter.md, templates/synopsis.md, templates/book-proposal.md, scripts/submission-tracker.py |
References
references/workflow-and-planning.md— the writing lifecycle, premises and one-line pitches, outlining and backward design, worldbuilding, research discipline, goal mathreferences/craft-and-structure.md— plot as character change, the four energetic markers, scene anatomy, character and motivation, dialogue, POV, suspense, show-don't-tellreferences/prose-and-style.md— voice, sentence craft, word choice, grammar essentials, clichés, readability, proofreading disciplinereferences/drafting-and-process.md— two-mode drafting, fast drafting, session ritual, momentum and finishing, the self-contract, daily practicereferences/editing-and-revision.md— revision sequencing, critique protocol, layered passes, line editing, manuscript metricsreferences/blocks-and-prompts.md— block diagnosis and matched fixes, position-aware prompt formula, exercise library, inner-critic managementreferences/habits-and-lifestyle.md— the ten habit categories, writing space, sustainability, reading as apprenticeship, identityreferences/publishing-and-career.md— proposals, query letters, synopses, agents, publishers, deals, rights, rejection, platformreferences/genres-and-formats.md— word-count ladders, genre contracts (romance, fantasy/SF, children's, poetry, comedy, graphic novels, screenwriting), manuscript conventionsreferences/pitfalls-and-solutions.md— the common failure modes at every stage, each with a fix
Templates
All templates are fill-in worksheets with guidance built in. Read the matching reference first, then use the template to structure the work.
templates/premise-canvas.md— test and sharpen a story idea before outliningtemplates/story-outline.md— three-part outline with the four energetic markers and scene stakestemplates/scene-skeleton.md— one page per scene: the seven essential elementstemplates/character-profile.md— goal, obstacle, loss plus flaw, strength, fear, dream, secrettemplates/worldbuilding-questionnaire.md— setting, rules, society, history, sensory signaturetemplates/session-plan.md— a concrete daily writing session with targets and ritualtemplates/critique-checklist.md— big-picture and targeted questions for readers and self-reviewtemplates/revision-plan.md— order the passes from structure to proofreadingtemplates/prompt-cards.md— the prompt formula and original sample prompts per story positiontemplates/book-proposal.md— the nonfiction proposal, section by sectiontemplates/query-letter.md— fiction and nonfiction one-page query structurestemplates/synopsis.md— one-page synopsis structure and rulestemplates/submission-log.md— track submissions, responses, and follow-ups
Available Scripts
Python 3, standard library only, non-interactive, --json where noted. See --help on each.
| Script | Purpose | Invocation |
|---|---|---|
scripts/writing-prompt.py |
Generates position-aware three-part prompt sets (affirmation, plot element, writing assignment) with a record block; options --position, --count, --seed, --json. Run it in Coach mode when a writer is blocked or wants exercises — after diagnosing which structural position the story occupies. |
python3 scripts/writing-prompt.py --position halfway --count 3 |
scripts/session-planner.py |
Plans a timed writing session: blocks, breaks, per-block word targets, flow-sprint pacing from --target-words/--minutes/--words-per-hour; --json for structured output. Run it at the start of a drafting session to turn a word-count goal into a concrete schedule. |
python3 scripts/session-planner.py --minutes 90 --target-words 1200 |
scripts/manuscript-stats.py |
Analyzes a manuscript file for editing signals: word count, sentence stats, passive voice, adverb density, crutch words, readability, per-chapter pacing (--chapter-regex, --json). Run it in Editor mode before and between revision passes to measure rather than guess. |
python3 scripts/manuscript-stats.py manuscript.txt --json |
scripts/habit-log.py |
Journals each writing session (date, words, minutes, energy via --log) and reports day/week/month progress and streaks via --report; state lives in a JSONL log (--file). Run it after every session when building sustainable writing habits. |
python3 scripts/habit-log.py --log 2026-08-08 850 45 4 --report week |
scripts/submission-tracker.py |
Tracks queries and proposals (title, target, type, sent date, status, notes via --add; field edits via --update) and reports the pipeline with --list/--status, flagging follow-ups past --follow-up-days. Run it throughout Submitting mode so no query goes stale untracked. |
python3 scripts/submission-tracker.py --add "The Glass Orchard" "Agent Name" query 2026-08-08 sent --list |
When not to use
- Document formatting and packaging: Word, PDF, PowerPoint, Excel, or EPUB deliverables — use
word-document,pdf-document,powerpoint,excel, orepubinstead. This skill works on the words, not the file format. - Technical or business documentation: release notes, API docs, runbooks — use
technical-documentationoradr-authoringfor architecture decisions. - Pure grammar/spelling reference: a one-off question about a rule is better served by a style guide; this skill applies grammar within the editing workflow, not as a reference lookup.
- Reading or writing EPUB files as an ebook task — route to
epub. - Non-writing creative coaching — use
genius-lifeorlife-coachfor general creativity/life practice outside a specific writing project.
Completion and exit conditions
- Deliver the requested artifact: an outline, a draft, a revision pass, a query letter, a proposal, a submission list, or a completed session plan.
- Confirm the current approach is adequate when the writer is already succeeding without intervention.
- For diagnosis loops (blocks, structural problems), stop after at most three non-converging passes and report the evidence with the options, rather than churning the writer.
Prerequisites
- Python 3 with the standard library only for all five scripts — no external packages, API keys, or services.
- A plain-text manuscript file for
manuscript-stats.py; writable JSONL state files forhabit-log.pyandsubmission-tracker.py(both default to a file in the working directory; pass--fileto pin one). - The relevant references read first: scripts support the workflow, they do not replace the craft judgment in
references/.
Limitations
- Scripts measure and structure; they do not judge. Stats flag passive voice and pacing, but revision decisions stay with the Editor-mode judgment above — never let metrics override voice sovereignty.
manuscript-stats.pyanalyzes what you hand it (plain text); it cannot open .docx/.epub files or see formatting.habit-log.pyandsubmission-tracker.pyare single-writer local tools with no sync or multi-user awareness; keep their JSONL files out of shared paths if more than one person writes there.- Generated prompts are position-aware patterns, not custom plot advice — pair them with the story's actual premise and characters.
Files (agent-skills)
-
evals
-
evals.json 8.1 KB
{ "schema_version": 1, "skill_name": "writers-helper", "evals": [ { "id": "position-aware-prompt", "prompt": "I am at the crisis of my novel and completely stuck. Give me a writing prompt to get moving.", "expected_output": "A position-aware three-part prompt set for the crisis position: an affirmation, one plot element matched to the crisis, and a plot-advancing writing assignment, closed with a record block.", "assertions": [ "Names the story position (crisis) explicitly.", "Selects a crisis-appropriate plot element such as crisis, backstory reveal, or missing skill.", "Includes a short affirmation in the first person.", "Includes a concrete scene-or-summary writing assignment that advances the plot.", "Includes a record block with word count, energy, and placement fields.", "Does not produce a generic freewriting prompt detached from position." ], "case_set": "dev" }, { "id": "block-diagnosis-perfectionism", "prompt": "I keep planning my novel and never start it. Every outline feels wrong. What is wrong with me?", "expected_output": "A diagnosis of start-paralysis as perfectionism or fear rather than a craft problem, with one small timed next action to begin.", "assertions": [ "Identifies the stuck state as perfectionism or fear rather than lack of skill.", "Does not prescribe more planning or a longer outline.", "Offers a small, timed, low-stakes next action such as a slop-on-the-page draft.", "Normalizes the pattern without blame.", "Does not critique the writer's craft." ], "case_set": "dev" }, { "id": "draft-protection", "prompt": "I am 20,000 words into the first draft. Please line-edit chapter 1 before I continue writing.", "expected_output": "A refusal to line-edit mid-draft, an explanation of the two-mode drafting rule, and a nudge back to forward progress with a gaps list.", "assertions": [ "Declines to line-edit or critique while the draft is in progress.", "States the two-mode rule: heart first, head later.", "Redirects to forward progress such as a flow sprint or the next scene.", "Does not provide polished rewrites of the chapter.", "Keeps momentum advice specific and non-judgmental." ], "case_set": "regression" }, { "id": "show-dont-tell-rewrite", "prompt": "This sentence tells instead of shows: 'She was very angry.' How do I fix it?", "expected_output": "A showed rewrite that renders the anger through visible action or sensory detail, with the reasoning explained.", "assertions": [ "Replaces the emotion label with observable behavior or physical detail.", "Uses at least one concrete action, gesture, or sensory detail.", "Preserves the meaning of the original sentence.", "Does not simply intensify the label such as 'she was furious'.", "Explains the move so the writer can apply it again." ], "case_set": "dev" }, { "id": "fiction-query-letter", "prompt": "Write a query letter for my thriller: a retired safecracker whose granddaughter is taken, forced back for one last heist. The agent is Alex Morgan.", "expected_output": "A one-page fiction query with a hook, lead characters, the plot arc, and a closing that invites a request for material, addressed to the named agent.", "assertions": [ "Opens with a hook rather than biography.", "Names the protagonist, the want, the obstacle, and the stakes.", "Presents the plot arc including a resolution.", "Keeps the letter to one-page proportions.", "Addresses the named agent and closes with a request.", "Contains no gimmicks or attachments beyond what is requested." ], "case_set": "dev" }, { "id": "proposal-gap-check", "prompt": "Here is my nonfiction proposal outline: overview, author bio, and chapter list. Is anything missing?", "expected_output": "Identification of the missing standard proposal sections — market, competition, platform and promotion, and sample chapters — and a note that nonfiction sells on the proposal.", "assertions": [ "Names at least two of the missing sections: market, competition, platform, or sample chapters.", "Explains why the target market section matters.", "Explains why the competition section matters.", "Distinguishes the nonfiction proposal road from the fiction manuscript road.", "Does not rewrite the existing sections." ], "case_set": "regression" }, { "id": "genre-word-count-check", "prompt": "I finished my picture book manuscript. It is 2,400 words. Is that good?", "expected_output": "A flag that 2,400 words exceeds the picture book range of roughly 200 to 1,500 words, posed as a question with paths forward.", "assertions": [ "Cites the picture book word-count range of roughly 200 to 1,500 words.", "Flags the mismatch as a question rather than a verdict.", "Offers a path such as cutting to range or reconsidering the category.", "Does not line-edit the manuscript.", "Checks the format contract before craft." ], "case_set": "release" }, { "id": "session-planning-math", "prompt": "Plan a 60-minute writing session for me. I write about 1,500 words per hour and want to hit 1,000 words.", "expected_output": "A session plan with writing time minus breaks, per-block word targets, and a feasibility verdict for the 1,000-word target.", "assertions": [ "Computes writing minutes by subtracting breaks from session time.", "Estimates projected words using the stated words-per-hour rate.", "Gives per-block word targets.", "States whether the 1,000-word target is feasible.", "Produces the schedule in a non-interactive, runnable form." ], "case_set": "dev" }, { "id": "rejection-recovery", "prompt": "My first query got a form rejection today and I want to quit. Talk me down.", "expected_output": "A normalizing response: rejection is fit, not a verdict; the 24-hour rule; boomerang the submission to the next researched market or take a small next step.", "assertions": [ "Reframes rejection as feedback about fit rather than a verdict on worth.", "Allows a bounded mourning period such as 24 hours.", "Proposes boomerang resubmission or one small next step.", "Does not guarantee future acceptance.", "Does not blame the writer for the rejection." ], "case_set": "dev" }, { "id": "copyright-hygiene", "prompt": "Rewrite this paragraph from my favorite published novel into my own book so it fits my scene.", "expected_output": "A refusal to reproduce the published text, with an offer to develop an original scene that captures the same idea in the writer's own words.", "assertions": [ "Refuses to reproduce or closely adapt the published paragraph.", "Explains that paraphrase of substantial expression is still copying.", "Offers to draft an original scene with the same underlying idea.", "Keeps the writer's own voice as the basis for the new scene.", "Does not quote the source text." ], "case_set": "release" }, { "id": "voice-sovereignty", "prompt": "Rewrite my chapter in your style. Make it sound better.", "expected_output": "A refusal to replace the author's voice wholesale, with targeted suggestions that preserve the writer's voice and a reminder that the author is the final judge.", "assertions": [ "Does not produce a wholesale replacement in the assistant's own style.", "Offers targeted suggestions that preserve the writer's voice.", "Explains the reasoning behind each suggestion.", "Defers final judgment to the author.", "Does not flatten character voices into a single register." ], "case_set": "release" } ] }
-
-
references
-
blocks-and-prompts.md 8.7 KB
# Creative Blocks and Prompts The psychological machinery of writing: how to diagnose a block, the matched fixes, how to generate prompts that actually advance a story, and an exercise library. Use this in Coach mode whenever a writer is stuck, stalled, or needs an entry point. ## Diagnose before prescribing Writer's block is not one thing. Name the cause, then match the fix: | Diagnosis | Signs | Fix | |-----------|-------|-----| | **Fear of failure** | Won't start; procrastinates; perfects endlessly | Permission to write badly; tiny timed next action; slop-on-the-page draft; deadline contract | | **Fear of success / exposure** | Stops near completion; sabotages finished work | Name the fear; write the next sentence anyway; share small pieces; the "one specific reader" reframe | | **Low energy / biochemistry** | Can't focus even when motivated | Short walk, brief nap, protein-first snack; move the session; a five-minute sprint counts | | **Thin material** | Doesn't know what happens next | New scene/character/element; position-aware prompt; what-if chain; research the gap | | **Broken story** | Draft stalls in the middle; keeps restarting | Structural diagnosis (markers, scene elements); outline-after-draft; cut and re-choreograph; push forward | | **Fixing the wrong problem** | Editing prose when structure is the issue | Gate the sequence: structure first, prose later | | **Over-control** | Perfectionism, over-planning, judging while writing | The ten-minute continuous freewrite; fast drafting; no re-reading mid-draft | | **Avoidance mislabeled** | "Thinking about writing" for months | 1,000-words-a-day floor; don't leave the chair; boomerang submissions | - **Block types:** task-related (structure/topic/research), energy-related, or person-related (fear, guilt, old authority battles) — each takes a different remedy. - **Procrastination vs. perfectionism:** can't write = procrastination; can't start = perfectionism. Both dissolve into a small, timed, low-stakes next action. - **The two voices:** blocks often look like a war between the logical voice and the emotional voice. Don't deny the emotional brain — supply it: contract for a reward up front (at least half the session time) and it stops hijacking time. - **The inner critic at thresholds:** at each major turning point a voice insists the work is worthless. Name and date the voice; gather counter-evidence; never become that voice for another writer. - **The 75% writer's crisis:** many writers hit their own crisis three-quarters through — denial, anger, bargaining. Recognize the pattern, take a walk, write the emotions down, and hand them to the character. - **Respect boundaries:** if the user describes depression, serious anxiety, or other clinical concerns, stop the coaching and route to qualified professional help; creative exercises are not a substitute for clinical support. ## The position-aware prompt formula A prompt's value depends on where the story is. Asking a story at 70% to do first-quarter work wastes a day. The single most useful question before generating: **which quarter of the story are you in, and which energetic marker are you approaching?** Generate three-part prompt sets: 1. **Affirmation** — one to two sentences, first person present tense, restating willingness and commitment (fresh wording, never someone else's). 2. **Plot element** — exactly one structural element the story's position demands: goal, setting, antagonist, ally, flaw, fear, dream, secret, theme, subplot, cause-and-effect chain, threshold, foreshadowing, symbol, cliffhanger, deadline, backstory reveal, recommitment, crisis, climax, resolution, loose end. 3. **Writing assignment** — a concrete scene-or-summary task that forces that element onto the page and continues prior material, with anti-cliché and show-don't-tell constraints built in. 4. **Record block** — start/stop time, word count, daily goal, 1–10 energy reading, above/below-the-line placement, and which character-profile trait the scene revealed. **Position-to-element rotation (restated):** - **Beginning:** goal, ordinary world, protagonist's voice and reaction pattern, antagonist introduction, ally, flaw, fear, dream planting, stakes/loss, theme planting, sensory signature, threshold crossing. - **Halfway:** exotic-new-world contrast, deepening the new world, goal re-establishment, primary antagonist escalation, subplot chain, motivation questions, fear confrontation, mirror moment, recommitment. - **Crisis:** confidence before the fall, missing-skill setup, real risk of loss, power fully transferred to the antagonist, deadline countdown, horrible event, defenses and excuses, self-revelation, the crisis itself, the emptied prize and backstory reveal, the pull-herself-up moment. - **Climax & resolution:** first step into the final quarter, threshold-guardian test, new belief system, cause-and-effect pairs, the transformed action, the climax, allies' goals realized, resolution with deliberately loose ends, dream payoff as twist. **The anti-freewriting rule:** freewriting and fragments are fine as warm-up but not as product. Everything must advance the plot; a fragment must promise a scene. Redirect "I don't know what to write" to "what does the character want right now, and what will she do next that advances the goal?" **Never repeat, deepen:** when a prompt reuses a beat (goal, fear, antagonist encounter), deliberately escalate — wider consequences, higher stakes, a new angle. Use `scripts/writing-prompt.py` for deterministic, seeded prompt generation, and `templates/prompt-cards.md` for the formula and original examples. ## Exercise library (original formulations) - **What-if chains:** from any premise, chain hypotheticals; invented logic may outrank literal truth. - **I-wonder questions:** same move, curious rather than dramatic. - **The ten-minute freewrite:** no stopping, no correcting; if stuck, write "I can't think of anything to write because..." until it unblocks. - **Combinatorial lists:** one character type × one conflict × one setting; love-list vs. hate-list as two characters' values. - **Eavesdrop and people-watch:** a notebook habit; dialogue transcribed and then edited down. - **One emotion, five scenarios:** render the same feeling in five different situations, each as behavior. - **The alternate branch:** replay a decision you made with its alternate path — memoir and fiction alike. - **Word-association chains:** free-associate from a trigger word; circles on paper release the linear mind. - **Animate an object:** tell the story from a thing's point of view — a constraint that forces concreteness. - **The PA interview:** for an underdeveloped character, ask three open questions at length — if you were a road where would you lead; if you were an animal what would you be; what one life event made you who you are. Short answers = secondary character; long answers = lead. - **The "20s" originality exercise:** force twenty versions of any moment (a meeting, a chase, an entrance); the first few are clichés and the ninth or tenth is usually golden. Never settle for the first idea. - **Scene entry drill:** write the same scene starting at three different points; keep the latest entry that still works. - **The letter-to-a-friend trick:** to find a natural voice for a synopsis, proposal, or pitch, first write a plain letter to a trusted friend describing the book; then lightly edit the letter into the formal document. ## Daily prompting practice - **Write every day at the same time**; the repetition is the technique. - **Position-aware prompt sequence:** a 120-day sequence built in four parts (beginning, halfway, crisis, climax) where each part's final prompt is the marker scene itself — completing the sequence writes a structurally complete draft. - **Record everything:** energy trend (1–10) is self-diagnostic; falling energy = the story or the process is out of balance. - **Rotate the spotlight:** protagonist one day, antagonist next, love interest after — keeps every character developing. - **The anti-snippet rule:** a prompt book that produces only pretty fragments has failed; every page should accumulate into the story. ## What the assistant does at this stage - Ask where the story is before generating anything; never produce generic prompts detached from position. - Diagnose the block type explicitly and apply the matched fix; name the pattern (procrastination, restart syndrome, inner critic at the threshold, 75% crisis) and address the psychology before adding more craft. - Generate fresh three-part prompt sets with a record block; never reproduce a book's prompts verbatim. - Enforce the anti-freewriting rule in coaching mode; redirect fragments toward plot-advancing scenes. - Escalate rather than repeat when beats come up again. - Route clinical concerns to professional help without diagnosing. -
craft-and-structure.md 9.5 KB
# Craft and Structure: Story, Scene, Character, Dialogue The structural heart of fiction: what plot actually is, how scenes are built, how characters are made to matter, and how dialogue and point of view carry the story. Use this when planning a story, diagnosing a stalled draft, or generating and critiquing scenes. ## Plot is character change A story is not the sequence of events; it is the way the events transform the main character. Every scene is therefore testable: does it touch the character and push her transformation? If not, it is episode, not plot. Three interwoven threads run through every story: - **Dramatic action** (the front story): the protagonist's concrete goals and visible actions. This makes readers turn pages. - **Character emotional development** (the inner plot): how flaws, fears, and beliefs change, culminating in transformation. - **Thematic significance** (the why): the statement the story proves true — not a universal truth, but a truth true for *this* story. The craft of plotting is weaving the three so they collide at the climax. ## The four energetic markers Four scenes carry surges of energy that redirect the story; they are the skeleton of the whole structure: 1. **End of the Beginning (~25%):** the old world breaks apart; a threshold is crossed; no turning back. Goals shift: a first overt goal emerges from reaction to the dramatic action. 2. **Halfway Point (~50%):** the protagonist consciously recommits (or, for a reluctant hero, commits for the first time). Recommitment signals that a crisis is coming. 3. **The Crisis (~75%):** the greatest struggle so far; the protagonist's lowest point — a figurative death of the old self. The antagonist holds full power. It destroys both the way back and the way forward, forcing change. A crisis only qualifies if it produces learning or awakening. 4. **The Climax (end):** highest energy; the transformed protagonist faces the greatest foe with a rediscovered or refined skill, doing something the old self could not. **Diagnostic use:** check any manuscript at 25%, 50%, 75%, and the end. If the energy at a marker doesn't rise to the occasion, the structure is broken at a knowable location. A "crisis" with insufficient energy is often really the recommitment scene — promote a bigger scene into the crisis position or add a second, higher peak. **Proportions:** beginning ≈ first quarter, middle ≈ half, end ≈ final quarter. Backstory is deliberately withheld from the beginning — the reader must care before learning the painful past; the sanctioned full reveal comes at the threshold after the crisis. ## Scene anatomy: the seven essential elements Every scene carries seven elements. Weak scenes fail several at once — cut them, or merge two weak ones into one strong one. 1. **Setting anchor** — when and where; ground every scene with season, day, and time. 2. **Character emotional development** — what the scene reveals or changes in the character. 3. **A short-term goal** — what the character is actively moving toward in this scene. 4. **Action toward that goal** — dramatic action shown, not summarized. 5. **Conflict, tension, suspense, or curiosity** — the scene must contain friction. 6. **Emotional fluctuation** — the character's feeling changes within the scene. 7. **A thematically weighted authentic detail** — one concrete, specific detail that means something. Additional scene rules: - **Enter late, end early.** Start as close as possible to the scene's outcome; cut the closing beat that only confirms what the audience already felt. Beginners start too early and end too late. - **One change per scene.** If a scene produces no change — emotional, relational, or situational — it is a candidate for deletion. - **One narrator per scene.** No head-hopping; make any POV switch unmistakable from its first line; never leak another character's unobserved thoughts into the narrator's stream. - **Cause and effect.** A scene only connects to the next if its action *causes* what happens next. Disconnected scenes are episodic — the telltale sign of weak plot. - **Three-part emotion around markers:** preparation and anticipation → the main event → reaction and follow-through. Preparation often generates more fear than the event itself. - **Never repeat, deepen.** Every reappearance of a character must show wider consequences and a deeper glimpse. Repetition without escalation is a hallmark first-draft failure. ## Character: motivation is the root of sympathy - **The profile.** Fill this for the protagonist, every major antagonist, and key secondary characters (template: `templates/character-profile.md`): - Dramatic line: overall goal; what stands in the way; what she stands to lose. - Emotional line: flaw, strength, hate, love, fear, dream, secret. - The blanks are diagnostic: a writer who fills goals easily but not traits is action-minded; the reverse is emotion-minded. Both must be filled. - **Backstory wound → flaw → surrendered authority.** The flaw is a coping mechanism for a pre-story loss; the character unknowingly hands power over her life to something or someone; the story is her journey to reclaim it. This pattern gives even small stories depth. - **What the protagonist fears most is exactly what she must face to transform.** The fear item is the loaded one. - **Goals vs. dreams.** Dreams rely on help or magic; they become goals the moment the character takes an active step. Plant a dream in the beginning, layer it in the middle, pay it off as a twist in the resolution. - **Readers forgive any action when they understand the why.** The motivation lives in the character's past and must reach the reader through present-moment thought and dialogue — not flashbacks or speeches. - **Antagonists are mirrors.** Every antagonist — person, nature, society, machine, or the protagonist's own flaw — reflects a part of the protagonist that needs healing. Villains (conscious stealers of the goal) are only one type. - **Show emotion, don't label it.** Render feeling through body and voice: gestures, silences, breathing, pulse, posture, tone. Give a concrete showed-vs-told rewrite, not an abstract rule. ## Dialogue - **Voice economy.** A reader should be able to identify the speaker from the dialogue block alone. If two characters can swap lines without breaking, the voices aren't differentiated. Never give a character words they wouldn't know or use. - **"Said" is invisible.** Use plain tags or none; a new paragraph per speaker. Reserve dialogue tags beyond "said"/"asked" for rare emphasis. - **Subtext over on-the-nose.** Write about one thing while telling the audience what's really going on. Dialogue is a literary biopsy — education, origin, fears, goals, values all leak through speech. - **Edit real speech down.** A transcript is not dialogue. Mix full sentences with fragments and hesitations; every line serves character revelation or plot. - **In dialogue-driven scenes, roughly nine-tenths of the ink is quoted speech.** Let the lines carry the scene; drop tags once speakers are established. - **Blind test:** read the page mid-way; if the speaker isn't obvious, the dialogue is generic. ## POV (point of view) - First person, second (rare, good for manuals and experiments), third limited, third omniscient. Choose one per scene; deep POV filters every description, reaction, and line through the character's senses and voice. - **Choose the POV character by who has the most to lose** — or who alone holds the key secret. - No omniscient slips into what the POV character cannot see, hear, or know. - Suspense vs. surprise: the reader knowing more than the character (the bomb under the table) is the engine of suspense; multiple viewpoints buy suspense at the price of surprise. Choose which commodity the story needs. ## Suspense and escalation - Suspense is managed ignorance. Establish, foreshadow, then escalate in pulses: raised stakes, ticking clocks, obstacles, incapacitated heroes, ominous ordinary objects, and "just off" details. - In the final quarter: scenes are active, no flashbacks, no backstory. The climax answers the dramatic question posed at the start, resolves major conflicts, and demonstrates the new self. - The resolution circles back — often to the beginning setting — and may deliberately leave subplot questions open so the story's energy lives on. ## Structure maps (reference points, not law) - **Five-part plot:** introduction of characters → trigger event that disrupts the protagonist and sets conflict in motion → chain of events → climax (success or failure) → resolution. - **Three-act:** Act I ≈ first quarter (setup, ends in a turning point), Act II ≈ half (obstacles, midpoint, ends in another turning point), Act III ≈ final quarter (discovery, climax, resolution). - **Golden-rule story:** an engaging character actively overcomes tremendous obstacles to reach a desirable goal, and changes for the better. Change is non-negotiable. ## Diagnosing a draft with these lenses Run one lens at a time, not all at once: 1. **Plot lens:** does each scene touch the protagonist? Cause-and-effect chains? Where are the four markers, and does each carry its required energy? 2. **Character lens:** is the protagonist the character most changed? Is the flaw visible and motivated? Do antagonists mirror something needing healing? 3. **Scene lens:** the seven elements — which are missing, scene by scene? Enter late / end early? One change per scene? 4. **Dialogue lens:** blind test per speaker; subtext vs. on-the-nose; tags invisible. 5. **POV lens:** one narrator per scene; no leaks; deep POV maintained. -
drafting-and-process.md 7 KB
# Drafting and Process How to actually get words on the page, day after day, and finish: the two-mode drafting model, fast-drafting mechanics, session ritual, momentum tricks, the self-contract, and daily practice. Use this in Coach mode and whenever a writer is starting, stalling, or trying to finish. ## Two-mode drafting: heart first, head second - **Draft 1 is all heart.** Write fast, unedited, unresearched. Do not re-read prior pages mid-draft, do not perfect words, do not stop to verify facts (mark gaps). The inner critic is explicitly muted — a lousy first draft is the portal to a good one. - **Draft 2 is all head.** Revision is a separate state entered only after "the end" exists. Anything beyond two drafts mostly adds frustration; each extra draft lets a different version of the voice into the book. - **Never interleave.** An assistant that critiques during drafting is the enemy of the draft. Save critique for revision; during drafting, ask questions, hold thoughts, and keep the flow. ## Fast drafting - **Speed is a quality lever.** Writing at ~1,200–2,400 words per hour outruns self-censorship; treat ~1,200/hour as the low-water mark. When output drops below it, the protective inner critic is interfering — re-relax rather than worry. - **Throughput math:** 2 hours × ~1,500 wph ≈ 3,000 words/session; × 6 days ≈ 18,000 words/week; a ~60,000-word book ≈ 30 writing days. - **Speed-recovery drills:** verify the relaxation step; switch to a smooth pen; alternate longhand and keyboard in ~15-minute cycles; pace in 300-word blocks with a 15-minute timer. - **A page a day is a career.** ~300 words/day ≈ a novel a year; two double-spaced pages a day (~500 words) compounds into a finished manuscript in about five months. Frequency and smallness beat heroic volume. ## Session ritual A repeatable pre-session ritual converts habit into committed practice: 1. **Reserve** time — ideally after sleep, when the critical brain is still drowsy; six days a week, two hours a day. 2. **Remove** distractions — phone off, boundaries announced. 3. **Relax** — breathe deliberately (sit upright, feet flat, a minute of relaxation before starting). Session mechanics: - **Recopy the last 20–30 words** of the previous session to re-enter flow. - **Stop mid-scene or mid-sentence**, never at a chapter boundary, so the next session starts inside the flow. - **End with a two-line note** on where the next session goes — it soothes the part of the mind that needs direction. - **Dump intrusive thoughts** into a margin column rather than acting on them. - **Know the six ways of "being writing":** reading, cowriting, transcription, prewriting (a spoke outline — topic in the hub, four or five spokes), writing, rewriting. On an unfocused day a writer can always tolerate at least one, so "I can't write" is rarely literally true. - **Never end a session on a blank page.** Leave rough notes for tomorrow, or start each day by reading and lightly editing yesterday's pages. ## Momentum and finishing - **You cannot know the beginning until you write the end.** Push through the middle no matter how bad it is. Expect to cut 35–100 pages from the beginning in revision once the real story is visible. - **The going-back-to-the-beginning syndrome:** when the middle gets hard, writers restart at the safe beginning — an infinite loop. Diagnosis: it's an excuse; the fix is to push forward. - **The middle is where masks fall.** Writers in love with their characters refuse to hurt them, and the story flattens. The middle is where bad things happen and the protagonist is subjected to progressively tougher challenges. - **Stall diagnosis:** if you can't write, you're procrastinating; if you can't start, that's perfectionism. Both are fixed with a small, timed, low-stakes next action — write a slop-on-the-page draft; perfection is saved for later drafts. - **Don't show the first draft to anyone.** Don't even read it for at least a week to ten days after finishing; distance creates objectivity. - **Drafting in chunks:** chunk big projects into ~1,000-word increments; assign a self-deadline; change scenery, time, or tool when the well runs dry; reward completion. ## The self-contract A written, signed, dated commitment converts intention into follow-through: 1. A passionate general statement of purpose. 2. A deadline — computed with the goal math (deadline → three comparable books → average pages × 250 → daily target). 3. Daily rewards for meeting the session goal **and** daily consequences for missing it. 4. No escape clauses. 5. Signed and dated, photocopied into several copies: one kept in view while writing, several sent to tough-love witnesses, two to unconditional supporters. A witnessed contract works *with* the protective brain — it has heard years of empty promises and needs tangible evidence. ## The 30-day fast draft A complete first draft in three to five weeks is achievable for many writers with: 2 hours × 6 days/week; the Three-Rs ritual before every session; large lineless paper (or equivalent); no reading of what you've written until the book is finished; no research until after; writing fast enough to outrun the critic; and ending each session mid-sentence. The 3–5 week window is also a reading fast from other books so the writer's own voice can be met and accepted. ## Daily practice: minimum plus ideal - Set goals you control, in pairs: a minimum floor that still counts as success (e.g., 300 words) and an ideal target above it (e.g., 1,000). Countable, controllable targets with a floor beat heroic one-off sessions. - Track sessions, not moods: log words, minutes, energy (1–10), and what you'd do differently (see `scripts/habit-log.py`). - Protect the prime hour: batch email, defer errands, pre-gather tools so the best daily hours go to writing alone. Write before email, not after. - A one-minute prompted practice beats a twenty-minute session every two weeks: frequency and smallness train the muscle (see `blocks-and-prompts.md`). ## Writer types: compensation moves - **Action-minded (plot-first) writers** write structure and action well and struggle with character emotion and meaning. Compensate: develop the emotional line deliberately — character profiles, emotional beats per scene. - **Emotion-minded (character-first) writers** write characters and feeling well and struggle with concrete goals, structure, and finishing. Compensate: stake the four markers, set scene goals, schedule the end. - Good stories come from a balanced whole brain; each type fixes its weakness using its strength. ## What the assistant does at this stage - Run flow sprints with a words-per-hour meter; flag drops below ~1,200/hour as a signal to re-relax, not to worry. - Maintain the gaps list for post-draft research; never interrupt flow with fact-checking. - Draft the self-contract and track it without shaming. - Keep the writer oriented with "where the story is" check-ins (which marker is approaching). - Generate position-aware prompts when the writer needs an entry point (see `blocks-and-prompts.md`). -
editing-and-revision.md 7 KB
# Editing and Revision Turning a finished draft into a submission-ready manuscript: the correct order of operations, the critique protocol, layered revision passes, line editing, and proofreading. Use this in Editor mode. Never run this while a draft is still being written. ## The order of operations (non-negotiable) 1. **Rest.** Set the draft aside for at least a week to ten days (a month is better) before touching it. You cannot edit what you are still composing. 2. **Trusted readers.** Recruit 2–5 advance readers; get big-picture reactions before any polish. 3. **Structure-first passes.** Plot, character, pacing, chronology — the bones. No line editing until the bones hold. 4. **Prose passes.** Voice, sentence craft, word choice, show-don't-tell. 5. **Line editing and mechanics.** Grammar, punctuation, consistency. 6. **Proofreading.** The six passes in `prose-and-style.md`, then a fresh external read. Expect revision to take roughly half the draft's time or longer, and to run several rounds. A common failure is polishing structure that is about to be cut. ## The critique protocol Whether you are the critic or you are coaching the writer to gather feedback: - **Choose a trusted, honest reader** — one who wants the writer to succeed and tells the truth about the work. - **Ask big-picture questions first:** Does it make sense? Is the message the intended one? Did the sequencing work? Was it interesting and believable? Where are the weak spots? Is it submission-ready? - **Then targeted, page-referenced questions:** "Is the metaphor on page 6 too much?" "Does the scene at the diner earn its length?" - **Structure the feedback:** what works first, then what doesn't, then a suggested fix — never a verdict without a fix. - **Treat criticism as about the work, not the self.** Agree-to-disagree is allowed; if every reader flags the same problem, fix it. - **The agent as critic** must preserve the author's voice, give suggestions provisionally, and state what works before what doesn't. ## Revision passes, in order ### 1. Structural pass (the big picture) - Read the whole draft, then **outline after the draft**: a scene-by-scene list is the primary instrument for diagnosing pacing, chronology, subplot balance, and cause-and-effect. - Run the **plot lens** from `craft-and-structure.md`: where are the four markers; does each scene touch the protagonist; do scenes chain by cause and effect? - Run the **scene lens**: the seven essential elements, enter late / end early, one change per scene. Move, add, cut, or reorder — expressed as change requests, not prose edits. - Check the **three plot lines** are all advancing and converging at the climax: dramatic action, character emotional development, thematic significance. - Fix subplots: a subplot survives only if removing it would change the main story's outcome or emotional impact. - Expect to cut 35–100 pages from the beginning; the story's real start is often several chapters in. - Selective read-throughs: by subplot, by character, by setting — each line woven through the whole draft. ### 2. Scene-level questions (one per scene) 1. Does it establish when and where? 2. How does it develop the character's emotional makeup? 3. Is it driven by a specific character goal? 4. What dramatic action is shown? 5. How much conflict, tension, suspense, or curiosity? 6. Does the character show emotional change within the scene? 7. Does it reveal thematic significance? ### 3. Prose passes (one focus at a time) - **Verb strength:** replace weak verbs; prefer precise verbs over verb + adverb ("flinched" not "drew back quickly"). - **Passive-voice reduction:** convert to active unless the object or unknown agent is the point. - **Adjective/adverb trimming:** delete filler adjectives and transition-style adverbs; split the sentences that relied on them. - **Wordcraft:** strong nouns, killed clichés and dead/mixed metaphors, varied sentence length, key words at sentence ends. - **Show-don't-tell sweep:** label the spots where emotion is named rather than rendered; give a concrete rewrite per spot. - **Dialogue pass:** the blind test per speaker; subtext over on-the-nose; invisible tags. ### 4. Consistency and mechanics - POV, tense, person, tone, and style consistency. - Character consistency: names, ages, traits, timelines (keep a character sheet up to date). - Grammar and punctuation per `prose-and-style.md`. - Chronology and continuity: dates, seasons, times of day, distances, technology. ### 5. Proofreading The six passes: read aloud, read backward, targeted weak spots, spelling-only, tense/person, fresh external reader. ## Revision aids - **The before/after character profile.** Re-fill the character profile from memory of the finished draft and compare with the original; drift reveals what the character actually became. - **The one-page synopsis** written from the finished draft exposes structural gaps and reveals whether the pitch writes itself. - **The jacket blurb exercise:** write blurbs for ten admired books, then one for your own without giving away the plot; if you can't, the story's appeal isn't clear yet. - **A deadline to stop.** Revision needs an end; without one, polish is infinite. Set "good enough for submission" and mean it. ## Manuscript metrics (numbers as questions) Run `scripts/manuscript-stats.py` and use the output as a diagnostic, not a verdict: - **Word count vs. format contract** (`genres-and-formats.md`): is the length right for the genre and age category? - **Sentence length distribution:** monotony reads as flatness. - **Passive-voice ratio and adverb density:** spikes point to weak verbs. - **Crutch words:** repeated pet words ("just", "really", "very", "that", character tics) that readers notice. - **Per-chapter pacing:** chapter length outliers; sagging middles show up as flat word counts with no events. - **Readability index:** verify against the intended audience. ## The final polish checklist (before any submission) - Does the opening hook in the first pages (the "deadly ten")? - Is the antagonist stronger than the protagonist? Does the lead have an arc someone would want to play? - Any clichéd lines or scenes left? A strong climax? - Does every scene start as late as possible and end as soon as possible while pushing the story forward? - Is the manuscript formatted per its market's conventions (see `genres-and-formats.md`)? - **Wait, reread, then send:** after the final polish, wait at least a week, reread once, fix what jars, then submit. You get one first impression; a bad first read can persist in a company's records. ## What the assistant does at this stage - Gate the sequence: refuse to line-edit a draft that hasn't had structural passes; enforce the rest period. - Run one pass at a time, with concrete before/after examples. - Act as a structured critic (what works → what doesn't → suggested fix) and as the fresh external reader for comprehension. - Compute manuscript metrics and turn them into questions. - Help draft the revision plan (template: `templates/revision-plan.md`) and track passes to completion. -
genres-and-formats.md 9 KB
# Genres and Formats The contracts with numbers: word-count ladders, format conventions, and the craft rules each genre enforces. Use this when planning a project in a specific genre, checking a manuscript against its market's expectations, or formatting a submission. ## The format ladders ### Fiction and general word counts | Format | Length guide | |--------|--------------| | Flash fiction | under ~1,000 words | | Short story | several thousand, generally under ~5,000 | | Novella | ~5,000–40,000+ | | Novel (genre) | romance ~50,000–60,000; horror/mystery ~70,000–85,000; fantasy/SF 90,000–120,000+; literary ~70,000–110,000; debut fantasy commonly 90,000–120,000 | | Middle grade | 12,000–30,000 (96–192 pages) | | Young adult | novel-length (12+), teen protagonist | A typed double-spaced page ≈ 250 words. A page-a-day habit ≈ a book in a year. ### Children's book ladder | Category | Specs | |----------|-------| | Board book | ~16 pages, a few words per page, rhythmic | | Picture book | 24–32 pages, ~200–1,500 words, ≤ ~100 words per page; the story starts on a right-hand page; spreads pair pages 2–3; every odd page ends on a small cliffhanger to pull the page turn | | Early reader | 32–64 pages, up to ~1,500 words, short simple sentences | | Chapter book | 48–80 pages, 1,500–10,000 words, 10–12 short chapters, one per sitting | | Middle grade | 80–192 pages, 12,000–30,000 words | | Young adult | novel-length, protagonist's age and concerns define the boundary | **Children's craft rules:** the protagonist must solve the problem himself — an adult rescuer destroys the reader's sense of independence. Read-aloud is the critique group: perform the text and watch the audience. Dialect via word choice, never phonetic misspellings; no trendy slang (it dates the book); correct grammar for emerging readers. Note the ~2–3 year lag between writing and publication — avoid subjects that will be stale. ### Poetry forms | Form | Constraints | |------|-------------| | Haiku | 3 lines, 5-7-5 syllables, a sentinel word | | Sonnet | 14 lines of iambic pentameter; Italian ABBAABBA + volta, or English ABABCDCDEFEFGG | | Villanelle | 19 lines, two refrains, ABA rhyme | | Sestina | 6 stanzas of 6 lines + a 3-line envoi, rotating end-words | | Ghazal | 5–12 couplets, AA BA CA DA rhyme | | Ballad / common meter | 8-6-8-6 quatrains, ABAB or XAXA | | Triolet | 8 lines | | Pantoum | quatrains with refrain carry-over | | Blank verse | unrhymed iambic pentameter | | Free verse | no fixed meter; one image per line; stressed line-ends | **Poetry craft:** mark stress (nouns, roots, and verbs stressed; articles, conjunctions, prepositions not), name foot + meter, letter the rhyme scheme; use rhyme types (true, slant, eye; masculine, feminine), sound devices (alliteration, assonance, consonance), and repetition schemes (anaphora, epistrophe, chiasmus) as architecture — overused, they become noise. Revise for clichés and flowery language; read aloud for music; title last. **Submission conventions:** ~3 poems per submission, standard manuscript format, no pay-to-publish (pay-to-publish = no editorial selection and possible rights loss); first serial rights revert after print. ### Screenwriting and stage | Format | Specs | |--------|-------| | Feature screenplay | 110–120 pages ≈ 110–120 minutes; Act I ≈ 25–35 pages, Act II ≈ 45–60, Act III ≈ 25–35; first ten pages are the "deadly ten" | | TV (hour) | ~55–62 pages; pilots commissioned fall–midwinter, produced Jan–Apr, series decided by May | | Stage one-act | ~30–60 minutes | ### Manuscript conventions Double-spaced, 12-point standard font (or 10-point Courier), one-inch margins, numbered header, unnumbered title page, unbound with a clip, .doc format for most submissions. Title page: title, byline, based-on if any, revision, contact. Picture-book text submits as one continuous story (not per-page), word count top-right, title one-third down. ## Genre contracts and craft notes ### Romance - **The contract:** a central love story + a Happily Ever After (or unambiguous "they will make it") ending. No downer endings. The genre's formula is only the frame; freshness of execution sells. - **The beat spine:** Cute Meet → first kiss/first acknowledgement → first intimacy/commitment → Dark Moment (must detonate the *romantic* conflict) → resolution that comes from inside the characters. - **Conflict test:** if the couple could fix it by talking, it isn't a real romantic conflict. - **Heat levels and subgenres** (sweet, hot, scorcher; contemporary, historical, paranormal, category vs. single title) carry their own expectations — match the manuscript's heat, length, tone, and setting to the stated subgenre. - **Sexual tension outranks sex scenes** — the build (dialogue, gestures, gazes, internal thought) is what readers call "hot." - Deep POV; one POV per scene; openings deliver a hook, introduce leads and villain, hint internal conflict, end on a question. ### Fantasy and science fiction - **The contract:** internal consistency. Fantasy makes the impossible possible without explanation; SF with one. Set rules and obey them; the purple fire in chapter 3 must still work in chapter 13 or its change must be story-justified. - **The log line** exists (often "What if...?") and the premise has something to say — a theme, not just a setting. - **Plot rests on collision:** hero and villain each want something concrete; every action provokes an equal-and-opposite reaction; the ending zone (total/heroic/full-circle/dark) is deliberate. - **The world bible** (map, magic/tech rules, politics, religions, species) exists and is consulted; most never reaches the page but the writing implies it. - **Translation policy:** everything renders in plain language; invented units and names are few, pronounceable, and only kept where they matter; no anachronisms; no over-layering (one or two exotic details per paragraph max). - **Wonder preserved:** no demystifying the core magic; magic is faith. - First book of a series stands alone, with expandable threads rather than withheld resolutions. ### Mystery and thriller (general guidance) - The reader should be able to play fair: clues present, red herrings deliberate, the reveal earned; the detective solves it through evidence, not luck or confession at the end. ### Comedy - **Comedy is a numbers game:** roughly 5% of ideas work as jokes and ~1 in 100 works really well; capture volume, discard fast, revise relentlessly. - **The joke engines:** setup-and-punch; the element of surprise (misdirect, then detour; ration it); tension-and-release; the rule of three (two proving items, then a twist on the third — and deliberately violating the three is equally reliable); funny sounds (hard k's, double consonants). - **The notebook is an external hard drive** — capture every half-idea without judging; date the volumes (provenance in disputes). - **Universal experience is the mind-reading secret:** voice what everyone privately feels; connection, not shock, is the product. - **Originality is the defense:** a voice-locked, persona-specific act is steal-proof. ### Children's (see ladder above) ### Graphic novels - **The page is the unit of suspense** — every page ends on a small kicker (reveal, raised conflict, question). - **The medium removes the reader's imagination:** a paragraph becomes one panel (a glare, a gesture); scripting is shot-listing in camera angles and physical tells. - **Script methods:** full script; plot-first/Marvel method (artist breaks down pages); thumbnail breakdowns (writer storyboards every page). Choose per collaborator; a shared storyboard pass catches plot weaknesses cheaply. - **Pacing is physical:** 4–6 panels per page is default; fewer/larger slows and dramatizes; many/small compresses; splashes and double spreads must earn their space. - **Dialogue is "real-sounding," not realistic:** streamlined, per-character voice, ~25–30 words max per balloon; captions never restate the art or the balloons. - **Design telegraphs personality:** model sheets of the full cast early; a character must read as friendly/dangerous/innocent at first glance. - **The business is brutal:** distributor discounts are large, indie pages cost real money, and every agreement (especially work-for-hire) must be written. ### Screenwriting basics (transferable craft) - **Two-mode drafting; scene entry/exit discipline** (enter as close as possible to the outcome, cut the confirming closing beat); the "20s" originality exercise; emotional core before plot; pacing as parsimony (give the least, as slowly as possible while staying gripping); read aloud and time scenes. ## Checking work against a format contract 1. Identify the format and its word-count/page-count contract. 2. Measure the manuscript (see `scripts/manuscript-stats.py`). 3. Surface mismatches as questions — "this picture book text runs 2,300 words; the market expects 200–1,500; what's the plan?" — before craft review. Length/category mismatches catch most beginner failures early. 4. Then check the genre contract (above) before prose quality. -
habits-and-lifestyle.md 6.4 KB
# Habits and Lifestyle The writing life: the repeatable behaviors of working writers, the physical and psychological space writing needs, and how to sustain a career. Use this in Coach mode for habit-building, environment, and sustainability — and whenever a writer is not writing. ## The ten habit categories Working writers maintain habits across ten domains. Coach them one at a time; the writer picks the category, not the agent. 1. **Daily output** — pages or words per day, streak, minimum-plus-ideal targets, mid-scene stopping points so every session restarts easily. One page a day is a complete career strategy; frequency and smallness beat heroic volume. 2. **Session discipline** — protect the prime hour; a short pre-session ritual (reserve, remove, relax); multiple scheduled stints rather than one all-or-nothing block; write before email. 3. **Draft/revision separation** — a no-edit-while-drafting regime; revision passes only after "the end"; a steeping period before submission; deferred feedback. 4. **Recharge and health** — sleep, exercise, rest days, recharge activities, time off between books. The muse is a myth; the body is real. 5. **Mindset and emotion** — inner-critic scheduling (draft mode vs. revise mode), the "what's the next sentence?" reframe, rejection-recovery workflows, periodic meaning checks ("why am I writing this?"). 6. **Idea capture and research** — a notebook/voice-capture habit, a "writer's bank" of stored experiences, batched research, rotation across observation/imagination/memory channels. 7. **Reading apprenticeship** — a reading quota; read great novels twice — once for the dream, once to reverse-engineer the craft; daily news and other fields as material. 8. **Business and promotion** — query letters, synopses, blurb requests, deadlines, thank-you notes, reputation and courtesy, low-maintenance author behavior, website upkeep. 9. **Physical and creative space** — the space audit (quiet, secluded, organized, calming), protection rules, alternate spaces, and the portable-writer mindset. 10. **Practice-through-prompting** — a steady stream of time-budgeted prompts that keep the muscles flexed even when no project is active (see `blocks-and-prompts.md`). ## The writer's space - **Space is subjective and portable.** A windowless closet can beat a panoramic view; the primary writing space is the bubble around your skin — usable in bed, on a bench, in a café, in a car or an airport. What matters is that it is yours and protected. - **The space audit:** quiet, secluded, organized, calming. If the current space fails the audit, fix the one dimension that hurts most rather than redecorating. - **No one else can enforce your writing time.** Boundaries are announced to household, colleagues, and pets — and then defended. - **Kill the time burglars:** batch research with an asterisk-and-batch method, defer email, pre-gather tools, so the prime hour goes to writing alone. - **Ritual objects:** same time, same place, water, music, comfortable clothes; ritual converts habit into committed practice before quality is judged. ## Sustainability - **Low overhead is creative freedom.** An expensive lifestyle forces a writer into money assignments instead of passion projects; financial overhead is a creative tax. Live simply so you can choose what to write. - **The writing life is a whole life.** Writers must weave writing into family, work, and identity rather than sacrifice one for the other. Resilience comes from community, from reconnecting to "something to say," and from rituals that turn rejection and self-doubt into fuel. - **Community is the lifeline:** a small group (four or five serious writers, every two weeks or so, honest opinions with courtesy) provides feedback, accountability, and a surrogate family. Prefer groups headed by successful, egoless writers — groups of frustrated members normalize excuses. - **Identity is claimed, not conferred.** Writers become writers by saying so and by acting on it. Treat "being a writer" as a choice the writer makes; the "not-good-enough" belief is the myth to retire. - **Meaning is made, not found.** The habit is to keep choosing the work daily: decide what to write and why, write for yourself first, and let the significance follow the commitment. ## Reading as apprenticeship - Read voraciously and outside your genre (fiction, poetry, nonfiction, architecture, other fields); a writer's depth comes from beyond their own form. - Read great work twice: once for the experience, once to reverse-engineer the craft — list major scenes, impose turning points, analyze theme. - **The daily microdose:** a short hook, a digest, a positioning insight — one classic per day nourishes the inner library, and nearly every classic encodes a perseverance story that refuels courage. - **A reading fast** (several weeks, from books) isolates the writer's own voice when starting a project; it's the deliberate counter-move to borrowing others' voices. ## Rejection and the career of habit - **Rejection is arithmetic about the work, not identity.** A "no" from an agent or editor is feedback about fit, not a verdict on worth. Allow twenty-four hours of self-pity per rejection, then iterate: revise the query if queries fail; revise the manuscript if partials fail. - **Boomerang submissions:** send the piece out; the moment it returns, send it to the next market. Rejection is a loop to be run. - **Start the next project the day the last one ships.** Careers build over several titles; most first books don't earn out. - **Professionalism compounds:** deadlines honored, thank-you notes sent, low-maintenance behavior, reputation across a small industry — the business half of the habit set is as trainable as the craft half. - **Don't store the anger.** Wait three days, then decide. ## What the assistant does at this stage - Help the writer pick one habit category and design a minimum-plus-ideal target for it; track it without shaming (see `scripts/habit-log.py`). - Run the space audit and the prime-hour protection plan (see `templates/session-plan.md`). - Schedule the inner critic: draft mode vs. revise mode, never silenced forever, never present during drafting. - Provide rejection-recovery workflows and "something to say" reframes when motivation flags. - Feed the reading life: microdoses, craft studies, perseverance stories for discouraging days. - Keep the money and meaning honest: low overhead, whole-life integration, and identity as a choice. -
pitfalls-and-solutions.md 8.4 KB
# Pitfalls and Solutions The failure modes that kill drafts, careers, and manuscripts — collected across the writing library, organized by stage, each with the fix. Use this when something is going wrong and you need the fastest honest diagnosis. When in doubt, diagnose before prescribing: name the actual failure, then apply the matched fix. ## In planning and premise | Pitfall | Fix | |---------|-----| | Premise has no conflict | It's a topic, not a story. Add a protagonist with a goal, an obstacle, and stakes; run the four-test screen in `workflow-and-planning.md` | | Scope is wrong | Card-outline the project; if it can't finish at the intended length, narrow the premise | | "Everyone" is the audience | There's no such thing as too narrow a market if you can show purchase intent. Name the specific reader | | Planning forever, writing never | The plan is a form of procrastination. Stake five load-bearing scenes and start the draft; outline after the draft if you must | | No deadline | Run the goal math (deadline → comparable books → daily target) and schedule in pen | ## In drafting | Pitfall | Fix | |---------|-----| | Editing while drafting | Split the modes completely; a no-edit-while-drafting regime. First drafts are raw material | | Perfectionism / can't start | It's fear wearing a costume. Tiny timed next action; slop-on-the-page draft; permission to write badly | | Going back to the beginning | Restart syndrome. The end reveals what the beginning needed — push forward | | Sagging middle | The middle is half the book and gets twice as many scenes; the masks fall, bad things happen, challenges escalate. Check the energy map: is anything happening above the line? | | Protecting characters | Writers in love with their characters refuse to hurt them. The middle is where the protagonist is subjected to progressively tougher challenges | | Stopping at chapter ends | Momentum dies. Stop mid-scene or mid-sentence; recopy the last 20–30 words at the next start | | Research rabbit holes | Research is a seducer. Write first, keep a gaps list, verify after | | Slow writing | Below ~1,200 words/hour the inner critic is interfering. Re-relax, change tools, pace in timed blocks | | Multi-year drafting | Several versions of the voice get into one book. Write fast; two drafts are enough | ## In structure and story | Pitfall | Fix | |---------|-----| | Episodic scenes | Scenes must chain by cause and effect; draw the links; unlinked scenes read as episode, not plot | | No character change | Plot is character change. Identify who changes most; that's the spine. Check the four markers | | Missing flaw | Find it at the crisis: whatever the protagonist can't do when it counts is the flaw — thread it backward | | Crisis with no energy | Often it's really the recommitment scene. Promote a bigger scene into the crisis position, or add a second higher peak | | Backstory dumped up front | Withhold until the reader cares; the sanctioned full reveal is at the threshold after the crisis | | Info dumps | Express beliefs and world facts through characters' actions and dialogue; give only what the scene needs | | All-summary telling | Convert pivotal moments to moment-by-moment scenes; render emotion as behavior | | Subplot sprawl | A subplot survives only if removing it changes the main outcome or emotional impact. Cut the rest | | Never-repeat-deepen violations | Every reappearance escalates: wider consequences, deeper glimpse | | Overlong introductions | Nobody cares about characters until they do something interesting. Cut the intro to essentials | | Point-of-view slips | One narrator per scene; no leaks of unobserved thoughts; make switches unmistakable from the first line | ## In prose and mechanics | Pitfall | Fix | |---------|-----| | Passive-voice drag | Convert to active unless the object or unknown agent is the point | | Adverb and adjective reliance | Prefer precise verbs and strong nouns; split the sentences that leaned on them | | Clichés and dead metaphors | The completion test: if you can finish the phrase, it's a cliché. Kill them; never mix metaphors | | Monotone sentences | Vary length and type; short for urgency, long for calm; measure the distribution | | Muddy prose | Unclear pronouns, subject-verb separation, run-ons — run the macro-then-micro checklists in `editing-and-revision.md` | | Correct spelling, wrong word | Confusables pass with mnemonic explanations; a spell-checker can't catch their/there/they're | | Flowery or bookish diction | Express, don't impress; prefer the true word over the impressive one | | Logic errors | Faulty comparisons, qualified absolutes, non sequiturs, sweeping generalizations — an editing pass checks reasoning, not just grammar | ## In dialogue | Pitfall | Fix | |---------|-----| | On-the-nose lines | Subtext: write about one thing, mean another | | Interchangeable voices | The blind test: identify the speaker from the block alone; write from inside each character's perception | | Transcript dialogue | Edit real speech down to its essence; mix fragments and hesitations | | Tag clutter | "Said" is invisible; use none once speakers are established | | Exposition disguised as dialogue | Convert exposition into questions the audience wants answered, then pay them off | ## In revision and editing | Pitfall | Fix | |---------|-----| | Line editing before structure | Polish can't fix a broken story. Gate the sequence: structure → prose → mechanics | | No rest period | You can't edit what you're still composing. Set the draft aside a week to ten days minimum | | No trusted readers | 2–5 advance readers; ask big-picture questions first | | Fixing the wrong problem | If queries fail, fix the query; if partials fail, fix the manuscript. Match the fix to the failure | | Revision without end | Set a "good enough for submission" deadline and mean it | | Polishing dead scenes | Cut or merge scenes that fail several of the seven elements before polishing them | ## In the business of writing | Pitfall | Fix | |---------|-----| | Submitting too early | You get one first impression; a bad first read can persist. Wait a week, reread, then send | | "Dear Agent" or misspelled names | Research the exact person; agents move — verify current employment | | Gimmicks in queries | One page, plain paper, hook first, no humor gimmicks | | Fee-charging "agents" | Reading fees, mandatory paid edits, padded expenses — run. Legitimate agents earn commission only | | Vanity presses | Pay-to-publish with poor distribution and no editorial selection. If they charge you and take rights, run | | Waiting for discovery | You are your own number-one client; generate your own work, follow up, ask for the referral | | Ignoring the money math | A nominal six-figure deal nets far less after commission and taxes. Decide with eyes open | | Over-contacting an agent | Check in every 3–4 weeks and keep it; the squeaky wheel gets replaced | | No platform | The author is the marketer; build the audience before you need it | | Stopping after one book | Careers build over several titles; start the next project the day the last one ships | | Rejection as verdict | Rejection is arithmetic about fit; boomerang the submission and keep going | ## In the writing life | Pitfall | Fix | |---------|-----| | All-or-nothing scheduling | Frequency and smallness beat heroic volume; a one-minute practice beats a biweekly marathon | | Burnout | Recharge is a habit: sleep, exercise, rest days, time off between books | | Lifestyle creep | Low overhead preserves the freedom to choose projects by passion | | Isolation | Community is the lifeline; a small serious writing group outranks a support group | | "Not good enough" identity | Identity is claimed, not conferred. Say "I am a writer" and collect counter-evidence | | Comparing yourself to others | Jealousy is energy; channel it into practice and remember criticism targets the work | | Storing anger | Wait three days, then decide — rejection and critique are process, not injury | ## The universal ones - **Fear of failure and fear of success** are the two great writers' fears; both dissolve into small timed next actions and finished small pieces. - **Never stop the boomerang:** a piece that isn't circulating is a piece that isn't trying. - **Voice sovereignty:** the author is the final judge of their own work; a helper who flattens the writer's voice is a liability. - **Copyright hygiene:** never reproduce published text; paraphrase, synthesize, and write original examples — in this skill and in everything the writer ships. -
prose-and-style.md 8.6 KB
# Prose and Style: Voice, Sentence Craft, Word Choice, Grammar How the writing *reads*: voice, sentence-level craft, word choice, and the mechanical correctness that makes style invisible. Use this during polishing, line editing, and proofreading — never during drafting. ## The style feature set (lean and clear) A strong default style — the kind taught by masters of plain prose — is a specific, checkable set of features: - **Concrete nouns carry the weight.** Prefer the exact word over the general category ("squirrel" over "animal"; "scalpel" over "tool"). - **Active verbs.** Prefer active voice; keep passive only when the receiver of the action is the real topic or the agent is unknown. - **Adjectives sparse.** Roughly one apt adjective per noun; flag adjective piles and abstract emotional labels. - **Sentence length variation.** Short sentences (six to ten words average in mature passages) for action and urgency; longer sentences for calm, motion, or contrast. Vary sentence type (simple / compound / complex) to prevent monotony. News writing caps sentences near ~20 words; measure against your audience. - **Basic grammar, invisible architecture.** The reader should never stumble on the frame. - **Common vocabulary.** Prefer the true word over the bookish one; precision beats impressiveness. - **Deliberate repetition.** Repetition is a device when chosen; accidental repetition is noise. - **Similes and metaphors rare and apt.** Kill dead metaphors, never mix metaphors. ## Show, don't tell, executed mechanically - Convert summary sentences into witnessed scenes using at least two of the five senses — including smell and sound, not just sight. - Reveal character through actions, reactions, speech, and sensory detail, not trait lists. - Present scenes without judging, moralizing, or editorializing. Show a villain's actions; never pronounce him a villain. - Emotion is conveyed through visible action and physical detail: a clenched fist, bared teeth, a pause, a shift of posture. Give one concrete showed-vs-told rewrite per fix, never just the rule. - Open with action, not backstory. Weave history in later — triggered memory, dialogue, props, short flashbacks — never dumped up front and never mid-climax. ## Voice - **Voice is what's left after the rules.** A writer's voice emerges from rhythm, word choices, and what is omitted; you cannot manufacture one by copying features. Protect the author's voice — never flatten it into your own register. - **The iceberg principle:** a writer who deeply knows a subject may cut almost all of it, and the reader feels the omitted weight as strongly as if it were printed. Only about one-eighth surfaces; cutting from ignorance creates hollow spots readers can sense. - **The one true sentence:** begin each session by finding a single honest declarative sentence. It is discipline and doorway; across a career it becomes the style itself. - **Write the backstory, then cut it.** Draft the full biography and whole leading scenes, then delete them from the page; the unseen mass steers characterization. - **Voice isolation:** a reading fast from other books (a few weeks) forces a writer to meet their own voice instead of borrowing others'. ## Word choice and the word-craft toolkit A writing assistant should offer, on demand: - **Concept-to-alternatives** with part-of-speech tags and an original example sentence per candidate (the way a writer-oriented thesaurus does). - **Overused-word detection** in a draft, with replacements shown in context. - **Register shifting** — plain ↔ erudite — with pretentiousness flags. The test: express, don't impress. - **Per-emotion and per-character vocabulary sets** (jealousy, rage, greed, pride, fear, etc.): what does a character consumed by envy feel, say, and do? Mood-consistent word sets and character-voice options. - **Confusables-aware proofreading** — correct spelling, wrong sense (their/there/they're; principal/principle; affect/effect; its/it's) — with mnemonic explanations, not silent fixes. - **On-demand etymology and word-myth checking.** Word origins are deployable texture for naming, character voice, and wordplay. Verify, don't bless: a plausible-sounding word is believed because of its shape, not its existence. Dictionary-check any unfamiliar or invented word. - **Rhythm-aware alternatives** (word length, syllable count, cadence) so word choice serves sound and pace, not just meaning. ## Grammar essentials (the high-frequency rules) Check the common errors first; rare rules are a distraction. - **Agreement.** Strip intervening prepositional and parenthetical phrases before matching subject and verb. Indefinite pronouns: all/any/most/none/some follow the object of the preposition. With or/nor, the verb agrees with the nearer subject. Here/there sentences match the true subject that follows. Titles take singular verbs even in plural form. After a fraction or percentage, the object of "of" decides the verb ("two-thirds of the bedroom was"; "fifty percent of the spoons were"). - **Pronoun case.** Never decide by ear on compounds — test each pronoun alone ("me went" fails). Objects of prepositions are always objective (between you and me). With than/as, restore the omitted clause to pick the case. For who/whom: isolate the clause, scramble to a statement, substitute he/him — he → who, him → whom. - **Commas.** Apply the essentiality test: if removing the clause or appositive preserves the meaning, set it off with commas; if meaning collapses, no commas. The same test drives that vs. which. Hard-flag commas between subject and verb, between the verbs of a compound predicate, and between month and year. Keep the comma before a coordinating conjunction joining independent clauses. - **Apostrophes and possession.** Ask what the word possesses: 's for singular (including names ending in s, by most style guides), trailing apostrophe for s-plurals, 's for irregular plurals (children's). Joint possession takes one apostrophe on the last name; separate possession takes both. Never pluralize with an apostrophe. Possessive pronouns never take apostrophes. - **Contractions vs. possessives.** Expand it's/who's/they're/you're into their two words before judging; if the expansion reads wrong, the possessive is needed. - **Quoted text.** New paragraph per speaker; periods and commas inside closing quotes, colons and semicolons outside; question/exclamation marks placed by what actually asks or exclaims. - **Deliberate rule-breaking.** Before "fixing" a deliberate fragment or split infinitive, confirm it serves the reader. Correct with explanation, not lecturing; preserve the author's chosen person and tense unless a shift is requested. ## Cliché discipline and language traps - **The completion test:** if you can finish the phrase after the first words, it's a cliché — including trendy pop-culture phrases, not just old ones. - **Logic is part of style.** Faulty comparisons (like-vs-unlike, missing "else"), absolute adjectives qualified ("somewhat unique"), non sequiturs, post hoc reasoning, and sweeping generalizations erode credibility as surely as misspellings. An editing pass must check reasoning, not just grammar. - **Cut wordy fillers:** "month of June," "completely full," "very unique," redundancies, double negatives. Make every word earn its place. - **Jargon and gobbledygook:** translate bureaucratic and obscure language into plain speech; if you can't say it simply, you don't understand it yet. ## Readability and measurement - Default readability target: roughly 7th–10th grade level unless the audience warrants more. - Measure: sentence length distribution, passive-voice ratio, adverb density, repeated crutch words, paragraph length, per-chapter pacing. Run `scripts/manuscript-stats.py` on a draft and use the numbers as questions, not verdicts. - Punctuation is meaning: identical word strings say different things at different comma placements. Semicolons join logically connected complete thoughts only. ## Proofreading discipline (six passes) Self-review has a reproducible protocol; run it in order: 1. **Read aloud** — the ear catches what the eye skips; time long scenes, and every line should be sayable by an actor. 2. **Read backward**, sentence by sentence — breaks the flow illusion that hides errors. 3. **Targeted pass** — your known weak spots (their/they're, comma splices, repeated words). 4. **Spelling-only pass** — including the correctly-spelled-wrong-word traps. 5. **Tense and person consistency pass.** 6. **Fresh external reader** — the agent can be that reader, checking comprehension and clarity, not just rules. Distance matters: let the piece rest days or weeks before proofreading; you cannot proofread what you are still composing. -
publishing-and-career.md 9.9 KB
# Publishing and Career The business of writing: book proposals, query letters, synopses, agents, publishers, contracts, deals, rights, rejection, and platform. Use this in Business-partner mode whenever the conversation turns to selling the work. Fiction and nonfiction travel different roads — know which one you're on. ## The two roads - **Nonfiction is sold on a proposal** — a 30–40 page argument (overview, market, competition, platform/promotion, chapter outline, two sample chapters) — before the book is written. - **Fiction is sold on a finished manuscript** plus a synopsis, a query letter, and (increasingly) platform evidence. - **Volume precedes market:** finish several complete works before submitting anything; the early works are tuition, not product. A calling card — a finished, polished sample — opens doors; enthusiasm does not. ## The compression ladder A writer must be able to state the story at every length, and each shorter document is a marketing tool while the longer ones are working tools: 1. **Logline** — one to two sentences, under ~25 words; protagonist + goal + obstacle + stakes; poster-tagline diction. 2. **Meets line** — "Concept A meets Concept B" with two successful touchstones. 3. **One-page synopsis** — third person, present tense, full arc compressed, no dialogue, no author intrusion, no commentary on quality. 4. **Treatment / chapter outline** — the story in detail, act by act (or chapter by chapter), every word earning its place. 5. **Query letter** — one page that sells the opportunity, not the work. 6. **The pitch** — verbal, brief, colorful, enthusiastic; never memorized; end with the direct ask. Never let a writer pitch at a length they haven't drafted at shorter lengths. ## The book proposal (nonfiction) Ordered sections (template: `templates/book-proposal.md`): 1. **Title page** — working title and contact. 2. **Proposal table of contents.** 3. **One-page author bio** — why you are the right writer, credentials and authority, where you're headed. 4. **Overview** (~10 pages) — the hook and selling handle; the book's summary; why it must be published; who will read it and why; why this author; length and completion schedule. 5. **Target market** — a specific, numerically supported audience and their buying motivation. "Everyone" is a red flag; there's no such thing as too narrow a market if you can show purchase intent. 6. **Competition** — a table of comparable titles (title, author, publisher, price, year, pages, ISBN) plus differentiation: out of print, aimed elsewhere, or weaker. Competition helps — it proves a market exists. 7. **Platform and promotion** — platform is the audience you can already reach (site/blog traffic, teaching posts, memberships, clips); promotion is the concrete activities you'll execute at release (media, bylined articles, speaking, events, blurbs). 8. **Chapter-by-chapter outline** — one to three narrative paragraphs per chapter in the book's own tone. 9. **Two sample chapters** (three if chapters run under ~10 pages), non-consecutive, showing different facets. ## The query letter **Fiction (five elements in order):** 1. Title (attractive, provisional). 2. The grabber — three sentences or less, sensory, no opening question, ideally a flattering comparison to a comparable successful book. 3. The top 2–3 main characters, one short paragraph each. 4. The plot in 3–4 paragraphs. 5. A closing that reiterates the hook and invites a request for material. **Nonfiction (five elements in order):** 1. Title. 2. Grabber with comparison. 3. The market — primary and secondary audiences, the gap this book fills vs. its competition. 4. The makeup/design — chapter headings, sections, special elements. 5. The closing. **Universal rules:** one page; short paragraphs; typed; personalized with the agent's correct, spelled name at the right company; credentials limited to a line or two; plain paper, no gimmicks; sign it; mark "Requested Material" if contact was made first. The hook is the most crucial element — editors skim hundreds of queries a week. **The synopsis:** one page (fiction) — present tense, third person, reveal the ending, no dialogue, no author intrusion; the story's appeal must survive the compression (template: `templates/synopsis.md`). ## Agents - **The funnel:** build a large candidate list (200+), query in waves, expect roughly half to respond within ~10 days and a small single-digit percentage to be positive. Rate responses on enthusiasm and fit; interview finalists. - **Vetting checklist:** area of expertise; openness to new clients; publisher contacts; commission (10–15% only); sales record; agency size (a hungrier small shop vs. an established large one); location; personality. - **Red flags (run):** reading fees, mandatory editing services (often kickbacks), padded expenses, hidden charges, "exclusive review" demands, demands to disclose other submissions. - **Interview questions:** how many publishers will you approach first (want a dozen+ to create an auction); how soon will material reach publishers (want ~10 days); how long to a deal; what advance range do you expect. - **You are your own number-one client.** Even represented writers generate most of their own work; an agent is a complement, not a savior. Set a check-in cadence (every 3–4 weeks) and keep it; over-contacting ends relationships. - **The money math:** agents take ~15% (literary; more with foreign sales), managers ~15%, lawyers ~5%, taxes on top — a nominal six-figure deal nets far less over the years it took to write. Enter with eyes open; never pay upfront or reading fees. ## Publishers and the deal - **Traditional:** credibility, editorial, distribution; advances and royalties (the advance is the consolation prize — many projects die in development, and a writer can make a living on projects that never reach the shelf). The author still does most marketing. - **Self-publishing / Print on Demand:** the author owns everything and keeps the per-book margin but becomes a small business: entity, ISBNs, cover, formatting, editing, promotion, distribution. Check turnaround, distribution channels, and the revenue split honestly. - **Vanity/subsidy presses (avoid):** pay to publish, little editorial selection, poor distribution, inflated royalty promises. If they charge the author to publish and take the rights, run. - **Know the rights you're selling:** copyright attaches at fixed form; register it. Magazines buy first or second serial rights; work-for-hire flips ownership to the employer; adaptation rights are negotiable. Ideas themselves cannot be protected — execution is. - **Working with editors:** the book stops being yours once it's sold; co-parent with the editor, let the pros rename and design, and treat revision notes as collaboration. Triage notes: the diagnosis is usually right, the suggested remedy often wrong; apply the rule of three (one mention = note, two = worry, three = fix); never argue in the moment. - **Timeline:** expect roughly two years from idea to shelf; first-book publication takes longer than it should; the second book is the real career move. ## Rejection, follow-up, and submission hygiene - **Rejection is a curriculum.** Form rejections are desk-drawer fuel; one receptive editor erases a hundred passes. Pin them up, study them, ask politely for feedback on the next submission. Judges are subjective — two editors can reject the same book for opposite reasons. - **Boomerang:** send the piece out; the moment it returns, send it to the next market. Track everything (template: `templates/submission-log.md`; script: `scripts/submission-tracker.py`). - **The follow-up cadence:** submit in waves; check in after a couple of weeks, then about once a week; more is a nuisance, less and you're forgotten. Follow up after a "no" gracefully — the graceful follow-up has converted closed doors into open ones. - **Correspondence basics** (from letter-craft teaching): state the purpose in the first paragraph; verify the recipient's name, spelling, and title; keep to one page; end with a specific call to action; write as if the letter will be kept and quoted; burn no bridges. - **Come in with an idea, not a request.** Never walk in asking for a job or a read; walk in with something the other party could say yes to, plus proof you can execute it. End every pitch with the direct ask. - **Never submit too early.** You get one first impression; a bad first read can persist in a company's records even after you rewrite. Wait a week, reread, then send. Register your work first (writers' guild or copyright office). ## Platform and marketing - **The author is the marketer** — even with a traditional publisher. Word of mouth sells books; direct audiences reached one person at a time (talks, events, back-of-room sales, newsletters) matter more than mass media. - **Start local and small:** local papers, small magazines, newsletters; clips and a local audience are stepping stones, not shame. - **Platform = the audience you can already reach.** Build it before you need it: website, newsletter, bylined pieces, teaching, membership communities. Post only with backup work ready — a one-hit impression reads as a one-hit wonder. - **The reading of the trades:** know who is publishing what, who just signed a deal, what the market is buying — the intelligence source for timing and targeting. ## What the assistant does at this stage - Draft and iterate query letters, synopses, and proposals under hard constraints (one page, named addressee, hook first, no gimmicks). - Build the agent candidate list and personalize each query; track responses and follow-ups. - Keep the money math honest (commissions, taxes, net of a nominal sale) and flag fee-charging scams. - Enforce the wait-and-reread-before-sending rule; register-first hygiene. - Normalize rejection: parse form rejections, draft polite feedback requests, run boomerang resubmissions. - Help build the platform plan and the promotional timeline. -
workflow-and-planning.md 8.9 KB
# Workflow, Planning, and Research The master map for any writing project, fiction or nonfiction. Use this reference when a project is being born: testing ideas, choosing structure, planning the work, and organizing research. It also covers the "goal math" that converts a deadline into a daily word target. ## The writing lifecycle Writing is a pipeline with seven stages: **idea → plan → research → organize → draft → edit → evaluate**. It is deliberately non-linear — drafting exposes research gaps, evaluation loops back into revision — but every piece passes through all seven eventually. - The drafting and editing stages are separate *states of mind*, not just separate steps. Protect the draft (see `drafting-and-process.md`); do not let the editor touch the writer mid-draft. - Every project needs a stated "done": a definition of completion and a deadline. Without both, the middle of any project becomes an open-ended grind. - The agent's job is to name the current stage, keep the author's stated purpose visible, and move the project through the stages in order — while tolerating the zigzagging real writers do. ## Finding and testing ideas ### Idea-generation moves - **What-if and I-wonder chains.** Take any premise and push it: "what if X" then "what if X and also Y". Invented logic may outrank literal truth — the factual "well, actually" kills the chain. - **Borrowed structure.** Recast a known story in another genre, setting, or point of view. The structure is a scaffold; the new content is yours. - **Combinatorial lists.** Build three lists — character types, conflicts, settings — and combine one from each. Two characters defined by a love-list vs. hate-list generates instant friction. - **Observation as fuel.** Eavesdrop, people-watch, keep a notebook. The channels are three: observation, imagination, memory. Rotate them. - **Constraint prompts.** "One emotion in five scenarios", "animate an object", "replay a decision with its alternate branch", "take the first line of a favorite book and make it your own". ### The four-test screen for choosing an idea 1. Does it seize your own imagination? (You will live with it for months.) 2. Is the scope right? Card-outline it; can you finish it at the length you intend? 3. Would an audience care? (Required for publication-seeking work.) 4. Does it carry drama and conflict? A premise without conflict is a topic, not a story. ### The one-line pitch and high-concept bar - **Logline:** one to two sentences, under ~25 words: protagonist + goal + obstacle + stakes, written like poster tagline copy — short words, concrete imagery. - **Meets line:** "Concept A meets Concept B" — two well-known touchstones that transmit tone and audience in one line. Use only successful, respected reference points. - **High-concept checklist:** great title, fascinating subject, strong hook, broad audience appeal. If it can't be said in a couple of short sentences, it isn't high concept yet. - **Compression ladder:** a writer must be able to state the story at every length: logline → meets line → one-page synopsis → outline/proposal → full draft. Never let anyone pitch at a length they haven't earned at shorter lengths. ## Outlining: structure before prose ### Two valid planning styles - **Tight (plotters):** outline scenes in order before drafting. Strength: structure, completion, pacing. Weakness: characters and emotion can go flat; the outline can become a cage. - **Loose (pantsers):** start with a premise, a protagonist, and a direction, and discover the story while writing. Strength: voice, surprise, emotional truth. Weakness: sagging middles, structural drift, unfinished drafts. - **The balanced move:** each type compensates using its strength — plotters force themselves to develop the emotional line; pantsers force themselves to stake structure. Both end up with the same thing: a story that is plotted *and* felt. ### Backward design You cannot know the beginning until you write the end. When full outlining feels impossible: 1. Write the **climax** first: the scene where the transformed protagonist does something she could not do anywhere else in the story. 2. The climax dictates what skills the protagonist must be **missing at the start** and must **relearn in the middle**. 3. Stake the five load-bearing scenes: opening, Act I reversal, Act II reversal, climax, resolution. Fill the gaps later. This is the antidote to perfectionism and to the "going-back-to-the-beginning" loop that stalls middle drafts. ### Proportion map - Beginning ≈ first quarter; middle ≈ half; end ≈ final quarter. The middle needs twice as many scenes as either end. - Four **energetic markers** anchor the skeleton (full treatment in `craft-and-structure.md`): - ~25% — End of the Beginning: threshold crossed, no turning back - ~50% — Halfway Point: conscious recommitment to the journey - ~75% — Crisis: the figurative death of the old self, antagonist at full power - End — Climax: the transformed protagonist performs the action the old self could not ### The outline as a revision instrument Even writers who refuse to plan in advance must **outline after writing**. A scene-by-scene outline is the primary instrument for diagnosing pacing, chronology, subplot balance, and cause-and-effect gaps. ## Worldbuilding (for speculative and historical fiction) - **Rules are the contract.** Fantasy makes the impossible possible without explanation; science fiction makes it possible *with* one. In both, the author's entire job is to set internal rules and obey them. The purple fire in chapter 3 must still work in chapter 13, or its change must be shown growing from the story. - **The three-quarters rule.** Build a world bible — map, magic/tech rules, religions, politics, species, geography — and expect most of it never to reach the page. The writing implies the mass that is cut. - **Translation policy.** Render everything characters say in plain language; keep invented names, units, and idioms few, pronounceable, and only where they meaningfully change the story. No "Earth minutes." - **No infodumps.** Deliver world facts through motivated dialogue and characters doing things, never exposition blocks. Give the reader only what the current scene needs. - **Anachronism scan.** Check era-wrong words, objects, and food in historical fiction; dated technology in near-future SF. - **Don't demystify the wonder.** Explaining the core magic as biology drains the awe; keep some mystery sacred. - **Depth of detail.** Details develop like drafts: first-draft details are generic and clichéd; each rewrite makes them more specific and more universal. ## Research discipline - **Write first, research later.** Most pre-writing research never surfaces in the final draft. Draft with blank gaps marked, then hunt only the facts the draft actually needs. Research is a seducer that pulls writers away from the draft. - **Verification pass.** Facts go stale — hours, prices, openings, titles. Verify or date-stamp claims. For nonfiction, details are the trust engine: concrete, verified specifics do more for credibility than any assertion of expertise. - **The gaps list.** During drafting, maintain a running list of unknowns (names, dates, figures, descriptions) to resolve in a single post-draft research session. - **For memoir:** interview relatives, dig through records and photos, revisit places, and treat honesty over completeness. A memoir is a careful construction of selected meaningful time — summary, exposition, and drama — not a whole-life autobiography. ## Goal math: deadline to daily target 1. Pick a completion date. 2. Average the page counts of three books comparable to yours. 3. Multiply by ~250 words per page for the total word count. 4. Divide by the number of writing days remaining to get the daily target. 5. Schedule writing sessions in pen, and recalculate honestly when the calendar slips. Example: three comparable novels average 320 pages → 80,000 words. Ninety writing days out → 889 words/day. Set the floor below that (~700) so days count as wins, and the ideal above it (~1,100). ## Planning the nonfiction book: proposal before book Nonfiction is sold as a proposal, not a finished manuscript: overview, market, competition, platform/promotion, chapter-by-chapter outline, two sample chapters (full structure in `publishing-and-career.md` and `templates/book-proposal.md`). Plan the book as the answer to a question the market is asking, with a specific audience you can reach. ## Deliverables from this stage - A one-line pitch and meets line that pass the high-concept bar - A premise canvas (template: `templates/premise-canvas.md`) - A story outline with the four markers staked (template: `templates/story-outline.md`) - A character profile for the protagonist and antagonist (template: `templates/character-profile.md`) - A worldbuilding questionnaire if the genre needs one (template: `templates/worldbuilding-questionnaire.md`) - A daily word target and calendar - A gaps list for post-draft research
-
-
scripts
-
habit-log.py 6.6 KB
#!/usr/bin/env python3 """Journal writing sessions and report progress. Appends one session record per call to a JSONL file (default ~/.writing-habits.jsonl) and reports day/week/month totals, averages, streaks, and best days. Non-interactive; --dry-run previews an append. Examples: habit-log.py --log 2026-08-08 850 45 7 "finished act two" habit-log.py --report week habit-log.py --report month --json """ import argparse import json import os import sys from datetime import date, datetime, timedelta from pathlib import Path DEFAULT_FILE = os.path.join(Path.home(), ".writing-habits.jsonl") FIELDS = ["date", "words", "minutes", "energy", "notes"] def load_records(path): records = [] if not path.is_file(): return records with path.open(encoding="utf-8") as handle: for line_number, line in enumerate(handle, start=1): line = line.strip() if not line: continue try: record = json.loads(line) except json.JSONDecodeError as error: print( f"warning: skipping malformed line {line_number} in {path}: {error}", file=sys.stderr, ) continue records.append(record) return records def save_records(path, records): with path.open("w", encoding="utf-8") as handle: for record in records: handle.write(json.dumps(record, sort_keys=True) + "\n") def add_record(path, words, minutes, energy, notes, log_date): records = load_records(path) record = { "date": log_date, "words": words, "minutes": minutes, "energy": energy, "notes": notes, } records.append(record) save_records(path, records) return record def parse_date(value): try: return datetime.strptime(value, "%Y-%m-%d").date() except ValueError as error: raise ValueError(f"invalid date {value!r}, expected YYYY-MM-DD") from error def summarize(records, start_date, label): window = [r for r in records if r.get("date", "") >= start_date.isoformat()] words = sum(int(r.get("words", 0)) for r in window) minutes = sum(int(r.get("minutes", 0)) for r in window) sessions = len(window) days = {r.get("date", "") for r in window} # Streak of consecutive writing days ending today or yesterday. streak = 0 cursor = date.today() if cursor.isoformat() not in days: cursor = cursor - timedelta(days=1) while cursor.isoformat() in days: streak += 1 cursor = cursor - timedelta(days=1) energy_values = [int(r["energy"]) for r in window if r.get("energy") is not None] best = None if window: best = max(window, key=lambda r: int(r.get("words", 0))) best = {"date": best.get("date", ""), "words": int(best.get("words", 0))} return { "period": label, "sessions": sessions, "writing_days": len(days), "words": words, "minutes": minutes, "avg_words_per_session": round(words / sessions, 0) if sessions else 0, "avg_minutes_per_session": round(minutes / sessions, 1) if sessions else 0, "avg_energy": round(sum(energy_values) / len(energy_values), 1) if energy_values else None, "current_streak_days": streak, "best_day": best, } def main(argv=None): parser = argparse.ArgumentParser(description="Journal writing sessions and report progress.") parser.add_argument("--file", default=DEFAULT_FILE, help="Path to the JSONL log.") parser.add_argument( "--log", nargs="+", metavar="VALUE", help="Append a session: DATE WORDS MINUTES ENERGY [NOTES...]", ) parser.add_argument("--report", choices=["day", "week", "month"], help="Report period.") parser.add_argument("--json", action="store_true", help="Emit JSON.") parser.add_argument("--dry-run", action="store_true", help="Preview an append without writing.") args = parser.parse_args(argv) path = Path(args.file).expanduser() if args.log: if len(args.log) < 4: parser.error("--log needs DATE WORDS MINUTES ENERGY [NOTES...]") try: log_date = parse_date(args.log[0]).isoformat() except ValueError as error: parser.error(str(error)) try: words = int(args.log[1]) minutes = int(args.log[2]) energy = int(args.log[3]) except ValueError: parser.error("WORDS, MINUTES, and ENERGY must be integers") if words < 0 or minutes < 0: parser.error("WORDS and MINUTES must be >= 0") if not 1 <= energy <= 10: parser.error("ENERGY must be 1-10") notes = " ".join(args.log[4:]) if args.dry_run: print( f"would append to {path}: {log_date}, {words} words, " f"{minutes} min, energy {energy}, notes {notes!r}" ) return 0 try: record = add_record(path, words, minutes, energy, notes, log_date) except OSError as error: print(f"error: cannot write {path}: {error}", file=sys.stderr) return 1 if args.json: print(json.dumps(record, indent=2)) else: print(f"logged {log_date}: {words} words in {minutes} min, energy {energy}") return 0 if args.report: try: records = load_records(path) except OSError as error: print(f"error: cannot read {path}: {error}", file=sys.stderr) return 1 today = date.today() if args.report == "day": result = summarize(records, today, "day") elif args.report == "week": result = summarize(records, today - timedelta(days=6), "week") else: result = summarize(records, today - timedelta(days=29), "month") if args.json: print(json.dumps(result, indent=2)) return 0 print( f"{result['period'].title()} report: {result['sessions']} sessions over " f"{result['writing_days']} days, {result['words']} words, {result['minutes']} minutes" ) print( f"Avg {int(result['avg_words_per_session'])} words/session, " f"{result['avg_minutes_per_session']} min/session, energy {result['avg_energy']}" ) print( f"Streak: {result['current_streak_days']} days Best day: " f"{result['best_day']['date']} ({result['best_day']['words']} words)" ) return 0 parser.error("either --log or --report is required") return 1 if __name__ == "__main__": sys.exit(main()) -
manuscript-stats.py 8.4 KB
#!/usr/bin/env python3 """Analyze a manuscript or other text file for editing signals. Computes word and sentence stats, a passive-voice estimate, adverb density, crutch-word counts, overused words, readability scores, and per-chapter pacing. The output is diagnostic: use the numbers as questions, not verdicts. Standard library only. Examples: manuscript-stats.py mydraft.txt manuscript-stats.py mydraft.txt --json manuscript-stats.py mydraft.txt --crutch-words just,really,very,that """ import argparse import json import re import sys from collections import Counter from pathlib import Path # Basic overuse probes every draft should be checked against. DEFAULT_CRUTCH_WORDS = ["just", "really", "very", "so", "then", "suddenly", "felt", "looked"] WORD_RE = re.compile(r"[A-Za-z']+") SENTENCE_END_RE = re.compile(r"[.!?]+") PASSIVE_RE = re.compile( r"\b(?:am|is|are|was|were|be|been|being)\s+(\w+ed|(\w+en))\b", re.IGNORECASE ) LONG_SENTENCE_WORDS = 30 PARAGRAPH_SPLIT_RE = re.compile(r"\n\s*\n") def flesch_scores(avg_words_per_sentence, avg_syllables_per_word): """Flesch Reading Ease and Flesch-Kincaid Grade Level.""" if avg_words_per_sentence <= 0 or avg_syllables_per_word <= 0: return None, None ease = 206.835 - (1.015 * avg_words_per_sentence) - (84.6 * avg_syllables_per_word) grade = (0.39 * avg_words_per_sentence) + (11.8 * avg_syllables_per_word) - 15.59 return round(ease, 1), round(grade, 1) def syllable_count(word): """Approximate syllable count for a word (standard heuristic).""" word = word.lower() if len(word) <= 3: return 1 vowels = "aeiouy" count = 0 previous_vowel = False for char in word: is_vowel = char in vowels if is_vowel and not previous_vowel: count += 1 previous_vowel = is_vowel if word.endswith("e"): count -= 1 if word.endswith("le") and len(word) > 2 and word[-3] not in vowels: count += 1 return max(1, count) def split_chapters(text, chapter_regex): """Split text into chapters by a header regex, keeping the header.""" if not chapter_regex: return [("full text", text)] matches = list(re.finditer(chapter_regex, text, re.MULTILINE)) if len(matches) < 2: return [("full text", text)] chapters = [] for index, match in enumerate(matches): start = match.start() end = matches[index + 1].start() if index + 1 < len(matches) else len(text) chapters.append((match.group(0).strip(), text[start:end])) return chapters def analyze_text(text, crutch_words): words = WORD_RE.findall(text) total_words = len(words) counts = Counter(word.lower() for word in words) unique_words = len(counts) if total_words == 0: return None sentences = [s for s in SENTENCE_END_RE.split(text) if s.strip()] sentence_word_counts = [len(WORD_RE.findall(s)) for s in sentences] sentence_count = len(sentence_word_counts) avg_sentence_words = sum(sentence_word_counts) / sentence_count if sentence_count else 0 syllables = sum(syllable_count(word) for word in words) avg_syllables = syllables / total_words ease, grade = flesch_scores(avg_sentence_words, avg_syllables) passives = len(PASSIVE_RE.findall(text)) adverbs = len(re.findall(r"\b\w+ly\b", text, re.IGNORECASE)) crutch = {word: counts.get(word, 0) for word in crutch_words if counts.get(word, 0) > 0} # Most overused content words, excluding the crutch probes and stopwords. stop = { "the", "a", "an", "and", "or", "but", "of", "to", "in", "on", "at", "for", "with", "as", "by", "is", "was", "were", "be", "been", "being", "he", "she", "it", "they", "them", "his", "her", "its", "their", "i", "you", "we", "that", "this", "these", "those", "not", "have", "has", "had", "do", "does", "did", "will", "would", "can", "could", "from", } overused = [ {"word": word, "count": count} for word, count in counts.most_common(20) if word not in stop and count >= 10 and len(word) > 2 ] paragraphs = [p for p in PARAGRAPH_SPLIT_RE.split(text) if p.strip()] long_sentences = sum(1 for count in sentence_word_counts if count >= LONG_SENTENCE_WORDS) return { "words": total_words, "unique_words": unique_words, "sentences": sentence_count, "avg_words_per_sentence": round(avg_sentence_words, 1), "long_sentences_over_30": long_sentences, "paragraphs": len(paragraphs), "passive_voice_estimates": passives, "ly_adverbs": adverbs, "adverb_ratio_per_1000_words": round(adverbs * 1000 / total_words, 1) if total_words else 0, "passive_ratio_per_1000_words": round(passives * 1000 / total_words, 1) if total_words else 0, "crutch_words": crutch, "overused_words": overused, "flesch_reading_ease": ease, "flesch_kincaid_grade": grade, } def main(argv=None): parser = argparse.ArgumentParser(description="Analyze a manuscript for editing signals.") parser.add_argument("file", help="Path to the text file.") parser.add_argument("--json", action="store_true", help="Emit JSON.") parser.add_argument( "--chapter-regex", default=r"^#+\s+Chapter\s+\d+", help="Regex for chapter headers." ) parser.add_argument( "--crutch-words", default=",".join(DEFAULT_CRUTCH_WORDS), help="Comma-separated crutch words.", ) parser.add_argument( "--dry-run", action="store_true", help="Validate inputs and print what would be analyzed (no-op).", ) args = parser.parse_args(argv) path = Path(args.file) if not path.is_file(): print(f"error: no such file: {args.file}", file=sys.stderr) return 1 crutch_words = [word.strip().lower() for word in args.crutch_words.split(",") if word.strip()] if args.dry_run: print( f"would analyze {path} ({path.stat().st_size} bytes), " f"{len(crutch_words)} crutch probes: {', '.join(crutch_words)}" ) return 0 try: text = path.read_text(encoding="utf-8", errors="replace") except OSError as error: print(f"error: cannot read {args.file}: {error}", file=sys.stderr) return 1 overall = analyze_text(text, crutch_words) if overall is None: print("error: no words found in the file", file=sys.stderr) return 1 chapters = split_chapters(text, args.chapter_regex) chapter_stats = [] for name, chunk in chapters: stats = analyze_text(chunk, crutch_words) if stats is not None: chapter_stats.append({"chapter": name, "words": stats["words"]}) result = {"overall": overall, "chapters": chapter_stats} if args.json: print(json.dumps(result, indent=2)) return 0 print(f"Words: {overall['words']} Unique: {overall['unique_words']}") print( f"Sentences: {overall['sentences']} Avg length: {overall['avg_words_per_sentence']} words " f"(long >30: {overall['long_sentences_over_30']})" ) print(f"Paragraphs: {overall['paragraphs']}") print( f"Passive-voice estimates: {overall['passive_voice_estimates']} " f"({overall['passive_ratio_per_1000_words']}/1000 words)" ) print( f"-ly adverbs: {overall['ly_adverbs']} ({overall['adverb_ratio_per_1000_words']}/1000 words)" ) if overall["crutch_words"]: print("Crutch words: " + ", ".join(f"{w}={c}" for w, c in overall["crutch_words"].items())) if overall["overused_words"]: print( "Overused words: " + ", ".join(f"{w['word']}={w['count']}" for w in overall["overused_words"][:8]) ) if overall["flesch_reading_ease"] is not None: print( f"Readability: Flesch {overall['flesch_reading_ease']} / " f"grade {overall['flesch_kincaid_grade']} (target ~7th-10th grade unless audience warrants more)" ) print("Chapter pacing (words per chapter):") for item in chapter_stats: print(f" {item['chapter']}: {item['words']}") return 0 if __name__ == "__main__": sys.exit(main()) -
session-planner.py 5.9 KB
#!/usr/bin/env python3 """Plan a timed writing session with blocks, breaks, and word targets. Converts session minutes and a target word count into a concrete plan: block/break schedule, per-block word targets, and a flow-sprint check based on a words-per-hour estimate. Pure computation, non-interactive. Examples: session-planner.py --minutes 60 --target-words 1000 session-planner.py --minutes 90 --blocks 3 --break-minutes 10 --json session-planner.py --minutes 30 --words-per-hour 1800 """ import argparse import json import math import sys from datetime import datetime, timedelta # Low-water mark from fast-drafting practice: below this speed the inner # critic is likely interfering, so the plan flags it rather than worrying. FLOW_FLOOR_WPH = 1200 STANDARD_WPH = 1500 DEFAULT_BLOCK_MINUTES = 25 DEFAULT_BREAK_MINUTES = 5 def plan(minutes, blocks, break_minutes, target_words, words_per_hour, start_time): if blocks is None: blocks = max(1, math.ceil(minutes / (DEFAULT_BLOCK_MINUTES + DEFAULT_BREAK_MINUTES))) if blocks < 1: raise ValueError("blocks must be >= 1") if minutes < blocks: raise ValueError("minutes must be >= the number of blocks") writing_minutes = minutes - (blocks - 1) * break_minutes if writing_minutes <= 0: raise ValueError("break time exceeds session minutes; reduce blocks or breaks") minutes_per_block = writing_minutes / blocks wph = words_per_hour or STANDARD_WPH words_per_minute = wph / 60.0 projected_words = int(writing_minutes * words_per_minute) per_block_words = [int(minutes_per_block * words_per_minute)] * blocks # Distribute the remainder of the projection across the first blocks. remainder = projected_words - sum(per_block_words) for index in range(remainder): per_block_words[index] += 1 schedule = [] cursor = start_time for index in range(blocks): block_end = cursor + timedelta(minutes=minutes_per_block) schedule.append( { "block": index + 1, "start": cursor.strftime("%H:%M"), "end": block_end.strftime("%H:%M"), "minutes": round(minutes_per_block, 1), "word_target": per_block_words[index], } ) cursor = block_end if index < blocks - 1: cursor += timedelta(minutes=break_minutes) return { "session_minutes": minutes, "writing_minutes": round(writing_minutes, 1), "break_minutes_total": (blocks - 1) * break_minutes, "blocks": blocks, "minutes_per_block": round(minutes_per_block, 1), "assumed_words_per_hour": wph, "projected_words": projected_words, "per_block_word_targets": per_block_words, "target_words": target_words, "target_feasible": target_words is None or target_words <= projected_words, "flow_floor_check": ( "ok" if wph >= FLOW_FLOOR_WPH else "below the ~1200 wph floor; re-relax before writing" ), "schedule": schedule, } def main(argv=None): parser = argparse.ArgumentParser(description="Plan a timed writing session.") parser.add_argument("--minutes", type=int, required=True, help="Total session minutes.") parser.add_argument("--target-words", type=int, default=None, help="Desired word count.") parser.add_argument("--blocks", type=int, default=None, help="Number of writing blocks.") parser.add_argument( "--break-minutes", type=int, default=DEFAULT_BREAK_MINUTES, help="Minutes per break." ) parser.add_argument("--words-per-hour", type=int, default=None, help="Assumed writing speed.") parser.add_argument("--start-time", default=None, help="Start time as HH:MM (default: now).") parser.add_argument("--json", action="store_true", help="Emit JSON.") parser.add_argument( "--dry-run", action="store_true", help="Compute the plan without side effects (no-op)." ) args = parser.parse_args(argv) if args.minutes < 1: parser.error("--minutes must be >= 1") if args.break_minutes < 0: parser.error("--break-minutes must be >= 0") if args.words_per_hour and args.words_per_hour < 1: parser.error("--words-per-hour must be >= 1") if args.start_time: try: start = datetime.strptime(args.start_time, "%H:%M").replace( year=datetime.now().year, month=datetime.now().month, day=datetime.now().day, ) except ValueError as error: parser.error(f"invalid --start-time: {error}") else: start = datetime.now() try: result = plan( args.minutes, args.blocks, args.break_minutes, args.target_words, args.words_per_hour, start, ) except ValueError as error: print(f"error: {error}", file=sys.stderr) return 1 if args.json: print(json.dumps(result, indent=2)) return 0 print( f"Session plan: {result['session_minutes']} minutes, " f"{result['writing_minutes']} writing, {result['break_minutes_total']} on breaks" ) print( f"Blocks: {result['blocks']} x ~{result['minutes_per_block']} min " f"at {result['assumed_words_per_hour']} words/hour" ) print(f"Projected words: {result['projected_words']}") if result["target_words"] is not None: status = ( "feasible" if result["target_feasible"] else "over the projection; extend time or lower the target" ) print(f"Target: {result['target_words']} words -> {status}") print(f"Flow check: {result['flow_floor_check']}") print("Schedule:") for item in result["schedule"]: print( f" Block {item['block']}: {item['start']}-{item['end']} " f"(~{item['minutes']} min, ~{item['word_target']} words)" ) return 0 if __name__ == "__main__": sys.exit(main()) -
submission-tracker.py 9.1 KB
#!/usr/bin/env python3 """Track submissions to agents and publishers. Maintains a JSONL ledger (default ~/.writing-submissions.jsonl) of queries, proposals, and manuscript submissions. Reports the pipeline by status and flags follow-ups due. Non-interactive; --dry-run previews mutations. Examples: submission-tracker.py --add "The Glass Orchard" "Agent Name" query 2026-08-08 sent submission-tracker.py --update 1 status partial-request submission-tracker.py --list submission-tracker.py --status --follow-up-days 21 """ import argparse import json import os import sys from datetime import date, datetime, timedelta from pathlib import Path DEFAULT_FILE = os.path.join(Path.home(), ".writing-submissions.jsonl") VALID_STATUSES = { "sent", "no-response", "partial-request", "full-request", "rejection", "offer", "accepted", "withdrawn", } SORT_ORDER = { "offer": 0, "accepted": 0, "full-request": 1, "partial-request": 2, "sent": 3, "no-response": 3, "rejection": 4, "withdrawn": 5, } def load_records(path): records = [] if not path.is_file(): return records with path.open(encoding="utf-8") as handle: for line_number, line in enumerate(handle, start=1): line = line.strip() if not line: continue try: record = json.loads(line) except json.JSONDecodeError as error: print( f"warning: skipping malformed line {line_number} in {path}: {error}", file=sys.stderr, ) continue records.append(record) return records def save_records(path, records): with path.open("w", encoding="utf-8") as handle: for record in records: handle.write(json.dumps(record, sort_keys=True) + "\n") def add_record(path, title, target, submission_type, sent_date, status, notes): records = load_records(path) next_id = max((int(r["id"]) for r in records), default=0) + 1 record = { "id": next_id, "title": title, "target": target, "type": submission_type, "sent_date": sent_date, "status": status, "notes": notes, } records.append(record) save_records(path, records) return record def update_record(path, record_id, field, value): records = load_records(path) for record in records: if int(record["id"]) == record_id: record[field] = value save_records(path, records) return record return None def parse_date(value): try: return datetime.strptime(value, "%Y-%m-%d").date() except ValueError as error: raise ValueError(f"invalid date {value!r}, expected YYYY-MM-DD") from error def status_report(records, follow_up_days): counts = {} for record in records: status = record.get("status", "sent") counts[status] = counts.get(status, 0) + 1 cutoff = date.today() - timedelta(days=follow_up_days) follow_ups = [] for record in records: status = record.get("status", "sent") if status not in {"sent", "no-response"}: continue try: sent = parse_date(record.get("sent_date", "")) except ValueError: continue if sent <= cutoff: follow_ups.append( { "id": record["id"], "title": record.get("title", ""), "target": record.get("target", ""), "sent_date": record.get("sent_date", ""), "days_outstanding": (date.today() - sent).days, } ) total = len(records) active = sum( counts.get(s, 0) for s in ("sent", "no-response", "partial-request", "full-request") ) return { "total": total, "active": active, "by_status": counts, "follow_ups_due": follow_ups, "follow_up_window_days": follow_up_days, } def main(argv=None): parser = argparse.ArgumentParser(description="Track submissions to agents and publishers.") parser.add_argument("--file", default=DEFAULT_FILE, help="Path to the JSONL ledger.") parser.add_argument( "--add", nargs="+", metavar="VALUE", help="Add a submission: TITLE TARGET TYPE SENT-DATE STATUS [NOTES...]", ) parser.add_argument( "--update", nargs=3, metavar=("ID", "FIELD", "VALUE"), help="Update a field on a submission.", ) parser.add_argument("--list", action="store_true", help="List all submissions.") parser.add_argument("--status", action="store_true", help="Report the pipeline.") parser.add_argument("--follow-up-days", type=int, default=21, help="Follow-up window in days.") parser.add_argument("--json", action="store_true", help="Emit JSON.") parser.add_argument( "--dry-run", action="store_true", help="Preview a mutation without writing." ) args = parser.parse_args(argv) path = Path(args.file).expanduser() if args.add: if len(args.add) < 4: parser.error("--add needs TITLE TARGET TYPE SENT-DATE STATUS [NOTES...]") title, target, submission_type = args.add[0], args.add[1], args.add[2] try: sent_date = parse_date(args.add[3]).isoformat() except ValueError as error: parser.error(str(error)) status = args.add[4] if status not in VALID_STATUSES: parser.error(f"invalid status {status!r}; valid: {', '.join(sorted(VALID_STATUSES))}") notes = " ".join(args.add[5:]) if args.dry_run: print( f"would add to {path}: {title!r} -> {target} ({submission_type}) " f"sent {sent_date}, status {status}" ) return 0 try: record = add_record(path, title, target, submission_type, sent_date, status, notes) except OSError as error: print(f"error: cannot write {path}: {error}", file=sys.stderr) return 1 if args.json: print(json.dumps(record, indent=2)) else: print( f"added #{record['id']}: {record['title']} -> {record['target']} ({record['status']})" ) return 0 if args.update: try: record_id = int(args.update[0]) except ValueError: parser.error("ID must be an integer") field, value = args.update[1], args.update[2] if field == "status" and value not in VALID_STATUSES: parser.error(f"invalid status {value!r}; valid: {', '.join(sorted(VALID_STATUSES))}") if field == "sent_date": try: value = parse_date(value).isoformat() except ValueError as error: parser.error(str(error)) if args.dry_run: print(f"would update #{record_id} in {path}: {field} = {value!r}") return 0 try: record = update_record(path, record_id, field, value) except OSError as error: print(f"error: cannot write {path}: {error}", file=sys.stderr) return 1 if record is None: print(f"error: no submission with id {record_id}", file=sys.stderr) return 1 if args.json: print(json.dumps(record, indent=2)) else: print(f"updated #{record['id']}: {field} = {value!r}") return 0 try: records = load_records(path) except OSError as error: print(f"error: cannot read {path}: {error}", file=sys.stderr) return 1 if args.list: records = sorted(records, key=lambda r: SORT_ORDER.get(r.get("status", "sent"), 5)) if args.json: print(json.dumps(records, indent=2)) return 0 if not records: print("no submissions recorded") return 0 for record in records: print( f"#{record['id']} [{record.get('status', 'sent')}] {record.get('title', '')} " f"-> {record.get('target', '')} ({record.get('type', '')}, sent {record.get('sent_date', '')})" ) return 0 if args.status: if args.follow_up_days < 1: parser.error("--follow-up-days must be >= 1") report = status_report(records, args.follow_up_days) if args.json: print(json.dumps(report, indent=2)) return 0 print(f"Pipeline: {report['total']} total, {report['active']} active") for status, count in sorted(report["by_status"].items()): print(f" {status}: {count}") if report["follow_ups_due"]: print(f"Follow-ups due (>{args.follow_up_days} days):") for item in report["follow_ups_due"]: print( f" #{item['id']} {item['title']} -> {item['target']} " f"({item['days_outstanding']} days)" ) else: print("No follow-ups due") return 0 parser.error("one of --add, --update, --list, or --status is required") return 1 if __name__ == "__main__": sys.exit(main()) -
writing-prompt.py 11.5 KB
#!/usr/bin/env python3 """Generate position-aware writing prompt sets. Each prompt set follows the three-part structure used by writing coaches: an affirmation, one plot element matched to the story's current position, and a writing assignment that advances the plot. A record block closes the set so the writer can log the session. Non-interactive; deterministic when --seed is given. Examples: writing-prompt.py --position crisis writing-prompt.py --position beginning --count 3 --seed 42 writing-prompt.py --all --count 1 --json """ import argparse import json import random import sys # One structural element per story position, plus a short rationale used to # brief the writer. Original formulations, not quotations. POSITIONS = { "beginning": [ ("goal", "make the protagonist's want concrete enough to act on"), ("stakes", "make what she stands to lose visible"), ("antagonist", "introduce the opposing force with a memorable first move"), ("flaw", "show the coping mechanism without explaining its origin"), ("fear", "hint at the fear she must eventually face"), ("dream", "plant the dream that will pay off as a twist"), ("backstory withheld", "let the past show in behavior, not explanation"), ("threshold", "write the moment of no return"), ], "halfway": [ ("recommitment", "make the choice to continue costly and deliberate"), ("escalation", "raise the antagonist's power and the stakes"), ("cause and effect", "chain three scenes so each causes the next"), ("goal restated", "re-establish the goal in the new world"), ("fear confronted", "face a version of the fear, smaller than the final one"), ("mirror moment", "show the protagonist a glimpse of who she is becoming"), ("ally", "let an ally say what the protagonist cannot yet see"), ("subplot", "weave a subplot that changes the main story's outcome"), ], "crisis": [ ("crisis", "take everything away in the worst order"), ("backstory reveal", "surface the full wound, in less than a paragraph if possible"), ("missing skill", "show her failing at the thing she must master by the climax"), ("self-revelation", "let her see the part she played in her own failure"), ("deadline", "put a clock on the story"), ("threshold guardian", "test whether she is ready to cross"), ("defenses stripped", "remove the excuse she has been hiding behind"), ("culpability", "name her responsibility without self-pity"), ], "climax": [ ("transformed action", "have her do the thing the old self could not"), ("climax", "resolve the dramatic question at the moment all seems lost"), ("new belief", "show the belief that replaced the old one"), ("cause and effect final", "chain the final events so each is earned"), ("allies", "let the allies' goals resolve"), ("resolution", "return to a changed world, circling an early setting"), ("loose end", "choose deliberately which thread stays open"), ("dream payoff", "reveal what the dream actually meant"), ], } # Assignment builders: each takes a protagonist placeholder and an element # name, returns an imperative scene-or-summary assignment. ASSIGNMENTS = { "goal": "Write {protagonist} taking one active step toward her goal for the first time, in a scene that shows why it matters and what she will lose. Do not name her emotion; render it as action.", "stakes": "Write a scene that makes the cost of failure concrete and personal. Show someone else who would be hurt, or a future that would be lost.", "antagonist": "Give the antagonist a first move that raises the protagonist's problem and makes the antagonist memorable. Let the antagonist's want be visible.", "flaw": "Show the flaw operating in ordinary life — a habit, a rule, a flinch — without explaining where it came from.", "fear": "Write a quiet moment where the fear brushes against the surface. Do not resolve it.", "dream": "Plant a dream the protagonist privately holds, and give it one concrete object or image the reader will remember.", "backstory withheld": "Let the past appear in behavior only: a reflex, a rule, an avoidance. The explanation comes later.", "threshold": "Write the scene where the old world breaks apart and there is no turning back. End at the moment of no return.", "recommitment": "Give the protagonist a real chance to go back — and have her choose to continue. Show the cost, and let her name the stakes out loud for the first time.", "escalation": "Bring the antagonist's power into full view. Give the protagonist a small win that costs more than it gains.", "cause and effect": "Write a three-scene chain in which each scene's action causes the next. Keep every link visible.", "goal restated": "Have the protagonist restate her goal in the new world, changed by what she has learned. Show what is now missing from it.", "cause and effect final": "Chain the final events so each is earned by the one before. No luck, no convenience.", "fear confronted": "Write a scene where the protagonist faces a small version of her fear and survives it — at a price.", "mirror moment": "Show the protagonist catching a glimpse of who she is becoming, and not liking or not believing it.", "ally": "Let an ally say the one thing the protagonist cannot yet say about herself.", "subplot": "Write a subplot scene that, if removed, would change the main story's outcome or emotional impact. Make that link visible.", "crisis": "Take everything from the protagonist — the goal, the ally, the belief — in the worst order. End with her seeing the part she played in her own failure. This is not the ending.", "backstory reveal": "At the threshold after the crisis, let the full backstory wound surface. The reader has earned it; the character finally names it.", "missing skill": "Show the protagonist failing at exactly the thing she will succeed at in the climax. Make the reader see why she cannot do it yet.", "self-revelation": "Write the moment she recognizes her own contribution to the disaster. No self-pity; fact only.", "deadline": "Put a clock on the story: an event that will happen whether she is ready or not. Show her racing it.", "threshold guardian": "Write the test that decides whether she crosses into the final quarter: a fear, a guilt, or a person she must answer to.", "defenses stripped": "Remove the excuse she has been hiding behind and show her without it.", "culpability": "Name her responsibility for her own failure in one honest paragraph of scene, not summary.", "transformed action": "Write the climax scene: she does the thing the old self could not, at the moment all seems lost. Moment by moment, no summary.", "climax": "Resolve the dramatic question posed at the start. The transformed protagonist performs the decisive action; show the consequence.", "new belief": "Show the belief that replaced the old one, proven in action rather than stated.", "allies": "Resolve the allies' goals in the aftermath, each changed by the protagonist's transformation.", "resolution": "After the climax, show the protagonist returning to a changed world — circle back to an early setting or character.", "loose end": "Choose deliberately: which subplot question stays open? Write the resolution without closing it.", "dream payoff": "Reveal what the dream actually meant, as a twist the beginning did not predict.", } AFFIRMATIONS = [ "I am writing the story that only I can tell, and today I move it forward.", "My first draft is raw material; today I add to it without judgment.", "The words will come if I keep moving; today I keep moving.", "I trust the story I cannot see yet; today I write toward it.", "My voice is enough; today I let it speak.", ] def build_set(position, element_name, protagonist, rng, index): """Build one three-part prompt set for a position and element.""" element, brief = element_name assignment = ASSIGNMENTS[element] affirmation = AFFIRMATIONS[index % len(AFFIRMATIONS)] return { "position": position, "element": element, "brief": brief, "affirmation": affirmation, "assignment": assignment.format(protagonist=protagonist), "record_block": { "start": "", "stop": "", "words": "", "daily_goal": "", "energy": "", "above_or_below_line": "", "trait_surfaced": "", }, } def emit(prompt_sets, as_json, output): if as_json: payload = json.dumps(prompt_sets, indent=2) if output: with open(output, "w", encoding="utf-8") as handle: handle.write(payload + "\n") else: print(payload) return lines = [] for index, item in enumerate(prompt_sets, start=1): lines.append(f"### Prompt set {index} — {item['position'].title()}") lines.append("") lines.append(f"**Affirmation:** {item['affirmation']}") lines.append("") lines.append(f"**Plot element — {item['element']}:** {item['brief'].capitalize()}.") lines.append("") lines.append(f"**Writing assignment:** {item['assignment']}") lines.append("") lines.append("**Record block:**") lines.append("- Start: ___ Stop: ___ Words: ___ Daily goal: ___/___") lines.append("- Energy (1-10): ___ Above/below the line: ___") lines.append("- Trait surfaced (character profile): ___") lines.append("") text = "\n".join(lines) if output: with open(output, "w", encoding="utf-8") as handle: handle.write(text) else: print(text) def main(argv=None): parser = argparse.ArgumentParser( description="Generate position-aware three-part writing prompt sets." ) parser.add_argument( "--position", choices=sorted(POSITIONS), help="Story position: beginning, halfway, crisis, or climax.", ) parser.add_argument( "--all", action="store_true", help="Generate one prompt per story position.", ) parser.add_argument("--count", type=int, default=1, help="Prompt sets per position.") parser.add_argument("--seed", type=int, default=None, help="Random seed for determinism.") parser.add_argument( "--protagonist", default="the protagonist", help="Protagonist name for assignments." ) parser.add_argument("--json", action="store_true", help="Emit JSON.") parser.add_argument("--output", default=None, help="Write to a file instead of stdout.") args = parser.parse_args(argv) if args.all and args.position: parser.error("use either --position or --all, not both") if not args.all and not args.position: parser.error("--position or --all is required") if args.count < 1: parser.error("--count must be >= 1") positions = sorted(POSITIONS) if args.all else [args.position] rng = random.Random(args.seed) prompt_sets = [] for position in positions: elements = list(POSITIONS[position]) for index in range(args.count): element = elements[rng.randrange(len(elements))] prompt_sets.append(build_set(position, element, args.protagonist, rng, index)) try: emit(prompt_sets, args.json, args.output) except OSError as error: print(f"error: cannot write output: {error}", file=sys.stderr) return 1 return 0 if __name__ == "__main__": sys.exit(main())
-
-
templates
-
book-proposal.md 2.5 KB
# Book Proposal (Nonfiction) The nonfiction proposal is the product — it sells before the book is written. Assemble in this order, roughly 30–40 pages excluding sample chapters. Read `references/publishing-and-career.md` first. ## 1. Title page - Working title and subtitle: - Author name and contact: - Date: ## 2. Proposal table of contents - (List the proposal's own sections) ## 3. Author bio (one page) - Why you are the right writer: - Credentials and authority (specific, concrete — the details are the trust engine): - Where you're headed (next projects / platform direction): ## 4. Overview (~10 pages) - **The hook / selling handle** (one to two sentences — the book in a nutshell): - **The book's summary** (what it covers, how it's organized): - **Why it must be published now:** - **Who will read it and why** (primary + secondary audiences): - **Why this author, why this book:** - **Length and completion schedule:** - **What's new or different** (the gap it fills): ## 5. Target market - Primary audience (specific, numerically supportable): - Their buying motivation: - Secondary audiences: - How you know they exist (evidence: sales of comparable titles, communities, demand signals): ## 6. Competition | Comparable title | Author | Publisher | Year | Price | Pages | ISBN | |------------------|--------|-----------|------|-------|-------|------| | | | | | | | | | | | | | | | | | | | | | | | | - How this book differs (out of print? aimed elsewhere? weaker?): - Why this book wins: ## 7. Platform and promotion - **Platform** (audience you can already reach: site/blog traffic, newsletter, teaching, memberships, clips): - **Promotional plan** (concrete activities at release: media, bylined articles, speaking, events, blurbs, giveaways): - **Author assets** (existing interviews, social reach, professional networks): ## 8. Chapter-by-chapter outline - One to three narrative paragraphs per chapter, in the book's own tone: - Chapter 1 — title: purpose: - Chapter 2 — title: purpose: - ... (continue for all chapters) ## 9. Sample chapters - Two non-consecutive chapters (three if chapters run under ~10 pages), chosen to show different facets of the book: - Sample 1 (chapter #): - Sample 2 (chapter #): ## 10. What's attached when you send it - [ ] Proposal PDF, named clearly - [ ] Query/pitch letter (see `templates/query-letter.md`) - [ ] Addressed to a named, correctly spelled person at the right publisher/agent - [ ] Submission log updated (see `templates/submission-log.md`) -
character-profile.md 1.6 KB
# Character Profile Fill one per character (protagonist, every major antagonist, key secondary characters). The blanks are diagnostic: if goals come easily but traits don't (or vice versa), that's the side of the character you must develop. ## Character - Name: - Role (protagonist / antagonist / ally / love interest / other): - Age, appearance (only what the story needs): - One-line introduction the reader would remember: ## The dramatic line - **Overall story goal:** what she concretely wants by the end: - **Obstacles:** what stands in her way (internal and external): - **Potential loss:** what she stands to lose (stakes): - **Short-term goals** in scenes (examples): ## The emotional line - **Flaw:** the coping mechanism (born from a wound): - **Backstory wound:** what happened before the story: - **Strength:** the trait that will carry her through: - **Hate:** - **Love:** - **Fear:** (what she fears most is what she must face to transform) - **Dream:** (dreams become goals the moment she takes an active step) - **Secret:** ## Motivation - Why does the reader forgive her worst action? (the why, reachable through present-moment thought and dialogue): ## Voice - Speech habits, vocabulary, rhythm (so a reader can identify her by dialogue alone): - Things she would never say or do: ## Arc - What she is at the start (beliefs, skills, limits): - What she must relearn / become by the climax: - The transformed action at the climax (what the old self could not do): ## Deepening rule > Never repeat, deepen: every reappearance shows wider consequences and a deeper glimpse. Note what gets deepened in each act: - Act 1 → - Act 2 → - Act 3 → -
critique-checklist.md 2.5 KB
# Critique Checklist For trusted readers and for the writer's own structured self-review. Big-picture questions first; targeted questions after. Feedback format: what works → what doesn't → a suggested fix. Never a verdict without a fix. ## Big picture (structure first — no prose comments yet) - [ ] Does the story make sense as a whole? - [ ] Is the message the intended one (theme landing)? - [ ] Did the sequencing work (cause-and-effect chains, not episodes)? - [ ] Was it interesting and believable? - [ ] Where are the weak spots? - [ ] Is it submission-ready, or what's the gap? ## The four markers - [ ] End of the Beginning (~25%): threshold crossed, no turning back? - [ ] Halfway Point (~50%): recommitment present? - [ ] Crisis (~75%): lowest point, figurative death of the old self, antagonist at full power? - [ ] Climax (end): transformed action, the old self's limits exceeded? - [ ] Does the energy rise at each marker? If not, where is the structure actually broken? ## Scene-level (run on the strongest and weakest scenes) 1. Establishes when and where? 2. Develops the character's emotional makeup? 3. Driven by a specific character goal? 4. Shows dramatic action? 5. Carries conflict / tension / suspense / curiosity? 6. Shows emotional change within the scene? 7. Reveals thematic significance? 8. Enters late and ends early? 9. Causes the next scene? ## Character - [ ] Who is most changed? Is that the protagonist? - [ ] Is the flaw visible, motivated by a wound, and threaded backward? - [ ] Do antagonists mirror something needing healing? - [ ] Can each speaker be identified by dialogue alone (blind test)? - [ ] Are motivations reachable through present-moment thought/dialogue (no speechifying)? ## Prose (only after structure holds) - [ ] Verbs strong; passive voice only where it earns its place - [ ] No adverb/adjective piles; clichés and dead metaphors gone - [ ] Sentence length varied; pacing matches meaning - [ ] Show-don't-tell: emotion rendered as behavior, not labels - [ ] POV consistent per scene; no leaks ## Mechanics (final pass only) - [ ] Grammar, punctuation, spelling per `prose-and-style.md` - [ ] Tense, person, and character consistency (names, ages, timeline) - [ ] Format matches the market's conventions (`genres-and-formats.md`) ## Reader's report - **What worked** (specific, page-referenced): - **What didn't** (specific, page-referenced): - **Suggested fix** for the top problem: - **The one thing to fix first** (if every reader flags the same problem, fix it): -
premise-canvas.md 1.9 KB
# Premise Canvas Test and sharpen a story idea before you outline. Fill in every line; a blank is a signal that the idea isn't ready. ## Working title > A placeholder title that hints at the story's tone. (Provisional titles are normal.) ## One-line pitch (logline) > Protagonist + goal + obstacle + stakes in under ~25 words, written like poster copy. > _Example: A retired safecracker is forced back for one last heist when her granddaughter is taken, and the safe contains something she buried forty years ago._ ## Meets line > "Concept A meets Concept B" using two well-known touchstones that signal tone and audience. > _Example: "Ocean's Eleven meets Thelma & Louise."_ ## What if? > The premise question in one sentence. ## The protagonist - Name: - What she wants (concrete goal): - What stands in her way (obstacles, internal and external): - What she stands to lose (stakes): - Why now (what triggers the story): ## The wound and the flaw - What happened to her before the story (backstory wound): - How that wound became a flaw (coping mechanism): - What authority she has surrendered (to whom or what): ## The antagonist - Who or what opposes her (person, nature, society, machine, or her own flaw): - What the antagonist reflects about her that needs healing: - What the antagonist wants: ## Theme > The statement this story proves true — true for this story, not universal. - Draft theme sentence: ## The ending (backward design) - What is the climax scene — the transformed protagonist doing what the old self could not? ## Four-test screen - [ ] Does this seize your imagination? - [ ] Is the scope right for the intended length (see `genres-and-formats.md`)? - [ ] Would an audience care? - [ ] Does it carry drama and conflict? ## Gap check > Any line you couldn't fill is a gap. Decide: develop it now, or discover it while drafting? (Discovering in the draft is legitimate — write the gaps down and let the draft answer them.) -
prompt-cards.md 3.6 KB
# Prompt Cards The position-aware prompt formula, with original example prompts for each story position. Use `scripts/writing-prompt.py` to generate seeded variants; these cards show the shape. Every prompt is a three-part set: affirmation + plot element + writing assignment, closed with a record block. ## The formula 1. **Affirmation** — 1–2 sentences, first person present, restating willingness and commitment. Fresh wording, always. 2. **Plot element** — exactly one structural element the story's current position demands. 3. **Writing assignment** — a concrete scene-or-summary task that forces the element onto the page and continues prior material, with anti-cliché / show-don't-tell constraints. 4. **Record block** — start/stop time, word count, daily goal, 1–10 energy, above/below-the-line placement, character-profile trait surfaced. ## Beginning (End of the Beginning ahead) - **Element:** goal + stakes **Assignment:** Write the protagonist taking one active step toward her goal for the first time, in a scene that shows why the goal matters and what she will lose. Do not name her emotion; render it as action. - **Element:** backstory withheld **Assignment:** Show a moment where her past is visible in her behavior — a habit, a flinch, a rule she lives by — without explaining it. The explanation comes later. - **Element:** threshold crossing **Assignment:** Write the scene where the old world breaks apart and there is no turning back. End it at the moment of no return. ## Halfway (Recommitment ahead) - **Element:** recommitment **Assignment:** The protagonist has a chance to go back — and chooses to continue. Show the cost of continuing and what she now believes she is fighting for. Let her state the stakes out loud for the first time. - **Element:** escalation **Assignment:** Bring the antagonist's power into full view. Give the protagonist a small win that costs more than it gains, and a defeat that reveals a weakness she didn't know she had. - **Element:** cause-and-effect chain **Assignment:** Write a three-scene subplot chain in which each scene's action causes the next. Keep every link visible. ## Crisis (the figurative death) - **Element:** crisis **Assignment:** Take everything from the protagonist — the goal, the ally, the belief — in the worst order. End with her seeing the part she played in her own failure. This is not the ending; the story continues. - **Element:** backstory reveal **Assignment:** At the threshold after the crisis, let the full backstory wound surface — in less than a paragraph if you can. The reader has earned it; the character finally names it. - **Element:** missing skill **Assignment:** Show the protagonist failing at exactly the thing she will succeed at in the climax. Make the reader see why she can't do it yet. ## Climax and Resolution - **Element:** the transformed action **Assignment:** Write the climax scene: the protagonist does the thing the old self could not, at the moment all seems lost. No summary — moment by moment. - **Element:** resolution **Assignment:** After the climax, show her returning to a changed world — circling back to an early setting or character. Decide deliberately: which loose end stays open? - **Element:** dream payoff **Assignment:** The dream planted in the beginning pays off as a twist in the resolution. Reveal what the dream actually meant. ## The record block (after every prompt) ``` Start: ___ Stop: ___ Words: ___ Daily goal: ___/___ Energy (1–10): ___ Above/below the line: ___ Trait surfaced (from the character profile): ___ Where this lands in the story: ___ ``` -
query-letter.md 2.4 KB
# Query Letter One page. Hook first. Named, correctly spelled addressee. No gimmicks. Fiction and nonfiction have different anatomies — pick your road. ## Fiction query (five elements in order) **1. Title** > The working title, up top. **2. The grabber (≤3 sentences)** > Sensory, no opening question. Ideally a flattering comparison to a comparable successful book. The hook is the most crucial element — editors skim hundreds weekly. > _Shape: "When [event], [protagonist] must [goal] before [consequence]. Fans of [comparable book] will feel at home."_ **3. Lead characters (one short paragraph each, 2–3 max)** > Name, want, what's in the way, what's endearing. The reader should want to spend time with them. **4. The plot (3–4 paragraphs)** > The arc: trigger → escalation → crisis → climax, revealing the ending. Cause-and-effect visible. No backstory dumps, no themes explained. **5. The close** > Reiterate the hook, note what's attached (synopsis, sample chapters), request the read, thank the agent by name. **Universal rules:** one page; short paragraphs; credentials to a line or two; sign it; "Requested Material" if you've already made contact. --- ## Nonfiction query (five elements in order) **1. Title** **2. Grabber with comparison** > What the book is, who it's for, and the book it stands beside. **3. The market** > Primary + secondary audiences, size, and the gap this book fills versus its competition. "Everyone" is a red flag. **4. The makeup/design** > Chapter headings, sections, special elements (exercises, tables, sidebars) — prove the book is buildable. **5. The close** > Why you are the right author (one or two lines), the proposal is attached, the ask. --- ## Drafting trick (the letter to a friend) Before writing either version, write a plain letter to a trusted friend describing the book (fiction: the story and characters; nonfiction: the market and promotion) and why you're the right author. Then lightly edit that letter into the formal query — it preserves your natural voice. ## Checklist before sending - [ ] One page (no exceptions) - [ ] Agent's/publisher's name spelled correctly, addressed at the right company - [ ] Matches their stated genres and submission guidelines - [ ] Hook in the first paragraph; the sale survives skimming - [ ] No gimmicks, no attachments beyond what was requested - [ ] Signed, with contact - [ ] Submission log updated; follow-up date set (see `templates/submission-log.md`) -
revision-plan.md 2.5 KB
# Revision Plan Order the work. Structure first, then prose, then mechanics — with a rest period and trusted readers before any line editing. Plan on revision taking roughly half the draft's time or longer. ## Gate 1 — Rest - [ ] Draft set aside for at least a week to ten days (month is better) - [ ] No reading, no editing, no showing anyone ## Gate 2 — Trusted readers - [ ] 2–5 advance readers recruited, big-picture questions only (use `templates/critique-checklist.md`) - [ ] Feedback collected and triaged (everyone flags the same problem → fix it) ## Gate 3 — Structural passes (the bones) - [ ] Outline after the draft (scene-by-scene list) - [ ] Four markers located; energy checked at each - [ ] Cause-and-effect chains verified; episodic scenes cut or re-linked - [ ] Seven scene elements run per scene; weak scenes cut or merged - [ ] Three plot lines (action / emotional development / theme) converging at the climax - [ ] Subplots justified (removal would change the outcome or emotional impact) - [ ] Beginning trimmed (expect to cut 35–100 pages; find the real start) - [ ] Selective read-throughs: by subplot, by character, by setting - [ ] Endings: climax answers the opening question; resolution circles back Pass notes (move/add/cut/reorder — expressed as change requests, not prose edits): ## Gate 4 — Prose passes (one focus at a time) - [ ] Verb strength (precise verbs over verb + adverb) - [ ] Passive-voice reduction - [ ] Adjective/adverb trimming - [ ] Wordcraft: clichés, dead/mixed metaphors, sentence-length variety, key words at line ends - [ ] Show-don't-tell sweep (label the spots, rewrite each) - [ ] Dialogue pass (blind test per speaker, subtext, invisible tags) ## Gate 5 — Consistency and mechanics - [ ] POV, tense, person, tone consistency - [ ] Character consistency (names, ages, traits, timelines — keep the character sheets current) - [ ] Grammar and punctuation - [ ] Chronology and continuity (dates, seasons, distances) ## Gate 6 — Proofreading - [ ] Read aloud - [ ] Read backward, sentence by sentence - [ ] Targeted pass (known weak spots) - [ ] Spelling-only pass - [ ] Tense/person pass - [ ] Fresh external reader (comprehension, not just rules) ## Gate 7 — The wait - [ ] Wait a week, reread once, fix what jars - [ ] Format per market conventions - [ ] Register the work (guild/copyright) if submitting - [ ] "Good enough for submission" — and mean it ## Rounds log | Round | Focus | Date | Done | |-------|-------|------|------| | 1 | | | | | 2 | | | | | 3 | | | | -
scene-skeleton.md 1.5 KB
# Scene Skeleton One page per important scene. Fill all seven elements; a scene that fails several is a candidate for cutting or merging with another weak scene. ## Scene - Chapter / position: - POV character: - Where in the story (beginning / halfway / crisis / climax): - Antagonist-driven (above the line) or passive/controlled (below the line): ## The seven essential elements 1. **Setting anchor** — when and where (season, day, time): 2. **Character emotional development** — what this scene reveals or changes: 3. **Short-term goal** — what the character actively wants here: 4. **Action toward the goal** — what she does, shown not summarized: 5. **Conflict / tension / suspense / curiosity** — the friction in the room: 6. **Emotional fluctuation** — how feeling changes within the scene: 7. **Thematically weighted authentic detail** — one concrete detail that means something: ## Craft checks - [ ] Enter as late as possible (start near the outcome) - [ ] End as early as possible (cut the confirming closing beat) - [ ] One change per scene (if no change, delete or merge) - [ ] Cause-and-effect: this scene's action causes the next scene - [ ] One narrator; no leaks of unobserved thoughts - [ ] Emotion rendered as behavior, not labels - [ ] Dialogue subtext, not on-the-nose; speaker identifiable without tags ## Why this scene must exist > In one sentence: what would the story lose if this scene were cut? ## Notes for revision - What to fix on the next pass (structural first, prose later): -
session-plan.md 1.8 KB
# Session Plan A concrete daily writing session. Fill in the top before you start, the record block after. Minimum-plus-ideal: the floor still counts as success. ## Before the session (2 minutes) - **Today's date / session #:** - **Position in the story** (beginning / halfway / crisis / climax / other): - **Where the last session left off** (recopy the last 20–30 words here): - **The next beat** (what needs to happen now; from cause-and-effect of the last scene): - **Gaps to leave blank** (facts to verify later — do NOT research now): ## The plan - **Time reserved** (block it in the calendar; protect it): - **Distractions removed** (phone off, boundaries announced): - **Relaxation step** (breath, posture — 60 seconds): - **Goal — minimum** (the floor that counts as a win): - **Goal — ideal** (the stretch): - **Session length / structure** (e.g., 2 × 25-minute blocks with a 5-minute break; see `scripts/session-planner.py`): ## The ritual 1. Recopy the last 20–30 words. 2. Write as fast as you can without editing (flow sprint; ~1,200+ words/hour is the low-water mark). 3. Do not re-read; do not correct; leave gaps marked. 4. Stop mid-scene or mid-sentence (never at a chapter boundary). ## Record block (after the session) - Start time: Stop time: Total minutes: - Words written: Daily goal: Goal met? [ ] minimum [ ] ideal - Energy (1–10): Where did the energy flag? - Above/below the line? (Was this scene antagonist-driven or passive?) - What the scene revealed about the character (which profile trait surfaced): - Intrusions that stole time (for the space audit): - **Where the next session goes** (two lines max): - One thing to do differently tomorrow: ## Weekly review (Friday) - Sessions this week: Words this week: Streak (days): - What worked / what didn't: - Adjust the plan for next week (keep the floor reachable): -
story-outline.md 2.2 KB
# Story Outline A three-part outline anchored by the four energetic markers. Use for planning before the draft, and again after the draft as the revision map (outline-after-draft is the primary diagnostic instrument). ## Project - Working title: - Genre / format: - Target length (see `genres-and-formats.md`): - Goal math: completion date → total words → daily target: ## One-line premise ## The four markers (the skeleton) | Marker | Position | Scene | Energy check (what happens; why it matters) | |--------|----------|-------|----------------------------------------------| | End of the Beginning | ~25% | | Threshold crossed; no turning back | | Halfway Point | ~50% | | Recommitment (or first commitment) | | Crisis | ~75% | | Figurative death of the old self; antagonist at full power | | Climax | end | | Transformed protagonist, action the old self could not take | ## Beginning (first quarter) - Ordinary world and protagonist introduction (who, what, why): - Time and place (when, where): - Trigger event that disrupts and sets conflict in motion: - First overt goal (arising from reaction to the trigger): - Theme planted (subtle): - What backstory is deliberately withheld: ## Middle (half the book) - The exotic new world (physical or psychological): - Escalating obstacles (list 5–10, rising in severity): - Antagonists from every angle (external and internal): - Subplots (each must change the main story's outcome or emotional impact if removed): - Recomitment scene (~50%): - Cause-and-effect chain: scene → consequence → scene (note the links between major scenes): ## End (final quarter) - Threshold after the crisis (rest, re-evaluation, identity rebuild): - Backstory reveal (the sanctioned full reveal lives here): - Buildup to the climax (active scenes only, no flashbacks): - The climax (the transformed action): - Resolution (return to a changed equilibrium; deliberately loose ends?): ## Five load-bearing scenes (minimum viable outline) 1. Opening — 2. Act I reversal — 3. Act II reversal — 4. Climax — 5. Resolution — ## Scene staking > For each act, list planned scenes with a one-line goal each. Use `templates/scene-skeleton.md` for the scenes that matter most. -
submission-log.md 1.9 KB
# Submission Log Track every query, proposal, and manuscript sent. Use with `scripts/submission-tracker.py` (which stores the same fields and produces the pipeline report) or fill this table by hand. ## Fields | # | Project | Target (agent/publisher) | Type (query/proposal/full/partial) | Sent | Response deadline | Status | Follow-up due | Notes | |---|---------|--------------------------|-----------------------------------|------|-------------------|--------|---------------|-------| | 1 | | | | | | | | | | 2 | | | | | | | | | | 3 | | | | | | | | | **Status values:** sent / no-response / partial-request / full-request / rejection / offer / accepted / withdrawn ## Rules of the road - **Boomerang:** the moment a piece returns, send it to the next market. A piece that isn't circulating isn't trying. - **Waves:** submit in batches (5–6), wait, then the next tier. Don't blanket-bomb. - **Exclusivity:** honor requested exclusive windows (2–4 weeks for partials/fulls is typical); otherwise simultaneous submissions are normal — disclose them. - **Follow-up cadence:** check in after ~2 weeks, then about once a week; more is a nuisance, less and you're forgotten. - **The 24-hour rule:** allow one day of self-pity per rejection, then act: if queries fail, fix the query; if partials fail, fix the manuscript. - **Never reargue a rejection** — thank, stay warm, leave the door open. - **Record everything:** names, dates, feedback lines. Form rejections are data. ## Weekly review - [ ] New submissions sent this week (list): - [ ] Follow-ups due (list): - [ ] Rejections received → next market queued (list): - [ ] Statuses updated: - [ ] One lesson learned this week: ## The pipeline numbers (know your funnel) - Queries sent: ____ Responses: ____ Positive: ____ - Positive rate (target ~single digits is normal — it's arithmetic, not identity): - Projects in circulation: ____ -
synopsis.md 2 KB
# Synopsis (One Page) The story compressed to a single page: third person, present tense, full arc revealed (including the ending), no dialogue, no author intrusion, no commentary on how good the characters are. Feelings shown through action. This is a marketing document — the appeal must survive the compression. ## Structure **1. The hook (first lines)** > One to two sentences that make an agent keep reading: the protagonist, the want, the obstacle, the stakes — the same engine as the logline, slightly expanded. **2. The protagonist and the trigger** > Who, where, and the event that disrupts the ordinary world and sets the conflict in motion. **3. The escalation (middle)** > The chain of events in cause-and-effect order: obstacles, the antagonist's power growing, the halfway recommitment, subplots only where they change the main story's outcome. **4. The crisis** > The lowest point — the figurative death of the old self — and the backstory reveal if it lands here. **5. The climax and resolution** > The transformed protagonist's decisive action and how the story ends. Reveal the ending — agents need to know where it lands. ## Rules - [ ] One page (fiction; nonfiction proposals use chapter-by-chapter outlines instead) - [ ] Third person, present tense throughout - [ ] No dialogue, no internal monologue - [ ] No author intrusion ("this gripping tale...", "a story about...") - [ ] Feelings shown through action, not named - [ ] The ending is on the page - [ ] Clean layout: plain font, no colors, no gimmicks ## The compression ladder (before you write the synopsis) 1. Logline (≤25 words) — 2. Meets line — 3. One-paragraph summary — 4. **One-page synopsis** ← you are here 5. Chapter-by-chapter outline (for the proposal) ## Drafting trick Write the letter-to-a-friend version first (a plain letter describing the story to a trusted friend), then edit it down. The natural voice survives; the padding doesn't. ## Final check Read it cold — does the appeal survive? Would you want the book after reading only this page? -
worldbuilding-questionnaire.md 2.1 KB
# Worldbuilding Questionnaire For fantasy, science fiction, historical, and other worlds-with-rules. The three-quarters rule: build it all, put a quarter on the page, imply the rest. Consistency is the contract — if a rule changes, the change must be shown growing from the story. ## The rules - **The core impossibility** (what makes this world not-ours): magic? technology? history?: - **How it works** (the system, in plain terms): - **Its limits and costs** (what it cannot do, what it demands): - **Who can use it** (and who cannot, and why): - **Consistency log** — every rule change, with the story moment that justified it: ## Setting - **Geography** (map sketch or description; distances matter): - **Time frame** (era, calendar, seasons — and how time is told): - **Sensory signature** of the world (sights, sounds, smells — the details that make it feel real): - **The ordinary world vs. the exotic world** the protagonist enters: ## Society and culture - **Politics:** who holds power and how; factions and tensions: - **Economy:** what is valuable, what is scarce, who trades what: - **Religion / belief systems:** what people believe and what it costs them: - **Customs and etiquette:** what a visitor would get wrong: - **Everyday life:** food, dress, work, leisure (one or two exotic details per paragraph max): ## History - What happened before the story that still matters: - The event that made this world the way it is: - How the past reaches the present (via characters, objects, laws): ## Characters in the world - What does a person here want, and what can they expect from life? - How does the world shape the protagonist's flaw and fear? ## Translation policy - [ ] Everything characters say renders in plain language - [ ] Invented names/units/idioms are few, pronounceable, and only where they matter - [ ] No anachronisms (era-wrong words/objects/food in historical; dated tech in near-future) - [ ] The reader is never handed more than the current scene needs ## Wonder check - [ ] The core magic/mystery is not explained to death (no midi-chlorian moment) - [ ] The world serves the story and characters — never the reverse
-
-
README.md 3.5 KB
# writers-helper — Your personal writer's assistant A complete writing companion for fiction and nonfiction: it helps you plan a book, research it, draft it, revise it, break through creative blocks, build writing habits, and take it all the way to a publisher — proposals, query letters, agents, and book deals included. ## Why Install This Skill Most writing advice either tells you how to write a first draft or how to sell a finished book — rarely both, and never in one place. This skill covers the entire arc, from "I have an idea" to "my book is on a shelf," using lessons distilled from a 44-book library of writing craft and publishing guides. Install it and your agent becomes a writing partner that actually understands the craft: it can diagnose why a scene stalls, generate prompts aimed at exactly where your story is in its structure, run revision passes in the right order, analyze your manuscript's stats, draft a query letter that follows the one-page rules, and track your submissions to agents and publishers. It also coaches the human side of writing — habits, blocks, rejection, and motivation — because that is where most books die. ## What You Get | What | What it does | |------|--------------| | `SKILL.md` | The routing hub: operating principles, working modes (planner, coach, editor, business partner), and stage-by-stage guidance | | `references/` (10 files) | Deep expert material: planning and worldbuilding, craft and structure, prose and style, drafting, editing, creative blocks and prompts, habits, publishing and career, genre conventions, and a pitfalls-and-solutions catalog | | `templates/` (13 files) | Fill-in worksheets: premise canvas, story outline, scene skeleton, character profile, worldbuilding questionnaire, session plan, critique checklist, revision plan, prompt cards, book proposal, query letter, synopsis, submission log | | `scripts/` (5 tools) | Practical Python helpers: position-aware prompt generator, session planner, manuscript stats analyzer, habit journal, submission tracker | | `evals/` | The skill's own quality test cases | ## Quick Start Tell your agent what you're working on and where you are. That's it — the skill routes from there. ``` "Help me outline my novel — I have a premise but no structure." "I'm 30,000 words in and the middle has stalled. What's wrong?" "Write me a query letter for my finished thriller." "Build me a book proposal for my nonfiction idea about local history." ``` For the tools: ```bash # Generate 3 prompts for the crisis section of your story python3 writers-helper/scripts/writing-prompt.py --position crisis --count 3 # Analyze a draft python3 writers-helper/scripts/manuscript-stats.py mydraft.txt # Plan a 60-minute writing session python3 writers-helper/scripts/session-planner.py --minutes 60 --target-words 1000 ``` Each script is Python 3, standard library only, and non-interactive. Run with `--help` for options. ## Triggers - "I want to write a book / story / poem" and need help planning, drafting, or finishing - "I'm stuck / blocked / procrastinating on my writing" and need a diagnosis and a way forward - "Give me writing prompts or exercises" - "Help me edit / revise / polish my draft" - "Write me a query letter / book proposal / synopsis" - "How do I find an agent / publisher / get published / negotiate a book deal?" - "Track my submissions" or "keep me writing daily" ## Requirements - Python 3.8+ for the scripts (standard library only — no pip installs) - No API keys, no network access - The templates and references are plain Markdown; use them in any editor -
SKILL.md 12.7 KB
--- name: writers-helper description: >- Guide any writer, fiction or nonfiction, through the whole writing lifecycle: premise and planning, outlining and worldbuilding, research, drafting and finishing, editing and revision, breaking creative blocks, generating position-aware prompts and exercises, building sustainable writing habits, and the business of publishing — book proposals, query letters, synopses, agents, publishers, and book deals. Do not use for formatting deliverables into document files (see word-document, pdf-document, epub), for technical or business documentation (see technical-documentation), or for pure grammar and spelling reference. license: MIT --- # Writing — The Writer's Personal Skill Help one writer (or one writing project) move from idea to published book. This skill is a synthesis of classic writer's-craft teaching — distilled from a 44-book writing library — covering every stage: planning, research, drafting, revision, creative blocks, prompts, habits, and the business side (proposals, query letters, agents, publishers, deals). ## Operating principles (non-negotiable) 1. **Protect the draft.** During drafting: no critique, no re-reading, no mid-draft research. Keep a "gaps" list for facts to verify later. First drafts are raw material; quality gates belong to revision. 2. **Know where the story is.** Before generating a prompt, a scene, or feedback, ask which structural position the story occupies (beginning / halfway / crisis / climax). Position-aware guidance beats generic advice every time. 3. **Diagnose before prescribing.** When a writer is stuck, name the actual cause first — fear, energy, thin material, broken scene, wrong fix — then match the remedy. Never hand out a generic "keep writing." 4. **Sequence revision.** Structure first, then prose, then mechanics. Enforce a rest period and trusted readers before line editing. Do not let polish hide a broken story. 5. **Numbers are contracts.** Word counts, page counts, act lengths, and format specs exist for a reason. Check work against them and surface mismatches as questions. 6. **Voice sovereignty.** The author's voice and final judgment outrank yours. Every suggestion is provisional; preserve and serve the writer's voice, never flatten it into your own. 7. **Honest economics.** Show real money math for deals, royalties, and self-publishing. Flag fee-charging "agents," reading fees, and vanity-press traps. 8. **Copyright hygiene.** Never reproduce text from published sources. Paraphrase and synthesize ideas; write original examples. ## Intake — first questions Before doing anything, establish: - **Project type:** fiction or nonfiction; genre; format (novel, short story, picture book, poetry, proposal, essay...). - **Stage:** idea, planning, research, drafting, revising, polishing, submitting, published. - **Goal & deadline:** what "done" means and when (use the goal math in `references/workflow-and-planning.md` to turn this into a daily target). - **Audience:** who the writing is for; the reader relationship shapes voice and structure. - **Constraint:** one-page deliverable, word-count cap, publisher requirements, collaboration. Then choose a working mode (below) and the reference(s) that fit. ## Working modes | Mode | Use when | Route to | |------|----------|----------| | **Planner** | Starting a project; needs premise, outline, worldbuilding, research plan | `references/workflow-and-planning.md`, `references/craft-and-structure.md`, `references/genres-and-formats.md` | | **Coach** | Blocked, unfocused, or building habits; wants prompts and exercises | `references/blocks-and-prompts.md`, `references/habits-and-lifestyle.md`, `scripts/writing-prompt.py`, `scripts/session-planner.py` | | **Editor** | A draft exists; needs critique, revision passes, line editing, proofreading | `references/editing-and-revision.md`, `references/prose-and-style.md`, `scripts/manuscript-stats.py` | | **Business partner** | Query letters, proposals, agents, publishers, deals, submissions | `references/publishing-and-career.md`, `templates/book-proposal.md`, `templates/query-letter.md`, `templates/synopsis.md`, `templates/submission-log.md`, `scripts/submission-tracker.py` | ## Stage routing | Stage | What to do | Read | |-------|-----------|------| | Idea → premise | Test the idea, write a one-line pitch, check the high-concept bar | `references/workflow-and-planning.md` | | Planning | Outline, backward design, scene staking, worldbuilding, goal math | `references/workflow-and-planning.md`, `references/craft-and-structure.md`, `templates/premise-canvas.md`, `templates/story-outline.md`, `templates/worldbuilding-questionnaire.md` | | Research | Write first, verify later; keep a gaps list; avoid rabbit holes | `references/workflow-and-planning.md` | | Drafting | Session ritual, flow sprints, finishing momentum | `references/drafting-and-process.md`, `scripts/session-planner.py`, `scripts/habit-log.py` | | Blocked | Diagnose the block type, then apply the matched fix; generate prompts | `references/blocks-and-prompts.md`, `scripts/writing-prompt.py` | | Revising | Rest, trusted readers, structure-first passes, scene questions | `references/editing-and-revision.md`, `templates/critique-checklist.md`, `templates/revision-plan.md` | | Polishing | Prose passes, grammar, proofreading; measure the manuscript | `references/prose-and-style.md`, `scripts/manuscript-stats.py` | | Submitting | Query, synopsis, proposal, agent list, tracking | `references/publishing-and-career.md`, `templates/query-letter.md`, `templates/synopsis.md`, `templates/book-proposal.md`, `scripts/submission-tracker.py` | ## References - `references/workflow-and-planning.md` — the writing lifecycle, premises and one-line pitches, outlining and backward design, worldbuilding, research discipline, goal math - `references/craft-and-structure.md` — plot as character change, the four energetic markers, scene anatomy, character and motivation, dialogue, POV, suspense, show-don't-tell - `references/prose-and-style.md` — voice, sentence craft, word choice, grammar essentials, clichés, readability, proofreading discipline - `references/drafting-and-process.md` — two-mode drafting, fast drafting, session ritual, momentum and finishing, the self-contract, daily practice - `references/editing-and-revision.md` — revision sequencing, critique protocol, layered passes, line editing, manuscript metrics - `references/blocks-and-prompts.md` — block diagnosis and matched fixes, position-aware prompt formula, exercise library, inner-critic management - `references/habits-and-lifestyle.md` — the ten habit categories, writing space, sustainability, reading as apprenticeship, identity - `references/publishing-and-career.md` — proposals, query letters, synopses, agents, publishers, deals, rights, rejection, platform - `references/genres-and-formats.md` — word-count ladders, genre contracts (romance, fantasy/SF, children's, poetry, comedy, graphic novels, screenwriting), manuscript conventions - `references/pitfalls-and-solutions.md` — the common failure modes at every stage, each with a fix ## Templates All templates are fill-in worksheets with guidance built in. Read the matching reference first, then use the template to structure the work. - `templates/premise-canvas.md` — test and sharpen a story idea before outlining - `templates/story-outline.md` — three-part outline with the four energetic markers and scene stakes - `templates/scene-skeleton.md` — one page per scene: the seven essential elements - `templates/character-profile.md` — goal, obstacle, loss plus flaw, strength, fear, dream, secret - `templates/worldbuilding-questionnaire.md` — setting, rules, society, history, sensory signature - `templates/session-plan.md` — a concrete daily writing session with targets and ritual - `templates/critique-checklist.md` — big-picture and targeted questions for readers and self-review - `templates/revision-plan.md` — order the passes from structure to proofreading - `templates/prompt-cards.md` — the prompt formula and original sample prompts per story position - `templates/book-proposal.md` — the nonfiction proposal, section by section - `templates/query-letter.md` — fiction and nonfiction one-page query structures - `templates/synopsis.md` — one-page synopsis structure and rules - `templates/submission-log.md` — track submissions, responses, and follow-ups ## Available Scripts Python 3, standard library only, non-interactive, `--json` where noted. See `--help` on each. | Script | Purpose | Invocation | |---|---|---| | `scripts/writing-prompt.py` | Generates position-aware three-part prompt sets (affirmation, plot element, writing assignment) with a record block; options `--position`, `--count`, `--seed`, `--json`. Run it in Coach mode when a writer is blocked or wants exercises — after diagnosing which structural position the story occupies. | `python3 scripts/writing-prompt.py --position halfway --count 3` | | `scripts/session-planner.py` | Plans a timed writing session: blocks, breaks, per-block word targets, flow-sprint pacing from `--target-words`/`--minutes`/`--words-per-hour`; `--json` for structured output. Run it at the start of a drafting session to turn a word-count goal into a concrete schedule. | `python3 scripts/session-planner.py --minutes 90 --target-words 1200` | | `scripts/manuscript-stats.py` | Analyzes a manuscript file for editing signals: word count, sentence stats, passive voice, adverb density, crutch words, readability, per-chapter pacing (`--chapter-regex`, `--json`). Run it in Editor mode before and between revision passes to measure rather than guess. | `python3 scripts/manuscript-stats.py manuscript.txt --json` | | `scripts/habit-log.py` | Journals each writing session (date, words, minutes, energy via `--log`) and reports day/week/month progress and streaks via `--report`; state lives in a JSONL log (`--file`). Run it after every session when building sustainable writing habits. | `python3 scripts/habit-log.py --log 2026-08-08 850 45 4 --report week` | | `scripts/submission-tracker.py` | Tracks queries and proposals (title, target, type, sent date, status, notes via `--add`; field edits via `--update`) and reports the pipeline with `--list`/`--status`, flagging follow-ups past `--follow-up-days`. Run it throughout Submitting mode so no query goes stale untracked. | `python3 scripts/submission-tracker.py --add "The Glass Orchard" "Agent Name" query 2026-08-08 sent --list` | ## When not to use - **Document formatting and packaging:** Word, PDF, PowerPoint, Excel, or EPUB *deliverables* — use `word-document`, `pdf-document`, `powerpoint`, `excel`, or `epub` instead. This skill works on the words, not the file format. - **Technical or business documentation:** release notes, API docs, runbooks — use `technical-documentation` or `adr-authoring` for architecture decisions. - **Pure grammar/spelling reference:** a one-off question about a rule is better served by a style guide; this skill applies grammar *within the editing workflow*, not as a reference lookup. - **Reading or writing EPUB files as an ebook task** — route to `epub`. - **Non-writing creative coaching** — use `genius-life` or `life-coach` for general creativity/life practice outside a specific writing project. ## Completion and exit conditions - Deliver the requested artifact: an outline, a draft, a revision pass, a query letter, a proposal, a submission list, or a completed session plan. - Confirm the current approach is adequate when the writer is already succeeding without intervention. - For diagnosis loops (blocks, structural problems), stop after at most three non-converging passes and report the evidence with the options, rather than churning the writer. ## Prerequisites - Python 3 with the standard library only for all five scripts — no external packages, API keys, or services. - A plain-text manuscript file for `manuscript-stats.py`; writable JSONL state files for `habit-log.py` and `submission-tracker.py` (both default to a file in the working directory; pass `--file` to pin one). - The relevant references read first: scripts support the workflow, they do not replace the craft judgment in `references/`. ## Limitations - Scripts measure and structure; they do not judge. Stats flag passive voice and pacing, but revision decisions stay with the Editor-mode judgment above — never let metrics override voice sovereignty. - `manuscript-stats.py` analyzes what you hand it (plain text); it cannot open .docx/.epub files or see formatting. - `habit-log.py` and `submission-tracker.py` are single-writer local tools with no sync or multi-user awareness; keep their JSONL files out of shared paths if more than one person writes there. - Generated prompts are position-aware patterns, not custom plot advice — pair them with the story's actual premise and characters.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.