Agent skill

Story Init

by danjdewhurst in danjdewhurst/story-skills

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…

MITAuto-check: notesWriting & Content

Install Story Init

skills CLI
$ npx skills add danjdewhurst/story-skills --skill story-init -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install danjdewhurst/story-skills story-init --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/danjdewhurst/story-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/story-init .claude/skills/story-init && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
story-init
GitHub stars
283
Used in
1 other repo
Token cost
~3.1k tokens
SKILL.md length
1,688 words
Files
3 (incl. references)
Skills in repo
24
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 2 steps: Present a summary of what was created… → When CLI access is available, run the…
  • Asks to start a new story
  • SKILL.md covers Overview, When to Use, Workflow and Reference Files, plus 1 more section
  • Calls node

What it does

Story Init is an agent skill from danjdewhurst/story-skills. 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. NOT for a sequel or prequel (use series-continuity), or for finding the idea before a project exists (use premise-workshop).

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/manual-setup.md` and `references/title-logline.md`).

It sits in Writing & Content, covering Creative writing and fiction. The repository describes itself as: Agent Skills for end-to-end story writing in markdown, packaged as Codex and Claude Code plugins. The licence is MIT.

When your agent uses it

  • Asks to start a new story
  • Initialize a story project
  • Wants to begin a new fiction writing project from scratch

Example prompts

  • “start a new story”
  • “initialize a story project”
  • “create a story”
  • “/story-init”

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Present a summary of what was created and suggest next steps
  2. When CLI access is available, run the maintenance commands from inside the new project folder ({story-title-kebab}/, or the folder given…

What it can do on your machine

Read from SKILL.md and the folder at commit c46163b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Story Init loads about 3.1k tokens when it runs, and up to ~4.8k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 1,688 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:54
    `bunfig.toml` (which can run code) and `.env`, and a package script runs from the checkout's root. Skills live in diffe
  • NoteMentions a .env fileSKILL.md:82
    `bunfig.toml` (which can run code) and `.env`, and a package script runs from the checkout's root.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from danjdewhurst/story-skills at commit c46163b, republished under its MIT licence (© danjdewhurst). 1,688 words, ~3,063 tokens.

Download SKILL.mdSave it as .claude/skills/story-init/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
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. NOT for a sequel or prequel (use series-continuity), or for finding the idea before a project exists (use premise-workshop).

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-workshop skill 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. Import does not accept --form, so afterwards set form and target-words in story.md by hand (see the form list and defaults below); without them story validate never checks length and story progress has no target

Workflow

  1. Ask for basic story information (if a premise-workshop session produced a premise, logline, genre, and form, reuse them rather than asking again):
    • Title
    • Form: novel, novella, novelette, short-story, flash, serial, picture-book, or chapter-book. Without --form, story init writes no form and no target-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)
    • Language the book is written in, as a BCP 47 tag: en, en-GB, fr, es-MX, pt-BR, de, ja, zh-Hans. Add a region only when it matters (spelling, punctuation, or market). If the user writes to you in a language other than English, confirm rather than assume. Default en

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

shell
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}'

The values are the user's own words, so wrap each one in single quotes. Never paste a value into double quotes, where $(...), backticks, and " still take effect. A single quote inside a value depends on the shell: write it as '\'' in a POSIX shell (bash, zsh, sh, Git Bash) and as '' in PowerShell. Never run the command in cmd.exe, which has no single quotes and runs & inside a value; use PowerShell or a POSIX shell.

--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.

Record the language straight after init. story init has no flag for it, so add language: {tag} to the story.md frontmatter by hand, with the exact tag the user gave, regional variants such as en-GB or en-AU included. Write it for English books too: it costs nothing, and a missing field only means en. The language is not just metadata: drafting, editing, and critique skills write and judge prose in it, story validate checks the tag, and builds declare it. For a book not in English, set dialect: unspecified in style-sheet.md (the British and American spelling pairs are English) and, before the first chapter, settle the dialogue punctuation with the voice-style skill.

A Chinese (zh) or Japanese (ja) book is counted in characters, not words: story wordcount, story progress, the registries, and the form check all measure characters, against target-characters. Because the language is added after init, --form will have written a target-words; replace it with target-characters for the form (Chinese: novel 200,000, novella 60,000, short story 10,000, flash 1,500; Japanese: novel 150,000, novella 80,000, short story 20,000, flash 4,000), or a number the user names. No source sets a novelette, picture-book, or chapter-book length in characters, so those forms get no default and no range check: ask the user for a target. story validate warns unused-target until you do. Only set count-unit: words or count-unit: characters when the user asks to count the other way. Then run story reindex ., story wordcount . --write, and story check ..

The other publishing metadata (isbn, publisher, publication-date, description, keywords, subjects, copyright, cover-alt, ai-disclosure) 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 takes its story id from the folder name: a Cyrillic or Greek title is transliterated for the default folder (Война и мир goes in voyna-i-mir), and a title in a script with no transliteration table, such as Chinese, needs --dir with an ASCII folder name. The id is recomputed from the title on every run, so it changes whenever the title does: after editing title in story.md, run story reindex . to rewrite the id in every registry, plot/timeline.md, and continuity/state.md, or story validate fails with story must be <new-id>. For a folder-name id, a new title that gains any ASCII letter or digit (Война и мир — том 2) takes over the id (2), so prefer titles without them or reindex afterwards. 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.

init also writes a .gitignore listing dist/ (build output), .story.lock, leftover .*.story-*.tmp and .story-*.tmp files, and OS and editor swap files, but only when the project has none. It never edits an existing .gitignore; if it prints note: .gitignore was kept and does not ignore dist/, tell the user and offer to add a dist/ line (or remove a !dist/... negation).

If story is not installed, use the bundled fallback node ../story-maintenance/scripts/story.js with the same arguments. Use node <checkout>/bin/story.js instead only when the user names a Story Skills repository checkout or you are working in one. Write the script as an absolute path (resolve the fallback relative to this skill folder) and run it from the folder you would run story from, so . and other relative paths keep their meaning. Use Node, not Bun or a package script: Bun would load that folder's bunfig.toml (which can run code) and .env, and a package script runs from the checkout's root. Skills live in different places for each agent and install method, so do not guess a path: resolve ../story-maintenance/scripts/story.js against the folder that holds this SKILL.md. With <skills> standing for the absolute path of the folder that holds this skill's folder, run the same init from the folder that will hold the new project, with each value quoted as above:

Show full SKILL.md (528 more words)Show less
shell
node <skills>/story-maintenance/scripts/story.js 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}'

If neither story nor the bundled fallback can run (Node is missing, or the story-maintenance skill is not installed), create the files by hand from references/manual-setup.md, then continue with step 2.

  1. Draft a working premise:

story init writes neither premise nor counter-premise, so add or fill in both in the story.md frontmatter by hand (a manual setup already wrote their keys, so never add a second pair), as quoted strings (premise: "..."), and reuse a premise-workshop premise if there is one. 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. 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
  2. When CLI access is available, run the maintenance commands from inside the new project folder ({story-title-kebab}/, or the folder given to --dir). They matter most after creating the registries by hand:

shell
story reindex .
story wordcount . --write
story check .

If story is not installed, use the bundled fallback node ../story-maintenance/scripts/story.js with the same arguments. Use node <checkout>/bin/story.js instead only when the user names a Story Skills repository checkout or you are working in one. Write the script as an absolute path (resolve the fallback relative to this skill folder) and run it from the folder you would run story from, so . and other relative paths keep their meaning. Use Node, not Bun or a package script: Bun would load that folder's bunfig.toml (which can run code) and .env, and a package script runs from the checkout's root.

Reference Files

  • references/title-logline.md - Title craft (comps, hook phrasing, title as promise) and the logline recipe
  • references/manual-setup.md - The folder layout, story.md bible, and empty registries to write by hand when no Story CLI can run

Shared Conventions

Every story skill follows the shared conventions in ../story-maintenance/references/conventions.md, resolved relative to this skill folder. Read it before creating, renaming, or linking story files. If that file is missing because this skill was installed without story-maintenance, the essentials are: kebab-case ids and filenames, YAML frontmatter on every story-project file, _index.md registry tables that story reindex rebuilds (never edit them by hand), bidirectional links between entities, characters for who is on the page and mentions for who is only referred to, status: deceased plus died-in: chapter-{NN} for deaths, and no project-local generator or build scripts (run only the installed or bundled Story CLI).

© danjdewhurst, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in skills/story-init of danjdewhurst/story-skills.

  • SKILL.md
  • references/manual-setup.md
  • references/title-logline.md

Open the folder on GitHubat commit c46163b

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in danjdewhurst/story-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Story Init next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Story Init compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Story Init this skilldanjdewhurst/story-skills2831 repos~3.1kAutomated safety check: NotesMIT
Story Multi-Perspective Reviewzenstory-ai/oh-story-claudecode7.4k3 repos~3kAutomated safety check: PassMIT
Short Web Fiction Trend Scanzenstory-ai/oh-story-claudecode7.4k2 repos~1.2kAutomated safety check: PassMIT
InkOS Creative HarnessNarcooo/inkos10k1 repos~1.1kAutomated safety check: PassAGPL-3.0
Novel Arteternityspring/shuohao-skills4.3k—~1.1kAutomated safety check: NotesApache-2.0
SepiaNanako0129/sepia3k—~3.6kAutomated safety check: PassMIT

Similar skills

  • Story Multi-Perspective Review

    zenstory-ai/oh-story-claudecode

    Reviews Chinese web-novel text with several reviewer agents in parallel, falling back to a single-agent pass, and reports structure, character, prose and setting problems with fixes.

    7.4k GitHub starsUsed in 3 repos~3k tokens
    Writing & ContentAuto-check passed
  • Short Web Fiction Trend Scan

    zenstory-ai/oh-story-claudecode

    Scans popular short web-fiction rankings on Chinese platforms such as Dianzhong and Heiyan to surface trending emotional hooks, themes and topic candidates with an expiry warning.

    7.4k GitHub starsUsed in 2 repos~1.2k tokens
    Writing & ContentAuto-check passed
  • Drives long-form fiction, scripts, storyboards, interactive films and long-document translation through InkOS, with every change made by a typed action.

    10k GitHub starsUsed in 1 repo~1.1k tokens
    Writing & ContentAuto-check passed
  • Novel Art

    eternityspring/shuohao-skills

    给 AI 短剧出美术设定集(场景 + 叙事道具):场景的设计意图、一致性锚点、光照时段变体、 空景提示词;道具的戏剧功能、状态变体、尺度参照、白底无手提示词。

    4.3k GitHub stars~1.1k tokensUpdated yesterday
    Writing & ContentAuto-check: notes
  • Sepia

    Nanako0129/sepia

    Make AI-generated writing read as human-written, in fiction and in professional prose.

    3k GitHub stars~3.6k tokensUpdated 3 days ago
    Writing & ContentAuto-check passed
  • Story Toolbox Router

    zenstory-ai/oh-story-claudecode

    Routes a Chinese web-novel writing request to the matching tool in a 13-skill toolbox, covers author habit memory, and can launch a local dashboard for browsing a project.

    7.4k GitHub stars~1.7k tokensUpdated 6 days ago
    Writing & ContentAuto-check passed

More from danjdewhurst/story-skills

All 24 skills in this repo
  • Story Maintenance

    danjdewhurst/story-skills

    This skill should be used when the user asks to "validate", "reindex", "repair registries", "check links", "run the continuity, pacing, clue, voice, or name checks", "count words", "summarize a…

    283 GitHub starsUsed in 1 repo~5.4k tokens
    Auto-check: notes
  • Adaptation

    danjdewhurst/story-skills

    This skill should be used when the user asks to "make an audiobook", "narration script", "narrator", "ACX", "Findaway", "pronunciation guide", "how long is the audiobook", "adapt to a screenplay"…

    283 GitHub starsUsed in 1 repo~3.5k tokens
    Auto-check: notes
  • Chapter Writing

    danjdewhurst/story-skills

    This skill should be used when the user asks to "write a chapter", "next chapter", "chapter outline", "draft chapter", "continue the story", "write a scene", "outline a chapter", or wants to write…

    283 GitHub starsUsed in 1 repo~4.8k tokens
    Auto-check: notes
  • Character Management

    danjdewhurst/story-skills

    This skill should be used when the user asks to "create a character", "update a character", "add a character", "build a family tree", "character relationships", "character timeline", "character…

    283 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check: notes
  • Discovery Drafting

    danjdewhurst/story-skills

    This skill should be used when the user asks about "pantsing", "discovery write", "write without an outline", "discovery draft", "write into the dark", "story kernel", "reconcile a chapter", "dead…

    283 GitHub starsUsed in 1 repo~2k tokens
    Auto-check: notes
  • Editorial Review

    danjdewhurst/story-skills

    This skill should be used when the user asks for a "sensitivity reader", "authenticity reader", "cultural review", "is this portrayal okay", "real people in my novel", "defamation", "can I use song…

    283 GitHub starsUsed in 1 repo~3.6k tokens
    Auto-check: notes

Questions about Story Init

What does Story Init do?

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…. Story Init is an agent skill from danjdewhurst/story-skills. 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.

When should I use Story Init?

Story Init fits situations like: asks to start a new story; initialize a story project; wants to begin a new fiction writing project from scratch.

How do I install Story Init in Claude Code?

Run `npx skills add danjdewhurst/story-skills --skill story-init -a claude-code`. Or copy the skill folder (skills/story-init in danjdewhurst/story-skills) into .claude/skills/story-init in your project. Claude Code loads it when a task matches its description.

How do I install Story Init in Codex?

Run `npx skills add danjdewhurst/story-skills --skill story-init -a codex`. Or copy the skill folder (skills/story-init in danjdewhurst/story-skills) into .agents/skills/story-init in your project. Codex loads it when a task matches its description.

Can I use Story Init in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add danjdewhurst/story-skills --skill story-init -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/story-init, .gemini/skills/story-init, .github/skills/story-init and .opencode/skills/story-init in your project.

What does Story Init need to run?

Going by SKILL.md and its folder, Story Init needs the command-line tools its instructions call (node).

Does Story Init access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Story Init safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Story Init use?

Story Init is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Story Init use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.

What are the alternatives to Story Init?

Skills that share tags, products or a category with Story Init: Story Multi-Perspective Review (zenstory-ai/oh-story-claudecode, 7.4k stars), Short Web Fiction Trend Scan (zenstory-ai/oh-story-claudecode, 7.4k stars), InkOS Creative Harness (Narcooo/inkos, 10k stars) and Novel Art (eternityspring/shuohao-skills, 4.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Story Init?

danjdewhurst (a GitHub user) maintains it in danjdewhurst/story-skills, which has 283 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 8, 2026.

Source: danjdewhurst/story-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.