Skill v1.0.1
currentLLM-judged scan95/100+5 new
version: "1.0.1" name: story-init description: 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.
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 finding the idea itself: when the user has only a vague notion ("something about lighthouses"), several competing ideas, or no premise yet, run the
premise-workshopskill first, then return here with the chosen premise, form, and genre - 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
- Ask for basic story information (if a
premise-workshopsession produced a premise, logline, genre, and form, reuse them rather than asking again):
- Title
- Form:
novel,novella,novelette,short-story,flash,serial,picture-book, orchapter-book. Without--form,story initwrites noformand notarget-words, so if the user doesn't choose, pass--form novel - 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}" --form "{form}" --genre "{genre}" --sub-genre "{sub-genre}" --setting-era "{era}" --pov "{pov-style}" --tense "{tense}" --synopsis "{synopsis}" --theme "{theme-1}" --theme "{theme-2}"
--form records form in story.md and, when no target is given, sets a default target-words for the form (novel 80,000, novella 30,000, novelette 12,000, short story 5,000, flash 1,000, chapter book 10,000, picture book 500; serials get no book-level default). story validate then warns when target-words is outside the form's usual range. For short forms, point the user to references/short-story-form.md in the plot-structure skill.
Publishing metadata (isbn, publisher, publication-date, description, keywords, subjects, copyright, cover-alt, ai-disclosure, language) is optional and can wait until the book is ready to publish; the publishing skill fills it in. Do not ask for it at init.
The story id recorded in every registry is the kebab-case form of the title (--dir sets only the directory). A title with no ASCII letters or digits, such as Война и мир, needs --dir with an ASCII folder name, and the story id then comes from the folder name. 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.
- 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
- Populate
story.mdwith the story bible:
---title: "{Title}"schema-version: 2genre: {genre}sub-genre: {sub-genre}setting-era: {era}status: planningform: {form}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
- 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.
- Populate each
_index.mdwith an empty registry:
`characters/_index.md`:
---type: character-registrystory: {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-registrystory: {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-registrystory: {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: timelinestory: {story-title-kebab}---# Story Timeline| When | Event | Arc | Chapter ||------|-------|-----|---------|| *No events yet* | | | |
`chapters/_index.md`:
---type: chapter-registrystory: {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.mdwith frontmattertype: scene-registryandstory: {story-title-kebab}continuity/state.mdwith frontmattertype: continuity-state,story: {story-title-kebab},current-chapter: 0, and emptycharacter-state,object-state, andknowledge-statelistscontinuity/questions/_index.mdwith frontmattertype: question-registryandstory: {story-title-kebab}continuity/promises/_index.mdwith frontmattertype: promise-registryandstory: {story-title-kebab}continuity/clues/_index.mdwith frontmattertype: clue-registryandstory: {story-title-kebab}glossary/_index.mdwith frontmattertype: glossary-registryandstory: {story-title-kebab}style-sheet.md(optional) with frontmattertype: style-sheet,dialect: unspecified, and emptypreferred,watch-words, andallow-wordslists, plus the body sections described in thevoice-styleskill
If manual initialization gets tedious, stop and ask the user to install or run the Story CLI rather than inventing a different project shape.
- Present a summary of what was created and suggest next steps:
- "Workshop the premise" (triggers premise-workshop skill) if the premise is still a guess
- "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
- 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.mdfrontmatter includesschema-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: deceasedanddied-in: chapter-{NN}sostory continuitycan 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 undermentions - Scene identifiers use
chapter-{NN}-scene-{NN}and live inscenes/ - Continuity state lives in
continuity/state.md, with open questions, promises, and clues tracked undercontinuity/questions/,continuity/promises/, andcontinuity/clues/ - Markdown-first artifacts - create and edit story content directly in the target
.mdfiles. Do not create project-local build scripts, generator scripts, or bulk writer scripts (for examplebuild-*.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 --, orstory-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.