Story Initialization

This skill should be used when the user asks to "start a new story", "initialize a story project", "create a story", "new book", "set up a story", or wants to begin a new fiction writing project from scratch.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/story-init, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit danjdewhurst/story-skills/skills/story-init#main ~/.claude/skills/story-init

For one project only, change the path to .claude/skills/story-init. This skill also uses story.md, style-sheet.md, _index.md, timeline.md, state.md, sera-voss.md — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Story Initialization

Show the full text283 lines
story-init/SKILL.md283 lines · 10.4 KB
namedescription
story-initThis skill should be used when the user asks to "start a new story", "initialize a story project", "create a story", "new book", "set up a story", or wants to begin a new fiction writing project from scratch.

Story Initialization

Overview

Initialize a new story project with a structured markdown folder layout. Creates the story bible, registries, scene tracking, continuity state, glossary, worldbuilding folders, plot structure, and chapter tracker - all as cross-referenced markdown files with YAML frontmatter.

When to Use

  • Starting a new story, book, or fiction project
  • Setting up the folder structure for an existing story idea
  • NOT for adding to an existing story project (use the domain-specific skills instead)
  • NOT for a sequel, prequel, or companion to an existing book: use series-continuity, which links the projects and carries canon across
  • NOT for converting an existing manuscript or chapter drafts: run story import <source> --title "{Title}" instead, then build out the bible from the entity candidates it prints

Workflow

  1. Ask for basic story information:
    • Title
    • Genre and sub-genre
    • Brief synopsis (2-3 sentences)
    • Setting era/time period
    • Key themes (2-4)
    • POV style (first-person, third-person-limited, third-person-omniscient)
    • Tense (past, present, future, mixed)

If the Story CLI is available, prefer using it to create the starter project, then inspect and refine the generated files as needed:

story init "{Title}" --genre "{genre}" --sub-genre "{sub-genre}" --setting-era "{era}" --pov "{pov-style}" --tense "{tense}" --synopsis "{synopsis}" --theme "{theme-1}" --theme "{theme-2}"

The title must contain ASCII letters or digits, because the story id recorded in every registry is derived from it (--dir sets only the directory). init refuses an existing directory unless you pass --force; with --force it only creates missing starter files and never overwrites an existing story.md, registry, timeline, or continuity/state.md.

If story is not installed, use bun run story -- from the Story Skills repository checkout or the bundled fallback node ../story-maintenance/scripts/story.js with the same arguments, resolving the path relative to this skill folder:

node ../story-maintenance/scripts/story.js init "{Title}"

If neither command is available, create the files manually using the steps below.

  1. Create the folder structure at the current working directory:
{story-title-kebab}/
├── story.md
├── style-sheet.md
├── characters/
│   └── _index.md
├── worldbuilding/
│   ├── _index.md
│   ├── locations/
│   ├── systems/
│   ├── factions/
│   └── artifacts/
├── plot/
│   ├── _index.md
│   ├── arcs/
│   └── timeline.md
├── scenes/
│   └── _index.md
├── continuity/
│   ├── state.md
│   ├── questions/
│   │   └── _index.md
│   ├── promises/
│   │   └── _index.md
│   └── clues/
│       └── _index.md
├── glossary/
│   ├── _index.md
│   └── terms/
└── chapters/
    └── _index.md
  1. Populate story.md with the story bible:
---
title: "{Title}"
schema-version: 2
genre: {genre}
sub-genre: {sub-genre}
setting-era: {era}
status: planning
themes:
  - {theme-1}
  - {theme-2}
premise: "{One-sentence controlling idea: value + cause, e.g. justice triumphs because the hero outsmarts the system}"
counter-premise: "{The antagonist's embodied argument}"
pov: {pov-style}
tense: {tense}
---

Below the frontmatter, include sections:

  • Synopsis - the 2-3 sentence synopsis provided
  • Tone & Style - brief notes on the story's voice (derive from genre/themes)
  • Notes - empty section for the user to fill in
  1. Draft a working premise:

Fill in the premise: and counter-premise: fields as hypotheses, not commitments. The premise is a one-sentence controlling idea — value + cause, e.g. "justice triumphs because the hero outsmarts the system". The counter-premise is the antagonist's embodied argument: the story's opposing value, stated as the antagonist would believe it. Draft both early, alongside the synopsis, but do not force theme — a working premise is a guess to be audited, not a conclusion to be imposed. Revisit it during revision: the revision-continuity theme audit pass (see the theme-craft skill for the deep pass) checks whether the ending actually dramatizes the premise through consequence. If the draft argues a different premise, update the premise, not the draft.

  1. Populate each _index.md with an empty registry:

characters/_index.md:

---
type: character-registry
story: {story-title-kebab}
---

# Characters

## Registry

| Name | Role | Status | File |
|------|------|--------|------|
| *No characters yet* | | | |

## Relationship Map

*No relationships defined yet.*

## Family Trees

*No family trees defined yet.*

worldbuilding/_index.md:

---
type: world-registry
story: {story-title-kebab}
---

# Worldbuilding

## World Overview

*Describe the world at a high level here.*

## Locations

| Name | Type | Region | File |
|------|------|--------|------|
| *No locations yet* | | | |

## Systems

| Name | Type | File |
|------|------|------|
| *No systems yet* | | |

## Factions

| Name | Type | Status | File |
|------|------|--------|------|
| *No factions yet* | | | |

## Artifacts

| Name | Type | Status | File |
|------|------|--------|------|
| *No artifacts yet* | | | |

plot/_index.md:

---
type: plot-registry
story: {story-title-kebab}
structure: three-act
---

# Plot Structure

## Story Structure

**Model:** Three-Act Structure (adjust as needed)

## Arcs

| Name | Type | Status | File |
|------|------|--------|------|
| *No arcs yet* | | | |

## Theme Tracking

| Theme | Arcs | Chapters |
|-------|------|----------|
| *No themes tracked yet* | | |

plot/timeline.md:

---
type: timeline
story: {story-title-kebab}
---

# Story Timeline

| When | Event | Arc | Chapter |
|------|-------|-----|---------|
| *No events yet* | | | |

chapters/_index.md:

---
type: chapter-registry
story: {story-title-kebab}
---

# Chapters

## Registry

| # | Title | POV | Status | Word Count | File |
|---|-------|-----|--------|------------|------|
| *No chapters yet* | | | | | |

## Total Word Count: 0

Also create the v2 support files. Every registry and continuity/state.md needs story: {story-title-kebab} in addition to its type, or story validate reports a missing story field:

  • scenes/_index.md with frontmatter type: scene-registry and story: {story-title-kebab}
  • continuity/state.md with frontmatter type: continuity-state, story: {story-title-kebab}, current-chapter: 0, and empty character-state, object-state, and knowledge-state lists
  • continuity/questions/_index.md with frontmatter type: question-registry and story: {story-title-kebab}
  • continuity/promises/_index.md with frontmatter type: promise-registry and story: {story-title-kebab}
  • continuity/clues/_index.md with frontmatter type: clue-registry and story: {story-title-kebab}
  • glossary/_index.md with frontmatter type: glossary-registry and story: {story-title-kebab}
  • style-sheet.md (optional) with frontmatter type: style-sheet, dialect: unspecified, and empty preferred, watch-words, and allow-words lists, plus the body sections described in the voice-style skill

If manual initialization gets tedious, stop and ask the user to install or run the Story CLI rather than inventing a different project shape.

  1. Present a summary of what was created and suggest next steps:

    • "Add your first character" (triggers character-management skill)
    • "Start worldbuilding" (triggers worldbuilding skill)
    • "Define your plot structure" (triggers plot-structure skill)
    • "Set up the style sheet" (triggers voice-style skill) once there is a writing sample
    • "Run story next ." to show deterministic next actions
  2. When CLI access is available, run a final maintenance check:

story validate {story-title-kebab}

If story is not installed, use bun run story -- from the Story Skills repository checkout or the bundled fallback node ../story-maintenance/scripts/story.js with the same arguments, resolving the path relative to this skill folder.

Reference Files

  • references/title-logline.md - Title craft (comps, hook phrasing, title as promise) and the logline recipe

Conventions

These conventions apply across ALL story skills:

  • Kebab-case filenames for all entity files (e.g., sera-voss.md, ashen-citadel.md)
  • YAML frontmatter on every file for structured metadata
  • Schema version - story.md frontmatter includes schema-version: 2
  • _index.md files are authoritative registries for each domain
  • story.md is the top-level bible read by all skills for context
  • style-sheet.md records voice and house style; skills that write or revise prose read it
  • Bidirectional cross-links - when referencing another entity, update both files
  • Character identifiers use the kebab-case filename without extension (e.g., sera-voss)
  • Death tracking - when a character dies on the page, set status: deceased and died-in: chapter-{NN} so story continuity can flag posthumous appearances
  • mentions vs characters - chapter and scene frontmatter lists characters present in-scene under characters; characters who are only referenced, remembered, recorded, or seen in flashback go under mentions
  • Scene identifiers use chapter-{NN}-scene-{NN} and live in scenes/
  • Continuity state lives in continuity/state.md, with open questions, promises, and clues tracked under continuity/questions/, continuity/promises/, and continuity/clues/
  • Markdown-first artifacts - create and edit story content directly in the target .md files. Do not create project-local build scripts, generator scripts, or bulk writer scripts (for example build-*.js) to emit story files.
  • CLI helpers stay external - the only JavaScript helper agents should run is the installed or bundled Story CLI (story, bun run story --, or story-maintenance/scripts/story.js) for deterministic maintenance. Do not copy it into the user's story project, and remove any unavoidable scratch helper before finishing.
1---
2name: story-init
3description: This skill should be used when the user asks to "start a new story", "initialize a story project", "create a story", "new book", "set up a story", or wants to begin a new fiction writing project from scratch.
4---
5 
6# Story Initialization
7 
8## Overview
9 
10Initialize a new story project with a structured markdown folder layout. Creates the story bible, registries, scene tracking, continuity state, glossary, worldbuilding folders, plot structure, and chapter tracker - all as cross-referenced markdown files with YAML frontmatter.
11 
12## When to Use
13 
14- Starting a new story, book, or fiction project
15- Setting up the folder structure for an existing story idea
16- NOT for adding to an existing story project (use the domain-specific skills instead)
17- NOT for a sequel, prequel, or companion to an existing book: use `series-continuity`, which links the projects and carries canon across
18- NOT for converting an existing manuscript or chapter drafts: run `story import <source> --title "{Title}"` instead, then build out the bible from the entity candidates it prints
19 
20## Workflow
21 
221. Ask for basic story information:
23 - Title
24 - Genre and sub-genre
25 - Brief synopsis (2-3 sentences)
26 - Setting era/time period
27 - Key themes (2-4)
28 - POV style (first-person, third-person-limited, third-person-omniscient)
29 - Tense (past, present, future, mixed)
30 
31If the Story CLI is available, prefer using it to create the starter project, then inspect and refine the generated files as needed:
32 
33```shell
34story init "{Title}" --genre "{genre}" --sub-genre "{sub-genre}" --setting-era "{era}" --pov "{pov-style}" --tense "{tense}" --synopsis "{synopsis}" --theme "{theme-1}" --theme "{theme-2}"
35```
36 
37The title must contain ASCII letters or digits, because the story id recorded in every registry is derived from it (`--dir` sets only the directory). `init` refuses an existing directory unless you pass `--force`; with `--force` it only creates missing starter files and never overwrites an existing `story.md`, registry, timeline, or `continuity/state.md`.
38 
39If `story` is not installed, use `bun run story --` from the Story Skills repository checkout or the bundled fallback `node ../story-maintenance/scripts/story.js` with the same arguments, resolving the path relative to this skill folder:
40 
41```shell
42node ../story-maintenance/scripts/story.js init "{Title}"
43```
44 
45If neither command is available, create the files manually using the steps below.
46 
472. Create the folder structure at the current working directory:
48 
49```
50{story-title-kebab}/
51├── story.md
52├── style-sheet.md
53├── characters/
54│ └── _index.md
55├── worldbuilding/
56│ ├── _index.md
57│ ├── locations/
58│ ├── systems/
59│ ├── factions/
60│ └── artifacts/
61├── plot/
62│ ├── _index.md
63│ ├── arcs/
64│ └── timeline.md
65├── scenes/
66│ └── _index.md
67├── continuity/
68│ ├── state.md
69│ ├── questions/
70│ │ └── _index.md
71│ ├── promises/
72│ │ └── _index.md
73│ └── clues/
74│ └── _index.md
75├── glossary/
76│ ├── _index.md
77│ └── terms/
78└── chapters/
79 └── _index.md
80```
81 
823. Populate `story.md` with the story bible:
83 
84```yaml
85---
86title: "{Title}"
87schema-version: 2
88genre: {genre}
89sub-genre: {sub-genre}
90setting-era: {era}
91status: planning
92themes:
93 - {theme-1}
94 - {theme-2}
95premise: "{One-sentence controlling idea: value + cause, e.g. justice triumphs because the hero outsmarts the system}"
96counter-premise: "{The antagonist's embodied argument}"
97pov: {pov-style}
98tense: {tense}
99---
100```
101 
102Below the frontmatter, include sections:
103- **Synopsis** - the 2-3 sentence synopsis provided
104- **Tone & Style** - brief notes on the story's voice (derive from genre/themes)
105- **Notes** - empty section for the user to fill in
106 
1074. Draft a working premise:
108 
109Fill in the `premise:` and `counter-premise:` fields as hypotheses, not commitments. The premise is a one-sentence controlling idea — value + cause, e.g. "justice triumphs because the hero outsmarts the system". The counter-premise is the antagonist's embodied argument: the story's opposing value, stated as the antagonist would believe it. Draft both early, alongside the synopsis, but do not force theme — a working premise is a guess to be audited, not a conclusion to be imposed. Revisit it during revision: the `revision-continuity` theme audit pass (see the `theme-craft` skill for the deep pass) checks whether the ending actually dramatizes the premise through consequence. If the draft argues a different premise, update the premise, not the draft.
110 
1115. Populate each `_index.md` with an empty registry:
112 
113**`characters/_index.md`:**
114```markdown
115---
116type: character-registry
117story: {story-title-kebab}
118---
119 
120# Characters
121 
122## Registry
123 
124| Name | Role | Status | File |
125|------|------|--------|------|
126| *No characters yet* | | | |
127 
128## Relationship Map
129 
130*No relationships defined yet.*
131 
132## Family Trees
133 
134*No family trees defined yet.*
135```
136 
137**`worldbuilding/_index.md`:**
138```markdown
139---
140type: world-registry
141story: {story-title-kebab}
142---
143 
144# Worldbuilding
145 
146## World Overview
147 
148*Describe the world at a high level here.*
149 
150## Locations
151 
152| Name | Type | Region | File |
153|------|------|--------|------|
154| *No locations yet* | | | |
155 
156## Systems
157 
158| Name | Type | File |
159|------|------|------|
160| *No systems yet* | | |
161 
162## Factions
163 
164| Name | Type | Status | File |
165|------|------|--------|------|
166| *No factions yet* | | | |
167 
168## Artifacts
169 
170| Name | Type | Status | File |
171|------|------|--------|------|
172| *No artifacts yet* | | | |
173```
174 
175**`plot/_index.md`:**
176```markdown
177---
178type: plot-registry
179story: {story-title-kebab}
180structure: three-act
181---
182 
183# Plot Structure
184 
185## Story Structure
186 
187**Model:** Three-Act Structure (adjust as needed)
188 
189## Arcs
190 
191| Name | Type | Status | File |
192|------|------|--------|------|
193| *No arcs yet* | | | |
194 
195## Theme Tracking
196 
197| Theme | Arcs | Chapters |
198|-------|------|----------|
199| *No themes tracked yet* | | |
200```
201 
202**`plot/timeline.md`:**
203```markdown
204---
205type: timeline
206story: {story-title-kebab}
207---
208 
209# Story Timeline
210 
211| When | Event | Arc | Chapter |
212|------|-------|-----|---------|
213| *No events yet* | | | |
214```
215 
216**`chapters/_index.md`:**
217```markdown
218---
219type: chapter-registry
220story: {story-title-kebab}
221---
222 
223# Chapters
224 
225## Registry
226 
227| # | Title | POV | Status | Word Count | File |
228|---|-------|-----|--------|------------|------|
229| *No chapters yet* | | | | | |
230 
231## Total Word Count: 0
232```
233 
234Also create the v2 support files. Every registry and `continuity/state.md` needs `story: {story-title-kebab}` in addition to its `type`, or `story validate` reports a missing `story` field:
235 
236- `scenes/_index.md` with frontmatter `type: scene-registry` and `story: {story-title-kebab}`
237- `continuity/state.md` with frontmatter `type: continuity-state`, `story: {story-title-kebab}`, `current-chapter: 0`, and empty `character-state`, `object-state`, and `knowledge-state` lists
238- `continuity/questions/_index.md` with frontmatter `type: question-registry` and `story: {story-title-kebab}`
239- `continuity/promises/_index.md` with frontmatter `type: promise-registry` and `story: {story-title-kebab}`
240- `continuity/clues/_index.md` with frontmatter `type: clue-registry` and `story: {story-title-kebab}`
241- `glossary/_index.md` with frontmatter `type: glossary-registry` and `story: {story-title-kebab}`
242- `style-sheet.md` (optional) with frontmatter `type: style-sheet`, `dialect: unspecified`, and empty `preferred`, `watch-words`, and `allow-words` lists, plus the body sections described in the `voice-style` skill
243 
244If manual initialization gets tedious, stop and ask the user to install or run the Story CLI rather than inventing a different project shape.
245 
2466. Present a summary of what was created and suggest next steps:
247 - "Add your first character" (triggers character-management skill)
248 - "Start worldbuilding" (triggers worldbuilding skill)
249 - "Define your plot structure" (triggers plot-structure skill)
250 - "Set up the style sheet" (triggers voice-style skill) once there is a writing sample
251 - "Run `story next .`" to show deterministic next actions
252 
2537. When CLI access is available, run a final maintenance check:
254 
255```shell
256story validate {story-title-kebab}
257```
258 
259If `story` is not installed, use `bun run story --` from the Story Skills repository checkout or the bundled fallback `node ../story-maintenance/scripts/story.js` with the same arguments, resolving the path relative to this skill folder.
260 
261## Reference Files
262 
263- **`references/title-logline.md`** - Title craft (comps, hook phrasing, title as promise) and the logline recipe
264 
265## Conventions
266 
267These conventions apply across ALL story skills:
268 
269- **Kebab-case filenames** for all entity files (e.g., `sera-voss.md`, `ashen-citadel.md`)
270- **YAML frontmatter** on every file for structured metadata
271- **Schema version** - `story.md` frontmatter includes `schema-version: 2`
272- **`_index.md`** files are authoritative registries for each domain
273- **`story.md`** is the top-level bible read by all skills for context
274- **`style-sheet.md`** records voice and house style; skills that write or revise prose read it
275- **Bidirectional cross-links** - when referencing another entity, update both files
276- **Character identifiers** use the kebab-case filename without extension (e.g., `sera-voss`)
277- **Death tracking** - when a character dies on the page, set `status: deceased` and `died-in: chapter-{NN}` so `story continuity` can flag posthumous appearances
278- **`mentions` vs `characters`** - chapter and scene frontmatter lists characters present in-scene under `characters`; characters who are only referenced, remembered, recorded, or seen in flashback go under `mentions`
279- **Scene identifiers** use `chapter-{NN}-scene-{NN}` and live in `scenes/`
280- **Continuity state** lives in `continuity/state.md`, with open questions, promises, and clues tracked under `continuity/questions/`, `continuity/promises/`, and `continuity/clues/`
281- **Markdown-first artifacts** - create and edit story content directly in the target `.md` files. Do not create project-local build scripts, generator scripts, or bulk writer scripts (for example `build-*.js`) to emit story files.
282- **CLI helpers stay external** - the only JavaScript helper agents should run is the installed or bundled Story CLI (`story`, `bun run story --`, or `story-maintenance/scripts/story.js`) for deterministic maintenance. Do not copy it into the user's story project, and remove any unavoidable scratch helper before finishing.
283 

Discussion