danjdewhurst/story-skills/plot-structure
Claude Code and agent skill by danjdewhurst/story-skills
- community
Checking that the SKILL.md file is still in the repository.
This skill should be used when the user asks to "create a plot arc", "story structure", "add a plot point", "story timeline", "track foreshadowing", "pacing", "sagging middle", "act structure", "story arc", "plot outline", "snowflake method", or wants to plan and manage the narrative structure of a story. It owns book-level pacing; NOT for the craft of scene outcomes or chapter hooks, which this skill only plans in the outline (use scene-craft), or a pacing check as a revision pass (use revision-continuity).
Install
npx vskill@latest install danjdewhurst/story-skills/plot-structureSKILL.md
Plot Structure
Overview
Plan and manage story arcs, plot points, setups and payoffs, and the narrative timeline. Each arc is a markdown file in plot/arcs/, and plot/timeline.md holds the planned events and backstory in story order. The plot index lists all arcs, their status, and theme coverage.
Prerequisites
A story project must already exist (created via the story-init skill). Verify by checking for story.md in the project root.
Choosing a Story Structure
- Read
story.mdfor genre, themes, andform(novel,novella,novelette,short-story,flash,serial,picture-book,chapter-book). Forshort-storyandflash, usereferences/short-story-form.mdinstead of a multi-act beat sheet - Consult
references/structure-models.mdfor available structures - Recommend a structure based on genre (default to three-act if unclear). If the user wants to design the whole book top-down before drafting, or asks for the Snowflake Method, follow
references/snowflake.mdon top of the chosen structure - Update
plot/_index.mdfrontmatterstructurefield - Populate the story structure section with the beat sheet
- When the outline settles which chapter carries a beat, record it as that chapter's
beat(see Recording Beats on Chapters) - When CLI access is available, run
story reindex .,story wordcount . --write, andstory check .
Recording Beats on Chapters
A chapter's optional beat frontmatter field names the beat-sheet beat it delivers, so story grid, story context, and the codex can show the structure chapter by chapter.
- Use the beat names of the model in
plot/_index.md, asreferences/structure-models.mdspells them (Inciting Incident,Midpoint,All Is Lost,Ten (Twist)), or the writer's own label when they adapt the model. The field is free text, and the CLI checks only that it is text, not that it names a known beat - Write it with the chapter:
story add chapter '{Title}' --number {N} --beat '{Beat}', or addbeat: {Beat}to an existing chapter's frontmatter. Quote a value that looks like a number or contains:or#(beat: "Try/Fail #2"), since an unquoted#starts a comment - Keep it a short label:
story validatewarnsbeat-too-longabove 60 characters. What happens in the beat goes in the chapter's## Outline - Leave
beatoff the chapters between beats. A beat that runs over several chapters, such as Fun and Games, goes on the chapter where it starts - Run
story reindex .,story wordcount . --write, andstory check ., thenstory grid .. Once any chapter has a beat, the grid shows a(beat)row above its hook and outcome rows. Check each beat against its position in the model (a Midpoint near the middle chapter, All Is Lost near three quarters of the way through): beats that bunch up, or a long run of chapters with none, are where a middle sags
Creating an Arc
- Read
story.mdfor themes - Read
plot/_index.mdfor existing arcs - Read
characters/_index.mdto understand available characters - Ask for:
- Arc name
- Type (main, subplot, character, thematic)
- Which characters are involved
- Which themes it serves
- Which MICE threads the arc carries (optional
mice-threads:frontmatter, written as a block list with one- eventor- characteritem per line, or as a[event, character]flow list; seereferences/mice-quotient.md)
- Build the arc through conversation: setup, escalations, climax, resolution
- Scaffold the file with
story add arc '{Name}' --type main --character {id} --theme '{theme}', which writesplot/arcs/{arc-name-kebab}.mdwith the sections ofreferences/arc-template.mdand lists the arc inplot/_index.md, then fill in the sections. Without the CLI, write the file fromreferences/arc-template.mdtoplot/arcs/{arc-name-kebab}.md - Leave the arcs table in
plot/_index.mdtostory reindex ., which rebuilds it from the arc files; never add a row by hand - Update the hand-written
## Theme Trackingsection inplot/_index.md - If characters are referenced, verify they exist in
characters/ - When CLI access is available, run
story reindex .,story wordcount . --write, andstory check .
Managing Plot Points
Plot points live within arc files in the "Plot Points" table. When adding a plot point:
- Read the relevant arc file
- Add the plot point to the table with chapter reference (if known)
- Add the event to
plot/timeline.mdin chronological order - If the plot point sets up a later payoff or raises a question, record it in the one place Setup and Payoff Records below gives it
- When CLI access is available, run
story reindex .,story wordcount . --write, andstory check .
Timeline Management
plot/timeline.md is the hand-kept plan: a chronological list of the story's events across all arcs, including backstory and events not drafted yet. It does not own when a drafted scene happens: the scene's date and time do, and story timeline . orders the drafted scenes from them. Do not add a plan row for each drafted scene.
When adding events:
- Insert in chronological order
- Keep entries concise (one line per event)
- Use the
| When | Event | Arc | Chapter |table with these cell formats: - When: story-relative time for story events (e.g.
Day 1, morning), or how long ago for backstory (e.g.12 years ago,~300 years ago) - Event: one concise line describing what happened
- Arc: the arc's display name as written in its file (e.g.
The Drowned Witness), or-when the event belongs to no arc.story rename arcrewrites ids but not display names, and nothing checks this cell, so after renaming an arc search for the old name (grep -rn "Old Name" .) and update each hit by hand, including the timeline rows - Chapter:
Ch {N}once the event is written (e.g.Ch 1), or-for backstory and unwritten events. Once a row has a chapter, its scenes'dateandtimesay when it happens: if the row's When disagrees, the scene is right, so correct the row
When reviewing the timeline:
- Run
story timeline .to see written scenes in story-time order from theirdate/timefields, with scenes told out of order marked, and compare it withplot/timeline.md - Run
story diagram timelinefor a Mermaid timeline of dated scenes and chapters, andstory diagram arcsfor which chapters advance each arc (add--out dist/<name>.mmdto save either; keep generated diagrams out of entity folders) - Run
story grid .for the plot grid: arcs as rows, chapters as columns, anxwhere a chapter or its scenes list the arc inarcs-advanced, plus each chapter'sbeat(once any chapter has one), hook, and scene outcomes. Use--format csvfor a spreadsheet and--from/--tofor a range of chapters. An empty row is an arc no chapter advances, a long gap is an arc the reader may forget, and an(unknown)row is anarcs-advancedid with no arc file - Check for chronological consistency
- Identify pacing issues (too many events clustered, long gaps)
- Flag arcs that haven't progressed
Pacing, Outcomes, and Hooks
Two optional fields make pacing checkable:
- Scene
outcome:yes,no,yes-but, orno-and— whether the POV character got what they wanted in the scene.yes-butandno-andare the complicating outcomes that drive a plot forward (see thescene-craftskill). - Chapter
hook: how the chapter ends —cliffhanger,question,revelation,reversal,decision,emotional, orresolution.
Plan both in the outline, then run story pacing . for a per-chapter dashboard of words, scene and sequel counts, scene outcomes, and hooks. It warns about three or more consecutive yes outcomes (no pressure), four or more scene units with no sequel (no breath), chapter length outliers (over twice or under half the median once three chapters have prose), three or more consecutive chapters ending on resolution, and drafted chapters with no hook. Treat the warnings as prompts to reread, not rules: a quiet resolution chapter after the climax is right.
Setup and Payoff Records
Each setup has exactly one record. Pick it by use, update only that record, and never copy a setup into a second place:
| Use | Record | Create with | Checked by | |
|---|---|---|---|---|
| A mystery clue or red herring | continuity/clues/{id}.md | story add clue '{Title}' --planted chapter-{NN} --payoff chapter-{NN} | story clues, story continuity | |
| Any other setup the reader is owed a payoff on: a Chekhov's gun, a vow, a prophecy, a deadline | continuity/promises/{id}.md (references/promise-template.md) | story add promise '{Title}' --arc {arc-id} --planted chapter-{NN} | story continuity | |
| A question the reader is left asking | continuity/questions/{id}.md (references/question-template.md) | story add question '{Title}' --introduced chapter-{NN} | story continuity | |
| A hint inside one arc that needs no checked payoff: an image or an echo | a row of the arc's ## Foreshadowing table | by hand | only its chapter-NN ids, by story check; not its status or payoff | |
A motif that theme-craft tracks | a row of the motif table in continuity/motifs.md | by hand, per theme-craft | nothing; no check reads its status |
A promise or clue record is planned until the setup is on the page, then planted with planted: chapter-{NN}, then paid-off with payoff: chapter-{NN}. --payoff may name a chapter with no file yet, and so may --planted, which then records the setup as planned. When --planted names a chapter that has a file, story add records planted even if that chapter is still an outline, so pass --status planned until the setup is drafted. A question is open with introduced: chapter-{NN} until it is answered with resolved: chapter-{NN}. The records give a promise, clue, or question its arcs and characters, so the arc's ## Foreshadowing table holds only the arc's small hints, each with Planted, Payoff, Chapter Planted, Chapter Payoff, and a Status of planned, planted, or paid-off.
story context packs the open promises, clues, and questions into each chapter's drafting context, chapter-writing's outline step reads the arc Foreshadowing rows planned for that chapter, and story next . counts the open questions and the promises and clues still planned or planted. For mystery clues, story clues . prints a clue-by-chapter fair-play matrix and story diagram clues the plant-to-reveal flow (see the genre-craft skill).
Scaffold chapters and scenes with story add chapter '{Title}' --number {N} --pov {id} --arc {arc-id} and story add scene '{Title}' --chapter chapter-{NN} --scene {M} --pov {id} --location {id}, then write the prose and outline content into the created files. Set outcome on scene records and hook and beat on chapters as the outline settles them, then run story reindex ., story wordcount . --write, and story check ., then story pacing ..
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/plot-structure/SKILL.md
Popularity
- Repository stars
- 244
- Repository forks
- 36
- 7-day trend score
- 28
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/danjdewhurst/story-skills/plot-structure)