story skill
网络小说工具箱主入口。根据用户需求自动路由到对应 skill,并可管理作者习惯、启动本地 Dashboard。触发方式:/story、$story、/story dashboard、/网文、「我想写小说」「记住我的写作习惯」「打开工作台」「检查更新」。
Is the story skill safe?
Clean: nothing in its files matched our rules. We read 10 files in the folder on 2026-09-28.
No findings.
Install the story skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/zenstory-ai/oh-story-claudecode.git /tmp/oh-story-claudecode mkdir -p ~/.claude/skills cp -r /tmp/oh-story-claudecode/skills/story ~/.claude/skills/story
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
story:网文工具箱路由
你是网文工具箱的路由入口。用户的请求模糊时由你分发到具体 skill。
路由表
Codex CLI 中优先使用 $story- 或 /skills 触发;Claude Code / OpenCode 继续使用 /story-;Antigravity 可在 /skills 中选择或用自然语言点名;OpenClaw 可用 /skill story-* 或自然语言点名 skill。下表以 slash command 展示,Codex 可将 /story-long-write 等价替换为 $story-long-write,OpenClaw 可将其等价替换为 /skill story-long-write。
裸调用与新手
只说 /story、看不出意图时,不贴路由表,给四个白话选项:「开一本长篇或接着写」→ /story-long-write;「写一篇短篇」→ /story-short-write;「把一章改得不那么 AI」→ /story-deslop;「更多(拆书、扫榜、导入旧稿、审稿、封面)」→ 再列进阶项。还没部署过(项目根没有 .story-deployed)时先建议 /story-setup。
导入续写顺序
用户问"导入续写先 setup 还是 import"时,直接回答:推荐先 /story-setup,新开/刷新会话后 /story-import,最后 /story-long-write 日更 或 /story-long-write 写第N章。如果用户已经直接触发 /story-import,按 story-import 自带环境检测继续:未 setup 时让用户选择先去 setup 或继续串行导入。
作者记忆
用户要求记住、查看、确认、替换或忘掉作者习惯时,加载 references/author-memory.md,并只用本 skill 的 scripts/authormemorycommit.py 管理两级 .story/作者记忆/:全局、题材、流程条目在工作区(AP),本书条目在书目录(BP,传 --book-root)。常用变更走单事件 record;工具未返回 ok: true 和 Author Memory Receipt 前,不得声称已记住。告诉作者时先用一句人话说记住了什么(如「记住了:这本书的对话一律用「」」),回执放最后一行,写法见协议「回执怎么告诉作者」。显示画像或待确认项是只读操作;不存在时直接说明尚未建立。
新增习惯必须保留用户原话和适用范围。一次性要求只执行不记录;小说事实写入本书设定/追踪;不从反复修改或成稿推断偏好,只记作者明确说的,原话范围含糊才进待确认;与已生效习惯冲突时显式 replace,不原地改写历史。作者说「整理作者记忆」、回执提示习惯攒得太多、工具报单书布局错误,或项目级画像里还有「本书:」条目(建议对该书运行 migrate --book-root)时,再加载 references/author-memory-maintenance.md。用户没有指定工作区时,按协议定位已有作者记忆的最近祖先或当前创作工作区,禁止默认写到用户主目录。
Dashboard 工作台
用户执行 /story dashboard(Codex 为 $story dashboard),或明确说“打开工作台 / 看项目 文件”时,直接启动随本 skill 分发的本地 Dashboard,不再转发到其他 skill:
全局 skill 路径或用户主目录。
- 把当前工作目录作为默认工作区;用户明确给出目录时改用该目录。目录必须存在。
- 从当前已加载的 story skill 目录定位 scripts/dashboard-server.mjs,不要硬编码仓库路径、
- 检查 node 可用后,以长运行进程执行:
node "<story-skill-dir>/scripts/dashboard-server.mjs" --root "<workspace>" --open无法自动拉起浏览器不算失败,仍返回可点击 URL。
- 等待输出出现“本机地址”,把完整 URL 回给用户。工具支持后台进程/PTY 时让服务保持运行;
局域网或公网。
- Dashboard 默认只监听 127.0.0.1。不要主动增加 --allow-network,不要把工作区暴露到
工作台会识别标准 拆文库/{书名}/,兼容存量 拆文库-{书名}/。写作项目识别同时支持:
- 长篇目录结构:目录内含 正文/、大纲/、设定/ 或 追踪/ 任一普通子目录。
- 短篇单文件结构:目录内含普通文件 正文.md,并同时含 小节大纲.md 或 设定.md。
符号链接不作为项目标记,只有单个 正文.md 的普通资料目录也不会被误认。浏览器可编辑 .md、.txt、.json、.yaml、.yml、.toml,保存或确认删除前用修改时间防止 误操作外部更新。
停止服务时终止对应的 Node 长运行进程即可。若用户只问用法,不要替他启动;给出 /story dashboard / $story dashboard 两种平台对应入口。
路由流程
- 分析用户请求,提取意图关键词
- 匹配上表,找到对应的 skill
- 如果能明确匹配,直接调用对应 skill(Claude/OpenCode 可用 Skill("skill-name") 或 slash command;Codex 用 $skill-name / /skills;Antigravity 用 /skills 或自然语言点名;OpenClaw 用 /skill skill-name 或自然语言点名)
- 如果无法匹配,询问用户想做什么(从上表中选择)
- 如果用户说"我想写小说"但未指定长篇/短篇,询问篇幅类型后再路由
查询降级
Spawn 版本提示(不阻断 spawn):先读取项目根 .story-deployed 的 agentsversion。与本版 agentsversion: 34 不一致时(标记缺失、字段缺失/非整数、小于或大于 34)照常按文件存在性检查并 spawn,但只检查当前运行时的 canonical 目录;同时报告 Notice: agents bundle 版本不匹配(项目 {N},本版 34) 并提示重新运行 /story-setup 后新开会话;大于 34 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 Fallback: ... -> solo。
「查故事资料」「查资料」走 agent 前先做轻量可用性检查(路由只做这一层,不承担全局部署策略):当前不在子代理上下文、当前运行时的 Agent/Task 或 invokesubagent 工具可用,且对应部署文件存在(Claude .claude/agents/.md、OpenCode .opencode/agents/.md、Codex .codex/agents/.toml、Antigravity .agents/agents/agent-name/agent.md,其中 agent-name 为目标 agent 名)→ 可尝试 spawn。Antigravity 用 invoke_subagent + 同名 TypeName,不得因其他端文件存在而误判。任一不满足,或运行时返回 unknown agent / 未暴露 custom-agent registry,则降级,不硬失败:
- story-explorer 不可用 → 主会话直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前说一句「查资料助手没启用,这次我直接翻项目文件」;项目尚未部署时提示先 /story-setup(Codex 中用 $story-setup)。
- story-researcher 不可用 → 主会话用现有检索/回答能力完成,或提示用户改用 /browser-cdp 采集,同样用一句白话说明。
回答作者时讲故事里的事(谁、在哪章、发生了什么);文件字段名、伏笔/事件编号不单独出现,编号必须跟着故事描述。
项目状态感知
路由前先检查当前项目状态:
- 无项目目录(没有包含 追踪/ 或 设定/ 的书名目录,也没有同时有 正文.md 与 小节大纲.md(或 设定.md)的短篇目录):
- 如果用户要写作,下一步是先运行 /story-setup 初始化环境(Codex 中用 $story-setup)
- 如果用户要扫榜/拆文,直接路由
- 已有项目:检查 .story-deployed 标记,如未部署则先运行 /story-setup(Codex 中用 $story-setup)
多书切换
用户想切换或查看在写的书时(一个项目可同时有多本):
- 在项目根查找所有书目录:包含 追踪/ 或 设定/ 子目录的目录,或同时有 正文.md 与 小节大纲.md(或 设定.md)的目录(含 长篇/、短篇/ 下的子目录)。
- 列出书名,并标出当前 .active-book 指向的那本。
- 让用户选择,把所选书的相对路径写入项目根 .active-book(覆盖原内容)。
- 只发现一本时直接确认为活跃书,无需询问。
版本更新检查
用户问"有没有新版本""检查更新""升级"时执行。只通知,更不更新由用户定,不自动安装。
- 当前版本:读本 skill 同目录的 VERSION 文件;缺失则视为未知。
- 最新版本:优先 gh release view --json tagName,name,url -R zenstory-ai/oh-story-claudecode 取 tagName;无 gh 用 curl -fsS --max-time 5 https://api.github.com/repos/zenstory-ai/oh-story-claudecode/releases/latest 取 .tag_name(jq 或 grep)。查不到 → 告知"暂时拉不到最新版本,可手动看 Releases",不报错。
- 比较:去掉 v 前缀按语义版本比(major.minor.patch)。gh release 默认取 latest 稳定版,不含 pre-release。
- 告知:
- 已最新 → 「已是最新版 vX.Y.Z」。
- 有新版 → 列出 当前 vA → 最新 vB + Releases/CHANGELOG(能拿到 release notes 就附本次要点),再用 AskUserQuestion 问「现在更新吗?」:
- 选更新 → 跑 npx skills add zenstory-ai/oh-story-claudecode -y -g(-g 全局,去掉则只更当前目录);完成后提示:已部署过的项目在项目根重跑 /story-setup(Codex 中用 $story-setup)同步 hooks/agents/references,并新开一个会话让 agents 重新注册。
- 选先不 → 不动,告知随时可再来。
More skills from zenstory-ai/oh-story-claudecode
- Abrowser-cdpUse this skill when you need to control a Chrome browser via CDP (Chrome DevTools Protocol) to reuse existing login sessions. Covers: launching Chrome in debug mode, opening URLs, waiting for page load, evaluating JavaScript, taking snapshots, and extracting auth tokens. Trigger phrases: browser automation, CDP, agent-browser, 浏览器操作, 操作浏览器, Chrome CDP, 复用登录态, extract token from browser.
- Astory-cover小说封面生成。根据书名、作者名自动分析题材风格,调用 GPT-Image-2 生成含标题和署名的专业级网文封面;Codex CLI 优先使用内置 ImageGen,无需单独 API Key。触发方式:/story-cover、/封面、「帮我做个封面」「生成封面图」「做个小说封面」「封面设计」。
- Astory-deslop网文去AI味。检测并清除文本中的AI写作痕迹,让文字回归自然、非模板化。触发方式:/story-deslop、/去AI味、「去AI味」「这篇太AI了」「网文去AI味」。
- Astory-import逆向导入已有小说。将已写好的小说(半成品或完本)反向解析为标准项目目录结构,兼容 story-long-write / story-short-write 后续写作流程;内部复用 story-long-analyze / story-short-analyze 的拆解管道,按篇幅自动分流。触发方式:/story-import、「导入小说」「反向解析」「导入」「把我的书导进来」。
- Astory-long-analyze长篇网文拆文。保留黄金三章、逐章摘要、剧情、情绪、节奏、角色、设定和文风接口,以连续章节块完成因果、双时间线、关系与三维节奏分析;兼容旧成果直接使用、按需增强和断点续跑。含可选三层灵感库管道(灵感库、跨书灵感聚合、更新灵感库)。触发方式:/story-long-analyze、/长篇拆文、「帮我拆这本书」「拆这本书」「分析黄金三章」「深度拆解」「完整拆解」或提供小说文本文件路径。
- Astory-long-scan长篇网文扫榜。分析起点、番茄、晋江等平台排行榜数据,提炼市场趋势与热门题材。触发方式:/story-long-scan、/长篇扫榜、「长篇什么火」「起点排行」。
- Astory-long-write长篇网文规划与写作。支持只讨论结构、只写大纲或指定细纲,明确要求正文后再写章节。触发方式:/story-long-write、/写长篇、「帮我开书」「定设定」「出卷纲」「规划剧情」「写大纲」「补细纲」「日更」「续写」「继续写」「修改第X章」「回炉」「重写第X章」。
- Astory-review多视角对抗式审查。full/lean 模式在已部署 reviewer agents 时并行 spawn;缺失/异常 agents 或 spawn 失败时自动降级 solo,参考文件不可读时使用内置 rubric fallback。触发方式:/story-review、/审查、「审查一下」「帮我审一下」。
- Cstory-setup网文写作工具集基础设施部署与检查。为 Claude Code / OpenCode / Codex / Google Antigravity / ZCode / OpenClaw / Reasonix 提供内置适配;Web AI / 通用 Agent 可走 skills + AGENTS.md 文件模式。触发方式:/story-setup、$story-setup、「准备写书」「帮我搭一下环境」「配置写作项目」「检查写作环境」。
- Astory-short-analyze短篇网文拆文。拆解爆款短篇小说(番茄短篇 / 故事会 / 知乎盐选 / 追妻 / 世情 / 重生 / 虐渣等通俗题材)的故事核、结构、情感线、反转设计、写作手法、共鸣层次。单一全量拆解管道:跑完 Stage 2-6 产出完整拆文报告,落盘到 拆文库/{书名}/,下游 story-short-write 同时读拆文报告 + 情节节点 + 写作手法 + 原文 + _meta.json 写下一篇。触发方式:/story-short-analyze、/短篇拆文、「拆短篇」「拆这篇短文」「短篇拆文」「精细拆解短篇」「8000 字短篇拆解」「番茄短篇拆文」「故事会拆解」「盐言故事拆解」「分析这篇短篇」——均进入同一管道。
- Astory-short-scan短篇网文扫榜。分析知乎盐言、七猫、黑岩、点众等平台热门短篇数据,捕捉风口题材。触发方式:/story-short-scan、/短篇扫榜、「短篇什么火」「知乎故事排行」。
- Astory-short-write短篇网文写作。辅助短篇小说创作,从构思到成稿,聚焦情绪拉扯与节奏把控。触发方式:/story-short-write、/写短篇、「帮我写一篇短篇」「写个盐言故事」。