webnovel-write
产出可发布章节,完整执行上下文→起草→审查→润色→提交→备份。
DeepseekModel
官方收录技能
质量 优秀 · 90
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=lingfengqaq-webnovel-writer-webnovel-writer-skills-webnovel-write-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name webnovel-write description 产出可发布章节,完整执行上下文→起草→审查→润色→提交→备份。 allowed-tools Read Write Edit Grep Bash Agent AskUserQuestion argument-hint [章号] [--fast|--minimal] 写章流程 目标 产出可发布章节到 正文/第{NNNN}章-{title}.md 。默认 2000-2500 字,用户/大纲另有要求时从之。 模式 模式 流程 默认 Step 1→2→3→4→5→6 --fast Step 1→2→3(轻量)→4→5→6 --minimal Step 1→2→3(写 no-review artifact)→4(仅排版)→5→6 硬规则 禁止并步、跳步、伪造审查 必须使用 Agent 工具调用指定 subagent;不得用主流程口头代替 subagent 输出 审查只跑一轮;blocking issue 定点修复或经用户裁决后才进 Step 4/5 失败只补跑失败步骤,不回退 参考资料按步骤按需加载 优先级 用户要求 > 状态机硬门槛 > 项目约束(总纲/设定/记忆)> skill 流程 > reference 建议 CSV 检索(Step 2 按需) python -X utf8 " ${SCRIPTS_DIR} /reference_search.py" --skill write --table {表名} --query "{关键词}" --genre {题材} 触发条件:新角色→命名规则,战斗→场景写法,多角色对话→写作技法,情感描写→写作技法,高频桥段→场景写法。 执行流程 准备:预检 export WORKSPACE_ROOT= " ${CLAUDE_PROJECT_DIR:- $PWD } " export SCRIPTS_DIR= " ${CLAUDE_PLUGIN_ROOT:?} /scripts" export SKILL_ROOT= " ${CLAUDE_PLUGIN_ROOT:?} /skills/webnovel-write" python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${WORKSPACE_ROOT} " preflight export PROJECT_ROOT= " $(python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${WORKSPACE_ROOT} " where) " python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " placeholder-scan --format text 准备:刷新合同树 genre 从 .webnovel/state.json 的初始化配置快照读取,用于刷新合同树;写前主链真源仍是 .story-system/ 合同。调用 story-system 前必须先从详细大纲解析真实本章目标,禁止传 {章纲目标} 、 第N章章纲目标 等占位 query。 GENRE= " $(python -X utf8 -c "import json,sys; s=json.load(open(' ${PROJECT_ROOT} /.webnovel/state.json',encoding='utf-8')); pi=s.get('project_info',{}); print(pi.get('genre') or s.get('project',{}).get('genre',''))" ) " python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " \ story-system " ${CHAPTER_GOAL} " --genre " ${GENRE} " --chapter {chapter_num} --persist --emit-runtime-contracts --format both python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " \ write-gate --chapter {chapter_num} --stage prewrite --format json 必备文件: MASTER_SETTING.json (调性/禁忌)、 volume_{NNN}.json (卷级节奏)、 chapter_{NNN}.review.json (必须节点/禁区)。缺失则阻断。 chapter_{NNN}.json 必须优先检查顶层 chapter_directive 。 chapter_focus 只能来自 chapter_directive.goal 或真实 query,不得从 dynamic_context 的参考摘要继承。 写作任务书排序必须固定为: 本章硬性约束: chapter_directive.goal/time_anchor/chapter_span/countdown/chapter_end_open_question CBN/CPNs/CEN 与 must_cover_nodes 本章禁区: forbidden_zones ,违反即不通过 风格指引:reasoning、主角卡 OOC 警戒、anti_patterns 场景写法补充: dynamic_context ,仅作风格参考,不能覆盖章纲约束 Step 1:context-agent 生成写作任务书 必须使用 Agent 工具调用 context-agent ,不得由主流程自行整理任务书。 Use the Agent tool to run webnovel-writer:context-agent . Task: chapter={chapter_num} project_root=${PROJECT_ROOT} scripts_dir=${SCRIPTS_DIR} storage_path=${PROJECT_ROOT}/.webnovel state_file=${PROJECT_ROOT}/.webnovel/state.json(projection/read-model,仅兼容读取) 先 research,再按 本章硬性约束 → CBN/CPNs/CEN → 本章禁区 → 风格指引 → dynamic_context 补充参考 的顺序输出五段写作任务书。 上下文不足时返回 blocker。 产物:一份写作任务书,能独立支撑 Step 2 起草。 调用后主流程必须记录 SubagentRun 汇总(仅供最终报告使用): { "name" : "context-agent" , "user_label" : "整理写作依据" , "status" : "completed | partial | failed | skipped" , "problems" : [ ] , "auto_handled" : [ ] , "needs_user_action" : false , "duration_ms" : 0 , "outputs" : [ ] } 上下文不足、legacy fallback、伏笔数据缺失、任务书不完整或耗时异常,必须写入 problems / auto_handled ,不得在最终报告中静默。 Step 2:起草正文 只根据任务书起草。不加载 core-constraints/anti-ai-guide(已内化到任务书)。只输出纯正文,无占位符。有结构化节点时围绕 CBN→CPNs→CEN 展开。中文思维写作。 Step 3:审查 必须使用 Agent 工具调用 reviewer ,不得由主流程伪造审查 JSON。 Use the Agent tool to run webnovel-writer:reviewer . Task: chapter={chapter_num} chapter_file=${CHAPTER_FILE} project_root=${PROJECT_ROOT} scripts_dir=${SCRIPTS_DIR} 只返回严格的 reviewer schema JSON,不写任何文件。 不评分、不口头总结。 reviewer 只返回 JSON;主流程负责用 Write 把返回的 JSON 写入 ${PROJECT_ROOT}/.webnovel/tmp/review_results.json (reviewer 不持 Write,是这份 artifact 的非写入方)。随后必须运行 review-pipeline;review-pipeline 会把同一路径覆盖为标准 review_result artifact(含 blocking_count ),供 precommit gate 与后续提交命令使用。 调用后主流程必须记录 SubagentRun 汇总(仅供最终报告使用): { "name" : "reviewer" , "user_label" : "写作检查" , "status" : "completed | partial | failed | skipped" , "problems" : [ ] , "auto_handled" : [ ] , "needs_user_action" : false , "duration_ms" : 0 , "outputs" : [ ] } reviewer 跳过、失败、输出不完整、 --minimal 写 no-review artifact、blocking issue、维度跳过或耗时异常,必须写入 problems / auto_handled ,不得在最终报告中静默。 python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " review-pipeline \ --chapter {chapter_num} \ --review-results " ${PROJECT_ROOT} /.webnovel/tmp/review_results.json" \ --metrics-out " ${PROJECT_ROOT} /.webnovel/tmp/review_metrics.json" \ --report-file "审查报告/第{chapter_num}章审查报告.md" \ --save-metrics 审查只跑一轮,reviewer 只调用一次。 blocking=true 的问题在不改剧情、不破设定的前提下定点修复后直接进 Step 4,不重新调用 reviewer;确实无法修复的 blocking 问题用 AskUserQuestion 让用户裁决(接受当前版本 / 手动修复 / 放弃)。非 blocking issue 交给 Step 4 处理。 --fast 只检查 setting/timeline/continuity。 --minimal 不调用 reviewer 与 review-pipeline ,但必须 覆盖写入 本章新的 no-review review_results.json (禁止复用旧 artifact),使 Step 5 提交链有有效 --review-result (成功标准“审查已落库”对 --minimal 的豁免仍成立): python -X utf8 -c "import json,os; from pathlib import Path; root=Path(os.environ['PROJECT_ROOT']); ch=int('{chapter_num}'); p=root/'.webnovel'/'tmp'/'review_results.json'; p.parent.mkdir(parents=True,exist_ok=True); p.write_text(json.dumps({'chapter':ch,'issues':[],'issues_count':0,'blocking_count':0,'has_blocking':False,'summary':'minimal mode: reviewer skipped by user-selected --minimal flow','review_skipped':True,'review_mode':'minimal'},ensure_ascii=False,indent=2),encoding='utf-8')" Step 4:润色 references/polish-guide.md 区段读:先 Grep 匹配 ^#{1,3} 定位锚点行号,再 Read 的 offset/limit 取段——主路径取 ## 2. 执行顺序(必须按序) ;Anti-AI 终检单独区段取 ## 2A. Anti-AI 检测细则 与 ## Phase 1 增补:Anti-AI 规范(7层,原版) (词库段),不全文读。 references/writing/typesetting.md 、 references/style-adapter.md 短文件,全文读。 顺序:修复非 blocking issue → 风格适配 → 排版 → Anti-AI 终检。 只改表达不改事实。 anti_ai_force_check=fail 时不进 Step 5。 --minimal 仅排版。 Step 5:提交 5.1 Data Agent 提取事实 必须使用 Agent 工具调用 data-agent ,产出 fulfillment_result / disambiguation_result / extraction_result 三份 JSON,并复用 Step 3 的 review_results。 Use the Agent tool to run webnovel-writer:data-agent . Task: chapter={chapter_num} chapter_file=${CHAPTER_FILE} project_root=${PROJECT_ROOT} scripts_dir=${SCRIPTS_DIR} output_dir=${PROJECT_ROOT}/.webnovel/tmp 按你自己的 schema(见 data-agent 输出格式段)生成 fulfillment_result.json、disambiguation_result.json、extraction_result.json 三份 artifact。 你是这三份 artifact 的唯一写入者;不直接写 state/index/summaries/memory/vectors/projection。 artifact 字段 schema 由 data-agent 自身定义、runtime validator 校验;主流程只检查文件存在与 schema,不重写、不补写、不口头替代。 调用后主流程必须记录 SubagentRun 汇总(仅供最终报告使用): { "name" : "data-agent" , "user_label" : "保存本章故事事实" , "status" : "completed | partial | failed | skipped" , "problems" : [ ] , "auto_handled" : [ ] , "needs_user_action" : false , "duration_ms" : 0 , "outputs" : [ ] } 三份 artifact 写入状态、schema 不合格、pending 消歧、长时间无进展或输出不完整,必须写入 problems ;自动重跑或降级处理必须写入 auto_handled 。 5.2 提交前校验与 CHAPTER_COMMIT 先跑 precommit gate: python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " \ write-gate --chapter {chapter_num} --stage precommit --format json precommit 通过后,运行提交前只读 git diff 变更面校验(写入所有权 sanity check,只读、不 stage、不提交): if git -C " ${PROJECT_ROOT} " rev-parse --is-inside-work-tree >/dev/null 2>&1; then git -C " ${PROJECT_ROOT} " diff --name-status -- . git -C " ${PROJECT_ROOT} " diff --check -- . fi 变更面不得出现插件目录、其他书项目、其他章节正文或不属于本章流程的手写状态文件; git diff 只覆盖 git 可见文件,SQLite / .webnovel/ 内部语义由 5.3 postcommit 与 runtime 只读查询验证。若项目根不是 git worktree,记录“跳过 git diff 校验”,不得因此跳过 precommit gate。本步只读,禁止在此执行 git add / git commit 。 校验通过后运行 chapter-commit: python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " chapter-commit \ --chapter {chapter_num} \ --review-result " ${PROJECT_ROOT} /.webnovel/tmp/review_results.json" \ --fulfillment-result " ${PROJECT_ROOT} /.webnovel/tmp/fulfillment_result.json" \ --disambiguation-result " ${PROJECT_ROOT} /.webnovel/tmp/disambiguation_result.json" \ --extraction-result " ${PROJECT_ROOT} /.webnovel/tmp/extraction_result.json" 自动判定:blocking_count>0 或 missed_nodes 非空 或 pending 非空 → rejected,否则 accepted。 5.3 验证投影 projection_status 五项(state/index/summary/memory/vector)全部 done 或 skipped。 chapter_status 由 projection writer 自动推进:accepted→committed,rejected→rejected。 python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " \ write-gate --chapter {chapter_num} --stage postcommit --format json 5.4 失败隔离 commit 未生成→重跑 5.2。projection 失败→只补跑 projection,不回退 Step 1-4。 python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " \ projections retry --chapter {chapter_num} --format json Step 6:Git 备份 python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " backup \ --chapter {chapter_num} \ --chapter-title "{title}" 备份必须以解析后的 PROJECT_ROOT 为准,禁止从工作区父目录执行裸全量 Git add,避免把书项目仓库作为父仓库的嵌入仓库/submodule 加入。 作者友好过程提示与恢复契约 开始写章前先用作者语言说明本次目标、主要阶段和是否需要守在旁边,不承诺固定耗时。过程提示只说当前在做什么和会产生什么,不直接输出原始 JSON、traceback 或长命令日志;技术详情写入 .webnovel/logs/run_last.log : python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " run-log \ --event write-start \ --payload-json "{\"chapter\": {chapter_num}, \"mode\": \"{mode}\"}" \ --format text 写章过程节点(最多 6 个): 检查项目环境:确认项目、占位符和本章要求可用。 整理写作依据:读取章纲、最近剧情和未回收伏笔。 起草正文:根据写作任务书生成本章正文。 写作检查:审查阻断问题和高收益修改建议。 保存本章故事事实:提取本章目标完成情况、歧义和新事实。 提交备份:把本章事实入账、更新故事资料并备份。 重复执行同一章时,先读取可信断点: python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " run-ledger write-resume \ --chapter {chapter_num} \ --mode "{mode}" \ --format json run-ledger write-resume 只给续跑建议,不自动覆盖文件。它会根据正文、审查结果、data artifacts、commit、projection 和备份状态判断从哪里继续。正文被手动改过、章纲更新晚于正文、本章已 accepted 又重跑时,必须停下用有限选项询问:沿用当前正文 / 重新起草 / 只查看状态;不得覆盖作者手改。 每个关键步骤完成后记录 run-ledger record-write-step ,至少记录 step、status、输入/输出文件路径、problems、auto_handled 和 duration_ms,供下一次续跑和最终报告使用。 少打扰确认策略:默认继续推进;只有创作方向、事实一致性、文件覆盖风险或 blocking issue 无法定点处理时才问。需要用户裁决时给 2-3 个有限选项,并说明每个选项影响。 卡住时必须说明卡点、已完成内容和恢复建议:例如“正文和审查报告已保留,保存本章故事事实失败;重新运行 /webnovel-write {chapter_num} 会从 data-agent 继续”。不可恢复故障才在最终报告提示 .webnovel/logs/run_last.log ;平时只保留日志,不打扰作者。 收尾必须调用作者报告 helper,优先以 helper 输出组织最终回复: python -X utf8 " ${SCRIPTS_DIR} /webnovel.py" --project-root " ${PROJECT_ROOT} " user-report \ --stage write \ --chapter {chapter_num} \ --format text
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |