creative-fiction-writer
Fiction writing workflow — novel, memoir, short story — vault files + Writing Engine visual UI + Claude as the drafting brain. Use when the user says "work on my novel", "draft a chapter", "fiction",
SKILL.mdskills/creative-fiction-writer/SKILL.md
GitHubFiction Writer
Structured creative writing using Obsidian files (source of truth) + Writing Engine UI (visual workspace) + Claude Code (full-context AI) + Voice API (hands-free dictation & TTS).
Reference files (read on demand)
SKILL_DIR = {home}/.claude/skills/creative-fiction-writer/. The harness loads only this file; read a sibling with the Read tool when you reach the step that needs it.
| File | Priority | Read when |
|---|---|---|
<SKILL_DIR>/fiction-memory.md |
Required | Always, first — active projects, last-session state, accumulated craft notes |
<SKILL_DIR>/templates.md |
Required | Scaffolding a project or writing any brief / outline / progress / scene / character / world / _project.yml file |
<SKILL_DIR>/writing-engine.md |
Optional | Launching or explaining the Writing Engine UI, or the tool architecture |
<SKILL_DIR>/voice-mode.md |
Optional | The user wants voice writing — dictation, command mode, conversation, or TTS proof-listening |
Always read <SKILL_DIR>/fiction-memory.md first — it holds active projects, last-session state, and accumulated craft notes.
Reference
- Memory:
<SKILL_DIR>/fiction-memory.md - Writing Engine:
10_Projects/writing-engine/(web UI on port 7800) - Projects:
10_Projects/<Title>/(each novel/memoir/story is a project folder)
Three AI Brains, Three Strengths
| Tool | Best For | Context |
|---|---|---|
| Claude Code (terminal) | Full-context drafting, continuity checks, structural revision | Reads entire project |
| Voice API (mic button) | Hands-free scene generation, dictation, TTS proof-listening | UI packages context into system_prompt |
| Writing Engine AI panel (Ollama/OpenAI) | Quick in-editor actions: expand, compress, grammar | Current scene + codex selection |
Tool architecture + ASCII diagram: <SKILL_DIR>/writing-engine.md.
Trigger Table
| User Says | Mode | Action |
|---|---|---|
| "写小说" / "new novel" / "start a novel" | new-project |
Scaffold novel project |
| "写回忆录" / "new memoir" | new-project |
Scaffold memoir project |
| "写短篇" / "new short story" | new-project |
Scaffold short story project |
| "写大纲" / "outline" / "plan the story" | outline |
Create/refine story outline |
| "写场景" / "draft scene" / "write next scene" | draft |
Write scene with full context |
| "扩展" / "expand this" | revise:expand |
Expand passage with detail |
| "压缩" / "compress" | revise:compress |
Tighten prose |
| "对话润色" / "dialogue pass" | revise:dialogue |
Improve dialogue voice |
| "文风统一" / "voice pass" | revise:voice |
Consistent narrative voice |
| "连续性检查" / "continuity check" | continuity |
Check consistency |
| "角色档案" / "new character" | character |
Create/update character |
| "世界设定" / "worldbuilding" | world |
Create/update world note |
| "组装章节" / "assemble chapter" | assemble |
Compile scenes → chapter |
| "项目状态" / "story status" | status |
Progress report |
| "打开写作界面" / "open writer" / "writing UI" | ui |
Launch Writing Engine |
| "语音写作" / "voice mode" / "talk to write" | voice |
Activate voice mode in UI |
| "读给我听" / "read it back" / "TTS" | voice:tts |
TTS playback of current scene/chapter |
Project scaffolds + all note templates: <SKILL_DIR>/templates.md.
Core Workflow
new-project → outline → [DRAFT LOOP] → assemble → revision passes
Draft Loop (per scene)
1. Claude reads context (see Context Loading Protocol)
2. Claude drafts scene → writes to manuscript/<path>.md
3. User reviews in Writing Engine UI or Obsidian
4. User annotates / requests changes via Claude Code
5. Claude revises
6. Every 3-5 scenes: continuity check
7. Update _progress.md
Context Loading Protocol
Before writing ANY scene, Claude MUST read (in order):
_brief.md— premise, themes, tone, audience_outline.md— find the current scene's beat/purpose_progress.md— what's done, open threads, continuity flags- Previous 2 scenes — for continuity and flow
- POV character file — voice, speech patterns, arc position
- Other characters in scene — relationships, tensions
- Relevant world file — if new setting introduced
This is what makes Claude Code superior to the Writing Engine's generic AI panel: every scene is written with full project context.
Context Loading — Quick Reference
READ _brief.md → tone, themes
READ _outline.md → this scene's beat
READ _progress.md → what's happened, open threads
READ prev 2 scenes → continuity, voice
READ character files → POV voice, relationships
READ world files → setting details (if needed)
Mode Details
new-project
- Ask user for: title, type (novel/memoir/short), premise, language
- Create project folder in
10_Projects/<Title>/ - Scaffold all folders and template files
- Create
_project.ymlfor Writing Engine compatibility - Write initial
_brief.mdfrom user's premise - Update
fiction-memory.mdwith new active project
outline
- Read
_brief.mdfor premise and themes - Propose act/chapter structure with scene beats
- Iterate with user until outline is solid
- Write to
_outline.md - Generate initial
_progress.mdscene table
draft
- Execute full Context Loading Protocol (see above)
- Identify next scene from
_progress.md(or user specifies) - Write scene matching: outline beat, character voice, tone, previous flow
- Save to
manuscript/<path>/<scene>.md - Update
_progress.md(status → draft, word count)
revise:expand
Read the scene, expand thin passages with:
- Sensory detail (sight, sound, smell, touch, taste)
- Internal thought (for POV character)
- Environmental texture
- Micro-actions and body language
revise:compress
Read the scene, tighten by:
- Removing redundant descriptions
- Cutting filler words and phrases
- Combining sentences where possible
- Preserving voice and key imagery
revise:dialogue
Read the scene + all character files for characters present:
- Make each character sound distinct
- Remove "said" synonyms overuse
- Add subtext (what's unsaid)
- Ensure dialogue advances plot or reveals character
revise:voice
Read _brief.md tone notes + sample of earlier scenes:
- Flag voice inconsistencies
- Normalize POV distance
- Harmonize tense usage
- Suggest specific fixes
continuity
Scan recent 3-5 scenes + character files + world files:
- Character consistency: behavior matches profile? contradictions?
- Timeline: chronological logic? impossible overlaps?
- Plot threads: which are open? any dropped?
- Setting details: physical descriptions consistent?
- Tone/voice: has narrative voice drifted?
Output: Update _progress.md with findings under "Continuity Flags"
character
- Ask: name, role, want/need/flaw/arc
- Create file in
characters/(orpeople/for memoir) - Link to relevant scenes in outline
- If updating existing: read current file, preserve existing info, add new
world
- Ask: name, type, description, rules, significance
- Create file in
world/(orplaces/for memoir) - Link to scenes where it appears
assemble
- Read all scenes for target chapter (sorted by scene number)
- Check transitions between scenes
- Add chapter-level framing if needed
- Calculate chapter word count
- Write assembled chapter to
revisions/ch01-assembled.md
status
Report on demand:
- Total word count (by chapter/act)
- Scene completion status (draft/revised/final)
- Open plot threads
- Character appearance tracker
- Continuity flags
- Estimated completion %
ui
Launch the Writing Engine:
cd "10_Projects/writing-engine" && python server.py &
Then open http://localhost:7800 in browser.
Note: The Writing Engine reads from 10_Projects/ — it sees the same files Claude Code writes.
Writing Engine UI details: <SKILL_DIR>/writing-engine.md.
Voice mode (dictate / command / conversation + TTS): <SKILL_DIR>/voice-mode.md.
Writing Principles
These guide Claude's drafting and revision:
- Show, don't tell — action and sensory detail over abstract statements
- Character voice distinction — each character sounds different
- Scene purpose — every scene must advance plot OR reveal character (ideally both)
- Tension on every page — conflict, mystery, or emotional stakes
- Specific over general — "a cracked blue mug" not "a cup"
- Subtext in dialogue — what's unsaid matters more
- End scenes with forward momentum — reader wants to turn the page
Post-Action
After any mode execution:
- Update
_progress.mdif scene status changed - Update
<SKILL_DIR>/fiction-memory.mdwhenever a project changes (new or active project, phase/status shift) or a significant craft insight emerges — it is the durable memory across sessions - Report what was written/changed and next suggested action