StoryForge ships with 45 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"
Step 6 β Series-aware recurring-character copy (#196): When the new book is part of a series AND a prior book exists, the skill offers to auto-copy all recurring character files from the previous volume. Argument: --copy-recurring-from={prev-book-slug} (or auto-detected via series_number). Filters by tracker recurs_in β only characters that recur in the new volume are copied. 1:1 file copy, no frontmatter mutation (the actual snapshot synthesis is handled later by /storyforge:bootstrap-book-from-series).
/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:
{content_root}/ideas/{slug}.md (e.g. ~/projekte/book-projects/ideas/) β per-file Markdown with YAML frontmatterraw β explored β developed β ready/storyforge:new-bookNote: ~/.storyforge/cache/state.json is just an indexer cache, not the storage location for ideas. The source of truth is always the Markdown file under {content_root}/ideas/.
Example 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 (incl. empty ## Writing Discoveries section) + 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) via update_author(slug, field, value) for fields like tone, sentence_style, frontmattervocabulary.md (preferred words, phrases) β direct Write to ~/.storyforge/authors/{slug}/vocabulary.md~/.storyforge/authors/{slug}/studied-works/{title}.mdwrite_author_discovery(author_slug, section="style_principles", text=..., book_slug=...)write_author_banned_phrase(author_slug, phrase, reason=...)Typical call:
/storyforge:study-author ~/my-previous-novel.epub maja-sundberg
/storyforge:harvest-author-rules| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | <book-slug> [author-slug] |
| Prerequisite | Book in Revision status or later, ideally after manuscript-checker |
Purpose: Promote findings from a finished book into the author profile. Classifies each entry from the book's CLAUDE.md ## Rules as banned_phrase, style_principle, or world_rule and dedupes against the existing author profile + vocabulary.
Workflow:
harvest_book_rules(book_slug, author_slug?) β classifies + dedupesbanned_phrase β vocabulary.md ### Absolutely Forbidden (or matching section)style_principle β profile.md ## Writing Discoveries / Style Principlesworld_rule β stays in book CLAUDE.md_(emerged from {book}, YYYY-MM)_. Recurrence in a later book appends a second origin tag β no duplicate.mode=remove removes the rule, mode=annotate leaves it with a tag).Triggers:
manuscript-checker and chapter-reviewer, when cross-book-relevant findings have been collectedConcept background: See reference/author-evolution.md in the plugin repo. 3-tier hierarchy book β author β global.
/storyforge:voice-checker| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [chapter-slug] |
Purpose: Optional holistic AI-authenticity score (0β100) across 7 dimensions. Compares against author profile (incl. ## Writing Discoveries). Not a required step in the standard workflow β for targeted AI-tell removal use /storyforge:chapter-humanizer instead.
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 overviewThe character frontmatter supports two optional blocks consumed by quality gates:
tactical: β for action-relevant characters. Read by the verify_tactical_setup MCP tool to check combat/travel scenes for walking-order plausibility before drafting:
tactical:
protector_role: true # actively protects others
protected_role: false # needs protection in combat
combat_skill: high # none|low|medium|high|elite|unknown
movement_lead: true # tends to take point
movement_rear: false # tends to bring up the rear
vulnerable_to: [daylight]
carries: [knife, backup_blade]
knowledge: β for POV characters. Read by the POV boundary checker hook to flag narration that attributes domain expertise the character does not have:
knowledge:
expert: [it, programming, networking]
competent: [photography]
layperson: [psychology, history]
none: [forensics, ballistics, medicine, tactical_combat, automotive_repair]
Both blocks are optional. Missing blocks lead to graceful degrade (info-severity warning for tactical, scan-skipped for knowledge). Not every character needs both β tactical: only for combat/travel-relevant characters, knowledge: only for POV characters.
Example (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
tactical:
protector_role: false
protected_role: false
combat_skill: low
vulnerable_to: []
carries: []
knowledge:
expert: [marine_biology, oceanography]
competent: [photography, sailing]
layperson: [psychology]
none: [forensics, tactical_combat, ballistics]
---
## 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:
Step 4b β Tactical sanity check: For combat or travel scenes (keywords walk, hike, drive, attack, mission, enter the building, approach with multiple characters), the skill calls verify_tactical_setup(book_slug, scene_outline_text, characters_present) before saving the recipe. Walking-order issues are addressed in the plan, not papered over in the draft.
/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 before the first word (brief architecture):
One MCP tool bundles 14 data sources into a single structured JSON brief. Remaining 9 mandatory loads:
get_chapter_writing_brief(book_slug, chapter_slug)) β Why: Bundles 14 data sources into one JSON: chapter meta, pov_character, story_anchor, recent_chapter_timelines, recent_chapter_endings, characters_present (with knowledge + tactical), pov_character_inventory (deterministically extracted POV character inventory with source pointers; extraction_method β {frontmatter, timeline_regex, draft_heuristic, none}; non-empty warnings β ask the user, do not invent), pov_character_state (4 physical categories: clothing, injuries, altered_states, environmental_limiters; each extracted independently; outline-aware warnings; consumed by Pre-Scene Logic Audit), rules_to_honor, callbacks_in_register, banned_phrases, recent_simile_count_per_chapter, tone_litmus_questions, tactical_constraints (auto-active on combat/travel), review_handle. Defensive composition: every sub-component wrapped in try/except, individual failures captured as {component, error} in errors, brief still ships with partial data.get_author()) β Why: Drives EVERYTHING β tone, vocabulary, rhythm, voice. Now also loads ## Writing Discoveries (Recurring Tics / Style Principles / Don'ts) β promoted findings from prior books. Outside book scope, hence separate load.get_book_full()) β Why: Genres, plot context, the frame the chapter must fit.get_genre()) β Why: Reader-expected conventions; violations need to be deliberate.get_craft_reference()):
chapter-construction β Hooks, scene-sequel, endingsdialog-craft β Subtext, beats, voice differentiationshow-dont-tell β Techniques and five sensespacing-guide β Scene vs. summaryanti-ai-patterns β Negative-space catalogprose-style β Sentence-level craftsimile-discipline β Two-question test for the pre-save scanplot-logic β Plot-hole patterns for pre-write awareness (causality_inversion, chekhov_gun, information_leak, motivation_break, premise_violation, pov_knowledge_boundary)world/setting.md) β Why: Travel Matrix and location facts. Mandatory when chapter involves travel.plot/timeline.md) β Why: Canonical day/date calendar (the brief's recent_chapter_timelines covers intra-day grids; timeline.md covers the macro arc).plot/canon-log.md) β Why: Established facts, including CHANGED revisions.Writing modes (user picks):
Pre-Scene Logic Audit (Step A1b / Step 2c) β MANDATORY before each scene / chapter: The skill emits a structured audit block to the chat before each scene (Mode A: Step A1b) or once per chapter (Mode B: Step 2c) β the structural counter to context-pressure invention. Five mandatory categories, each with source citation:
pov_character_inventory. If extraction_method: "none" or warnings is non-empty β ask the user, do not invent.world/setting.md (travel matrix), plot/timeline.md, recent_chapter_timelines.characters/{slug}.md, brief's canon_brief.banned_phrases and the author profile's recurring_tics / donts. Replan tic violations before any prose is written.pov_character_state (clothing, injuries, altered_states, environmental_limiters). If extraction_methods[cat] == "none" and the beat depends on that category β ask the user.Every gap is surfaced explicitly to the user β never papered over silently.
Step A2 β Tactical pre-write check: For combat/travel scenes (keyword detection via is_tactical_scene), Step A2 calls verify_tactical_setup and resolves warn-severity findings BEFORE prose is appended. Walking-order issues are not papered over in prose.
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. Read-First Rule (GH#27): When {review_handle}: is signaled, ALWAYS load the full draft.md via the Read tool β do not trust the file-change diff which truncates for long files.
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)## Promises section in chapters/{chapter}/README.md via register_chapter_promises(). Setup elements (Chekhov guns, mysteries, registered callbacks) are persisted for analyze_plot_logic scans.current_inventory, current_clothing, current_injuries, altered_states, environmental_limiters), waits for confirmation, and persists via MCP update_character_snapshot(book_slug, pov_slug, snapshot_json, book_category). Keeps pov_character_inventory and pov_character_state in the brief at frontmatter level (highest extraction priority) for subsequent chapters.Mode A session behavior (fixes #228, #230):
chapters/{chapter}/README.md under ## Scene Plan. On session restart the saved plan is loaded automatically β no reconstruction needed.author_writing_mode is plantser or discovery and no saved plan exists, the skill asks whether to run /storyforge:rolling-planner first./storyforge:chapter-reviewer| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> <chapter-slug> |
Purpose: 28-point quality check per chapter, including plot-logic.
Data brief: get_review_brief(book_slug, chapter_slug) assembles project-state metadata (chapter timeline, canonical timeline, travel matrix, canon log facts, tonal rules, active book rules, active callbacks) into one structured JSON β replacing 6+ direct file reads. Chapter draft texts are read separately as the content under review (ADR-0001: data-briefs-over-prompt-instructions).
Check categories:
### Phrase Echo Report with quote + location + fix suggestion (pronoun / synonym / reword).analyze_plot_logic(book_slug, chapter_slug) and surfaces findings for 5 additional categories:
causality_inversion β Cause-after-effect pattern via story-day map (deterministic).chekhov_gun β Registered promises with no payoff up to the end of the drafted manuscript (deterministic). Skipped on book_category: memoir.information_leak β POV character knows things not yet established per canon log (LLM pass with knowledge_index).motivation_break β Character action breaks with established arc state (LLM pass with character arcs).pov_knowledge_boundary β Like sub-point 20a but semantic (domain knowledge not declared in the knowledge: block) β LLM pass.First-chapter gate (additional 13 points): Chapter 1 has stricter criteria. Details: Quality System
/storyforge:chapter-humanizer| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> <chapter-slug> |
Purpose: Surgical AI-construction scanner. Identifies and interactively fixes AI-tell patterns that survive the chapter-reviewer pass. Two-pass approach:
Interact format: For each hit: apply N / skip N / N: shorter β proposed replacements written in the author's voice.
Workflow position: chapter-reviewer β chapter-humanizer β chapter-proofreader
Detailed description: Quality System
/storyforge:chapter-proofreader| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | <book-slug> <chapter-slug> |
Purpose: Language-correctness check (spelling, grammar, punctuation) after chapter-humanizer β before the manuscript passes through manuscript-checker's cross-chapter analysis. Works for both fiction and memoir.
Workflow position: chapter-reviewer β chapter-humanizer β chapter-proofreader β manuscript-checker
Language detection:
| Priority | Field | Source |
|---|---|---|
| 1 | book_language |
Book frontmatter (authoritative) |
| 2 | preferred_writing_language |
Author profile (fallback) |
| 3 | "en" |
Global fallback |
Explanation language: native_language from the author profile β explanations appear in German, French, Spanish, etc. depending on the author's mother tongue. Native speakers receive only the fix, no explanation.
Check categories:
writing_language β native_language): article misuse, preposition errors, false friends, calque constructionsWhat is NOT checked: Craft issues (chapter-reviewer's job), cross-chapter repetitions (manuscript-checker's job), intentional stylistic choices from the author profile (avoid list).
Verdicts: CLEAN | ISSUES FOUND
/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.
Uses MCP get_continuity_brief(book_slug) to load canonical calendar, travel matrix, canon log facts, character index, and ALL chapter timeline grids in one structured JSON call β instead of ad-hoc re-parsing of individual project files.
/storyforge:manuscript-checker| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [--interactive] |
Purpose: Full-manuscript gate before revision. Detection across 16 categories:
plot_hole, new in Sprint 2 β sorted before cliche) β aggregates all 6 categories from analyze_plot_logic: causality_inversion, chekhov_gun (skipped on memoir), information_leak, motivation_break, premise_violation (skipped on memoir), pov_knowledge_boundarycallback_dropped, callback_deferred)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/
Step 5 β Tracker-slug vs. book-slug mismatch (#194): When a tracker entry's slug deviates from the book-level character file slug (tracker king-caelan vs. book file caelan.md), the skill instructs the author to add a book_slug: field to the character frontmatter so cross-references resolve cleanly:
---
name: "King Caelan"
slug: "king-caelan"
book_slug: "caelan" # NEW β only when tracker slug β book slug
---
Zero-config when slugs match (kael β kael.md). The field is read by harvest-character-evolution and bootstrap-book-from-series to map tracker entries to character files.
/storyforge:harvest-character-evolution| Property | Value |
|---|---|
| Model | claude-sonnet-4-6 |
| Argument | [book-slug] (optional β falls back to active session) |
| Prerequisite | Book status Final / Export Ready / Published AND book is part of a series |
Purpose: End-of-book harvester for series-recurring characters. Walks every recurring tracker entry, reads the book-level end-state of the character, proposes a B{N} Ende summary, and writes confirmed entries to the tracker after a per-character diff prompt. The structural counterpart to harvest-author-rules β but at the series-character layer instead of the rules layer.
Reads (per character):
current_inventory, current_clothing, current_injuries, altered_states, environmental_limiters, as_of_chapter## Relationships section### B{N} Ende slot (if any) for diff displayWrites:
### B{N} Ende slot (per character, on user accept)## Updates Log entry with timestamp + book-slugWorkflow:
recurs_in containing the current bookSafety net: No silent overwrites. Every character requires explicit user confirmation. Tracker entries that already have a populated B{N} Ende slot are surfaced as diff so the author sees what is changing.
Workflow position: After /storyforge:harvest-author-rules, before /storyforge:new-book for the next volume in the series.
Triggers:
Final / Export Ready / PublishedIssue reference: D-1 of Epic #195.
/storyforge:bootstrap-book-from-series| Property | Value |
|---|---|
| Model | claude-sonnet-4-6 |
| Argument | <prev-book-slug> <new-book-slug> (positional, both required) |
| Prerequisite | Both books exist; tracker has B{prev} Ende for prev book; new book has recurring character files (typically copied via /storyforge:new-book --copy-recurring-from=) |
Purpose: Character-state migration for sequel volumes. Reads the tracker's B{prev} Ende and B{new} (geplant) entries, synthesizes a starting snapshot per character, and walks character-by-character with author confirmation. Adds a series_evolution_imported_from: B{prev} marker to every bootstrapped file so later passes know the seed origin.
Important: This skill does NOT create a new book. The new book must already exist (created via /storyforge:new-book --copy-recurring-from=). This skill handles character-state synthesis from the prior volume only.
Reads (per character):
### B{prev} Ende (end-state of prior volume)### B{new} (geplant) (planned starting state for new volume β author intentions)Writes:
current_inventory, current_clothing, current_injuries, altered_states, environmental_limiters, as_of_chapter: 0)series_evolution_imported_from: B{prev}## Updates Log entry with timestamp + new book slugWorkflow:
new-book/characters/ with a tracker entry β synthesize starting snapshot from B{prev} Ende + B{new} (geplant)Workflow position: After /storyforge:new-book (with --copy-recurring-from=) and after /storyforge:harvest-character-evolution on the previous book β before drafting begins.
Triggers:
new-book auto-copy (#196), before chapter drafts start in the new volumeIssue reference: D-2 of Epic #195.
/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:report-issue| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | [book-slug] ["phrase or pattern"] |
Purpose: Converts a recurring prose problem into an enforceable rule at book, author, or global scope. Conversational β asks clarifying questions before writing anything.
Invoke when:
Output:
append_book_rule(book_slug, phrase, reason, severity, source_context) β writes a new backtick rule to book CLAUDE.md ## Ruleswrite_author_banned_phrase(author_slug, phrase, reason) β writes to the author profile's vocabulary.mdreference/craft/anti-ai-patterns.mdScope options: book β author β global (use /storyforge:promote-rule to escalate)
/storyforge:promote-rule| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | [book-slug] ["phrase"] [--to author\|global] |
Purpose: Moves a banned-phrase rule from a lower scope to a higher scope. Supported promotions: book β author, author β global, book β global.
Invoke when:
/storyforge:report-issue completed and user requests escalationExample:
/storyforge:promote-rule the-lighthouse-keeper "pulsed with energy" --to author
Moves the rule from the-lighthouse-keeper/CLAUDE.md to ~/.storyforge/authors/maja-sundberg/vocabulary.md.
/storyforge:rules-audit| Property | Value |
|---|---|
| Model | Sonnet |
| Argument | [book-slug] (optional) |
Purpose: Interactive audit of the rules in a book CLAUDE.md. Walks every rule the manuscript-checker would silently ignore β italic-wrapped examples with ban cue, mixed quotes, dead patterns, bracket placeholders β and offers four options per finding: suggested rewrite, manual edit, mark as narrative, or skip.
Triggers:
rules audit, rules check, rules cleanup, audit my rulesWorkflow:
list_book_rules + lint_book_rulesupdate_book_rule(validate=True) with re-lint after every writeImportant: No blind rewrites. Every change goes through user confirmation. Lint findings are advisory; the user owns the rule semantics.
/storyforge:backfill-promises| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> |
| Prerequisite | Book has chapter drafts in status Draft or higher |
Purpose: One-shot LLM bridge for books drafted before Sprint 2 that have no ## Promises section in their chapter READMEs. Walks every chapter, extracts setup elements (Chekhov guns, mysteries, registered callbacks) via an LLM pass, and writes them to the chapter README.md via register_chapter_promises().
Triggers:
/storyforge:backfill-promiseschekhov_gun detection in analyze_plot_logic to workWorkflow:
Draft or higher## Promises block to the chapter README.md via register_chapter_promises()After the run: analyze_plot_logic can produce chekhov_gun findings for the book. Single source of truth remains the canon log; promises are an additional index on top, not a second store for character knowledge.
/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.
These skills only activate on memoir books (book_category: memoir). They refuse to run on fiction projects.
/storyforge:plot-architect-memoir| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> |
| Prerequisite | book_category: memoir |
Purpose: Memoir variant of plot-architect. Selects one of four structure types and shapes the chapter spine accordingly. Loads memoir-specific craft references (scene-vs-summary, emotional-truth, memoir-anti-ai-patterns) β no fiction structure catalog (3-Act, Hero's Journey, Snowflake, etc.).
On fiction books: Refuses to run and redirects to /storyforge:plot-architect.
4 memoir structure types:
Output:
plot/outline.md with structure type + chapter spineplot/arcs.md with person arcs (memoir: real people, not fictional characters)When to invoke:
/storyforge:book-conceptualizer (memoir mode)book_category: memoir/storyforge:memoir-ethics-checker| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> |
| Prerequisite | book_category: memoir, person profiles in people/ |
Purpose: Consent gate and defamation-risk scanner for memoir books.
Two-part check:
people/, checks consent_status. Verdict: PASS / WARN / FAIL per person.Verdict: EXPORT CLEAR / RESOLVE BEFORE EXPORT / EXPORT BLOCKED
Invoke when: User says "ethics check", "consent check" β or before any memoir export (also called automatically by export-engineer).
/storyforge:emotional-truth-prompt| Property | Value |
|---|---|
| Model | Opus |
| Argument | <book-slug> [chapter-slug] |
| Prerequisite | book_category: memoir, chapter draft exists |
Purpose: Interactive felt-sense interrogation for memoir chapter drafts. Finds where the draft drifts toward plausible-feeling abstraction and asks targeted questions only the author can answer from lived experience.
Key rule: Outputs questions and revision directions β never prose rewrites.
7 interrogation dimensions: ET1 Implicit Feeling Β· ET2 Retrospective Vantage Drift Β· ET3 Memory Contradiction Β· ET4 Avoidance Hedge Β· ET5 Thoroughness Trap Β· ET6 Scene/Summary Mode Error Β· ET7 "I Was Wrong" Rendering
Verdict: PASS β proceed to chapter-reviewer | DEEPEN β address gaps first | REWRITE β structural rework needed
Invoke when: User says "emotional truth", "deepen scene", "felt sense" β after chapter draft, before /storyforge:chapter-reviewer.
| 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 | harvest-author-rules | Sonnet | <book-slug> [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 | chapter-humanizer | Opus | <book-slug> <chapter-slug> |
| Writing | chapter-proofreader | Sonnet | <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> |
| Series | harvest-character-evolution | Sonnet 4.6 | [book-slug] |
| Series | bootstrap-book-from-series | Sonnet 4.6 | <prev-book-slug> <new-book-slug> |
| Utility | genre-creator | Opus | <genre-name> |
| Utility | unblock | Opus | β |
| Utility | report-issue | Sonnet | [book-slug] ["phrase"] |
| Utility | promote-rule | Sonnet | [book-slug] ["phrase"] [--to author\|global] |
| Utility | rules-audit | Sonnet | [book-slug] |
| Utility | backfill-promises | Opus | <book-slug> |
| Utility | register-callback | Haiku | <Rule\|Workflow\|Callback>: <text> |
| Utility | help | Haiku | β |
| Utility | setup | Sonnet | β |
| Utility | configure | Sonnet | β |
| Memoir | plot-architect-memoir | Opus | <book-slug> |
| Memoir | memoir-ethics-checker | Opus | <book-slug> |
| Memoir | emotional-truth-prompt | Opus | <book-slug> [chapter-slug] |