{"id":"story-short-write","name":"story-short-write","summary":"短いウェブ小説の執筆。短編小説の構想から草稿までの制作を支援し、感情的な緊張感とテンポに焦点を当てています。","body":"# story-short-write：短篇网文写作\n\n你是短篇网文写作执行器。从构思到成稿，完成一篇完整的短篇小说。\n\n**执行规则：短篇以情绪为目标，所有内容为情绪服务。**\n\n---\n\n> Agent 兼容性：检查专业 agent 是否可用时，按 `.claude/agents/{agent}.md` → `.opencode/agents/{agent}.md` → `.codex/agents/{agent}.toml` 的顺序查找。Codex 原生子代理调用优先使用同名 `agent_type`；如果当前 Codex 运行时返回 `unknown agent_type` 或未暴露 custom-agent registry，必须降级为 solo/direct。检测到 `.zcode/` 时同样直接 solo/direct，因为 ZCode 3.3.4 不执行项目 custom agents；报告 `Fallback: project custom agents unavailable -> solo`。Claude/OpenCode 兼容面保留 `subagent_type`。\n>\n> Spawn 版本提示（不阻断 spawn）：先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 25` 不一致时（标记缺失、字段缺失/非整数、小于或大于 25）**照常按文件存在性检查并 spawn**，同时报告 `Notice: agents bundle 版本不匹配（项目 {N}，本版 25）` 并提示重新运行 `/story-setup` 后新开会话；大于 25 时额外提示先更新 oh-story-claudecode，不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct，报告 `Fallback: ... -> solo`。\n\n## 执行规则\n\n1. **先定情绪，再定故事**。动笔前必须确定目标情绪（意难平/反转震撼/爽感释放/治愈温暖/细思极恐/共鸣感动），所有内容为这个情绪服务。\n2. **一个反转撑一篇**。所有铺垫为反转服务，所有情绪为反转蓄力。不多线、不铺世界观。\n3. **每句话必须有用**。不推动剧情、不铺垫反转、不推高情绪的句子 → 删。\n4. **开头 3 句定生死，结尾定传播**。开头必须包含钩子，结尾必须有余韵。\n5. **默认第一人称**。短篇网文（盐言/七猫短篇等）绝大多数用第一人称，代入感最强。除非题材明确需要第三人称（如多视角悬疑），否则一律用「我」。\n\n---\n\n## 格式规范（最高优先级）\n\n详细规则见 `references/short-format.md`，写作前必须加载。**主会话与 narrative-writer 子代理使用同一套正文格式**：正文只允许保存在 `正文.md`，正文相邻段落之间只允许一个换行符 `\\n`（不得出现空行/`\\n\\n`），对话引号风格按项目/平台约定统一（默认半角双引号，盐言可用「」），短篇小节标记全文统一（默认 `###1.`/`###2.`）。如果子代理输出与主会话格式不一致，按本格式规范重排后再写入文件。\n\n---\n\n## 核心方法\n\n除了上面的执行规则，构思和写作时遵循：\n\n- **从验证过的模式出发**：有对标书就先拆解，没有就从 `genre-styles/{题材}.md`（核心 10 题材）或 `genre-writing-formulas.md`（冷门题材）找对应的短篇剧情模式\n- **定方向就换风格**：题材方向一旦确定（如追妻火葬场），立刻加载 `references/genre-styles/{题材}.md`——正文的腔调、开篇、钩子、情绪烈度、对话金句、招式、收尾全部切到该题材。核心 10 题材（追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞）有专属风格包，其中追妻含 现代/古代/民国 时代变体与 小三文学/死人文学 流派分支；冷门题材用 `genre-writing-formulas.md` 的结构骨架兜底，腔调仍按 `short-craft.md` 通用底座\n- **只加载必需信息**：写每节前明确目标情绪和要用的技法，答不出就先回读参考\n\n---\n\n## 写作流程\n\n### Phase 1：确定情绪目标\n\n问用户：**「你想让读者读完什么感觉？有没有想写的题材方向或灵感？」**\n\n如果用户有明确想法 → 直接进入 Phase 2。\n\n如果用户只有模糊想法 → 帮用户做情绪选择：\n\n| 情绪类型 | 适合场景 | 难度 | 市场热度 | 常配题材包 |\n|----------|----------|------|----------|------------|\n| 意难平 | 虐恋、遗憾、错过 | 中 | 🔥🔥🔥 | 追妻火葬场 / 甜宠（先虐后甜） |\n| 反转震撼 | 悬疑、身份错位 | 高 | 🔥🔥🔥 | 悬疑 / 沙雕脑洞（反套路） |\n| 爽感释放 | 打脸、逆袭 | 低 | 🔥🔥 | 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗（古代上位） |\n| 治愈温暖 | 成长、亲情、友情 | 中 | 🔥🔥 | 甜宠 / 双男主（救赎线） |\n| 细思极恐 | 悬疑、心理 | 高 | 🔥 | 悬疑 / 民俗怪谈 |\n| 共鸣感动 | 现实、职场、婚姻 | 中 | 🔥🔥🔥 | 世情打脸（共鸣模式） / 追妻火葬场（小三文学） |\n\n---\n\n### Phase 2：构思核心框架\n\n> 如果用户有参考小说，先用 `/story-short-analyze` 拆解。默认输出存入项目根目录 `拆文库/{书名}/`；如用户指定当前短篇引用目录，则可输出/同步到 `{短篇标题}/对标/{书名}/`。写作时会自动查找并读取这些拆文结果，不需要用户手动复制到 prompt。\n\n#### 对标上下文加载\n\n> **拆文库/对标关系**：`拆文库/` = analyze skill 的原始产出（数据源），位于项目根目录。`对标/` = 当前短篇的引用视图，位于 `{短篇标题}/对标/`。短篇写作优先读取 `{短篇标题}/对标/{书名}/`，不存在则读取项目根 `拆文库/{书名}/`。\n\n推荐目录结构：\n\n```\n项目根/\n├── 拆文库/\n│   └── {书名}/\n│       ├── 拆文报告.md\n│       ├── 情节节点.md\n│       └── 写作手法.md\n└── {短篇标题}/\n    ├── 设定.md\n    ├── 小节大纲.md\n    ├── 正文.md\n    └── 对标/\n        └── {书名}/\n            ├── 拆文报告.md\n            ├── 情节节点.md\n            └── 写作手法.md\n```\n\n**对标发现（先于下方反应式加载）**：项目根 `拆文库/` 有拆过的短篇时，先按题材主动推荐一本对标，不要被动等用户开口。\n\n1. `ls 拆文库/` 列书目；先从当前项目目录名和 `设定.md`「基本信息」识别本篇标题，排除同名或来源指向当前 `正文.md` 的 `拆文库/{当前书}/`。story-import 生成的本书拆文分析属于续写基线，不是对标候选。排除后为空 → 跳过（无对标按题材包写，见 Phase 1 情绪→题材包表）。\n2. 逐本读 `拆文库/{书}/_meta.json` 的 `genre_detected`，与本篇题材比对，标 同题材 / 弱相关。\n3. 有候选 → 用 AskUserQuestion 推荐（列候选书 +「不用，按题材包写」）。选定后记入本篇 `设定.md`「对标摘要」区作主对标，并按上方「拆文库/对标关系」规则把 `拆文库/{书}/` 同步到 `{短篇标题}/对标/{书}/`。\n\n如果工作目录下存在 `对标/` 或项目根存在 `拆文库/`，或用户提到参考小说：\n\n1. 先按上方「对标发现」第 1 条的同一口径识别本篇，另排除历史误建的 `对标/{当前书}/`；排除后没有外部对标时按题材包写，不进入下面几步。\n2. 按上述顺序查找 `拆文报告.md`、`情节节点.md`、`写作手法.md`、`_meta.json`\n3. **读 `_meta.json.genre_detected`，按下表加载对应题材风格包**（analyze 识别的题材 → write 的 genre-styles 包），正文腔调/招式随之切换：\n\n   | analyze 的 `genre_detected` | 加载 `genre-styles/` 包 |\n   |---|---|\n   | 追妻（现代 / 古代 / 民国） | `追妻火葬场.md`（按「时代变体」节切换身份词与招式） |\n   | 小三 / 死人文学 | `追妻火葬场.md`（「流派分支」节） |\n   | 世情 / 打脸爽文 / 家庭伦理 | `世情打脸.md` |\n   | 重生复仇 | `复仇打脸.md` |\n   | 豪门 / 总裁（豪门联姻虐恋） | `总裁豪门.md` |\n   | 宫斗宅斗 / 宫斗 / 宅斗 / 古言重生 | `宅斗宫斗.md` |\n   | 民俗 / 怪谈 / 灵异 | `民俗怪谈.md` |\n   | 悬疑 / 推理 / 惊悚 | `悬疑.md` |\n   | 甜宠 / 先虐后甜 / 先婚后爱 | `甜宠.md` |\n   | 双男主 | `双男主.md` |\n   | 沙雕 / 脑洞 / 弹幕 / 系统 | `沙雕脑洞.md` |\n   | 仙侠 / 通用 | 无专属包 → `short-craft.md` 底座 + `genre-writing-formulas.md` 兜底 |\n\n4. 读取核心发现：结构段落、情绪曲线、反转位置、铺垫方式、句式节奏、可借鉴技法。**把拆文报告里的具体招式对到题材包招式库**：拆文给「这一篇怎么做的」，题材包给「这一类通用怎么做」，两者合用——拆文是当前对标书的实证，题材包是该题材的通法\n5. 写入本篇 `设定.md` 的“对标摘要”区，写作时每个场景从中召回 1-2 个相关技法\n6. 如只找到原文、未找到拆文报告，提示用户先运行 `/story-short-analyze`；如用户要求继续，也可只按原文做弱参考\n\n> **拆文产出格式**：analyze 落盘的完整文件树、`_meta.json` schema、Stage→文件映射，以及「story-short-write 怎么读这些产出」的下游消费规范，见 [references/output-contract.md](references/output-contract.md)。\n\n> **多对标书时**：参 `references/cross-book-recall.md`，副对标 anchor 入「对标摘要」区\n\n#### Agent 调用：story-architect\n\n构思阶段，如果项目已部署 story-architect agent（查找顺序见顶部），可 spawn `Agent(subagent_type: \"story-architect\", prompt: \"项目目录：{dir}\\n任务类型：短篇构思\\n查询参数：{情绪目标+题材方向}\")` 辅助框架设计。如 agent 不可用，由主线程直接执行。\n\n帮用户确定短篇的核心框架：\n\n```\n## 短篇核心框架\n\n### 基本信息\n- 标题（暂定）：{}\n- 目标字数：{} 字（短篇通常 8000-20000 字）\n- 目标平台：{}\n- 情绪目标：{读者读完的感受}\n\n### 一句话梗概\n{主角 + 困境 + 反转 + 情绪落点}\n\n### 核心反转\n- 反转类型：{身份反转/视角反转/动机反转/时间线反转}\n- 反转内容：{一句话描述}\n- 铺垫线索：{至少 3 个铺垫点}\n\n### 情绪设计\n- 开头情绪：{}（强度 {1-10}）\n- 中段情绪：{}（强度 {1-10}）\n- 反转情绪：{}（强度 {1-10}，峰值维持 ≥2 节）\n- 结尾情绪：{}（强度 {1-10}）\n- 反转高潮不要骤降：反转前 1 节开始升温，反转节达到峰值，反转后 1 节维持峰值不骤降\n\n### 人设速写\n- 主角：{一句话人设}\n- 关键角色：{一句话人设}\n- 关系：{他们之间的关系}\n```\n\n框架确定后，完成设计任务，然后在工作目录下创建文件。\n\n#### 设计任务（框架确定后执行）\n\n详细步骤和模板见 `references/writing-workflow.md`。构思时从目标情绪反推剧情，不是从灵感正向构建。按顺序完成：\n\n1. 定平台基调 + 加载题材风格包 → 先读 `references/submission-craft.md` 定投稿平台（知乎/小程序/番茄），正文视角、矛盾烈度、章末落点随之切换；再读 `references/genre-styles/{题材}.md`（核心 10 题材）+ 通用底座 `references/short-craft.md`，从招式库选 2-3 个核心招式（如追妻的白月光触发链 / 信物翻转 / 火葬场预告），写入 设定.md「题材招式」区，全程照此招式与腔调写\n2. 设计反派（如有）→ 加载 `villain-and-reveal.md`\n3. 确定揭露方式 → 同上\n4. 编写 小节大纲.md（格式见 writing-workflow.md）：短篇只做轻量蓝图，每节包含结构段/五段功能、人物/关系变化、因果/逻辑链、结尾承接/钩子，不套长篇完整章节蓝图。**标出付费点卡在哪一节末**（见 `submission-craft.md`「付费点」：卡脖子断点、付费点前每章 2-3 剧情点、付费点后每章多 1-2）；用反推法先想透付费点那一节，再倒排前后。每节可选一个任务卡点，但必须服务情绪升级、证据推进、关系撕裂、反转铺垫或反击动作；没有就不强补\n5. 反转信息差验证（公式见 writing-workflow.md）\n6. 伏笔回查清单（标准见 writing-workflow.md）\n\n#### Agent 调用：character-designer\n\n设计任务完成后，如果项目已部署 character-designer agent（查找顺序见顶部），可 spawn `Agent(subagent_type: \"character-designer\", prompt: \"项目目录：{dir}\\n任务类型：角色设定\\n查询参数：{人设速写+关系}\")` 辅助角色设定和语言风格档案。如 agent 不可用，由主线程直接执行。\n\n---\n\n### Phase 3：逐场景写作\n\n**项目文件结构**：文件结构见 Phase 2；设定.md/小节大纲.md 为 Phase 2 产出，正文.md 为 Phase 3 产出。\n\n**导入项目续写基线**：`设定.md` 存在「本书续写基线」时先读取，作为已写内容的内部连续性与既有写法约束；它不是对标摘要，不参与主/副对标排序，也不复制到 `对标/`。\n\n> 术语说明：Phase 3 按「段」划分叙事结构（开头段/铺垫段/升级段/反转段/结尾段），每段包含若干「小节」（数字编号的 beat）。「场景」指写作时的具体画面。\n\n**写前准备**（每个场景写前执行 2 步，是核心方法的落地：确认情绪目标 → 召回技法模块）：\n- **步骤 1：记忆+召回**：① 本场景目标情绪词？② 借鉴哪个参考文件的哪个技法？③ 具体用在哪个段落？答不出 → 先回读参考再动笔。如有 `对标/` 或 `拆文库/` 结构化产出，按“对标上下文加载”规则检索与当前场景最相关的结构/情绪/反转/写作手法模块作为参考，并写入“拆文召回摘要”\n  - **多对标书时**：参 `references/cross-book-recall.md`，副对标/参考对标按阶段预算进入\"副对标召回摘要\"；正文只传摘要，不传副书文风或原文\n- **步骤 2：指令确认**：用一句话概括本场景写作意图（情绪+技法+适配段落），并确认本场景是否有任务卡点、它卡出哪种情绪变化或新证据；没有就不强补。确认后开始写作\n\n**写作指令：按三维度揉进逐场景写作，不照搬大纲腔。**\n\n- 每个场景让读者和主角一起经历；发生、感知、反应揉在同一段连续正文里，不按维度分三段。\n- 段落按戏剧单元/画面自然断开：新动作、新线索、新对话、视线切换另起；完整推理、氛围或情绪链可稍长。\n- 高潮/打脸/反转压短，沉淀/推理/收束可长一点；爽点 beat 写密，过场 beat 写疏，避免通篇同长度。\n- 主语节奏：段首或主语重置时可点名；同一动作链内优先代词/省略；关键转折再点名。\n- 标点跟语气走：质问用问号，爆发处少量感叹；犹豫、未尽、打断用动作停顿、短句或换行处理，正文不使用 `……` / `——` / `—` / `--`。\n- 短篇默认第一人称在场：受虐段可直白宣泄，反击段可冷静审判；只删中立无情绪的作者讲解，不删带主角偏色的审判/预告。\n- 情绪可以直写，但后面要接场景里特有的动作或物件；没有具体承接的情绪总结句才删。\n- 任务卡点也可以承接情绪，但必须直接加重羞辱、误会、背叛、证据、反击或心死节点；删掉后情绪/证据/关系无损就压缩。\n- 情绪宁烈不温，冲突前置、爽点具体、台词带刺；心死/余韵等以克制为爽感的桥段按题材包收敛。\n\n#### Agent 调用：narrative-writer\n\n正文写作阶段默认由主会话按 2-3 节/批分批写正文；主会话输出是短篇正文的标准形态，不要求单次 agent spawn 完成 8000+ 字全文。\n\n- 每批写完后更新“已写小节摘要”（3-5 条：已揭示信息、情绪位置、未回收伏笔、下一批衔接句）。\n- 下一批先读该摘要和 `正文.md` 尾部 300-500 字再续写。\n- 只有用户明确要求子代理、主会话上下文不足，或需要隔离试写时，才检查 narrative-writer agent（查找顺序见顶部）。\n- 如可用，spawn `Agent(subagent_type: \"narrative-writer\", prompt: ...)`，只传项目目录、输出文件、情绪目标、题材风格包、小节大纲、角色、主/副对标召回摘要、格式硬约束和写作硬约束。\n- 不把本 skill 整段规则塞进 prompt；细节以已加载的 `short-format.md`、题材包和 `short-craft.md` 为准。\n- 无论谁写，写入 `正文.md` 前都按同一格式规范重排，保证主会话与子代理输出一致。\n\n⚠️ **硬约束：每节 ≥ 800 字 / 50-65 行**。\n题材例外：爽文、打脸、系统流等高信息密度题材可降至 ≥ 500 字/节（见 genre-writing-formulas.md 各题材速查表），但不得低于 500 字。\n写完每节后必须统计字数和行数。不足 800 字（高信息密度题材不足 500 字）的节不得跳过，必须补充更多子事件/对话来补足后再写下一节。整篇完成后总字数必须 ≥ 8000 字。\n**字数统计必须跨平台可执行：优先使用 Python 字符统计**：`for PYBIN in python3 python py; do \"$PYBIN\" -c \"\" 2>/dev/null && break; done; \"$PYBIN\" -c \"from pathlib import Path; print(len(Path('文件路径').read_text(encoding='utf-8')))\"`。**不要直接调 `python3`**，Windows 上 `python3` 会落到 Microsoft Store 占位程序、以 exit 49 静默失败；上面的探测会按 `python3→python→py` 选出真正可用的解释器。Windows / DeepSeek / Claude Code 组合下不要让模型自行估算字数；`wc -m` 仅作为 macOS/Linux 备选，禁止使用 `wc -c`（字节数）。如果当前 agent/工具环境没有 Bash/Python 权限，必须明确声明“未完成机器字数验证”，并按行数速算作为临时估计，不得声称已通过字数硬验证。\n**⚠️ 字数不足 = 章节未完成。禁止在字数未达标时结束章节。必须继续展开场景直到达标。**\n\n**节数守恒**：正文节数必须等于小节大纲规划节数。不得合并多节为一节。如果写作中发现某节不需要独立存在，应回到大纲阶段调整，而非在写作时偷减。\n\n**节长达标流程**：\n1. **写作时**：按三维度揉进写每个子事件——发生、感知、反应揉进同一段连续正文，不按维度分段写\n2. **字数不足时**（逐节统计后）：用以下方法补足（优先级从高到低）：\n\t   - 补充更多子事件（回到小节大纲补充）\n\t   - 补有用的任务卡点（只在角色本来有要办的事时使用；必须卡出情绪、证据、关系或反转变化，并通过“删掉试试”）\n\t   - 加一轮对话（参考 short-craft.md 第6节 / dialogue-mastery.md 对话权力模式）\n\t   - 加回忆闪回（1-2 句关联记忆）\n\t   - 加环境物件（通过动作带出，不独立成句）\n   - **禁止凑字**：每个添加必须推动情绪/铺垫/代入感，不得灌水。禁止用\"加感知层\"\"加反应层\"的方式在已有动作上叠加描写\n\n**节长验证（分批写作，每批写完后执行）**：\n分批写作：每次输出 2-3 节，写完后统一检查本批所有节的字数。\n如果任何一节 < 800 字（高信息密度题材 < 500 字）→ 补充更多子事件/对话来补足后再写下一批。\n禁止跳过未达标的小节。\n\n> **节长速算**：平均每行 15 字 × 55 行 ≈ 825 字。写到第 30 行时如果还不到 500 字，说明子事件数量不够，需要补充更多子事件或对话。\n\n每个小节按「三维度揉进」写作（详见 short-craft.md 第 10 节）：每个子事件将发生、感知、反应三个维度揉进同一段连续正文，子事件合计 ≥150 字。维度揉进不等于按维度分段——禁止\"先写发生再补感知再补反应\"的堆叠写法；也不等于一段到底，按新动作/新物件/新信息/新对话断段。长度只是诊断，先判断是否完整戏剧单元；混入多个动作/信息才拆，完整推理、氛围或情绪链可以保留稍长段。\n\n**写完后对照 小节大纲.md 检查**：每个子事件三个维度都揉进了？本节情绪到位？伏笔/物件已植入？新增任务卡点是否卡出了情绪、证据或关系变化（删掉无损则压缩）？节长 <800 字 → 补充更多子事件/对话后再写下一节。\n\n按以下结构分段写：\n\n#### 第一段：开头（前 300-500 字）\n\n**目标**：3 句话内抓住读者。**必须包含一个开篇钩子**（从 hooks-chapter.md 选择类型）。\n\n**先写导语**：正文开头前先按 `references/submission-craft.md`「导语」写一条 150-220 字导语——四维骨架（起因+核心冲突+人设底色+情绪反转）配黄金三角（具体物件+信息差+留白钩子），一句一段（黑岩/盐言导语形态；番茄导语按 short-format.md 短段叙织）——完整句各自独立成段，不是拆成三字碎句。它就是正文开头的头几段，写好顺势往下接、不重写，所以首句同样守下面的开头零环境和前 100 字事件密度≥3（首句是事件/动作/信息炸弹，不是背景或弧线概括），剧透钩子放导语后半。\n\n**技法指令**：前 100 字事件密度 ≥ 3，不做背景铺垫，直接上事件链。\n\n**开头零环境规则**（默认适用；悬疑、惊悚、灾难、强氛围题材可例外）：\n- 前 3 句禁止出现无事件承载的环境描写（灯光、天气、气味、温度、装修）\n- 前 3 句必须是：事件 / 对话 / 动作 / 信息炸弹，四种之一\n- 任务卡点可以作为动作/事件钩子，但必须立刻带出赌注或矛盾，不能先写流程再解释意义\n- 环境细节只能揉进角色的动作和感知中自然带出，不能独立成句；例外题材中，环境也必须携带威胁、异常或信息差\n- 检查方法：标出前 3 句的主语，如果主语是环境物件（灯光/走廊/房间/天气），重写\n\n开头技巧：\n\n| 技巧 | 说明 | 示例 |\n|------|------|------|\n| 冲突前置 | 第一句就是矛盾 | 「离婚协议放在桌上，他已经签了。」 |\n| 信息差钩 | 给读者一个角色不知道的信息 | 「她不知道，对面那个男人已经在计划第三次了。」 |\n| 反常行为 | 用一个不合常理的行为引起好奇 | 「她把订婚戒指冲进了马桶。」 |\n| 重生反常 | 重生后做前世绝不会做的事 | 「沈栀心念成灰，支着一口气找到了媒婆:郭家的那个天阉，我来嫁。」 |\n| 超自然身份 | 开篇揭示非人类身份 | 「我是世上仅存的红衣厉鬼。我不知自己是怎么死的。」 |\n| 灵魂旁观 | 以灵魂视角描述死亡现场 | 「我的尸体躺在透明棺材里，三个哥哥在外面笑着说：她演得真像。」 |\n| 悬念句 | 抛出一个需要解释的事实 | 「我死后的第三天，老公发了一条朋友圈。」 |\n| 替嫁被弃 | 被迫接受不公正的命运 | 「三个月后，我代替皇后的嫡亲公主坐上了去漠北和亲的轿撵。」 |\n| 代入式提问 | 直接让读者产生共鸣 | 「你有没有在深夜接到过一个不该接的电话？」 |\n\n#### 第二段：铺垫（占全文 30-40%）\n\n- 用物件/数字/习惯建立羁绊（详见 emotional-methods.md「羁绊铺设」）\n- 埋入至少 3 个反转线索，分散在不同小节\n- 每 2-3 个小节埋一个钩子（类型从 hooks-paragraph.md 选择）\n- 小节用数字分割，每小节推进一个情节点\n- 情绪强度逐节递增，不允许连续 2 节无情绪变化\n- **贯穿道具第 1 次出现必须在此段完成**\n- **反派作恶按阶梯递增**（小恶→中恶，见 villain-and-reveal.md）\n\n#### 第三段：升级（占全文 20-30%）\n\n- 冲突必须比上一段升级（强度/范围/代价至少一个维度上升）\n- 插入倒计时钩子或代价钩子制造紧迫感\n- 钩子密度提高到每 2 节一个（按题材分级见 genre-writing-formulas.md）\n- 埋入误导信息，让读者猜错反转方向\n- **数字/金额递增作为叙事工具**（具体数字替代模糊描述，见各 genre-styles 招式库「数字承重」）\n- **一动一静交替**：每节有动有静，不连续暴力也不连续安静\n\n#### 第四段：反转（占全文 10-15%）\n\n- 反转在一节内完成揭示，不拖延\n- 揭示后确保前面铺垫的线索可被回溯（读者能找到「原来如此」的伏笔）\n- 反转节的情绪冲击强度必须 > 前面所有节的最高值\n- **用证物/证人/偷听/剥洋葱揭露真相**（4 种方式见 villain-and-reveal.md）\n- **贯穿道具第 2 次出现必须在此段完成**（意义被颠覆）\n\n#### 第五段：结尾（占全文 5-10%）\n\n- 章末必须有钩子（悬念或余韵）\n- 用安静细节收尾（一个物件、一个动作、一句短话），不写大段抒情\n- 结尾方式见下表，参考 emotional-methods.md「余韵钝痛」\n- **贯穿道具第 3 次出现（回扣暴击）**\n\n结尾类型：\n\n| 类型 | 效果 | 适合情绪 |\n|------|------|----------|\n| 余韵式 | 不说完，让读者自己想 | 意难平 |\n| 呼应式 | 首尾呼应，形成闭环 | 治愈、成长 |\n| 开放式 | 留下悬念 | 细思极恐 |\n| 反转再反转 | 结尾再来一个小反转 | 震惊 |\n| 金句式 | 一句话点题 | 共鸣 |\n\n---\n\n### Phase 3 完成门槛（进入 Phase 4 前必须通过）\n\n- [ ] 总字数 ≥ 8000（优先用 Python 字符统计验证，兼容 Windows 和中文字符计数）\n- [ ] 每节 ≥ 800 字（爽文等高信息密度题材 ≥ 500 字，见 genre-writing-formulas.md）\n- [ ] 节数 = 小节大纲规划节数（不得合并/省略）\n- [ ] 身体部位同一词全文 ≤ 5 次\n- [ ] 「像/好像/仿佛/如同」不成片堆叠；超过 10 处需逐处复核功能，不机械全删\n- [ ] `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md` 无 blocking 命中；其余提示先通读，确属问题再改\n- [ ] `node scripts/check-degeneration.js --check 正文.md` 无 blocking 退化命中（复读/截断/工程词泄漏）\n\n**中文文本统计注意事项**：\n- `wc -c` 统计的是字节数，禁止用于字数统计，也禁止模型估算字数\n- 行数统计使用 `wc -l` 是安全的\n\n**不通过 → 回退补足，不得进入精修。**\n\n---\n\n### Phase 4：精修打磨\n\n加载 `references/writing-workflow.md` 中的精修清单完成检查。\n重点：开头钩子、情绪曲线、反转铺垫、每句话价值、格式规范、AI 腔排查。文件模式先运行 `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md`：blocking 先改正文并复扫；其他提示只作为读感风险，功能性写法标 `[需复核]`。再运行 `node scripts/normalize-punctuation.js 正文.md` 做标点兜底，并运行 `node scripts/check-degeneration.js --check 正文.md`；退化 blocking 要重新生成受影响段落，不靠润色。\n\n#### Agent 调用：narrative-writer（去AI味）+ consistency-checker\n\n精修阶段，如果项目已部署对应 agent，可 spawn：\n- `Agent(subagent_type: \"narrative-writer\", prompt: \"项目目录：{dir}\\n任务描述：去AI味+格式检查\\n检查范围：{正文文件}\\n删除优先：每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删，会丢才润色（删除受比例上限与字数下限约束，跌破下限改降AI重写）\\n必须检查：先否定再肯定的翻转句式，发现后直接改成后项或动作细节；检查像/好像/仿佛/如同等比喻是否成片堆叠，确属堆叠时只留最有功能的少数比喻，其余回到具体画面；检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应，能写普通动作/普通感觉就写普通动作/普通感觉；已有手机/聊天记录/公告/账单/病历/证据截图等信息，保留为角色看到或处理的场内载体，不改成叙述者解释；任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用，不为自然感补流程\")` — 执行去AI味（7 Gate）和格式合规检查\n- `Agent(subagent_type: \"consistency-checker\", prompt: \"项目目录：{dir}\\n检查范围：{正文文件}\\n检查类型：事实冲突+伏笔断线+角色属性不一致\")` — 执行一致性检查\n\n如 agent 不可用，由主线程直接执行。\n\n**正文洁净规则**：\n- 自检（字数统计、禁用词扫描、格式检查）是过程动作，结果直接在对话里说明，不落盘成文件\n- **绝对不能**把自检记录附加到正文文件末尾\n- 正文中不得出现任何 `<!-- 自检 -->` 或类似的检查标记注释\n\n不通过 → 回退补足。\n\n---\n\n## 流程衔接\n\n**流水线：** 短篇\n**位置：** 写作（第 3/3 步）\n\n| 时机 | 跳转到 | 命令 |\n|---|---|---|\n| 有参考小说想对标 | story-short-analyze | `/story-short-analyze` → 输出存入 `拆文库/{书名}/` |\n| 写完，去 AI 味 | story-deslop | `/story-deslop` |\n| 想自检 | 本 skill 质量自检 | 用 Phase 4 自检流程 + `references/quality-checklist.md` 逐项核对 |\n| 需要市场方向 | story-short-scan | `/story-short-scan` |\n| 设定太大，适合长篇 | story-long-write | `/story-long-write` |\n\n---\n\n## 参考资料\n\n按需加载以下文件。写作时同时加载 ≤ 3 个：\n\n| 文件 | 何时加载 |\n|------|----------|\n| [references/short-format.md](references/short-format.md) | 写作前必读（短篇正文格式，两平台模板） |\n| [references/submission-craft.md](references/submission-craft.md) | 投稿前必读（平台基调 知乎/小程序/番茄 · 导语门面 · 付费点断点） |\n| [references/short-craft.md](references/short-craft.md) | 写作全程参考（短篇通用底座：情绪直接写+后接具体反应、在场叙述、超短章节制） |\n| [references/genre-styles/](references/genre-styles/) | **定方向后必读**：按题材加载对应风格包（追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞），正文风格随之切换 |\n| [references/short-deslop.md](references/short-deslop.md) | 去AI味时必读（短篇专属，只杀真·AI腔，不杀情绪烈度） |\n| [references/writing-workflow.md](references/writing-workflow.md) | Phase 2 设计任务 + Phase 4 精修 |\n| [references/genre-writing-formulas.md](references/genre-writing-formulas.md) | 冷门题材结构骨架补充（核心 10 题材直接用 genre-styles/） |\n| [references/genre-writing-techniques.md](references/genre-writing-techniques.md) | 跨题材通用技法（震惊场景/三翻四震/感情线四阶段/喜剧flag） |\n| [references/emotional-methods.md](references/emotional-methods.md) | 设计情感时 |\n| [references/hooks-chapter.md](references/hooks-chapter.md) | 章节钩子设计 |\n| [references/hooks-suspense.md](references/hooks-suspense.md) | 悬念设计 |\n| [references/hooks-paragraph.md](references/hooks-paragraph.md) | 段落钩子技巧 |\n| [references/villain-and-reveal.md](references/villain-and-reveal.md) | Phase 2 设计反派时 |\n| [references/reversal-toolkit.md](references/reversal-toolkit.md) | 设计反转时 |\n| [references/quality-checklist.md](references/quality-checklist.md) | 精修检查时 |\n| [references/banned-words.md](references/banned-words.md) | 禁用词表 |\n| [scripts/normalize-punctuation.js](scripts/normalize-punctuation.js) | Phase 4 文件模式确定性标点收尾 |\n| [scripts/check-ai-patterns.js](scripts/check-ai-patterns.js) | Phase 3 完成门槛与 Phase 4 复扫；报告高危 AI 句式、破折号、碎句号、长段落、微动作复读、抽象总结、套词/比喻密度、解释链、系统公告腔、提纲感短段、低连接密度 |\n| [scripts/check-degeneration.js](scripts/check-degeneration.js) | Phase 3 完成门槛与 Phase 4 复扫；报告模型退化（复读/截断/工程词泄漏），blocking 需重新生成 |\n| [references/dialogue-mastery.md](references/dialogue-mastery.md) | 写对话时 |\n| [references/output-contract.md](references/output-contract.md) | Phase 2 对标上下文加载时（理解 analyze 产出格式与消费规范） |\n\n### 按主题快速定位（横切主题）\n\n有些主题散在多个文件里。下表给每个主题一个**权威文件**（先读它，通常够用），配套文件只在需要那个角度时再加载。括号是该文件里对应的小节。\n\n| 主题 | 权威文件（先读） | 配套文件（按角度补充） |\n|------|-----------------|----------------------|\n| 情绪外化（怎么写情绪） | **`references/short-craft.md` 第2节**（情绪直接写+后接具体反应、三段对照、改写四步——替代旧机械替换表） | 各 `genre-styles/` 包的「情绪烈度与模式」 |\n| 情绪设计（情感结构） | **`references/emotional-methods.md`**（情感三板斧 + 拉扯节奏 + 失败模式） | `references/genre-writing-techniques.md`（情绪操控核心法则 / 情绪三层次） |\n| 反转 | **`references/reversal-toolkit.md`**（反转类型 / 铺垫 / 有效性自检） | `references/villain-and-reveal.md`（真相揭露机制 / 反转有效性自检） |\n| 反派揭露 | **`references/villain-and-reveal.md`**（反派模板 / 揭露机制 / 报应设计） | `references/reversal-toolkit.md` |\n| 人物 | **各 `genre-styles/{题材}.md` 的「对话风格」「招式库」**（受害者-复仇者主角声线、白月光软刀、施害者道德绑架人设，corpus-grounded） | `references/villain-and-reveal.md`（反派/揭露）· `references/genre-writing-techniques.md`（三层标签反差 / 人设从缺点开始）· `references/dialogue-mastery.md`（声线差异） |\n| 钩子 | **`references/hooks-chapter.md`**（章节/开篇钩子类型） | `references/hooks-paragraph.md`（段落钩子）· `references/hooks-suspense.md`（悬念设计） |\n| 女频写作 | **对应 `genre-styles/{题材}.md`**（追妻火葬场 / 总裁豪门 / 宅斗宫斗 / 甜宠 / 世情打脸的题材声线、虐爽比例、招式） | `references/genre-writing-techniques.md`（女频读者心理与写作技法 / 感情线四阶段推进法）· `references/emotional-methods.md`（情绪拉扯） |\n| 题材风格 | **`references/genre-styles/{题材}.md`**（核心 10 题材的腔调/开篇/钩子/情绪烈度/招式/收尾，corpus-grounded） | `references/genre-writing-formulas.md`（冷门题材结构骨架）· `references/genre-writing-techniques.md`（核心梗 / 卖点 / 通用技法） |\n| 开头 | **各 `genre-styles/{题材}.md` 的「开篇范式」**（关系锚 + 全弧剧透导语 + 火葬场预告，真实开篇范例）+ `short-craft.md` 第12节（开头事件密度） | `references/hooks-chapter.md`（开篇钩子类型）· `references/hooks-paragraph.md`（段钩密度） |\n| 格式与节奏 | **`references/short-format.md`**（短篇正文格式，两平台模板） | `references/short-craft.md`（情绪直接写+后接具体反应/三维度揉进/疏密）· `references/writing-workflow.md`（设计/精修工作流） |\n| 对话 | **`references/dialogue-mastery.md`**（对话技法主文件：差异化/潜台词/对话节奏） | `references/short-craft.md`（三类台词与对话权力博弈）· 各 `genre-styles/` 包的真实金句库 |\n| 去AI味 | **`references/short-deslop.md`**（短篇专属：只杀真·AI腔，不杀情绪烈度/审判句/火葬场预告） | `references/banned-words.md`（禁用词扫描）· `scripts/check-ai-patterns.js`（AI句式复扫）· `references/quality-checklist.md`（成稿检查） |\n\n---\n\n## 语言\n\n- 跟随用户的语言回复，用户用什么语言就用什么语言回复\n- 中文回复遵循《中文文案排版指北》","author":"@worldwonderer","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/worldwonderer/oh-story-claudecode/tree/main/skills/story-short-write","license":"MIT","category":"writing","lang":"multi","tokens":10794,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/banned-words.md","size":9689,"sha256":"0c2cfc7f8236a4976bd06d99124fe60c15641769b67b9ee15f99f12a06b6ae3e"},{"path":"references/cross-book-recall.md","size":5043,"sha256":"725305f1a46133354d05cb0ef36f94cf04c0ac32fa136970692362578ea86ebc"},{"path":"references/dialogue-mastery.md","size":11327,"sha256":"b539a561872e2563316c33b300016a8f0150afba02a9dc33471010e3e81cc754"},{"path":"references/emotional-methods.md","size":7690,"sha256":"db0ff9f07c3b8ebcec12f9fe498509f489ebfb3a20f4aa74277036380b6db013"},{"path":"references/genre-styles/世情打脸.md","size":16267,"sha256":"bb448b5c734d64f20b5ca74bbf892ecd7d3c71b5eedd3dea6086f45d7abc107c"},{"path":"references/genre-styles/双男主.md","size":12475,"sha256":"0c9888650ca8c99385c7094b1a67471f51185e7c0188d7f4583d72dd67b793ce"},{"path":"references/genre-styles/复仇打脸.md","size":14606,"sha256":"317ea0132987674c9897fedb5c2a17e9db1785d443e11eefa2dfe81214016748"},{"path":"references/genre-styles/宅斗宫斗.md","size":15379,"sha256":"65d21b3197d8bad0783ed1c511a6162983f1b9b23b6733f9b4da30c342a483df"},{"path":"references/genre-styles/总裁豪门.md","size":17114,"sha256":"16d689085da3fcea91f026db29b3361113b121389c5b89fa759ff108f8e4fe66"},{"path":"references/genre-styles/悬疑.md","size":13436,"sha256":"10443bdd95ead8d9ba42fbd8344d717e4af197473f4cdfeb72820d917c076ef0"},{"path":"references/genre-styles/民俗怪谈.md","size":12759,"sha256":"fe3bdb58a9b14cc8e00f1e1942a7516f594c803a3affeae7aef7ab3d469be74b"},{"path":"references/genre-styles/沙雕脑洞.md","size":14297,"sha256":"edb5b6ebf4a41b2c49b706fe523de97d9f5bd3ccbb64f989acc92f3a6fbae2eb"},{"path":"references/genre-styles/甜宠.md","size":11558,"sha256":"bfdb2c9fe1895844ddb4c09358b9ec217b96471ae8dd0750055cc6836e1628ac"},{"path":"references/genre-styles/追妻火葬场.md","size":15658,"sha256":"f7b58e216079742f731937b02c34c8890a64f23f8bafe05c2781a786e9687cb1"},{"path":"references/genre-writing-formulas.md","size":21340,"sha256":"1b0681918f972b79b75e0050938e3839d0cae94b26ba47756bc246eddd417264"},{"path":"references/genre-writing-techniques.md","size":22196,"sha256":"7a0ba60836fd7b647eeb0ac742c6d58b5c5ed3ea562fb039c81e53c8d239b766"},{"path":"references/hooks-chapter.md","size":8632,"sha256":"8f931ef9ff06f1958da40d683c9d3788ffda8d1136964a2305c5ce23316c3679"},{"path":"references/hooks-paragraph.md","size":6848,"sha256":"947932cc322c580ffb695d094170f094d215858f8b745d7cb5c5d6cd9f52d222"},{"path":"references/hooks-suspense.md","size":15308,"sha256":"4a6717e46fb7f0557212e7bdee1d4ad30aac6cbc33ca86ff013ea804240efd69"},{"path":"references/output-contract.md","size":9088,"sha256":"f38f510cef105f51ec5da65fb099a6c0f10bd6af99ed6f51d233189a83a74c46"},{"path":"references/quality-checklist.md","size":9523,"sha256":"4f0a1cea6182cb7b00711a600098d9a869cb302aa0bbd221fc00fc04c2086576"},{"path":"references/reversal-toolkit.md","size":15406,"sha256":"6927d730da58765a38450aee34554248267f0fece58a90cffe13d57b5fb36e54"},{"path":"references/short-craft.md","size":13345,"sha256":"0a1d1d9c926364d980fc718594b620d015b5117d1a8b60efad5620d39f9ca0d9"},{"path":"references/short-deslop.md","size":8532,"sha256":"90128cd60d077334300ac355fa2c628682b187a2c0bd4687963f09110b6f6d92"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":[]}}