by modoojunko
让 AI agent成为你的小说创作搭档。从世界观搭建到角色塑造,从章节规划到正文写作,一步步陪你完成整部小说。
# Add to your Claude Code skills
git clone https://github.com/modoojunko/awesome-novel-skillGuides for using ai agents skills like awesome-novel-skill.
Last scanned: 6/8/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-08T08:55:37.864Z",
"npmAuditRan": true,
"pipAuditRan": true
}awesome-novel-skill is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by modoojunko. 让 AI agent成为你的小说创作搭档。从世界观搭建到角色塑造,从章节规划到正文写作,一步步陪你完成整部小说。. It has 438 GitHub stars.
Yes. awesome-novel-skill passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/modoojunko/awesome-novel-skill" and add it to your Claude Code skills directory (see the Installation section above). awesome-novel-skill ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
awesome-novel-skill is primarily written in Python. It is open-source under modoojunko on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh awesome-novel-skill against similar tools.
No comments yet. Be the first to share your thoughts!
和 AI 一起写小说。本 skill 负责项目状态检测、新项目初始化、旧版项目自动迁移,完成后将控制权交给 novel-agent。
本 skill 也支持 OpenCode。安装在 ~/.config/opencode/skills/awesome-novel/ 后,项目初始化脚本会自动部署 agent 定义到 .opencode/agents/,OpenCode 即可自动发现:
@novel-agent — 加载总指挥 agent@volume-planner、@chapter-planner 等 — 加载子 agent调度机制: novel-agent 写 order 文件到 .agent/task/ → Task 工具调用子 agent → 子 agent 读取 order 执行 → 清理 order 后退回。
检测项目状态
├─ story.yaml 存在 → 旧版 2.x → 执行自动迁移(见下文)
├─ story.md 不存在 → 询问作者是否初始化 → 是则执行 init.py
│ └─ python tools/init.py [project-path] [--genre <编号>] → 完成后 @novel-agent
└─ story.md 存在 → 已有项目
├─ 检查同步新鲜度
│ ├─ python tools/sync-project.py . --check → exit 0 → 已最新,略过
│ ├─ python tools/sync-project.py . --check → exit 1 → 有更新
│ │ └─ 展示变更文件,询问作者是否同步
│ │ ├─ 确认 → 运行 python tools/sync-project.py .
│ │ └─ 跳过 → 继续
│ └─ .agent/.sync-fingerprint 不存在(首次)
│ └─ 静默运行 python tools/sync-project.py . → 写入指纹
└─ → @novel-agent 继续写作
强制规则:
story.md 不存在时,先询问作者是否要在此目录创建小说项目,确认后再运行 init.pyinit.pyinit.py,禁止手动创建目录结构替代skills/awesome-novel 路径)内运行 init.py — 此目录是技能仓库,不是小说项目init.py 执行完毕后,确认 .agent/status.md 和 .opencode/agents/ 已生成,方可进入 @novel-agentinit.py 报错,必须先修复问题重新执行,不允许绕过全新项目先询问作者是否初始化,确认后运行 init.py(项目路径可选,默认当前目录):
python tools/init.py [project-path] [--genre <编号>]
禁止以任何理由跳过 init.py: 手动创建目录、复制模板、直接调用 agent 都属于违规行为。init.py 是初始化入口,必须执行且完整运行。
init.py 会:
.opencode/agents/(OpenCode)或 .claude/agents/(Claude Code).claude/knowledge/.claude/knowledge/.claude/memory/*.md).claude/knowledge/permanent-memory.md).agent/status.md以上 9 步全部由 init.py 自动完成,AI 无需也不应手动干预。
检查: 运行后确认 .agent/status.md 存在且内容正确,方可进入 @novel-agent。
init.py 完成后进入 @novel-agent,此时 phase=setup,按以下流程:
knowledge/title-craft/index.md 的方法论给出建议.agent/task/setting-update-order.mdsettings/world-setting.md、settings/genre-setting.md、settings/character-setting/*.md 等设定文件权限规则: novel-agent 不得直接写 settings/ 下的文件,设定写入必须通过 updater 的 setting-update 模式完成。
检测到 story.yaml 存在时,按以下流程自动迁移:
扫描项目目录,给作者看三张清单:
文件清单:
.md 文件数量status: archived 的章节数量status != archived 的章节列表废弃清理(直接丢弃):
author-intent.md、current-focus.mddrafts/、drifts/、tmp/、temp-*.txtmanuscripts/、.vscode/作者确认后继续。
mkdir -p old
mv story.yaml settings/ volumes/ chapters/ archives/ prompts/ old/
rm -rf drafts/ drifts/ tmp/ manuscripts/ .vscode/ author-intent.md current-focus.md
python tools/init.py [project-path] [--genre <编号>]
init.py 创建目录结构 + 空模板 + agent 定义 + 记忆/知识库。后续迁移步骤负责填数据。
对照 templates/migration/migration-spec.md 的字段映射表,按优先级逐文件转换:
| 优先级 | 旧文件 → 新文件 | 参考模板 |
|---|---|---|
| P0 | old/settings/character-setting/*.yaml → settings/character-setting/*.md |
templates/migration/character.md.template |
| P1 | old/story.yaml + old/volumes/*.yaml → story.md |
templates/migration/story.md.template |
| P2 | old/volumes/*.yaml → volumes/volume-{N}.md |
templates/migration/volume.md.template |
| P3 | old/chapters/*.yaml(archived)→ chapters/vol-{N}-ch-{M}.md |
templates/migration/chapter.md.template |
| P4 | old/settings/world-setting.yaml → settings/world-setting.md |
templates/migration/world-setting.md.template |
| P5 | old/settings/writing-style.yaml → settings/writing-style.md |
templates/migration/writing-style.md.template |
| P6 | old/settings/anti-ai.yaml → settings/anti-ai.md |
templates/migration/anti-ai.md.template |
| P7 | old/settings/hooks.yaml → settings/foreshadowing.md |
templates/migration/foreshadowing.md.template |
| P8 | 无旧源 → settings/genre-setting.md |
templates/migration/genre-setting.md.template |
字段映射细节在 templates/migration/migration-spec.md 中有完整定义。
只拷贝已定稿的正文(非 .draft.md),提示词全部复制:
# 正文:只拷定稿(跳过 draft)
for f in old/archives/*.md; do
[ -f "$f" ] || continue
case "$f" in *.draft.md) ;; *) cp "$f" archives/ ;; esac
done
cp old/prompts/*.md prompts/ 2>/dev/null
cp old/prompts/*.txt prompts/ 2>/dev/null
正文不做任何修改。
迁移完成后,调度 @novel-agent,由其执行:
old/ 目录。| 场景 | 处理 |
|---|---|
story.yaml 存在 → story.md 不存在 |
旧版 2.x → 执行自动迁移流程 |
story.md 存在但 skill_version < 4.0 |
待升级 → 执行自动迁移流程 |
story.md 存在且版本匹配 |
已有项目 → @novel-agent |
| 两者都不存在 | 全新项目 → init.py → @novel-agent |
init.py 不可用 |
手动创建目录结构 + 复制 templates/ 文件 |
| 检测到未提交的 git 变更 | 提示作者先提交/stash |
{project-name}/
├── story.md # ★ 项目索引
├── settings/
│ ├── world-setting.md # 世界观
│ ├── writing-style.md # 写作风格
│ ├── genre-setting.md # 题材设定
│ └── character-setting/
│ └── <id>.md # 每角色一个文件
├── volumes/
│ └── volume-{N}.md # 卷纲
├── chapters/
│ └── vol-{N}-ch-{M}.md # ★ 章纲(status: outline → draft → archived)
├── prompts/
│ └── vol-{N}-ch-{M}-prompt.md # 提示词
├── sandbox/
│ └── vol-{N}-ch-{M}/ # 剧情推演记录(可选)
├── archives/
│ ├── *.draft.md # 草稿
│ └── *.md # 定稿
├── .agent/
│ ├── status.md # 进度追踪
│ └── task/ # agent 间 order 文件
├── .opencode/
│ └── agents/ # Agent 定义(OpenCode 用)
└── .claude/
├── agents/ # Agent 定义(Claude Code 用)
├── knowledge/ # 反 AI 规则、文风偏好、永久记忆、格式规范
└── memory/ # 写作动态记忆
novel-agent(总指挥)
├─ 新项目 → 调度 volume-planner(规划卷纲)
├─ 卷纲就绪 → 调度 chapter-planner(生成章纲)
├─ 章纲就绪 → 调度 prompt-crafter(组装提示词)
├─ 提示词就绪 → 调度 writer(写正文)
├─ 正文就绪 → 可选调度 reader(深度评审)
└─ 作者确认 → 调度 updater(归档 + lore-keeping)
各 agent 定义在 .opencode/agents/(OpenCode)或 .claude/agents/(Claude Code),skill SOP 在 skills/。agent 间通过 .agent/task/*-order.md 文件通信。
可选工具: 剧情推演沙盘(skills/roleplay-sandbox.md)是独立的交互式工具,不在 agent 调度链中。作者卡剧情时主动调用,产出推演记录(sandbox/)供编写章纲时参考。
调度规则: novel-agent 是唯一调度者,只写 order 文件 + 调用子 agent。所有内容创作(卷纲/章纲/提示词/正文)、设定维护、归档更新均由子 agent 完成,novel-agent 不得越权代劳。子 agent 完成任务后清理 order 文件,novel-agent 检测到清理即确认完成。
重要:novel-agent 是顶层入口,通过 @novel-agent 加载进主 agent,禁止通过 Agent 工具将 novel-agent 作为 subagent 调度。 主 agent 加载 novel-agent 定义后即扮演总指挥角色,拥有完整的 Agent 工具权限来调度子 agent。如果 novel-agent 被作为 subagent 派出,它将失去 Agent 工具调用能力,导致调度链断裂。
| 工具 | 用途 | 谁用 |
|---|---|---|
| Bash | 执行 init.py;迁移备份/拷贝命令;版本检测 | skill 入口(非 agent) |
| Read | 检测项目文件、读取设定/状态 | 所有 agent |
| Write | 写 order 文件(novel-agent);写设定/记忆/知识(子 agent) | 各 agent 按权限 |
| Agent | novel-agent 调用子 agent | novel-agent 专用 |
| Edit | 写 settings/、.claude/ 下的内容文件 | 子 agent(非 novel-agent) |
| Glob | 扫描文件 | 所有 agent |
| Grep | 搜索内容 | 所有 agent |
个人使用免费 — 本 Skill 对个人用户完全免费。 商业使用 — 请联系作者获取授权。
让 AI 成为你的小说创作搭档,从世界观搭建到角色塑造,从章节规划到正文写作,一步步陪你完成整部小说。
如果这个项目对你有帮助,可以请我喝杯咖啡 ☕
一杯咖啡,不是合同。不影响 issue 优先级和功能方向。
Claude Code:
git clone https://github.com/modoojunko/awesome-novel-skill.git && cd awesome-novel-skill && ./install.sh claude-code
OpenCode:
git clone https://github.com/modoojunko/awesome-novel-skill.git && cd awesome-novel-skill && ./install.sh opencode
或者手动复制(以 Claude Code 为例):
git clone https://github.com/modoojunko/awesome-novel-skill.git
cd awesome-novel-skill
mkdir -p ~/.claude/skills/awesome-novel
cp -r agents ~/.claude/skills/awesome-novel/
cp -r skills ~/.claude/skills/awesome-novel/
cp -r templates ~/.claude/skills/awesome-novel/
cp -r knowledge ~/.claude/skills/awesome-novel/
[ -d memory ] && cp -r memory ~/.claude/skills/awesome-novel/
cp -r tools ~/.claude/skills/awesome-novel/
cp SKILL.md ~/.claude/skills/awesome-novel/
echo "安装完成!"
OpenCode 用户注意: 安装路径为
~/.config/opencode/skills/awesome-novel/,初始化后 agent 定义部署在项目.opencode/agents/下,OpenCode 自动发现。详情见下方 OpenCode 集成 说明。
看到 "安装完成" 就可以了。
看到这个项目觉得有用? 顺手点个 Star,这样它会出现在你的 GitHub 首页,让更多人发现。 {: .prompt-info }
安装后,打开终端,在你想放小说项目的目录下启动 Claude Code 或 OpenCode,然后说一句:
帮我写本小说
系统会自动加载写作流程。后续再进入该项目时,说 @novel-agent 或 "帮我继续写" 就能从中断处恢复。
Agent 会引导你完成后续步骤。系统由 8 个 AI Agent 协作驱动,自动检测进度、调度任务,你只需确认方向和审阅内容。
novel-agent(总指挥 — 顶层入口,由 @novel-agent 加载)
├─ setup 阶段 → 调度 updater(设定写入)
├─ outline 阶段 → 调度 volume-planner(卷纲)→ chapter-planner(章纲)
├─ draft 阶段 → 调度 prompt-crafter(提示词)→ writer(正文)
├─ anti-ai 阶段 → 调度 anti-ai(去 AI 味)
├─ review 阶段 → 调度 reader(深度评审,可选)
└─ archive 阶段 → 调度 updater(归档 + lore-keeping)
novel-agent 只负责调度和验证,不直接写内容。子 agent 各司其职,完成后清理任务标记。
第一次写小说时,Agent 会和你聊这几个方面。不用一次性想好全部,想不到的跳过,后面随时补:
设定聊完后,Agent 会在当前目录下创建你的小说项目,结构如下:
{你的小说文件夹}/
├── story.md # 项目总索引(元信息/主线/卷规划)
├── CLAUDE.md # 项目级 CLAUDE.md(tools 白名单)
├── settings/ # 设定文件
│ ├── world-setting.md # 世界观
│ ├── writing-style.md # 写作风格
│ ├── genre-setting.md # 题材设定
│ ├── timeline.md # 时间线
│ └── character-setting/ # 角色档案
│ └── <id>.md # 每角色一个文件
├── volumes/ # 卷纲(情绪走向/冲突阶梯/信息差/场景卡)
├── chapters/ # 章纲
├── prompts/ # 提示词
├── sandbox/ # 剧情推演记录(可选,作者卡剧情时调用)
├── archives/ # 正文(定稿)
├── .agent/ # Agent 进度 + 任务通信
│ ├── status.md # 进度标记(phase/volume/chapter)
│ └── task/ # 子 agent 间 order 文件
├── .opencode/ # Agent 定义(OpenCode 用)
│ └── agents/ # 8 个 Agent 定义(初始化时部署)
└── .claude/ # Agent 定义(Claude Code 用)+ 知识库 + 写作记忆
├── agents/ # 8 个 Agent 定义(初始化时部署)
├── knowledge/ # 格式规范、反 AI 规则、文风偏好、永久记忆
└── memory/ # 写作动态记忆(各环节作者反馈)
├── volume-memory.md
├── chapter-memory.md
├── prompt-memory.md
└── writing-memory.md
这些全是纯文本 Markdown 文件,你可以直接用编辑器打开看或手动改。
设定聊完后,Agent 帮你规划整体故事结构。规划分四个维度同时推进:
不知道结局? 告诉 Agent"我只知道开头",它照样帮你规划第一卷。
多 Agent 协作自动推进,novel-agent(总指挥)按进度调度子 agent,你只需审阅和决策:
| 步骤 | 负责 Agent | 做什么 |
|---|---|---|
| ① 章纲 | chapter-planner | (由 novel-agent 调度)继承卷的情绪走向/冲突阶梯/信息差位置,设计章内微弧线、小冲突阶梯和信息差动态变化,拆成场景卡。你看完后说"可以"或"改一下" |
| ② 提示词 | prompt-crafter | (由 novel-agent 调度)根据章纲、反 AI 规则和文风偏好,组装 6 元素纯净提示词 |
| ③ 写正文 | writer | (由 novel-agent 调度)按提示词写完整一章 |
| ④ 去 AI 味 | anti-ai | (由 novel-agent 调度)Gate A-F 管线检测清除 AI 痕迹,量化评分定级 |
| ⑤ 审阅 | reader(可选) | (由 novel-agent 调度)10 维 60+ 细项深度评审,对照章纲/设定/前文逐条诊断 |
| ⑥ 归档 | updater | (由 novel-agent 调度)你确认后归档定稿,自动更新角色状态、追加情绪弧线、合并文风偏好、检测钩子健康和卷边界 |
调度规则: @novel-agent 是顶层入口,由主 AI 加载后扮演总指挥角色。novel-agent 通过 Agent 工具调度子 agent,不直接代劳写作任务。子 agent 完成后清理任务标记,novel-agent 检测到后自动推进下一阶段。
第一章写完后,Agent 会问"下一章继续吗?"
.claude/knowledge/permanent-memory.md),越写越懂你| 你说 | AI 做什么 |
|---|---|
| "帮我写本小说" | 首次加载技能 + 创建项目 + 设定讨论 |
| "@novel-agent" 或 "帮我继续写" | 进入 / 恢复写作循环 |
| "写下一章" | 开始写最新一章 |
| "跑一下推演" 或 "剧情推演" | 角色推演沙盘——卡剧情时让角色演一遍 |
| "改一下第 X 段" | 修改指定段落 |
| "这章写完了" 或 "归档" | 确认本章完成 |
| "看看进度" | 查看当前写了多少 |
| "导入这本小说" | 导入已有草稿继续写 |
| "迁移项目" | 从旧版自动迁移到 4.0 格式 |
| "solo" 或 "你全权写" | 进入全自动模式,不打断你确认 |
| 模式 | 触发词 | 行为 |
|---|---|---|
| 步步确认(默认) | — | 每做一步都等你点头才继续 |
| 全部授权 | "你全权决定" | 流程节点还在,Agent 代按确认,不经你手 |
随时可以切换,跟 Agent 说一声就行。
不想从头设定写作风格?Agent 在一次性设定阶段就会问你用不用预置风格。项目内置 24 套题材档案,每套包含角色人设倾向、叙事语气和章节提示词模板。涵盖仙侠、都市、悬疑、历史、科幻末世、西方奇幻等主流类型。
Q: 我不会编程,能装吗?
能。上面那几行命令复制粘贴到终端,回车就行。唯一的前提是你的电脑上已经装好了 Claude Code 或 OpenCode。
Q: 我升级了技能,之前写的小说项目怎么迁移到新格式?
升级后首次在当前项目目录启动时,Agent 会自动检测旧版格式,引导你完成迁移。核心逻辑:旧文件整体挪到 old/ 目录保留备份,在原地初始化新项目骨架,再逐字段将旧版设定转换到新版格式。已归档的正文直接拷贝,正在写的不迁移。确认迁移无误后可手动删除 old/ 目录。
Q: 写到一半可以改设定吗?
可以。随时跟 Agent 说"改一下世界观里的 XXX"或"这个角色的性格我想调整",它会帮你更新。
Q: 生成的文字有 AI 味怎么办?
默认配置就是"低 AI 味"——禁止了常见机器腔句式、写完后自动检测。动态记忆系统会记录你如何修改 AI 原文,提炼为你的专属规则,后续自动规避。
Q: 可以用自己的写作风格吗?
可以。项目创建后有专门的写作风格文件,你可以把自己的偏好写进去,后面所有章节都会按这个风格来。
本项目部分设计受到 InkOS 的启发——包括 AI 味检测体系、伏笔/钩子追踪、题材配置和分层技法模型。感谢 @Narcooo 的优秀工作。
欢迎参与贡献!详情请查看 CONTRIBUTING.md。
| 方式 | 说明 |
|---|---|
| Bug 反馈 | 报告功能异常、安装问题 |
| 功能建议 | 提出新功能或改进想法 |
| 素材扩充 | 补充题材档案、文风特征库 |
| 提交 PR | 修复 bug、优化代码或文档 |
如果你是有创作经验的作家,欢迎为反AI写作库贡献题材正反例:
贡献内容: knowledge/anti-ai/{genre}.md — 你所在题材的高频AI病句正反例
贡献格式:
# {题材名}反AI规则
> 适用题材:{genre-id}
## 高频AI病句正反例
### 1. {问题类型}
❌ "AI味的写法"
✅ "真人感的写法"
## 写作要点
1. **{要点}** — 说明
正反例原则:
提交方式:
knowledge/anti-ai/ 下新建或编辑题材文件反AI: 添加{题材名}正反例见 knowledge/anti-ai/README.md。
项目结构:
awesome-novel-skill/
├── agents/ # 多 Agent 协作
│ ├── novel-agent.md # 总指挥
│ ├── volume-planner.md# 叙事架构师
│ ├── chapter-planner.md# 场景设计师
│ ├── prompt-crafter.md# 提示词工程师
│ ├── writer.md # 写手
│ ├── anti-ai.md # 反 AI 编辑
│ ├── reader.md # 测试读者
│ └