Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
English | 中文
oh-story-claudecode
Project page: https://zenstory.ai/oh-story · All ZenStory AI projects: https://zenstory.ai/projects · Glossary: https://zenstory.ai/glossary
A web novel writing skill pack with built-in adapters for Claude Code, Google Antigravity, OpenCode, ZCode, OpenClaw, Codex CLI, and Reasonix. Web AI / agent environments that can read project files can use the generic skills path. Covers the full pipeline for long-form and short-form Chinese web novels: trend scanning, deconstruction, writing, AI tone removal, and cover generation.
Start with Your Writing Task
This repository is a skill pack installed in a compatible agent host. It is separate from the hosted ZenStory writing workbench: project files, settings and progress do not sync automatically between the two products. Use these guides to define the task before running it in your installed host:
| What you want to do | Practical guide | Focus |
|---|---|---|
| Understand writing skills first | Prompts, skill packs, plugins and MCP | Choose the writing job before the host and workflow |
| Import an existing novel | Import 10–20 chapters and continue | Review inferred structure; treat the manuscript as evidence |
| Keep a long novel consistent | Separate character knowledge, promises and clues | Do not turn future plans into past events |
| Turn an outline into a chapter | Write plot specifications as visible change | Advance through action, choice, cost and result |
| Revise formulaic prose | Reduce "AI-sounding" prose with concrete edits | Improve the reading experience, not a detector score |
| Preserve author voice in continuation | Separate voice choices from book facts | Use authorized samples without copying phrases |
Direct answers to common questions
These documents answer the questions writers ask most, describing the mechanism as shipped in the current version:
| Question | Document |
|---|---|
| How do I stop an AI writing agent from breaking character over 100+ chapters? | Keep an AI-written novel consistent over 100+ chapters |
| What can Claude Code skills do besides code? | Claude Code skills that are not for coding: a fiction-writing pack as the worked example |
| How do I remove AI flavor from prose? | 去AI味的具体做法 (Chinese) |
| How do I scan charts and deconstruct bestsellers? | 扫榜和拆文的自动化做法 (Chinese) |
Your First Request after Setup
First follow the instructions below to install and run setup in your chosen host. Choose the brief that fits your current task and replace the 〈placeholders〉. These are not installation commands or a required sequence; review the output, and do not expect automatic synchronization with the hosted ZenStory workbench.
- Start a new book
I want to start a new 〈genre/premise〉 book. First separate fixed facts in my material from decisions that remain open. Plan only a bounded opening and deliver the central conflict, viewpoint/information-release limits, changes across the first three chapters and open decisions. Do not draft prose automatically; leave genre tradeoffs, character motives and the long-term direction for me to confirm.
- Import an existing manuscript
Organize this manuscript as a continuable project. Chapters 1–〈N〉 are complete; 〈filename〉 is a partial chapter 〈N+1〉. Preserve the source prose, do not overwrite complete chapters, and do not count the fragment as a complete chapter, and separate inferred settings for confirmation. First deliver the detected range, reconstructed facts, conflicts/ambiguities and decisions requiring my confirmation for review; do not continue the story yet.
- Fix an unsatisfactory passage
This passage reads as 〈vague/repetitive/over-explained〉. First name the specific reading problem while preserving story facts, character knowledge and unrevealed information. Deliver only a proposed revision of this passage, a before/after comparison and reasons—not a book-wide rewrite. I will decide which suggestions to accept.
Core Approach
Tropes = deterministic emotional payoff
Professional authors follow a three-step method:
- Scan — analyze trending charts, identify genres, characters, and entry points.
- Deconstruct — break down pacing and plot materials, build a personal module library.
- Commercialize — learn and apply hooks, payoff density, expectation management.
Built around four pillars: reverse-engineering hits · plot modularization · layered state management · human-AI collaboration.
Latest release: v0.7.10 (2026-09-09). See CHANGELOG.md and Releases; rerun
/story-setupand start a new session after upgrading. Antigravity deployment is covered in the usage notes below.
Pipeline Overview
flowchart LR
classDef entry fill:#f0f0f0,color:#333,stroke:#999,stroke-width:1px
classDef phase fill:#e8f4fd,color:#1a1a2e,stroke:#4a9be8,stroke-width:1px
classDef final fill:#fce4ec,color:#333,stroke:#e57373,stroke-width:1px
entry_l{{"Long-form Author"}}:::entry
entry_s{{"Short-form Author"}}:::entry
entry_r{{"Has an Idea"}}:::entry
entry_i{{"Existing Novel"}}:::entry
subgraph S0 [" Setup"]
setup["/story-setup"]:::phase
end
subgraph S1 [" Trend Scanning"]
direction TB
scan_l["Long-form Scan"]:::phase
scan_s["Short-form Scan"]:::phase
end
subgraph S2 [" Deconstruction"]
direction TB
analyze_l["Long-form Deconstruction"]:::phase
analyze_s["Short-form Deconstruction"]:::phase
import_l["Existing Novel Import"]:::phase
end
subgraph S3 [" Writing"]
direction TB
write_l["Long-form Write"]:::phase
write_s["Short-form Write"]:::phase
end
subgraph S4 [" Polish"]
deslop["De-AI-ify"]:::final
end
entry_l --> setup
entry_s --> setup
setup --> scan_l
setup --> scan_s
scan_l --> analyze_l
scan_s --> analyze_s
analyze_l --> write_l
analyze_s --> write_s
entry_r -.->|Skip Prep| write_l
entry_r -.->|Skip Prep| write_s
entry_i -.->|Setup Recommended| setup
setup -.->|Reverse Import| import_l
import_l -.->|Continue Writing| write_l
write_l --> deslop
write_s --> deslop
Installation
Option 1 Tell Claude Code / Antigravity / OpenCode / ZCode / OpenClaw / Codex / Reasonix, or another Web AI / agent platform that can import a GitHub repo or skill:
Install this skill https://github.com/zenstory-ai/oh-story-claudecode
To upgrade, repeat the same instruction.
Option 2 Command line:
npx skills add zenstory-ai/oh-story-claudecode -y -g
-g installs globally (available in every directory); drop -g to install only into the current directory. Re-run the same command to update.
This standalone npx skills installation path does not use the Claude Code or ZCode marketplace, so the plugin identity change below does not affect it.
On Windows you may occasionally see an ENOENT ... mkdir error while the run still ends with Done!. That means a skill was only partially installed. If a whole subdirectory of story-setup's reference bundle is missing, /story-setup reports an incomplete reference bundle; other forms of partial install may go unreported. Either way, re-run the same install command to fix it.
To diagnose an installed environment, ask your agent to use story-setup to check your writing environment, or invoke the skill with the check argument. It checks the target CLI's deployment checklist and reports next steps without changing the project. Repairs use the existing setup workflow.
Claude Code / Antigravity / Codex / ZCode / OpenCode / OpenClaw / Reasonix / Web AI usage notes
Claude Code users: The marketplace remains named oh-story-skills, but now contains one oh-story bundle. Claude Code discovers all 13 root Skills from that bundle:
claude plugin marketplace add https://github.com/zenstory-ai/oh-story-claudecode
claude plugin install oh-story@oh-story-skills
After installation, use /oh-story:story-setup or /oh-story:story dashboard. Existing plugin users should follow the migration guide. This identity migration began with a same-version fix in v0.7.9; users still on the old plugin identities should refresh the marketplace and reinstall explicitly. See the Claude Code plugin reference for commands.
Antigravity users: Run story-setup from /skills or by natural language and select target_cli=antigravity. Inside the current writing project it updates only 13 known .agents/skills/ directories, 7 known .agents/agents/agent-name/agent.md definitions (agent-name stands for the actual name), .agents/rules/oh-story.md, two .agents/hooks/ runtime files, and the managed oh-story group in .agents/hooks.json. Other user Skills, Agents, Rules, Hooks, and hook groups are preserved; the deployer itself never writes ~/.gemini/. Skills are real project-local directories. If .agents/skills is already a symlink, setup explains the git-diff impact and requires explicit migration approval; without approval it never writes through the link. Hooks require node on PATH. Open a fresh conversation after deployment, then smoke-test both the IDE and interactive agy. agy 1.1.22 -p is currently outside the supported surface: each headless process may scan the workspace before silent authentication finishes, then fail to reload custom agents and hooks. The result can be a skill fallback, subagent not found, or ordinary model output under ~/.gemini/antigravity-cli/scratch/. For CLI writing, start interactive agy from the project and confirm /skills, /agents, and /hooks have discovered oh-story before sending the task; check the scratch directory for accidental story output after testing.
Codex users: Use it in-place: Codex scans $REPO_ROOT/.agents/skills (a symlink to skills/) and discovers all 13 skills; invoke via $story, $story-setup, or /skills. On Windows, enable git core.symlinks=true or the symlink breaks — then use the $story-setup deployment below.
After $story-setup deploys into a writing project, it creates .codex/agents/*.toml, .codex/hooks.json, .codex/hooks/{story_codex_hook.py,run-story-hook.sh,run-story-hook.cmd}, and .codex/skills/story-setup/references/agent-references/. Trust the project .codex/ layer, review/trust hooks in /hooks, and open a fresh Codex session so custom agents load.
ZCode users: Add this repository in Plugin Management and install oh-story to access all 13 Skills/Commands. The marketplace may appear as oh-story-zcode (root catalog) or oh-story-skills (Claude catalog); choose one, since both contain the same bundle. For older installs with multiple entries, follow the migration guide. With target_cli=zcode, $story-setup deploys .zcode/skills/, .zcode/commands/, and .zcode/hooks/story_zcode_hook.js, then safely merges .zcode/config.json and the root AGENTS.md. Hooks require node on PATH. ZCode 3.3.4 does not execute project/plugin custom agents and has no PreCompact or SessionEnd; affected workflows report a solo/direct fallback, while SessionStart restores context after compaction. See the official ZCode plugin documentation.
OpenCode users: After global install, opencode auto-discovers skills from ~/.claude/skills/; trigger story-setup with natural language on first use (e.g., "use story-setup to deploy the web novel environment"), then exit and re-enter with opencode -c for slash commands to work. Some hook behaviors differ from Claude Code (session-start / session-end / compact, etc.) — see the OpenCode section in CONTRIBUTING.md.
OpenClaw users: Current support is skills-only. OpenClaw can discover the 13 story skills from workspace skills/, .agents/skills, ~/.agents/skills, ~/.openclaw/skills, or configured extra skill roots. SKILL.md files use OpenClaw-compatible single-line name / description plus single-line JSON metadata.openclaw. When story-setup targets OpenClaw, it copies the skills into project skills/ and writes an OpenClaw AGENTS.md; agents/hooks are intentionally deferred, so outline-before-prose guards are soft skill checks rather than runtime enforcement. If new skills do not appear immediately, open a fresh OpenClaw session or wait for the skills watcher to refresh.
Reasonix users: Current support is Skills + a native plugin manifest. Reasonix natively scans project skill roots (.agents/skills etc., a symlink to skills/) and discovers all 13 skills — verify with reasonix doctor capabilities; you can also reasonix plugin install via the root reasonix-plugin.json. When story-setup targets target_cli=reasonix, it copies the skills into project skills/ and writes a Reasonix AGENTS.md; hooks/custom agents are intentionally deferred, so skills needing specialist agents fall back to solo/direct. If Windows symlinks are disabled, use the native plugin instead.
Generic Web AI / agent users: If your platform can read a GitHub repo or project files, have the agent read skills/*/SKILL.md plus the relevant references/. For local project copies, run story-setup with target_cli=generic; it only writes a generic AGENTS.md and skills/. Without this project's hooks/custom agents, checks run as skill-level soft constraints or solo/direct fallbacks.
OpenClaw / Reasonix / generic paths need manual cleanup of nested directories: these three keep their skill copy inside the project's skills/, so re-running /story-setup executes that project-local copy and the automatic cleanup never reaches them. If the project contains skills/story-setup/references/agent-references/agent-references/ (possibly nested several levels deep) or skills/story-setup/skills/, delete them by hand. To update the skill text itself, reinstall this project and overwrite the 13 skill directories under the project's skills/ from the new package.
After updating, if a project has already run /story-setup, re-run /story-setup from the project root to sync hooks / agents / references. Per-version changes are in CHANGELOG.md and Releases.
Multi-agent collaboration needs setup + a fresh session: the 7 specialist agents (story-architect, narrative-writer, consistency-checker, etc.) are written into .claude/agents/ by /story-setup, .codex/agents/*.toml by $story-setup, or generated into .agents/agents/agent-name/agent.md (agent-name stands for the actual name) by Antigravity story-setup. Antigravity calls them with invoke_subagent and the matching TypeName; if custom subagents are unavailable, each skill reports a solo/direct fallback. Run /story-review in the fresh session — Effective Mode: full/lean means agents registered, while Fallback: ... -> solo means they are unavailable.
Import and continuation order: run /story-setup from the writing-project root first to deploy hooks, agents, and AGENTS.md; start or refresh the session, then run /story-import for the existing novel and continue with /story-long-write 日更 or /story-long-write 写第N章. You can also run /story-import directly; if setup is missing, it offers to run setup first or continue with a serial import.
Author preferences persist across sessions: tell /story to remember a writing habit; the write counts as successful only when it returns an Author Memory Receipt. Normal writing queries only relevant confirmed items with a hard 2 KB output cap, rather than injecting the full profile, candidates, and history into the prose prompt. This memory stays separate from per-book continuity tracking, and current instructions, book settings, and hard gates always take priority.
Skills
| Skill | Trigger | Description |
|---|---|---|
story-setup |
/story-setup / $story-setup |
Environment setup — Claude/Antigravity/OpenCode/Codex/ZCode/OpenClaw/Reasonix plus generic (safe merge) |
story |
/story / $story / /story dashboard |
Toolbox router, author-preference management, and local deconstruction/project dashboard |
story-long-write |
/story-long-write |
Long-form writing — outline building, character design, prose output |
story-long-analyze |
/story-long-analyze |
Long-form deconstruction — Golden First 3 Chapters, payoff design, pacing analysis |
story-long-scan |
/story-long-scan |
Long-form trend scan — Qidian/Fanqie/Jinjiang market trends |
story-short-write |
/story-short-write |
Short-form writing — emotion design, twist crafting, polish & delivery |
story-short-analyze |
/story-short-analyze |
Short-form deconstruction — story core, structure, emotional arc, reversal design, writing techniques, resonance analysis |
story-short-scan |
/story-short-scan |
Short-form trend scan — Zhihu Yanyan/Fanqie short-form trending data |
story-deslop |
/story-deslop |
De-AI-ify — detect and remove AI writing traces |
story-import |
/story-import |
Reverse import — parse existing novels into standard project structure |
story-review |
/story-review |
Multi-perspective review — 4-agent adversarial review + Fanqie/Qidian/Zhihu scoring rubrics |
story-cover |
/story-cover |
Cover generation — title/genre analysis + GPT-Image-2 via Codex included usage or API fallback |
browser-cdp |
/browser-cdp |
Browser control — CDP protocol for scraping with reusable login sessions |
story-deslopuses local prose linting: blocking applies only to deterministic style/punctuation issues, while other findings require read-through judgment; external detectors such as Zhuque are self-check references, not replacements for human review.
Natural language also triggers: 帮我开书 ("help me start writing") → story-long-write, 这篇太AI了 ("this is too AI-ish") → story-deslop, 把我的书导进来 ("import my book") → story-import, 打开工作台 ("open the dashboard") → story dashboard, 记住我的写作习惯 ("remember my writing habits") → story author memory, 沈栀现在什么状态 ("what's Shen Zhi's current status") → story-explorer.
Story Dashboard
Run /story dashboard ($story dashboard in Codex) to open the local writing desk. Browse
deconstruction libraries and long/short project trees, then search, preview Markdown, edit text,
save with conflict protection, or confirm a file deletion. It listens only on 127.0.0.1 and never
uploads story content.
Deconstruction demo — Coiling Dragon
Full output from /story-long-analyze deep mode on the first 23 chapters of Coiling Dragon:
demo/拆文库/盘龙/
├── 概要.md # Novel overview + chapter index
├── 拆文报告.md # 5-dimension scoring + pacing analysis + takeaways
├── 文风.md # Benchmark voice: sentence rhythm, punctuation, dialogue subtext, emotion pacing
├── 章节/
│ ├── 第1章_深度拆解.md … 第3章_深度拆解.md # One deep analysis per Golden-3 chapter
│ └── 第1章_摘要.md … 第23章_摘要.md # One summary file per chapter
├── 角色/
│ ├── 林雷.md # Protagonist full profile
│ ├── 霍格.md # Core supporting
│ ├── 希尔曼.md # Core supporting
│ ├── 希里.md # Functional character
│ ├── 德林柯沃特.md # Core supporting
│ ├── 沃顿.md # Functional character
│ └── 角色关系.md # Relationship network
├── 剧情/
│ ├── 故事线.md # Framework + 4 plotlines + 2 storylines
│ ├── 强者过境与魔法启蒙.md etc. # Five scene-level plot units
│ ├── 节奏.md # Pacing + key-info progression + emotional trigger eruption rhythm
│ └── 情绪模块.md # Reader needs + emotional engine + reusable writing modules
└── 设定/
├── 世界观/
│ ├── 背景设定.md # Core rules + special settings
│ ├── 力量体系.md # Battle qi + magic + ranks
│ ├── 地理.md # Andaluxia + Yulan Continent
│ └── 金手指.md # Panlong Ring + Delin Cowort
└── 势力/
└── 巴鲁克家族.md # Baluk family (dragon-blood lineage)
Long-form deconstruction also produces 文风.md, plus 剧情/节奏.md (pacing, key-info progression, emotional trigger eruption rhythm) and 剧情/情绪模块.md (reader needs, emotional engine, reusable writing modules); daily writing consumes these through 对标/{书名}/剧情/ to keep voice, pacing, and emotion modules close to the benchmark.
Deconstruction demo — Once I Hid My Love (曾将爱意私藏, short-form)
/story-short-analyze deconstructing the short story 《曾将爱意私藏》 (~8,500 chars, win-back / "faked-death" genre):
demo/拆文库/曾将爱意私藏/
├── 原文/原文.txt # Source backup
├── 拆文报告.md # Story core + 5-dim scores + 6-facet payoff + cognitive reversal + 9-layer resonance
├── 情节节点.md # 54 plot points (source quotes + emotion markers −9~+9)
├── 写作手法.md # POV / dialogue / info-gap / object-hook — 11 techniques
└── _meta.json # structure_counts (Phase 7 gate basis)
Short-form deconstruction outputs 拆文报告 / 情节节点 / 写作手法; downstream /story-short-write writes a new same-genre story from them.
Import demo — 让你管账号,你高燃混剪炸全网 (long-form continuation project)
Run /story-setup first, then use /story-import to reverse-build the author's already-published first 20 chapters (~37k Chinese chars) into a continuation-ready writing project. Continue with /story-long-write 日更 or /story-long-write 写第21章:
demo/长篇/让你管账号,你高燃混剪炸全网/
├── 正文/ Chapters 001–020 (published source text)
├── 大纲/ 大纲.md · 卷纲_第1卷.md · 细纲_第001–020章.md (one file per chapter)
├── 设定/ 角色/ (6 character files) · 世界观/{background · cheat-system}
│ 关系.md · 题材定位.md · 文风.md
└── 追踪/ _tracking-state.json · 上下文.md · 伏笔.md · 逐章记录/
角色状态/{角色名}.md · 时间线/{作者真相.md · 读者已知.md}
Per-chapter extraction (events / characters / settings / foreshadowing / timeline) is reverse-engineered into a continuation bible, so the author seamlessly continues from chapter 21.
Agent System
Writing skills internally coordinate 7 specialized agents:
| Agent | Model | Role |
|---|---|---|
| story-architect | Opus | Story architecture — genre positioning, outline structure, hook/twist design, emotion arcs |
| character-designer | Sonnet | Character design — profiles, voice, motivation chains, dialogue writing |
| narrative-writer | Sonnet | Narrative writer — prose writing, de-AI-ify, format compliance |
| consistency-checker | Haiku | Consistency check — fact conflict scanning, foreshadowing tracking, S1-S4 grading reports |
| story-researcher | Sonnet | Research — CDP search + full-text extraction, multi-source cross-verification, structured reference files |
| story-explorer | Haiku | Story query — read-only character/foreshadowing/setting/progress lookup, quick context loading |
| chapter-extractor | Haiku | Chapter extraction — summaries, plot points, character mentions, parallel deconstruction unit |
Agents load writing theory from references/ on demand (character design, dialogue techniques, twist toolbox, etc. — 100+ methodology files), without reserving context window space.
Automation Hooks
/story-setup deploys 8 automation hooks for Claude Code:
| Hook | Trigger | Function |
|---|---|---|
| session-start.sh | Session start | Display branch, progress snapshot, deconstruction status |
| session-end.sh | Session end | Log session to 追踪/session-log.txt |
| detect-story-gaps.sh | Session start | Detect setting gaps, missing outlines, foreshadowing breaks |
| pre-compact.sh | Before context compaction | Save progress snapshot path and line-count summary |
| post-compact.sh | After context compaction | Prompt to read progress snapshot for context recovery |
| validate-story-commit.sh | git commit | Check hardcoded attributes, setting required fields (warning only, non-blocking) |
| guard-outline-before-prose.sh | Before writing prose (Write/Edit) | Blocks first creation of a chapter/story body when its 细纲/小节大纲 is missing (blocking) — enforces outline-first |
| check-prose-after-write.sh | After writing prose (Write/Edit) | Lightly scan for truncation, leaked workflow terms, deterministic toxic phrasing, and word-count debt (advisory) |
Project File Structure
A long-form novel can easily reach hundreds of thousands of words across hundreds of chapters. Setting conflicts, broken foreshadowing, timeline inconsistencies — relying on memory alone is a recipe for disaster.
The file system separates settings, outlines, prose, and tracking into independent dimensions. The conversation handles creation; the file system handles memory.
Workspace-level author memory stays separate from any one book:
.story/作者记忆/
├── _author-memory-state.json # Single structured authority
├── 作者画像.md # Confirmed preferences used in creation
├── 待确认.md # Inferences, repeated corrections, conflict candidates
└── 变更记录.md # Auditable replacement and withdrawal history
Long-form:
{Book Title}/
├── Settings/
│ ├── World/ # Background, power systems, etc. — one file per topic
│ ├── Characters/ # One file per character (Shen_Zhi.md, Lu_Yanzhi.md)
│ ├── Factions/ # One file per faction/organization (Tianji_Pavilion.md)
│ ├── Relationships.md # Character relationship map
│ └── Genre_Positioning.md # Core trope + benchmark analysis
├── Outline/
│ ├── Outline.md # Full-book volume-level structure
│ ├── Volume_1.md # One per volume: payoff pacing + emotion arc + character arc + foreshadowing + twists
│ ├── Chapter_001.md # One per chapter: summary + multi-line plot + relationships/order + hooks
│ └── ...
├── Prose/
│ ├── Chapter_001_Title.md
│ └── ...
├── Benchmark/ # Benchmark reference (structured subdirs synced from deconstruction)
│ └── {Benchmark Book}/
│ ├── Source/ # Benchmark book original chapters
│ ├── Characters/ # Structured character profiles (synced from analyze)
│ ├── Plotlines/ # Structured plot lines/pacing/emotion modules (synced from analyze)
│ ├── Settings/ # Structured world settings (synced from analyze)
│ ├── 文风.md # Benchmark voice used before daily writing
│ └── Report.md # Analyze skill output
├── Tracking/ # File-first continuity state
│ ├── _tracking-state.json # Single structured authority (not loaded into prose prompts)
│ ├── Context.md # Derived hot context (7 fixed sections, ≤12 KB)
│ ├── Chapter_Records/ # Compact continuity record / revision overlay (≤3072 bytes)
│ ├── Character_Status/ # Derived snapshot per core character
│ ├── Foreshadowing.md # Derived current foreshadowing view
│ └── Timeline/ # Derived author-truth and reader-known views
├── References/ # story-researcher output
│ └── {topic}.md # Split by research topic
Short-form file structure:
短篇/{Title}/
├── 正文.md # Final draft
├── 小节大纲.md # 8-section structure + emotion curve
└── 拆文库/ # If a reference novel exists (analyze output)
└── {Book}/
├── 拆文报告.md
├── 情节节点.md
└── 写作手法.md
Deconstruction Library: Deconstruction skills save structured outputs (characters, plotlines, settings, chapters) under 拆文库/{Book Title}/ at project root; long-form plot output includes 节奏.md and 情绪模块.md. Writing skills consume these assets through 对标/{书名}/剧情/ and related benchmark subdirectories, or automatically fall back to reading from the deconstruction library.
.active-book: a text file at project root containing the active book's relative path (for example, 长篇/My Novel). Hooks and writing skills use it to locate the current project.
Knowledge Base
Each skill includes a references/ knowledge base loaded on demand to keep context lean.
Expand the per-skill knowledge-base topic list
| Topic | Contents | Skill |
|---|---|---|
| Outline Layout | Five-step outline method · Story structure levels · Node design · Progression design | long-write |
| Opening Design | Opening patterns · First 500 words · Golden First 3 Chapters | long-write / short-write |
| Character Design | Character profiles · Character extraction · Relationship mapping · Motivation chains · Ensemble casts | long-write / short-write / short-analyze |
| Hook Techniques | 13 chapter-end hooks · 7 chapter-start hooks · Paragraph-level hooks · Suspense orchestration | long-write / short-write / short-analyze |
| Emotion Design | 6 arc templates · Expectation management · Genre track strategies | long-write / short-write |
| Genre Frameworks | Long-form 8-node · Short-form compressed 3-act · 8 genre opening templates | long-write / short-write / short-analyze |
| Dialogue Techniques | Rhythm · Subtext · Information control · Dialogue pattern database | long-write / short-write |
| Twist Toolbox | Types · Timing · Misdirection base paths | long-write / short-write |
| Style Modules | Dialogue · Combat · Mind games · Cinematic writing · Face-slapping · Plain description | long-write |
| Advanced Techniques | 4-step micro-outline · Climax reverse-engineering · Dual-thread structure · AB interweaving | long-write |
| De-AI-ify | Prevention · 3-pass de-AI method · Rewrite examples · Banned word list | deslop / long-write / short-write |
| Quality Checks | General · Long-form specific · Short-form specific · Toxic trope detection | long-write / short-write / short-analyze |
| Writing Formulas | 21 genre formulas · Three-flip-four-shock (escalating reversal) · Romance four-stage | short-write / short-analyze |
| Female-oriented Writing | Female reader preferences · Emotional description · Romance patterns · Benchmark analysis | short-write |
| Deconstruction Methods | Golden First 3 Chapters · Emotion curves · Structure breakdown · Zhihu style analysis | long-analyze / short-analyze |
| Short-form Methodology | Story core · Plot nodes · Explosive point analysis · Writing techniques · Rhythm analysis · Resonance analysis · Character classification · Platform fit | short-analyze |
| Deconstruction Examples | Full case breakdowns · Template output | short-analyze |
| Reader Profiles | 9-dimension profiles · Target reader analysis | long-scan |
| Market Data | Genre trends · Platform characteristics · Collection formats · Submission guides | long-scan / short-scan |
| Cover Styles | 10 genre visual styles · Color composition · Prompt templates | story-cover |
| Adversarial Review | Multi-perspective review · Scoring rubrics · Toxic trope detection | story-review |
Supported Platforms
Long-form Qidian (起点中文网) · Fanqie Novels (番茄小说) · Jinjiang (晋江文学城) · Qimao (七猫小说) · Ciweimao (刺猬猫)
Short-form Zhihu Yanyan (知乎盐言故事) · Fanqie Short-form (番茄短篇) · Qimao Short-form (七猫短篇)
Real output samples are in demo/: short-form deconstruction 《曾将爱意私藏》 · long-form deconstruction 《盘龙》 · long-form continuation project 《让你管账号,你高燃混剪炸全网》 · cover sample 《剑道独尊》.
I built this skill pack to help me through a job-hunting transition 😂, and I hope it can help others too.
FAQ
Does it work in Codex, Google Antigravity or OpenCode, or only in Claude Code?
oh-story-claudecode ships adapters for Claude Code, Google Antigravity, OpenCode, ZCode, OpenClaw, Codex CLI and Reasonix. Codex discovers the 13 skills by scanning .agents/skills in the repo and invokes them with $story-setup; in Antigravity run story-setup via /skills or natural language and choose target_cli=antigravity. Any Web AI or agent environment that can read project files can use the generic skills path.
Do I need a GPU or to host a model?
No. oh-story-claudecode is a set of skills that runs inside the coding agent you already use, so the writing model is that agent's model; only deterministic check scripts (Node / Python) run locally. The one exception is story-cover, which calls GPT-Image-2 (Codex built-in quota or an API fallback).
Chapter lengths are inconsistent or the word count is off. What do I do?
Since v0.7.7 long-form prose uses a single machine-counted length metric: every chapter blueprint must state a valid word target, and a missing target stops the run instead of falling back to 3,000; under-length chapters are not padded with new plot, and over-length chapters get at most one compression pass. check-prose-after-write.sh flags length debt after each write. Rerun /story-setup and start a new session after upgrading an older project.
After de-AI editing, detectors such as Zhuque still flag the text as AI. Why?
story-deslop (/去AI味) is a writing lint: it deterministically detects and removes known AI sentence patterns, punctuation habits and degeneration artifacts. Its target is how the prose reads, not evading detectors. External detectors are a self-check reference only, and oh-story-claudecode makes no promise of passing any AI detector.
This concrete revision guide separates vague emotion, repeated syntax, unearned commentary and over-explaining while preserving the scene's job and the author's facts.
I already have part of a novel written. Can I import it and continue?
Yes. Run /story-setup in the project root, start or refresh a session, run /story-import to reverse-parse the existing novel into the standard project layout, review its inferences, then continue with /story-long-write 日更 or /story-long-write 写第N章. The import-and-continue guide explains why manuscript evidence should take priority over model guesses.
How do I reduce forgotten clues or characters knowing answers too early in a long continuation?
Before continuing, separate objective story facts, character knowledge and what readers have seen; carry only the relevant current state and unfinished commitments into the chapter. The long-novel continuity guide gives a three-chapter example. Structured records can help organize the handoff, but do not promise error-free writing over hundreds of chapters.
My chapter outline is complete. Why does the prose still summarize the setup?
Treat the outline as a specification for what must change, then turn its goal, obstacle, evidence, choice and cost into actions and results the viewpoint character can perceive. The outline-to-chapter guide is an editorial example, not a recorded tool run or model-quality claim.
How do I keep my voice without carrying plot facts over from another book?
Describe the dimensions of a short sample you wrote or may use, separately from the current book's facts; sample inference does not automatically establish an enduring preference. The author-voice guide explains how to resolve the current request, book style and author preferences; it does not promise automatic style matching or encourage copied phrases.
On Windows the install prints ENOENT ... mkdir but ends with Done. Is that normal?
It means some skills were not fully installed. Rerun the same install command, with or without the error, and it repairs itself; if a reference-material directory is missing, /story-setup reports the reference pack as incomplete. Codex users on Windows also need core.symlinks enabled in git.
What do I do after upgrading?
Rerun /story-setup and start a new session. The seven agents (story-architect, narrative-writer, consistency-checker and others) are written into the project by /story-setup; multi-agent collaboration only takes effect after deploying and opening a fresh session.
What is the difference between the short-form and long-form entry points?
Long-form: /story-long-scan (chart scanning) → /story-long-analyze (deconstruction) → /story-long-write (outline, volume outline, chapter blueprints, prose). Short-form: /story-short-scan → /story-short-analyze → /story-short-write. Both share /story-setup, /story-deslop, /story-review and /story-cover.
Contributing
Contributions are welcome — new skills, knowledge base additions, market data updates. See CONTRIBUTING.md (Chinese only).
Community
- Telegram: https://t.me/ohstoryclaudecode — chat, troubleshooting, and feature discussion.
- GitHub Discussions: ask questions, get help, share workflows.
- GitHub Issues: bugs, output-quality cases, and feature requests. Use the structured forms and include reproducible evidence or a concrete output sample.
Acknowledgments
- LINUX DO - The New Ideal Community — Community support
- FanqieRankTracker — Fanqie Novels font obfuscation decoding reference
- Zhuque AIGC Detector CLI — External retest reference used during anti-AI-writing experiments
Part of ZenStory AI
Oh Story is part of ZenStory AI — open-source, agent-native tools for creating, adapting and producing stories (GitHub org: zenstory-ai). Sibling projects:
| Project | What it does |
|---|---|
| oh-story-claudecode | Web-fiction writing skill pack (this repo) |
| drama-skills | AI short-drama / motion-comic suite: scripts, assets, storyboards, image & video prompts, independent review |
| novel-to-game | Agent skills for source-grounded novel adaptation, target-runtime builds, and evidence-based QA |
| video-recap-skills | Create Chinese-narration recaps from supported video files, with optional editable JianYing/CapCut draft export |
| oh-story-dsh | Community DeepSeek Harness plugin with novel, short-drama, game and video-recap workbenches |
| zenstory | Chat-to-create AI novel-writing workbench (app.zenstory.ai) |

