StoryForge ships with 33 skills invoked via the Claude Code syntax /storyforge:<skill-name>. Each skill is specialized for a specific task area and uses an appropriate Claude model:
| Demand | Model | Examples |
|---|---|---|
| Prose, creative decisions | Opus | chapter-writer, character-creator, plot-architect |
| State management, formatting | Sonnet | session-start, export-engineer, configure |
| Classification, short lists | Haiku | ideas, register-callback, help |
/storyforge:new-book| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | [title] (optional) |
| Prerequisite | Author profile exists |
Purpose: Creates a new book project. Asks for title, type (novel/novella/...), genre(s), author, primary language and creates the complete directory structure.
Output:
{content_root}/projects/{slug}/ with all skeleton filesREADME.md with YAML frontmattersynopsis.md, plot/*, characters/INDEX.md, world/*, CLAUDE.mdWhen to invoke:
/storyforge:brainstorm with "promoted" ideaRouting trigger in CLAUDE.md: Immediately when user says "New book"
/storyforge:session-start| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | none |
Purpose: Initializes a new session. Checks setup (venv, config, author profiles). Rebuilds state cache from Markdown. Shows last session info (last book, phase).
When to invoke:
list_books appears empty despite existing projects/storyforge:resume| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | <book-slug> |
Purpose: Resume work on a book. Loads metadata, status, last session context and recommends the next sensible skill.
Output:
/storyforge:next-step| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | none (uses session context) |
Purpose: Analyzes the current book status and recommends the next logical step based on writing mode (Outliner/Plantser/Discovery).
Example output:
Book: "The Lighthouse Keeper"
Status: Plot Outlined
Writing Mode: outliner
Finished characters: 2 / 6 planned
→ Recommendation: /storyforge:character-creator the-lighthouse-keeper
Define remaining 4 characters using character-arcs template.
/storyforge:book-dashboard| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | [book-slug] (optional) |
Purpose: Compact progress dashboard for one book or all books.
Shows:
Example without argument: Lists all books in tabular form.
/storyforge:brainstorm| Property | Value |
|---|---|
| Model | Opus |
| Argument | none (interactive) |
Purpose: Exploratory idea development before a book is created. Goes through 5 phases: Seed, Exploration, What-If, Genre Check, Feasibility.
Output:
~/.storyforge/cache/ideas/{slug}.mdraw → explored → developed → ready/storyforge:new-bookExample prompt: "I have an idea about an old lighthouse keeper. Help me develop it."
/storyforge:ideas| Property | Value |
|---|---|
| Model | Haiku |
| Argument | [status] [genre] (filter) |
Purpose: Lists saved ideas. Filter by status (raw, ready, ...) or genre.
Example:
/storyforge:ideas ready
/storyforge:ideas developed mystery
/storyforge:create-author| Property | Value |
|---|---|
| Model | Opus |
| Argument | <author-name> |
Purpose: Creates a new author profile. Interactive. Asks for:
Output: ~/.storyforge/authors/{slug}/profile.md + vocabulary.md
/storyforge:study-author| Property | Value |
|---|---|
| Model | Opus |
| Argument | <file-path> [author-slug] |
Purpose: Extracts style DNA from past works. Supports PDF, EPUB, DOCX. Analyzes:
Output:
profile.md (style parameters)vocabulary.md (preferred words, phrases)~/.storyforge/authors/{slug}/studied-works/{title}.mdTypical call:
/storyforge:study-author ~/my-previous-novel.epub maja-sundberg
/storyforge:voice-checker| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [chapter-slug] |
Purpose: Scans prose for AI-tells across 7 dimensions. Compares against author profile.
Detailed description: Quality System
/storyforge:book-conceptualizer| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> |
Purpose: Develops the book concept in 5 phases:
Output:
synopsis.md with back-cover copy + long synopsisREADME.md (theme, tone, premise in frontmatter)plot/tone.md (tonal guard rails)Discovery Writer variant: Reduced to premise + protagonist + core tension — no theme/tone deep-dive if author picked discovery mode.
/storyforge:plot-architect| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> |
Purpose: Structures the plot using one of 8 methods:
Snowflake Method (highlight):
10-step process from one-sentence summary to complete scene catalog:
1. One-sentence summary of the novel
2. Five-sentence plot paragraph
3. Character synopses (1 page per main character)
4. Expand 5 sentences into 1-page plot synopsis
5. Character bibles (4 pages per main character)
6. Expand to 4-page plot synopsis
7. Character charts (visualization)
8. Complete scene list
9. Narrative draft of every scene
10. First writing draft
Output:
plot/outline.md with acts and beatsplot/arcs.md with character arc overviewchapters/{NN-slug}/README.mdPlantser variant: Only 6 key beats (MVO — Minimum Viable Outline). Chapter details come later via rolling planner.
/storyforge:character-creator| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [character-name] |
Purpose: Creates 3D characters in 14 psychology steps:
Output:
characters/{char-slug}.md with YAML frontmattercharacters/INDEX.mdplot/arcs.md with arc overviewExample (fictional character "Inga Holm"):
---
name: Inga Holm
slug: inga-holm
role: deuteragonist
age: 34
profession: Marine biologist
status: Arc Defined
arc_type: Positive Change
fatal_flaw: distrusts anyone older than 50
---
## GMC
- Want: Finish a scientific study
- Motivation: Prove her academic theory is right
- Conflict: Arne knows the sea better but she does not want a mentor
## Ghost
Father (fisherman) died when she was 8. Of all nights, the one
when he promised to be back after supper.
## Lie
"Anyone older betrays you sooner or later."
## Truth
"Closeness to old people is not betrayal — it is risking love."
/storyforge:world-builder| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> |
Purpose: Builds the book's world. Adapts to genre:
Mandatory component: Travel Matrix
For ALL books (not just fantasy) — table with travel times between all locations:
# Travel Matrix — Kargholm (fictional North Sea island)
| From → To | Lighthouse | Harbor | Village | Parsonage | Cliff | Ferry-Mainland |
|-----------|------------|--------|---------|-----------|-------|----------------|
| Lighthouse | — | 25 min | 40 min | 45 min | 15 min | 2.5 h (incl. 1h ferry) |
| Harbor | 25 min | — | 15 min | 20 min | 35 min | 1.75 h |
| Village | 40 min | 15 min | — | 5 min | 30 min | 2 h |
| ... | | | | | | |
Assumptions: Walking speed 4 km/h, dry weather.
During storms: Lighthouse path impassable, 60 min detour.
Output:
world/setting.md (with travel matrix)world/rules.md (world rules / magic system)world/history.mdplot/canon-log.md populated/storyforge:rolling-planner| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | [book-slug] |
Purpose: Scene-by-scene planning for discovery writers and plantsers. Plans 3-5 scenes ahead with the Goal / Conflict / Consequence (GCC) recipe.
Scene recipe template:
Scene: "Arne finds the coin"
POV: Arne Kruse
Location: Lighthouse cellar
Time: Day 3, 23:40
Goal: Arne searches the old logbook crate.
Conflict: The cellar is flooded from high tide, crate underwater.
Consequence: He does not find the logbook — but an old silver coin
minted 1987, the year his brother disappeared.
→ New mystery. Drives chapter 5.
When to invoke:
/storyforge:chapter-writer| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> <chapter-number> |
Purpose: THE core creative skill. Writes a chapter in author voice.
Mandatory loads (16 context sources) before the first word:
get_author())~/.storyforge/authors/{slug}/vocabulary.md)get_book_full())chapters/{chapter}/README.md)chapters/{prev}/draft.md)get_genre())get_character())world/setting.md incl. travel matrix)plot/timeline.md)plot/canon-log.md)plot/tone.md)chapters/{prev}/README.md # Chapter Timeline)get_book_claudemd())get_review_handle_config())Writing modes (user picks):
Inline review handles:
During scene-by-scene mode, comments with the configured review handle can appear inline in the prose:
Arne climbed the stairs. The steps creaked in a rhythm he could have
played back blind after forty years.
Author: Too nostalgic for the opening. Arne is angry here, not sentimental.
Chapter-writer reads these blocks on the next pass and revises accordingly.
Post-write updates (mandatory):
plot/timeline.md (one row per story day)plot/canon-log.md (new facts + changed facts marked CHANGED)chapters/{chapter}/README.md → ## Chapter Timeline section (intra-day times)/storyforge:chapter-reviewer| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> <chapter-slug> |
Purpose: 28-point quality check per chapter.
Check categories:
First-chapter gate (additional 13 points): Chapter 1 has stricter criteria. Details: Quality System.
/storyforge:continuity-checker| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | <book-slug> |
Purpose: Validates the complete book against timeline and travel matrix.
Finds:
Reconstruction: When timeline/travel matrix are missing, the skill reconstructs them from all chapter drafts.
/storyforge:manuscript-checker| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [--interactive] |
Purpose: Full-manuscript gate before revision. Detection:
Interactive fix mode: Walks every finding and asks: keep / change / mark?
Detailed description: Quality System.
/storyforge:beta-feedback| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [--file path/to/feedback.md] |
Purpose: Triage curated ARC/beta reader feedback. Categorizes:
Output:
/storyforge:researcher| Property | Value |
|---|---|
| Model | Opus |
| Argument | <topic> [book-slug] |
Purpose: Structured research on a topic. Uses web access, evaluates sources, saves results.
Output:
{project}/research/notes/{topic-slug}.mdExample: /storyforge:researcher north-sea-lighthouse-history the-lighthouse-keeper
/storyforge:sensitivity-reader| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [chapter-slug] |
Purpose: Scan for problematic representations:
Important: Does not replace human sensitivity readers for critical topics (LGBTQ, trauma, race). It is supplementary.
/storyforge:export-engineer| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | <book-slug> [format] |
Purpose: Generates EPUB / PDF / MOBI via Pandoc (and optionally Calibre for MOBI).
Prerequisites:
Final or Polishedexport/front-matter.md): copyright, dedication, optional epigraphexport/back-matter.md): about the author, other bookscover/art/cover.jpgOutput: export/output/{book-slug}.epub (or pdf/mobi)
CSS customization: Own styles at export/custom.css possible.
/storyforge:promo-writer| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [platform] |
Purpose: Complete marketing campaign:
/storyforge:cover-artist| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> |
Purpose: Creates cover brief and image prompts. No direct image generation — delivers prompts for Midjourney, DALL-E, or human designers.
Output:
cover/brief.md — Mood, genre conventions, typography hintscover/prompts.md — Ready-to-use prompts for Midjourney/DALL-E/storyforge:translator| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> <target-language> |
Purpose: Translates the book into a target language with voice preservation.
Process:
translations/{lang}/glossary.md) with character names, places, technical termsExample: /storyforge:translator the-lighthouse-keeper de
/storyforge:series-planner| Property | Value |
|---|---|
| Model | Opus |
| Argument | <series-name> |
Purpose: Creates a series level over multiple books. Manages:
{series}/world/canon.md)Structure:
series/
├── README.md
├── world/
│ └── canon.md
├── characters-evolution.md
└── projects/
├── volume-1-slug/
├── volume-2-slug/
└── volume-3-slug/
/storyforge:genre-creator| Property | Value |
|---|---|
| Model | Opus |
| Argument | <genre-name> |
Purpose: Creates a new genre mix. Asks for base genres to combine, defines conventions, tropes, expected beats.
Output: {plugin_root}/genres/{name}/README.md
Detailed description: Genre System
/storyforge:unblock| Property | Value |
|---|---|
| Model | Opus |
| Argument | none (diagnostic) |
Purpose: Helps with writer's block. Diagnoses block type and delivers targeted exercises:
/storyforge:register-callback| Property | Value |
|---|---|
| Model | Haiku |
| Argument | <Rule\|Workflow\|Callback>: <text> |
Purpose: Explicitly write a callback/rule to the per-book CLAUDE.md. Alternative to the PreCompact hook automation.
Example:
/storyforge:register-callback Callback: The silver coin (ch 5) must return in ch 18
/storyforge:help| Property | Value |
|---|---|
| Model | Haiku |
| Argument | none |
Purpose: Shows all available skills with short descriptions.
/storyforge:setup| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | none |
Purpose: First-time setup. Creates venv, installs dependencies, copies config template.
/storyforge:configure| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | none (interactive) |
Purpose: Interactive config editing. Walks through config.yaml field by field.
| Category | Skill | Model | Arguments |
|---|---|---|---|
| Core | new-book | Sonnet | [title] |
| Core | session-start | Sonnet | — |
| Core | resume | Sonnet | <book-slug> |
| Core | next-step | Sonnet | — |
| Core | book-dashboard | Sonnet | [book-slug] |
| Core | brainstorm | Opus | — |
| Core | ideas | Haiku | [status] [genre] |
| Author | create-author | Opus | <author-name> |
| Author | study-author | Opus | <file-path> [author-slug] |
| Author | voice-checker | Opus | <book-slug> [chapter-slug] |
| Creative | book-conceptualizer | Opus | <book-slug> |
| Creative | plot-architect | Opus | <book-slug> |
| Creative | character-creator | Opus | <book-slug> [character-name] |
| Creative | world-builder | Opus | <book-slug> |
| Creative | rolling-planner | Sonnet | [book-slug] |
| Writing | chapter-writer | Opus | <book-slug> <chapter-number> |
| Writing | chapter-reviewer | Opus | <book-slug> <chapter-slug> |
| Writing | continuity-checker | Sonnet | <book-slug> |
| Writing | manuscript-checker | Opus | <book-slug> [--interactive] |
| Writing | beta-feedback | Opus | <book-slug> [--file path] |
| Research | researcher | Opus | <topic> [book-slug] |
| Research | sensitivity-reader | Opus | <book-slug> [chapter-slug] |
| Production | export-engineer | Sonnet | <book-slug> [format] |
| Production | promo-writer | Opus | <book-slug> [platform] |
| Production | cover-artist | Opus | <book-slug> |
| Production | translator | Opus | <book-slug> <target-language> |
| Series | series-planner | Opus | <series-name> |
| Utility | genre-creator | Opus | <genre-name> |
| Utility | unblock | Opus | — |
| Utility | register-callback | Haiku | <Rule\|Workflow\|Callback>: <text> |
| Utility | help | Haiku | — |
| Utility | setup | Sonnet | — |
| Utility | configure | Sonnet | — |