The author profile is the core of StoryForge. Without a profile, the plugin does not write. That is by design β an author profile is what keeps your text from sounding like generic AI output.
An author profile is not a marketing persona. It is a set of parameters that determine how prose is built at the sentence, paragraph, and dialog level. The quality of your book hangs directly on the quality of your author profile.
AI models have a "default style": mild elegance, abstract-poetic nouns, low-variance sentences, dialog beats instead of subtext. This default sounds the same everywhere β whether horror or romance. The voice-checker calls this "AI-tells".
Author profiles are the countermeasure:
When chapter-writer runs, it always loads the profile first. Every prompt context contains the profile parameters.
Author profiles live outside the plugin directory so they survive plugin updates:
~/.storyforge/authors/{slug}/
βββ profile.md # Main profile (YAML frontmatter + prose)
βββ vocabulary.md # Preferred/banned words, signature phrases
βββ studied-works/ # Analysis results from imported PDFs/EPUBs
β βββ my-novel-2023.md
β βββ short-story-collection.md
βββ examples/ # Manual sample texts (optional)
βββ voice-sample-1.md
---
name: "Maja Sundberg"
slug: "maja-sundberg"
created: "2026-04-24"
updated: "2026-04-24"
primary_genres: ["contemporary", "mystery", "literary-fiction"]
narrative_voice: "third-person-limited"
tense: "past"
tone: ["melancholic", "understated", "coastal"]
sentence_style: "varied-short-to-long"
vocabulary_level: "moderate-with-regional-terms"
dialog_style: "naturalistic-with-dialect-markers"
pacing: "slow-build-with-occasional-sharp-accelerations"
themes: ["memory", "loss", "the-sea-as-character"]
influences: ["Jon Fosse", "Siri Hustvedt", "Per Petterson"]
avoid:
- "purple-prose"
- "info-dumps"
- "deus-ex-machina"
- "therapist-speak"
- "epiphany-moments"
author_writing_mode: "outliner"
---
Required fields:
| Field | Values |
|---|---|
name |
Human name of author/persona |
slug |
URL-safe slug (filesystem name) |
narrative_voice |
first-person, third-person-limited, third-person-omniscient, second-person |
tense |
past, present, mixed |
author_writing_mode |
outliner, plantser, discovery |
Important optional fields:
tone β Array of descriptors (3-5 recommended)sentence_style β "varied", "short-terse", "long-flowing", "mixed"vocabulary_level β "sparse", "moderate", "rich", "dense"dialog_style β "naturalistic", "stylized", "minimal", "dialectal"pacing β "tension-driven", "meditative", "action-heavy", "slow-build"themes β Central thematic obsessionsinfluences β Literary role modelsavoid β What this author never doesAfter the frontmatter come structured prose sections:
## Writing Style
Maja writes with the economy of a poet and the rhythm of a song.
Her sentences alternate between 6-word fragments and 40-word arcs.
She never describes an emotion directly β she shows it through objects,
landscape, body posture.
## Narrative Approach
- **POV:** Third-person limited, strongly anchored in the POV character
- **Tense:** Past, except in memories β then italic present-tense inserts
- **Sentence style:** Variant. Short staccato sentences in conflict
moments. Long nested sentences in reflective passages.
- **Dialog approach:** Naturalistic with regional markers
(North Sea dialect).
## Signature Techniques
- **Object-as-emotion:** Feelings are never named but visible on objects
(the coffee grows cold, the key cuts into the hand).
- **Weather-as-chorus:** Weather comments on the scene, never just backdrop.
- **Silence-heavy dialog:** Long pauses in dialog marked by "β" or
action between two lines.
## Tone & Atmosphere
Melancholic but not depressive. The sea is always present β as
comfort, threat, mirror. Humor only dry, never silly.
## Strengths
- Atmosphere through omission
- Dialog that shows more than it says
- Regional authenticity without pastiche
## Deliberate Imperfections
- Likes to repeat "later" and "again" β not stylistic mistakes
but rhythm markers
- Short sentences at paragraph ends are common: "That was all."
- Fragments as stylistic device: "A boat. Far out. No light."
## Influences & Comparable Authors
- Jon Fosse (Septology) β for repetition and slow tempo
- Siri Hustvedt β for intellectual depth without didacticism
- Per Petterson β for nordic coolness and landscape prose
## Anti-Patterns
- **No interior monologues** explaining what just happened
- **No therapy speech** ("I feel overwhelmed")
- **No epiphany moments** β characters never "suddenly understand everything"
- **No rhetorical questions** in narrator text
- **No abstract nouns**: journey, tapestry, realm, essence
This is the operationally most important file. Concrete words to block or prefer.
# Vocabulary β Maja Sundberg
## Banned Words
The following words NEVER appear in this author. The voice-checker
flags them as errors.
### Category: Abstract AI Nouns
- journey
- tapestry
- realm
- essence
- landscape (metaphorical)
- dance (metaphorical)
- symphony (metaphorical)
### Category: Hedging
- "it's worth noting"
- "it should be mentioned"
- "one might say"
### Category: Therapy Speak
- vulnerable (except physical)
- overwhelmed (except physical)
- held space
- processed (feelings)
### Category: AI Verbs
- navigated (except literal)
- embraced (except literal)
- transcended
## Preferred Words
Words this author actively uses. Used in word-choice conflicts.
### Everyday
- mug (never cup, unless tea)
- boat (never vessel/ship if small)
- path (never way)
### Regional Markers (North Sea)
- aye (mild)
- wee (a little)
- back along (previously)
## Signature Phrases
Phrases typical for this author. Max 2x per book (otherwise becomes mannered).
- "...and then it was quiet."
- "That was the way of it."
- "Not today."
## Banned Structures
- **Rhetorical questions in narrator text**: "Why had he done that?"
β Never. Only in character thoughts, and then rare.
- **Lists of three adjectives**: "He was tired, confused, and angry."
β Max two adjectives, or one adjective + action.
- **Sentence start with -ing participles**: "Walking to the door, he..."
β Never. Too generic.
The skill /storyforge:study-author imports your own works (PDF, EPUB, DOCX) and extracts style parameters automatically.
Sentence length distribution
Vocabulary register
Signature phrases
POV patterns
Dialog proportion
Paragraph structure
# Studied Work: The Island at Night (2023)
## Style Parameters Extracted
### Sentence Length
- Mean: 16.3 words
- Median: 14 words
- StdDev: 9.8 words (high β human-typical)
- Range: 2-47 words
### Vocabulary
- 8,423 unique content words over 82,000 total
- Top 5 content words: "sea" (184), "light" (142), "mother" (127),
"always" (118), "again" (112)
- Dialect markers: "aye" (23x), "wee" (8x)
### Filter Word Usage (per 10,000 words)
- saw: 12 (low)
- heard: 8 (low)
- felt: 15 (low)
- β Very restrained filter-word usage
### Dialog Proportion
- 23% dialog, 77% narration
- Dialog tags: 78% "said", 15% no tag, 4% "asked", 3% other
### Signature Phrases (>3x)
- "and then it was quiet" (6x)
- "That was the way of it" (14x β very signature)
- "not today" (4x)
- "the sea was [X]" (11x)
## Update to profile.md
- Adding signature_phrases
- Setting sentence_style: "varied-high-variance"
- Setting vocabulary_level: "moderate"
- Adding regional markers to preferred words
- Adding "felt"/"saw"/"heard" soft-cap (max 10 per chapter)
The skill writes these findings automatically to profile.md and vocabulary.md.
A user can have as many profiles as needed:
~/.storyforge/authors/
βββ maja-sundberg/ # For literary/contemporary
βββ maja-sundberg-thriller/ # For thriller (different cadence)
βββ ghostwriter-1/ # For client commissions
βββ test-voice/ # Experimental profile
Per book, one author is chosen (author_slug in book frontmatter). Can be changed for a new book.
The author_writing_mode field controls which workflow is suggested automatically:
| Value | Effect |
|---|---|
outliner |
new-book suggests full outliner pipeline |
plantser |
plot-architect switches to MVO mode (6 beats) |
discovery |
new-book skips plot-architect, suggests rolling-planner |
The profile can override the mode per book β e.g., an outliner author writes an experimental novella in discovery mode.
Fictional author "Henri Delacroix" β Historical Mystery, France, 1920s.
---
name: "Henri Delacroix"
slug: "henri-delacroix"
created: "2026-04-24"
primary_genres: ["historical", "mystery"]
narrative_voice: "first-person"
tense: "past"
tone: ["wry", "world-weary", "ironic", "slightly-cynical"]
sentence_style: "long-flowing-with-sharp-short-punchlines"
vocabulary_level: "rich-period-appropriate"
dialog_style: "formal-with-class-markers"
pacing: "meditative-build-with-sudden-violence"
themes: ["lost-era", "class-tension", "self-deception"]
influences: ["Georges Simenon", "Graham Greene", "Patrick Modiano"]
avoid:
- "modern-slang"
- "anachronistic-references"
- "info-dumps-on-period"
- "first-person-present"
author_writing_mode: "outliner"
---
# Henri Delacroix
## Writing Style
First person, retrospective from a later time (usually 20 years
after). The narrator knows more than the character in the scene β
but holds back until the right moment. Sentences can spread like
smoke in a bistro, then abruptly end with a six-word observation.
## Narrative Approach
- **POV:** First person, strongly reflective
- **Tense:** Past, occasionally historical present for tension scenes
- **Dialog approach:** Formal, with clear class markers
(formal vs. informal address strictly observed)
## Signature Techniques
- **"I should have known..."-openers:** Retrospective narrator hints early
- **Object catalogs:** Scenes often start with a list of 3-5 objects
in the room
- **Dialog break:** Characters do not finish each other's sentences β
they suddenly throw in a different topic
## Tone & Atmosphere
Wryness like an old cognac. Humor is there, but dry. The world is
beautiful but unreliable. Violence comes suddenly but is not
celebrated β it is an incision, not an attraction.
## Deliberate Imperfections
- "I don't know why I..." as a phrase recurring 2-3x per book
- Em-dashes (β) common for thought breaks
- Single-sentence paragraphs to close scenes, always 6-10 words
## Anti-Patterns
- NEVER modern psychology terms (trauma, triggered, boundaries)
- NEVER American idioms
- NEVER "it was the year 1924" (info-dump)
β Instead: weave year details naturally (prices, brands, newspapers)
Vocabulary for Henri Delacroix:
# Vocabulary β Henri Delacroix
## Banned Words
- trigger (as verb)
- realm
- journey (metaphorical)
- cool (as adjective for calm)
- "she was strong" β too modern
- processing (as mental processing)
## Preferred Words
- motorcar (never car, before 1930)
- telephone (never phone, before 1940)
- whiskey-and-soda (rather than whiskey)
## Signature Phrases (max 2x)
- "I should have known..."
- "The rain had already fallen before I..."
- "They used to say..."
## Banned Structures
- Short main-clause chains: "He went. He smoked. He fell silent."
β Too modern. Henri uses nested sentences.
- Lists with "and, and, and"
StoryForge ships with a built-in anti-pattern catalog (reference/craft/anti-ai-patterns.md). The voice-checker compares every text against this list.
Typical AI-tells:
These patterns are actively checked in every chapter-writer run.
Specificity > generic. "Melancholic tone" is weak. "Melancholic, nordic-cool, with focus on the sea as a third character" is strong.
Always fill banned words. An empty banned_words is as good as no profile.
Studied works are the booster. A profile without studied works is like an actor without rehearsals. Import at least 1-2 of your own or stylistically related works.
Do not invent signature phrases β only add them once they actually appear in studied works. Artificial signature phrases become mannered.
One profile per genre. If you write horror and romance, make two profiles. Even if it is the same you β the style differs significantly.
Profiles live. After every book: update. New signature phrases? Preferred words that slipped in? Add them.
Symptom: Chapter-writer produces generic text despite existing profile.
Check:
book_slug/README.md YAML has correct author_slug?author_slug exists under ~/.storyforge/authors/?profile.md has YAML frontmatter (not missing)?Fix:
/storyforge:session-start
# Rebuilds state cache
Symptom: Text contains "journey" even though banned.
Cause: Profile is loaded but vocabulary.md is not. Or the reference in the profile is missing.
Fix:
~/.storyforge/authors/{slug}/vocabulary.md exists?
/storyforge:voice-checker my-book ch-01
# Lists all banned-word hits
Symptom: Voice-checker reports high AI-tell density despite strong profile.
Cause: Scene-by-scene mode was off, user chose "full chapter". More slips through in long passes.
Fix: