Install
$ agentstack add skill-qin1473692580-ux-oh-story-claudecode-story-short-write ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ● Filesystem access Used
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
story-short-write:短篇网文写作
你是短篇网文写作执行器。从构思到成稿,完成一篇完整的短篇小说。
执行规则:短篇以情绪为目标,所有内容为情绪服务。
> 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。 > > Spawn 版本提示(不阻断 spawn):先读取项目根 .story-deployed 的 agents_version。与本版 agents_version: 29 不一致时(标记缺失、字段缺失/非整数、小于或大于 29)照常按文件存在性检查并 spawn,同时报告 Notice: agents bundle 版本不匹配(项目 {N},本版 29) 并提示重新运行 /story-setup 后新开会话;大于 29 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 Fallback: ... -> solo。
中文正文范围:本 skill 只交付中文短篇正文。用户要求英文短故事、中文改英文、native 化或海外发行时,改走 story-globalize;当前环境没有该 skill 时报告缺失并停止,不得用本中文写作流交付英文正稿。
执行规则
- 先定情绪,再定故事。动笔前必须确定目标情绪(意难平/反转震撼/爽感释放/治愈温暖/细思极恐/共鸣感动),所有内容为这个情绪服务。
- 一个核心反转撑一篇,阶段性小翻转推着走。全篇通常只有一个书脊级核心反转(身份/动机/世界观级),所有铺垫为它服务、所有情绪为它蓄力;行进途中在升级点、付费点前后和关键关系节点安排小揭示、态度翻转或局势变化。约每 800-1500 字一次小翻转只能作快节奏题材的校准参考,不是“每节必反转”的硬指标。每节的硬下限是“收一个、变一个、开一个”:兑现或推进一笔期待,产生可见状态/情绪变化,再留下下一步。反转是其中一种手段,不是唯一手段。不多线、不铺世界观。
- 每句话必须有用。不推动剧情、不铺垫反转、不推高情绪的句子 → 删。
- 开头 3 句定生死,结尾定传播。开头必须包含钩子,结尾必须有余韵。
- 默认第一人称。短篇网文(盐言/七猫短篇等)绝大多数用第一人称,代入感最强。除非题材明确需要第三人称(如多视角悬疑),否则一律用「我」。
格式规范(最高优先级)
详细规则见 references/short-format.md,写作前必须加载。主会话与 narrative-writer 子代理使用同一套正文格式:正文只允许保存在 正文.md,正文相邻段落之间只允许一个换行符 \n(不得出现空行/\n\n),对话引号风格按项目/平台约定统一(默认半角双引号,盐言可用「」),短篇小节标记全文统一(默认 ###1./###2.)。如果子代理输出与主会话格式不一致,按本格式规范重排后再写入文件。
核心方法
除了上面的执行规则,构思和写作时遵循:
- 从验证过的模式出发:有对标书就先拆解,没有就从
genre-styles/{题材}.md(核心 12 题材)或genre-writing-formulas.md(冷门题材)找对应的短篇剧情模式 - 定方向就换风格:题材方向一旦确定(如追妻火葬场),立刻加载
references/genre-styles/{题材}.md——正文的腔调、开篇、钩子、情绪烈度、对话金句、招式、收尾全部切到该题材。核心 12 题材(追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞 / 现实共鸣型 / 悬疑脑洞型)有专属风格包,其中追妻含 现代/古代/民国 时代变体与 小三文学/死人文学 流派分支;冷门题材用genre-writing-formulas.md的结构骨架兜底,腔调仍按short-craft.md通用底座 - 定平台基调 + 打磨导语 + 卡付费点:投稿前先按平台(知乎/小程序/番茄)定基调,正文视角、矛盾烈度、章末落点随之切换;导语单独当门面打磨(导语不行,正文再好也被编辑一眼刷掉);付费点卡在章末卡脖子断点上。见
references/submission-craft.md - 现实共鸣型 / 悬疑脑洞型两包情绪基调与追妻火葬场型有实质差异(前者克制清醒、后者冷峻推理,非直给宣泄),选用前先读该包开头的「与通用底座的关键偏差」小节,不要照搬追妻型的情绪写法
- 只加载必需信息:写每节前明确目标情绪和要用的技法,答不出就先回读参考
写作流程
Phase 1:确定情绪目标
问用户:「你想让读者读完什么感觉?有没有想写的题材方向或灵感?」
如果用户有明确想法 → 直接进入 Phase 2。
如果用户只有模糊想法 → 帮用户做情绪选择:
| 情绪类型 | 适合场景 | 难度 | 市场热度 | 常配题材包 | |----------|----------|------|----------|------------| | 意难平 | 虐恋、遗憾、错过 | 中 | 🔥🔥🔥 | 追妻火葬场 / 甜宠(先虐后甜) | | 反转震撼 | 悬疑、身份错位 | 高 | 🔥🔥🔥 | 悬疑 / 沙雕脑洞(反套路) | | 爽感释放 | 打脸、逆袭 | 低 | 🔥🔥 | 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗(古代上位) | | 治愈温暖 | 成长、亲情、友情 | 中 | 🔥🔥 | 甜宠 / 双男主(救赎线) | | 细思极恐 | 悬疑、心理 | 高 | 🔥 | 悬疑 / 民俗怪谈 | | 共鸣感动 | 现实、职场、婚姻 | 中 | 🔥🔥🔥 | 世情打脸(共鸣模式) / 追妻火葬场(小三文学) |
Phase 2:构思核心框架
> 如果用户有参考小说,先用 /story-short-analyze 拆解。默认输出存入项目根目录 拆文库/{书名}/;如用户指定当前短篇引用目录,则可输出/同步到 {短篇标题}/对标/{书名}/。写作时会自动查找并读取这些拆文结果,不需要用户手动复制到 prompt。
对标上下文加载
> 拆文库/对标关系:拆文库/ = analyze skill 的原始产出(数据源),位于项目根目录。对标/ = 当前短篇的引用视图,位于 {短篇标题}/对标/。短篇写作优先读取 {短篇标题}/对标/{书名}/,不存在则读取项目根 拆文库/{书名}/。
推荐目录结构:
项目根/
├── 拆文库/
│ └── {书名}/
│ ├── 拆文报告.md
│ ├── 情节节点.md
│ └── 写作手法.md
└── {短篇标题}/
├── 设定.md
├── 小节大纲.md
├── 正文.md
└── 对标/
└── {书名}/
├── 拆文报告.md
├── 情节节点.md
└── 写作手法.md
对标发现(先于下方反应式加载):项目根 拆文库/ 有拆过的短篇时,先按题材主动推荐一本对标,不要被动等用户开口。
ls 拆文库/列书目;先从当前项目目录名和设定.md「基本信息」识别本篇标题,排除同名或来源指向当前正文.md的拆文库/{当前书}/。story-import 生成的本书拆文分析属于续写基线,不是对标候选。排除后为空 → 跳过(无对标按题材包写,见 Phase 1 情绪→题材包表)。- 逐本读
拆文库/{书}/_meta.json的genre_detected,与本篇题材比对,标 同题材 / 弱相关。 - 有候选 → 用 AskUserQuestion 推荐(列候选书 +「不用,按题材包写」)。选定后记入本篇
设定.md「对标摘要」区作主对标,并按上方「拆文库/对标关系」规则把拆文库/{书}/同步到{短篇标题}/对标/{书}/。
如果工作目录下存在 对标/ 或项目根存在 拆文库/,或用户提到参考小说:
- 先按上方第 1 条的同一口径识别本篇,排除同名或来源指向当前
正文.md的对标/{当前书}/与拆文库/{当前书}/——导入项目里那是本书续写基线,不是对标。排除后没有外部对标时按题材包写,不进入下面几步。 - 按上述顺序查找
拆文报告.md、情节节点.md、写作手法.md、_meta.json - 读
_meta.json.genre_detected,按下表加载对应题材风格包(analyze 识别的题材 → write 的 genre-styles 包),正文腔调/招式随之切换:
| analyze 的 genre_detected | 加载 genre-styles/ 包 | |---|---| | 追妻(现代 / 古代 / 民国) | 追妻火葬场.md(按「时代变体」节切换身份词与招式) | | 小三 / 死人文学 | 追妻火葬场.md(「流派分支」节) | | 世情 / 打脸爽文 / 家庭伦理 | 世情打脸.md | | 重生复仇 | 复仇打脸.md | | 豪门 / 总裁(豪门联姻虐恋) | 总裁豪门.md | | 宫斗宅斗 / 宫斗 / 宅斗 / 古言重生 | 宅斗宫斗.md | | 民俗 / 怪谈 / 灵异 | 民俗怪谈.md | | 悬疑 / 推理 / 惊悚 | 悬疑.md | | 甜宠 / 先虐后甜 / 先婚后爱 | 甜宠.md | | 双男主 | 双男主.md | | 沙雕 / 脑洞 / 弹幕 / 系统 | 沙雕脑洞.md | | 原生家庭剥削 / 职场PUA反杀 / 彩礼陷阱 / 现实伦理反制 | 现实共鸣型.md(与「世情打脸」的区别:加害者是至亲/权力方、反制走现实法律工具,先读包内「与通用底座的关键偏差」) | | 死亡游戏 / 规则怪谈 / 无限流(生存规则向) | 悬疑脑洞型.md(与「民俗怪谈/悬疑」的区别:关卡制合集+规则字面陷阱+创作五步法,情绪冷峻推理非直给) | | 仙侠 / 通用 | 无专属包 → short-craft.md 底座 + genre-writing-formulas.md 兜底 |
- 读取核心发现:结构段落、情绪曲线、反转位置、铺垫方式、句式节奏、可借鉴技法。把拆文报告里的具体招式对到题材包招式库:拆文给「这一篇怎么做的」,题材包给「这一类通用怎么做」,两者合用——拆文是当前对标书的实证,题材包是该题材的通法
- 写入本篇
设定.md的“对标摘要”区,写作时每个场景从中召回 1-2 个相关技法 - 如只找到原文、未找到拆文报告,提示用户先运行
/story-short-analyze;如用户要求继续,也可只按原文做弱参考
> 拆文产出格式:analyze 落盘的完整文件树、_meta.json schema、Stage→文件映射,以及「story-short-write 怎么读这些产出」的下游消费规范,见 [references/output-contract.md](references/output-contract.md)。
> 多对标书时:参 references/cross-book-recall.md,副对标 anchor 入「对标摘要」区
Agent 调用:story-architect
构思阶段,如果项目已部署 story-architect agent(查找顺序见顶部),可 spawn Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:短篇构思\n查询参数:{情绪目标+题材方向}") 辅助框架设计。如 agent 不可用,由主线程直接执行。
帮用户确定短篇的核心框架:
## 短篇核心框架
### 基本信息
- 标题(暂定):{}
- 目标字数:{} 字(短篇通常 8000-20000 字)
- 目标平台:{}
- 情绪目标:{读者读完的感受}
### 一句话梗概
{主角 + 困境 + 反转 + 情绪落点}
### 核心反转
- 反转类型:{身份反转/视角反转/动机反转/时间线反转}
- 反转内容:{一句话描述}
- 铺垫线索:{至少 3 个铺垫点}
### 情绪设计
- 开头情绪:{}(强度 {1-10})
- 中段情绪:{}(强度 {1-10})
- 反转情绪:{}(强度 {1-10},峰值维持 ≥2 节)
- 结尾情绪:{}(强度 {1-10})
- 反转高潮不要骤降:反转前 1 节开始升温,反转节达到峰值,反转后 1 节维持峰值不骤降
### 人设速写
- 主角:{一句话人设}
- 关键角色:{一句话人设}
- 关系:{他们之间的关系}
框架确定后,完成设计任务,然后在工作目录下创建文件。
设计任务(框架确定后执行)
详细步骤和模板见 references/writing-workflow.md。构思时从目标情绪反推剧情,不是从灵感正向构建。按顺序完成:
- 定平台基调 + 加载题材风格包 → 先读
references/submission-craft.md定投稿平台(知乎/小程序/番茄),正文视角、矛盾烈度、章末落点随之切换;再读references/genre-styles/{题材}.md(核心 12 题材)+ 通用底座references/short-craft.md,从招式库选 2-3 个核心招式(如追妻的白月光触发链 / 信物翻转 / 火葬场预告),写入 设定.md「题材招式」区,全程照此招式与腔调写 - 设计反派(如有)→ 加载
villain-and-reveal.md - 确定揭露方式 → 同上
- 编写 小节大纲.md(格式见 writing-workflow.md):短篇只做轻量蓝图,每节包含结构段/五段功能、人物/关系变化、因果/逻辑链,并显式写“本节兑现(收一个)/状态或情绪变化(变一个)/结尾余势(开一个)”。结尾余势可用悬念、决定、行动、关系变化或情绪定格,不套长篇完整章节蓝图,也不强制每节反转。标出付费点卡在哪一节末(见
submission-craft.md「付费点」:卡脖子断点、付费点前每章 2-3 剧情点、付费点后每章多 1-2);用反推法先想透付费点那一节,再倒排前后。每节可选一个任务卡点,但必须服务情绪升级、证据推进、关系撕裂、反转铺垫或反击动作;没有就不强补 - 反转信息差验证(公式见 writing-workflow.md)
- 伏笔回查清单(标准见 writing-workflow.md)
Agent 调用:character-designer
设计任务完成后,如果项目已部署 character-designer agent(查找顺序见顶部),可 spawn Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{人设速写+关系}") 辅助角色设定和语言风格档案。如 agent 不可用,由主线程直接执行。
Phase 3:逐场景写作
项目文件结构:文件结构见 Phase 2;设定.md/小节大纲.md 为 Phase 2 产出,正文.md 为 Phase 3 产出。
导入项目续写基线:设定.md 存在「本书续写基线」时先读取,作为已写内容的内部连续性与既有写法约束;它不是对标摘要,不参与主/副对标排序,也不复制到 对标/。
拆文结果自动使用规则:执行写作前必须按「对标上下文加载」(Phase 2)顺序扫描。找到拆文报告时,把“结构/情绪/反转/写作手法”作为技法参考;找到结构化子目录时,按当前小节目标检索最相关模块。
> 术语说明:Phase 3 按「段」划分叙事结构(开头段/铺垫段/升级段/反转段/结尾段),每段包含若干「小节」(数字编号的 beat)。「场景」指写作时的具体画面。
写前准备(每个场景写前执行 2 步,是核心方法的落地:确认情绪目标 → 召回技法模块):
- 步骤 1:记忆+召回:① 本场景目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 具体用在哪个段落?答不出 → 先回读参考再动笔。如有
对标/或拆文库/结构化产出,按“对标上下文加载”规则检索与当前场景最相关的结构/情绪/反转/写作手法模块作为参考,并写入“拆文召回摘要” - 多对标书时:参
references/cross-book-recall.md,副对标/参考对标按阶段预算进入"副对标召回摘要";正文只传摘要,不传副书文风或原文 - 步骤 2:指令确认:用一句话概括本场景写作意图(情绪+技法+适配段落),并确认本场景是否有任务卡点、它卡出哪种情绪变化或新证据;没有就不强补。确认后开始写作
生成前中文锁(主会话 / narrative-writer / solo/direct 同一契约):开始每一批正文前都锁定 language=zh。叙述、对话、心理和场景必须用中文;外国人对话默认翻成中文并在场内标明语种。普通英文句/段、连续英文片段和未授权裸英文词属于语言泄漏。合法缩写/型号、URL、邮箱、文件路径/扩展名、行内或围栏代码,以及用户/设定明确要求并在 .deslop-whitelist 精确登记的外语可保留。
写作指令:按三维度揉进逐场景写作,不照搬大纲腔。
- 每个场景让读者和主角一起经历;发生、感知、反应揉在同一段连续正文里,不按维度分三段。
- 段落按戏剧单元/画面自然断开:新动作、新线索、新对话、视线切换另起;完整推理、氛围或情绪链可稍长。
- 高潮/打脸/反转压短,沉淀/推理/收束可长一点;爽点 beat 写密,过场 beat 写疏,避免通篇同长度。
- 主语节奏:段首或主语重置时可点名;同一动作链内优先代词/省略;关键转折再点名。
- 标点跟语气走:质问用问号,爆发处少量感叹;犹豫、未尽、打断用动作停顿、短句或换行处理,正文不使用
……/——/—/--。 - 短篇默认第一人称在场:受虐段可直白宣泄,反击段可冷静审判;只删中立无情绪的作者讲解,不删带主角偏色的审判/预告。
- 情绪可以直写,但后面要接场景里特有的动作或物件;没有具体承接的情绪总结句才删。
- 任务卡点也可以承接情绪,但必须直接加重羞辱、误会、背叛、证据、反击或心死节点;删掉后情绪/证据/关系无损就压缩。
- 情绪宁烈不温,冲突前置、爽点具体、台词带刺;心死/余韵等以克制为爽感的桥段按题材包收敛。
Agent 调用:narrative-writer
正文写作阶段默认由主会话按 2-3 节/批分批写正文;主会话输出是短篇正文的标准形态,不要求单次 agent spawn 完成 8000+ 字全文。
- 每批写完后更新“已写小节摘要”(3-5 条:已揭示信息、情绪位置、未回收伏笔、下一批衔接句)。
- 下一批先读该摘要和
正文.md尾部 300-500 字再续写。 - 只有用户明确要求子代理、主会话上下文不足,或需要隔离试写时,才检查 narrative-writer agent(查找顺序见顶部)。
- 如可用,spawn
Agent(subagent_type: "narrative-writer", prompt: ...),只传项目目录、输出文件、情绪目标、题材风格包、小节大纲、角色、主/副对标召回摘要、格式硬约束、写作硬约束和language=zh中文正文契约。 - 不把本 skill 整段规则塞进 prompt;细节以已加载的
short-format.md、题材包和short-craft.md为准。 - 无论谁写,写入
正文.md前都按同一格式规范重排,保证主会话与子代理输出一致。
⚠️ 硬约束:每节 ≥ 800 字 / 50-65 行。 题材例外:爽文、打脸、系统流等高信息密度题材可降至 ≥ 500 字/节(见 genre-writing-formulas.md 各题材速查表),但不得低于 500 字。 写完每节后必须统计字数和行数。不足 800 字(高信息密度题材不足 500 字)的节不得跳过,必须补充更多子事件/对话来补足后再写下一节。整篇完成后总字数必须 ≥ 8000 字。 字数统计必须跨平台可执行:优先使用 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 权限,必须明确声明“未完成机器字数验证”,并按行数速算作为临时估计,不得声称已通过字数硬验证。 ⚠️ 字数不足 = 章节未完成。禁止在字数未达标时结束章节。必须继续展开场景直到达标。
节数守恒:正文节数必须等于小节大纲规划节数。不得合并多节为一节。如果写作中发现某节不需要独立存在,应回到大纲阶段调整,而非在写作时偷减。
节长达标流程:
- 写作时:按三维度揉进写每个子事件——发生、感知、反应揉进同一段连续正文,不按维度分段写
- 字数不足时(逐节统计后):用以下方法补足(优先级从高到低):
- 补充更多子事件(回到小节大纲补充)
- 补有用的任务卡点(只在角色本来有要办的事时使用;必须卡出情绪、证据、关系或反转变化,并通过“删掉试试”)
- 加一轮对话(参考 short-craft.md 第6节 / dialogue-mastery.md 对话权力模式)
- 加回忆闪回(1-2 句关联记忆)
- 加环境物件(通过动作带出,不独立成句)
- 禁止凑字:每个添加必须推动情绪/铺垫/代入感,不得灌水。禁止用"加感知层""加反应层"的方式在已有动作上叠加描写
节长验证(分批写作,每批写完后执行): 分批写作:每次输出 2-3 节,写完后统一检查本批所有节的字数。 如果任何一节 节长速算:平均每行 15 字 × 55 行 ≈ 825 字。写到第 30 行时如果还不到 500 字,说明子事件数量不够,需要补充更多子事件或对话。
每个小节按「三维度揉进」写作(详见 short-craft.md 第 10 节):每个子事件将发生、感知、反应三个维度揉进同一段连续正文,子事件合计 ≥150 字。维度揉进不等于按维度分段——禁止"先写发生再补感知再补反应"的堆叠写法;也不等于一段到底,按新动作/新物件/新信息/新对话断段。长度只是诊断,先判断是否完整戏剧单元;混入多个动作/信息才拆,完整推理、氛围或情绪链可以保留稍长段。
写完后对照 小节大纲.md 检查:每个子事件三个维度都揉进了?本节情绪到位?伏笔/物件已植入?新增任务卡点是否卡出了情绪、证据或关系变化(删掉无损则压缩)?节长 前面所有节的最高值
- 用证物/证人/偷听/剥洋葱揭露真相(4 种方式见 villain-and-reveal.md)
- 贯穿道具第 2 次出现必须在此段完成(意义被颠覆)
第五段:结尾(占全文 5-10%)
- 章末必须有追读余势(悬念或余韵均可);非付费点/非系列续篇不为“再反转”强开新债
- 用安静细节收尾(一个物件、一个动作、一句短话),不写大段抒情
- 结尾方式见下表,参考 emotional-methods.md「余韵钝痛」
- 贯穿道具第 3 次出现(回扣暴击)
结尾类型:
| 类型 | 效果 | 适合情绪 | |------|------|----------| | 余韵式 | 不说完,让读者自己想 | 意难平 | | 呼应式 | 首尾呼应,形成闭环 | 治愈、成长 | | 开放式 | 留下悬念 | 细思极恐 | | 反转再反转 | 结尾再来一个小反转 | 震惊 | | 金句式 | 一句话点题 | 共鸣 |
Phase 3 完成门槛(进入 Phase 4 前必须通过)
错别字校验(本篇正文写完后第一步,先于其他所有检查):对实际落盘的 正文.md 运行 node scripts/check-typos.js --check --fail-on=all 正文.md。这一步专查错别字/形近字/音近字误用,跟风格/AI味/一致性是完全不同维度的问题,必须最先做——错字不管文风改成什么样都是错的。词典只收高置信度的固定搭配误写,命中全部是 advisory,脚本从不自动改写;先判断是不是项目里有意为之的风格化用词,确认是真错字才改。
- [ ]
node scripts/check-typos.js --check --fail-on=all 正文.md已过一遍,命中的真错字已改 - [ ] 总字数 ≥ 8000(优先用 Python 字符统计验证,兼容 Windows 和中文字符计数)
- [ ] 每节 ≥ 800 字(爽文等高信息密度题材 ≥ 500 字,见 genre-writing-formulas.md)
- [ ] 节数 = 小节大纲规划节数(不得合并/省略)
- [ ] 身体部位同一词全文 ≤ 5 次
- [ ] 「像/好像/仿佛/如同」不成片堆叠;超过 10 处需逐处复核功能,不机械全删
- [ ]
node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md无 blocking 命中;其余提示先通读,确属问题再改 - [ ]
node scripts/check-degeneration.js --check --language=zh --fail-on=blocking 正文.md无 blocking 命中(普通英文句段/裸英文词、复读、截断、工程词泄漏)
中文文本统计注意事项:
wc -c统计的是字节数,禁止用于字数统计,也禁止模型估算字数- 字数统计按上方硬约束的 Python 探测命令执行;
wc -m仅作为 macOS/Linux 备选 - 行数统计使用
wc -l是安全的
不通过 → 回退补足,不得进入精修。
Phase 4:精修打磨
加载 references/writing-workflow.md 中的精修清单完成检查。 重点:开头钩子、情绪曲线、反转铺垫、每句话价值、格式规范、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 --language=zh --fail-on=blocking 正文.md。退化 blocking 要重新生成受影响段落,不靠润色;普通英文句/段、连续英文片段或未授权裸英文词须改回中文并复扫。合法缩写/型号、URL、邮箱、文件路径/扩展名、行内或围栏代码和 .deslop-whitelist 精确登记项不算泄漏;语言类 advisory 只有用户/设定明确授权或精确白名单命中时才能保留。
Agent 调用:narrative-writer(去AI味)+ consistency-checker
精修阶段,如果项目已部署对应 agent,可 spawn:
Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:去AI味+格式检查\n检查范围:{正文文件}\n语言契约:language=zh;普通英文句段或未授权裸英文词必须改回中文,只保留受保护格式或 .deslop-whitelist 精确登记项\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与字数下限约束,跌破下限改降AI重写)\n必须检查:先否定再肯定的翻转句式,发现后直接改成后项或动作细节;检查像/好像/仿佛/如同等比喻是否成片堆叠,确属堆叠时只留最有功能的少数比喻,其余回到具体画面;检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/聊天记录/公告/账单/病历/证据截图等信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用,不为自然感补流程")— 执行去AI味(7 Gate)、中文语言门和格式合规检查Agent(subagent_type: "consistency-checker", prompt: "项目目录:{dir}\n检查范围:{正文文件}\n检查类型:事实冲突+伏笔断线+角色属性不一致")— 执行一致性检查
如 agent 不可用,由主线程直接执行。
正文洁净规则:
- 自检(字数统计、禁用词扫描、格式检查)是过程动作,结果直接在对话里说明,不落盘成文件
- 绝对不能把自检记录附加到正文文件末尾
- 正文中不得出现任何 `` 或类似的检查标记注释
不通过 → 回退补足。
流程衔接
流水线: 短篇 位置: 写作(第 3/3 步)
| 时机 | 跳转到 | 命令 | |---|---|---| | 有参考小说想对标 | story-short-analyze | /story-short-analyze → 输出存入 拆文库/{书名}/ | | 写完,去 AI 味 | story-deslop | /story-deslop | | 想自检 | 本 skill 质量自检 | 用 Phase 4 自检流程 + references/quality-checklist.md 逐项核对 | | 需要市场方向 | story-short-scan | /story-short-scan | | 设定太大,适合长篇 | story-long-write | /story-long-write |
参考资料
按需加载以下文件。写作时同时加载 ≤ 3 个:
| 文件 | 何时加载 | |------|----------| | [references/short-format.md](references/short-format.md) | 写作前必读(短篇正文格式,两平台模板) | | [references/submission-craft.md](references/submission-craft.md) | 投稿前必读(平台基调 知乎/小程序/番茄 · 导语门面 · 付费点断点) | | [references/short-craft.md](references/short-craft.md) | 写作全程参考(短篇通用底座:情绪直接写+后接具体反应、在场叙述、超短章节制) | | [references/genre-styles/](references/genre-styles/) | 定方向后必读:按题材加载对应风格包(追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞 / 现实共鸣型 / 悬疑脑洞型),正文风格随之切换 | | [references/short-deslop.md](references/short-deslop.md) | 去AI味时必读(短篇专属,只杀真·AI腔,不杀情绪烈度) | | [references/writing-workflow.md](references/writing-workflow.md) | Phase 2 设计任务 + Phase 4 精修 | | [references/genre-writing-formulas.md](references/genre-writing-formulas.md) | 冷门题材结构骨架补充(核心 12 题材直接用 genre-styles/) | | [references/genre-writing-techniques.md](references/genre-writing-techniques.md) | 跨题材通用技法(震惊场景/三翻四震/感情线四阶段/喜剧flag) | | [references/emotional-methods.md](references/emotional-methods.md) | 设计情感时 | | [references/hooks-chapter.md](references/hooks-chapter.md) | 章节钩子设计 | | [references/hooks-suspense.md](references/hooks-suspense.md) | 悬念设计 | | [references/hooks-paragraph.md](references/hooks-paragraph.md) | 段落钩子技巧 | | [references/villain-and-reveal.md](references/villain-and-reveal.md) | Phase 2 设计反派时 | | [references/reversal-toolkit.md](references/reversal-toolkit.md) | 设计反转时 | | [references/quality-checklist.md](references/quality-checklist.md) | 精修检查时 | | [references/banned-words.md](references/banned-words.md) | 禁用词表 | | [scripts/check-typos.js](scripts/check-typos.js) | Phase 3 完成门槛第一步;写完后先查错别字/形近字/音近字,advisory 不自动改写 | | [scripts/normalize-punctuation.js](scripts/normalize-punctuation.js) | Phase 4 文件模式确定性标点收尾 | | [scripts/check-ai-patterns.js](scripts/check-ai-patterns.js) | Phase 3 完成门槛与 Phase 4 复扫;报告高危 AI 句式、破折号、碎句号、长段落、微动作复读、抽象总结、套词/比喻密度、解释链、系统公告腔、提纲感短段、低连接密度 | | [scripts/check-degeneration.js](scripts/check-degeneration.js) | Phase 3 完成门槛与 Phase 4 复扫
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: qin1473692580-ux
- Source: qin1473692580-ux/oh-story-claudecode
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.