Forráskód Böngészése

refactor(v5.4.3): Skill 简化 + 数据流验证

## 核心改进

### 1. webnovel-init 简化
- 移除 Quick/Standard 模式,统一为 Deep 模式
- 保留灵活问询(3-4 轮对话),移除僵化模板
- 补充关键指导:
  - Wave 分组建议(可调整)
  - 题材/金手指选项参考
  - 条件追问逻辑(根据金手指类型)
  - 创意约束生成流程(5 步完整流程)
  - 参考资料使用时机

### 2. webnovel-plan 增强
- 补充 Strand Weave 规划策略(比例、交织模式)
- 补充爽点密度规划策略(常规/关键/高潮章节)
- 补充约束触发规划策略(计算公式 N = max(5, 总章数/10))
- 补充章节生成策略(6 个维度决策逻辑)
- 细化验证检查(5 个维度具体标准)
- 补充钩子字段说明(规划层 vs 执行层)

### 3. context-agent 补充
- 补充钩子数据来源说明
- 明确数据流:章纲规划 → 写作实现 → 写入 chapter_meta → 下章读取

### 4. 数据流验证
- 新增 _data_flow_validation.md
- 验证 webnovel-plan → context-agent → webnovel-write 数据流
- 确认所有字段完全对接
- 明确钩子字段的双重含义

## 设计理念

- **灵活性 + 指导性平衡**:不强制模板,但提供清晰策略
- **可执行性优先**:每个步骤都有明确的决策逻辑
- **数据流完整**:确保跨 Skill 数据传递无缝对接

## 影响范围

- webnovel-init: 简化 710 行,保留核心功能
- webnovel-plan: 简化 589 行,增强策略指导
- context-agent: 补充 6 行,明确数据来源
- 新增数据流验证文档 227 行
lingfengQAQ 4 hónapja
szülő
commit
b43385e3d1

+ 6 - 0
.claude/agents/context-agent.md

@@ -65,6 +65,12 @@ tools: Read, Grep, Bash
 - `.webnovel/context_snapshots/`: 上下文快照(优先复用)
 - `大纲/` 与 `设定集/`
 
+**钩子数据来源说明**:
+- **章纲的"钩子"字段**:本章应设置的章末钩子(规划用)
+- **chapter_meta[N].hook**:本章实际设置的钩子(执行结果)
+- **context-agent 读取**:chapter_meta[N-1].hook 作为"上章钩子"
+- **数据流**:章纲规划 → 写作实现 → 写入 chapter_meta → 下章读取
+
 ---
 
 ## 执行流程(精简版)

+ 184 - 526
.claude/skills/webnovel-init/SKILL.md

@@ -1,402 +1,149 @@
 ---
 name: webnovel-init
-description: Initializes webnovel projects with settings, outline framework, and state.json. Supports quick/standard/deep modes. Activates when user wants to start a new novel or /webnovel-init.
-allowed-tools: Bash Write Read Edit AskUserQuestion Task
+description: Initializes a new webnovel project in deep mode, collecting full story/world/character/constraint data and generating all pre-writing files. Use when starting a new novel or running /webnovel-init.
 ---
 
-# Project Initialization Skill
-
-## Workflow Checklist
-
-```
-项目初始化进度:
-- [ ] Phase 1: 模式确定 + 基础资料加载
-- [ ] Phase 2: 题材选择(两轮)
-- [ ] Phase 3: 基本信息收集
-- [ ] Phase 4: 金手指设计 (Standard+)
-- [ ] Phase 5: 世界构建 (Standard+)
-- [ ] Phase 6: 创意深挖 (Deep)
-- [ ] Phase 6.5: 创意约束生成 (Standard+) ← 新增
-- [ ] Phase 7: 生成项目文件
-- [ ] Phase 8: 验证并报告
-```
-
----
-
-## Phase 1: 模式确定 + 基础资料
-
-### 1.1 加载基础资料(必须执行)
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/genre-tropes.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/system-data-flow.md"
-```
-
-### 1.2 确定初始化模式
-
-**[AskUserQuestion Round 1]**
-
-| 问题 | 选项 |
-|------|------|
-| 初始化模式 | ⚡ Quick (5分钟,基本信息) / 📝 Standard (15-20分钟,+金手指设计) / 🎯 Deep (30-45分钟,+创意评估+市场定位) |
-
----
-
-## Phase 2: 题材选择
-
-### 2.1 选择题材大类
-
-**[AskUserQuestion Round 2]**
-
-| 问题 | 选项 |
-|------|------|
-| 题材大类 | 玄幻修仙类 / 都市现代类 / 言情类 / 特殊题材 |
-
-### 2.2 选择具体题材 + 目标字数
-
-**[AskUserQuestion Round 3]** 根据大类显示:
-
-| 大类 | 具体题材选项 |
-|------|-------------|
-| 玄幻修仙类 | 修仙 / 系统流 / 高武 / 西幻 / 无限流 / 末世 / 科幻 |
-| 都市现代类 | 都市日常 / 都市异能 / 都市脑洞 / 现实题材 |
-| 言情类 | 古言 / 宫斗宅斗 / 青春甜宠 / 豪门总裁 / 职场婚恋 / 民国言情 / 幻想言情 / 现言脑洞 / 女频悬疑 / 狗血言情 / 替身文 / 多子多福 / 种田 / 年代 |
-| 特殊题材 | 规则怪谈 / 悬疑脑洞 / 悬疑灵异 / 历史古代 / 历史脑洞 / 游戏体育 / 抗战谍战 / 知乎短篇 |
-
-**支持复合题材**:可输入“题材A+题材B”(最多 2 个),例如:`都市脑洞+规则怪谈`。  
-**复合规则**:1 主 1 辅(约 7:3),主线保持主题材逻辑,副题材只提供规则/钩子/爽点。
-
-同时询问:
-
-| 问题 | 选项 |
-|------|------|
-| 目标字数 | 30万字 / 50万字 / 100万字 / 200万字+ |
-
-### 2.3 加载题材模板(必须执行)
-
-根据选择的题材执行(复合题材需分别加载):
-
-```bash
-# 主题材
-cat "${CLAUDE_PLUGIN_ROOT}/templates/genres/{题材A}.md"
-# 副题材(可选)
-cat "${CLAUDE_PLUGIN_ROOT}/templates/genres/{题材B}.md"
-```
-
----
-
-## Phase 3: 基本信息收集
-
-### 3.1 小说标题
-
-**[AskUserQuestion Round 4-Q1]**
-
-| 问题 | 选项 |
-|------|------|
-| 标题风格 | 《XXX系统》金手指型 / 《我在XXX当XXX》身份型 / 《从XXX开始》开局型 / 《XXX:XXX》副标题型 |
-
-> AskUserQuestion 自动提供 Other 选项,用户可直接输入完整标题;若选择风格模板,Claude 根据风格生成具体建议。
-
-### 3.2 主角姓名
-
-**[AskUserQuestion Round 4-Q2]**
-
-| 问题 | 选项 |
-|------|------|
-| 姓名风格 | 古风名(林天/萧炎/叶凡/陈平安) / 现代名(李明/张伟/王强) / 特殊名(需自定义) |
-
-> 选择风格后,Claude 可生成具体姓名建议供用户确认。
-
-### 3.3 主角结构与女主配置
-
-**[AskUserQuestion Round 4-Q3]**
-
-| 问题 | 选项 |
-|------|------|
-| 主角结构 | 单主角 / 多主角(2-5人) |
-| 女主配置 | 无女主 / 重要女主(1人) / 多女主(2-3人) |
-
-> 若选“多主角”,追问主角姓名与各自定位(主线/副线/反差角色)。
-> 若选“有女主”,追问女主姓名与定位(事业线/情感线/对抗线)。
-> 若选“多女主”,追问 2-3 位女主姓名与定位。
-
----
-
-## Phase 4: 金手指设计 (Standard + Deep)
-
-**跳过条件**: Quick 模式跳过此阶段
-
-### 4.1 加载设计资料
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/templates/golden-finger-templates.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/selling-points.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/worldbuilding/character-design.md"
-```
-
-### 4.2 按题材动态显示金手指选项
-
-**题材-金手指匹配表**:
-
-| 题材 | 推荐金手指 |
-|------|-----------|
-| 玄幻修仙 | 系统面板、签到打卡、老爷爷/传承、血脉觉醒 |
-| 都市异能 | 系统面板、重生记忆、异能觉醒、随身空间 |
-| 言情 | 重生记忆、随身空间、无金手指 |
-| 知乎短篇 | 单一特殊能力、无金手指 |
-| 规则怪谈 | 系统提示、规则解读能力 |
-
-**[AskUserQuestion Round 5]**
-
-| 问题 | 选项 |
-|------|------|
-| 金手指类型 | 根据题材动态显示 + “无金手指” |
-| 成长曲线 | 前期爆发型 / 稳步提升型 / 厚积薄发型 |
-| 读者可见度 | 明牌 / 半明牌 / 暗牌 |
-| 不可逆代价 | 寿命 / 记忆 / 关系 / 资源 / 无 |
-
-### 4.3 根据金手指类型动态调整问题
-
-**系统面板型**
-- 系统性格 / 系统命名 / 代价或限制 / 升级节奏
-
-**重生/穿越型**
-- 重生时间点 / 记忆完整度 / 先知程度 / 蝴蝶效应
-
-**老爷爷/器灵型**
-- 器灵性格 / 器灵实力 / 辅助方式 / 恢复条件
-
-**随身空间型**
-- 空间大小 / 特殊功能 / 升级方式
-
-**血脉/天赋型**
-- 血脉来源 / 觉醒条件 / 能力限制
-
-**异能觉醒型**(都市异能专用)
-- 异能来源 / 异能上限 / 代价或副作用 / 是否可进化
-
-**无金手指**
-- 主角天赋 / 特殊机遇 / 成长路线
-
----
-
-## Phase 5: 世界构建 (Standard + Deep)
-
-**跳过条件**: Quick 模式跳过此阶段
-
-### 5.1 按需加载世界构建资料
-
-```bash
-# 势力体系设计(推荐加载)
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/worldbuilding/faction-systems.md"
-# 设定一致性指南
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/worldbuilding/setting-consistency.md"
-# 世界规则设计
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/worldbuilding/world-rules.md"
-```
-
-### 5.2 世界观框架
-
-**[AskUserQuestion Round 6]** (可选)
-
-| 问题 | 选项 |
-|------|------|
-| 世界规模 | 单一大陆 / 多大陆 / 多位面/多世界 / 星际宇宙 |
-| 势力格局 | 门派/宗门 / 家族/世家 / 国家/帝国 / 组织/联盟 |
-| 力量体系 | 境界修炼型 / 等级数值型 / 血脉觉醒型 / 职业技能型 |
-| 社会阶层 | 阶级森严 / 相对平等 / 高流动性 |
-| 资源分配 | 资源稀缺 / 资源中等 / 资源充足 |
-| 货币体系 | 银两/铜钱 / 灵石/灵晶 / 贡献点/功勋点 / 信用点/配给券 / 双币制 / 自定义 |
-| 兑换规则 | 可选:填写主要面值或兑换比率(可空) |
-| 宗门/组织层级 | 宗主-长老-核心-内门-外门 / 家族(嫡系-旁系) / 官僚(军衔) / 无宗门 |
-
-### 5.2.1 境界链模板(仅境界修炼型)
-
-**[AskUserQuestion Round 6-Q1]**
-
-| 问题 | 选项 |
-|------|------|
-| 典型境界链 | 练气-筑基-金丹-元婴-化神 / 三阶九段 / 自定义 |
-| 小境界划分 | 初/中/后/巅 / 初/中/后/圆满 / 无 |
-
-### 5.3 反派分层(可选)
-
-**[AskUserQuestion Round 6-Q2]**
-
-| 问题 | 选项 |
-|------|------|
-| 反派分层 | 暂不设定 / 提供小反派 / 提供小+中反派 / 提供小+中+大反派 |
-
-> 若选择提供,收集名称与定位(示例:小反派:张三;中反派:李四;大反派:王五)。
-
----
-
-## Phase 6: 创意深挖 (Deep)
-
-**跳过条件**: Quick/Standard 模式跳过此阶段
-
-### 6.1 加载创意资料
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/inspiration-collection.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/worldbuilding/power-systems.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/creative-combination.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/market-positioning.md"
-```
-
-### 6.2 市场定位与主角设计
-
-**[AskUserQuestion Round 7]**
-
-| 问题 | 选项 |
-|------|------|
-| 市场定位 | 大众爽文 / 小众精品 / 中间路线 |
-| 主角原型 | 废材逆袭 / 天才崛起 / 重生复仇 / 穿越者 |
-| 主角性格 | 隐忍腹黑 / 热血冲动 / 冷静理智 / 外冷内热 |
-
-### 6.3 反派与感情线设计
-
-**[AskUserQuestion Round 8]**
-
-| 问题 | 选项 |
-|------|------|
-| 反派类型 | 嚣张跋扈型 / 阴险狡诈型 / 悲情反派 / 理念冲突型 |
-| 感情线设计 | 后宫多女 / 单一真爱 / 无感情线 / 暧昧不明确 |
-| 主角缺陷 | 性格缺陷 / 能力限制 / 心理阴影 / 无明显缺陷 |
-
-### 6.4 创意组合评估
-
-根据以上选择,使用 **创意 A+B+C 组合法** 评估:
-- A = 题材基础
-- B = 金手指特色
-- C = 差异化卖点
-
-输出灵感五维评估:新颖度/市场性/可写性/爽点密度/长线潜力
-
----
-
-## Phase 6.5: 创意约束生成 (Standard + Deep)
-
-**跳过条件**: Quick 模式跳过此阶段
-
-> **核心理念**: 约束不是限制,而是创意的催化剂;用结构化约束迫使非套路选择。
-
-### 6.5.1 加载创意约束资料
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/creativity-constraints.md"
-```
-
-**可选:按平台分类生成创意包**
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/category-constraint-packs.md"
-```
-
-根据题材**只加载一个**反套路库:
-
-```bash
-# 修仙/玄幻
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/anti-trope-xianxia.md"
-```
-
-或
-
-```bash
-# 规则怪谈
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/anti-trope-rules-mystery.md"
-```
-
-**可选:市场扫描(仅在用户明确要求时)**
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/creativity/market-trends-2026.md"
-```
-
-### 6.5.2 生成创意包(3-5个)
-
-基于前面收集的信息,生成 3-5 个创意包,每个包含:
-
-若 Phase 6 未执行,先补问 1-2 个关键问题(保持简短):
-- 规则限制偏好(从创意约束库中选 1-2 条)
-- 角色矛盾类型(主角“想要什么”与“怕失去什么”)
-
-| 字段 | 说明 |
-|------|------|
-| 书名 | 吸引眼球的标题 |
-| 一句话卖点 | 10秒电梯演讲 |
-| 三轴混搭 | 题材基础 + 规则限制 + 角色矛盾(至少2/3非默认) |
-| 反套路规则 | 从反套路库选择至少1条 |
-| 主角缺陷 | 必填,驱动成长 |
-| 反派镜像 | 与主角共享欲望/缺陷,采取相反道路 |
-| 开篇钩子 | 一句钩子 + 开场场景 + 第一章末悬念 |
-| 硬约束 | 2-3条世界观/能力/行为约束 |
-
-### 6.5.3 三问筛选
-
-对每个创意包进行三问筛选:
-
-| # | 问题 | 通过标准 |
-|---|------|---------|
-| Q1 | 这题材为什么"只能这样写"? | 能说出至少1个独特理由 |
-| Q2 | 这主角如果换成常规人设会崩吗? | 是(主角与故事深度绑定) |
-| Q3 | 这个卖点一句话能讲清、且不撞常见套路吗? | 是(卖点清晰且有差异化) |
-
-**筛选结果**:
-- 通过 3/3 → 进入评分
-- 通过 2/3 → 修改后重新筛选
-- 通过 1/3 或 0/3 → 淘汰
-
-### 6.5.4 五维评分
-
-| 维度 | 权重 | 1分 | 3分 | 5分 |
-|------|------|-----|-----|-----|
-| 新颖度 | 25% | 烂大街 | 微创新 | 开创新品类 |
-| 市场性 | 20% | 小众冷门 | 中等受众 | 大众热门 |
-| 可写性 | 20% | 极难驾驭 | 中等难度 | 易于实现 |
-| 爽点密度 | 20% | 爽点稀疏 | 中等密度 | 高密度 |
-| 长线潜力 | 15% | 难以续写 | 可续写 | 无限扩展 |
-
-**计算**: 总分 = 新颖度×2.5 + 市场性×2 + 可写性×2 + 爽点密度×2 + 长线潜力×1.5(满分50)
-
-### 6.5.5 选择最佳创意
-
-**[AskUserQuestion Round 9]**
-
-展示评分后的创意包,让用户选择:
-
-| 问题 | 选项 |
-|------|------|
-| 选择哪个创意? | 创意1: {title} ({score}分) / 创意2: {title} ({score}分) / ... / 重新生成 |
-
-### 6.5.6 记录创意(延后保存)
-
-先在输出中**明确标注**最终选中的创意包与继承约束;实际写入磁盘放到 Phase 7(确保已进入项目目录)。
-
----
-
-## Phase 7: 生成项目文件
-
-### 7.0 项目目录规则(必须执行)
-
-- 项目目录名 = 书名安全化(去除非法字符 `<>:"/\\|?*`,空格转 `-`,首尾去除 `-`)
-- 若结果为空或以 `.` 开头,前缀 `proj-`
-- **禁止**将项目目录放在 `.claude/` 下
-
-最终得到:
-- `project_root = "./{safe_title}"`
-
-### 7.1 执行初始化脚本
-
+# Project Initialization (Deep only)
+
+Goal: create a writing-ready project skeleton + creative constraints. No Quick/Standard mode.
+
+## Workflow
+1. Ask for deep setup info (story, character, world, golden finger, constraints).
+2. Run init_project.py with full parameters.
+3. Write idea_bank.json.
+4. Patch 总纲.md with the collected core info.
+5. Verify files.
+
+## References (read at specific phases)
+**Before Wave 1**:
+- skills/webnovel-init/references/genre-tropes.md
+
+**After genre selection**:
+- templates/genres/{genre}.md (read for each genre in A+B)
+
+**Before Wave 3 (golden finger)**:
+- templates/golden-finger-templates.md
+
+**Before Wave 4 (world)**:
+- skills/webnovel-init/references/worldbuilding/faction-systems.md
+
+**Before Wave 4 (constraints)**:
+- skills/webnovel-init/references/creativity/creativity-constraints.md
+- skills/webnovel-init/references/creativity/anti-trope-xianxia.md (修仙/玄幻/高武/西幻)
+- skills/webnovel-init/references/creativity/anti-trope-rules-mystery.md (规则/悬疑/灵异)
+
+**Optional (only if user explicitly asks)**:
+- skills/webnovel-init/references/creativity/market-trends-2026.md
+
+## Questioning style
+- Ask in 3–4 conversational waves; avoid rigid templates.
+- Ask only missing info; confirm before generation.
+- Offer options only when the user is stuck.
+
+### Suggested grouping (flexible)
+**Wave 1**: 书名 + 题材 + 目标规模 + 一句话故事
+**Wave 2**: 主角(姓名/欲望/缺陷/结构) + 感情线 + 反派分层
+**Wave 3**: 金手指(类型/名称/风格/可见度/代价) + 条件追问
+**Wave 4**: 世界观(规模/力量/势力/阶层/境界) + 创意约束确认
+
+Adjust order based on user's initial input. If user provides detailed info upfront, skip to missing items.
+
+## Required data (collect and map)
+Order is flexible; group by theme.
+
+### A) Project scale & premise
+- 书名
+- 题材(支持 A+B)
+  - 玄幻修仙类: 修仙 | 系统流 | 高武 | 西幻 | 无限流 | 末世 | 科幻
+  - 都市现代类: 都市异能 | 都市日常 | 都市脑洞 | 现实题材 | 黑暗题材
+  - 言情类: 古言 | 宫斗宅斗 | 青春甜宠 | 豪门总裁 | 职场婚恋 | 民国言情 | 幻想言情 | 现言脑洞 | 女频悬疑 | 狗血言情 | 替身文 | 多子多福 | 种田 | 年代
+  - 特殊题材: 规则怪谈 | 悬疑脑洞 | 悬疑灵异 | 历史古代 | 历史脑洞 | 游戏体育 | 抗战谍战 | 知乎短篇
+- 目标规模:总字数或总章数(若只给总字数,默认按每章 3500 估算并告知)
+- 一句话故事 + 核心冲突 + 主线目标
+- 目标读者/平台(可一句话描述)
+
+### B) 主角与阵营
+- 主角姓名、人设类型、核心欲望、关键缺陷
+- 主角结构(单/多主角)+ 多主角姓名与定位
+- 感情线:无/单女主/多女主;女主姓名与定位
+- 反派分层(小/中/大)+ 反派镜像一句话 + 反派等级(若有)
+
+### C) 金手指
+- 类型、名称/系统名、风格
+  - 常见类型: 系统面板 | 重生记忆 | 老爷爷/传承 | 血脉觉醒 | 异能觉醒 | 随身空间 | 无金手指
+- 读者可见度、不可逆代价、成长节奏
+- 条件追问(根据类型):
+  - 系统面板 → 系统性格、系统命名、升级节奏
+  - 重生记忆 → 重生时间点、记忆完整度、先知程度
+  - 老爷爷/传承 → 器灵性格、器灵实力、辅助方式
+  - 随身空间 → 空间大小、特殊功能、升级方式
+  - 血脉觉醒 → 血脉来源、觉醒条件、能力限制
+  - 异能觉醒 → 异能来源、异能上限、是否可进化
+  - 无金手指 → 主角天赋、特殊机遇、成长路线
+
+### D) 世界观与力量
+- 世界规模、势力格局、力量体系类型
+- 社会阶层、资源分配
+- 货币体系 + 兑换规则
+- 宗门/组织层级
+- 境界链 + 小境界划分(如适用)
+
+### E) 创意约束
+**Generation flow**:
+1. Load anti-trope library based on genre (xianxia or rules-mystery)
+2. Generate 2-3 creative packages, each containing:
+   - 书名变体(可选)
+   - 一句话卖点
+   - 反套路规则(从库中选 1 条)
+   - 主角缺陷(驱动故事)
+   - 反派镜像设计(一句话)
+   - 开篇钩子
+   - 硬约束 2–3 条
+3. Apply 三问筛选:
+   - Q1: 这题材为什么"只能这样写"?
+   - Q2: 这主角如果换成常规人设会崩吗?
+   - Q3: 这个卖点一句话能讲清、且不撞常见套路吗?
+4. Score each package (满分 50):
+   - 新颖度 25% | 市场性 20% | 可写性 20% | 爽点密度 20% | 长线潜力 15%
+5. Present packages to user for selection
+
+**Collected data**:
+- 反套路规则(从对应库选 1 条)
+- 硬约束 2–3 条
+- 主角缺陷如何驱动故事(一句话)
+- 反派镜像如何体现(一句话)
+- 开篇钩子 + 核心卖点 1–3 条
+
+## Generate project
+
+### Sufficiency check (must pass before running init)
+Hard requirement: do not run init_project.py until all items below are known or explicitly deferred by the user.
+- 书名、题材(含复合题材)
+- 目标规模(总字数或总章数)
+- 主角姓名 + 欲望 + 缺陷
+- 世界规模 + 力量体系类型
+- 金手指类型(可为“无金手指”)
+- 反套路规则 + 硬约束(若用户拒绝创意约束,必须明确记录)
+
+If any is missing, stop and ask only for the missing items.
+
+### Project directory
+- project_root = 书名安全化(去非法字符,空格转 `-`;为空或以 `.` 开头则前缀 `proj-`)
+- 禁止在 `.claude/` 下生成
+
+### Run init script
 ```bash
 python "${CLAUDE_PLUGIN_ROOT}/scripts/init_project.py" \
   "{project_root}" \
   "{title}" \
   "{genre}" \
-  --protagonist-name "{name}" \
-  --target-words {count} \
+  --protagonist-name "{protagonist_name}" \
+  --target-words {target_words} \
+  --target-chapters {target_chapters} \
   --golden-finger-name "{gf_name}" \
   --golden-finger-type "{gf_type}" \
+  --golden-finger-style "{gf_style}" \
+  --core-selling-points "{core_points}" \
   --protagonist-structure "{protagonist_structure}" \
   --heroine-config "{heroine_config}" \
   --heroine-names "{heroine_names}" \
@@ -409,161 +156,72 @@ python "${CLAUDE_PLUGIN_ROOT}/scripts/init_project.py" \
   --power-system-type "{power_system_type}" \
   --social-class "{social_class}" \
   --resource-distribution "{resource_distribution}" \
+  --gf-visibility "{gf_visibility}" \
+  --gf-irreversible-cost "{gf_irreversible_cost}" \
   --currency-system "{currency_system}" \
   --currency-exchange "{currency_exchange}" \
   --sect-hierarchy "{sect_hierarchy}" \
   --cultivation-chain "{cultivation_chain}" \
   --cultivation-subtiers "{cultivation_subtiers}" \
-  --gf-visibility "{gf_visibility}" \
-  --gf-irreversible-cost "{gf_irreversible_cost}" \
-  --core-selling-points "{points}"
+  --protagonist-desire "{protagonist_desire}" \
+  --protagonist-flaw "{protagonist_flaw}" \
+  --protagonist-archetype "{protagonist_archetype}" \
+  --antagonist-level "{antagonist_level}" \
+  --target-reader "{target_reader}" \
+  --platform "{platform}"
 ```
 
-### 7.2 进入项目目录(必须执行)
+### Write idea_bank.json
+Create `.webnovel/idea_bank.json` with the selected idea and inherited constraints.
 
-```bash
-cd "{project_root}"
-```
-
-### 7.2.1 保存创意到 idea_bank(如有)
-
-> 前提:已 `cd` 到项目目录,且 `.webnovel/` 已由 init 脚本创建。
-
-```bash
-@'
+```json
 {
   "selected_idea": {
-    "title": "示例标题",
-    "one_liner": "示例一句话卖点",
-    "anti_trope": "选中的反套路规则",
-    "hard_constraints": ["硬约束1", "硬约束2"]
+    "title": "",
+    "one_liner": "",
+    "anti_trope": "",
+    "hard_constraints": []
   },
-  "rejected_ideas": [],
   "constraints_inherited": {
-    "anti_trope": "选中的反套路规则",
-    "hard_constraints": ["硬约束1", "硬约束2"],
-    "protagonist_flaw": "主角缺陷",
-    "antagonist_mirror": "反派镜像设计"
+    "anti_trope": "",
+    "hard_constraints": [],
+    "protagonist_flaw": "",
+    "antagonist_mirror": ""
   }
 }
-'@ | Set-Content -Encoding UTF8 ".webnovel/idea_bank.json"
 ```
 
-### 7.2.2 保存市场扫描结果(如有)
-
-> 仅在用户明确要求“市场扫描/热门趋势”时执行。
-
-```bash
-@'
-# Market Notes ({YYYY-MM-DD})
-
-来源:
-- {来源1}
-- {来源2}
-
-要点:
-- {标签/方向}
-- {标签/方向}
-'@ | Set-Content -Encoding UTF8 ".webnovel/market_notes-{YYYYMMDD}.md"
-```
-
-### 7.3 生成文件清单(含模板写入)
-
-| 文件 | 说明 | 生成时机 | 写入路径 |
-|------|------|---------|---------|
-| `.webnovel/state.json` | 运行时状态 | init Phase 7 | `.webnovel/state.json` |
-| `.webnovel/index.db` | 实体索引数据库 | init Phase 7 + 索引初始化 | `.webnovel/index.db` |
-| `设定集/世界观.md` | 世界观设定模板 | init Phase 7 | `设定集/世界观.md` |
-| `设定集/力量体系.md` | 力量体系模板 | init Phase 7 | `设定集/力量体系.md` |
-| `设定集/主角卡.md` | 主角卡模板 | init Phase 7 | `设定集/主角卡.md` |
-| `设定集/女主卡.md` | 女主卡模板 | init Phase 7 | `设定集/女主卡.md` |
-| `设定集/主角组.md` | 多主角协作模板 | init Phase 7 | `设定集/主角组.md` |
-| `设定集/金手指设计.md` | 金手指设计模板 | init Phase 7 | `设定集/金手指设计.md` |
-| `设定集/复合题材-融合逻辑.md` | 复合题材融合模板 | init Phase 7 | `设定集/复合题材-融合逻辑.md` |
-| `设定集/反派设计.md` | 反派模板 | init Phase 7 | `设定集/反派设计.md` |
-| `大纲/总纲.md` | 总纲模板 | init Phase 7 | `大纲/总纲.md` |
-| `大纲/爽点规划.md` | 爽点规划模板 | init Phase 7 | `大纲/爽点规划.md` |
-
-**模板引用方式**:
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/templates/output/设定集-世界观.md" | 填充变量 > 设定集/世界观.md
-```
-
-### 7.4 初始化索引数据库(推荐)
-
-```bash
-python -m data_modules.index_manager stats --project-root "{project_root}"
-```
-
----
-
-## Phase 8: 验证并报告
-
-### 8.1 验证文件
+### Patch 总纲.md
+After init, fill these fields in `大纲/总纲.md` using collected info:
+- 故事一句话 / 核心主线 / 核心暗线
+- 创意约束(反套路规则 / 硬约束 / 主角缺陷 / 反派镜像)
+- 反派分层概要
+- 关键爽点里程碑(2–3 条)
 
+### Verify
 ```bash
 Get-Item "{project_root}/.webnovel/state.json"
 Get-ChildItem "{project_root}/设定集" -Filter *.md
-```
-
-### 8.2 初始化 Git(可选)
-
-```bash
-git -C "{project_root}" init && git -C "{project_root}" add . && git -C "{project_root}" commit -m "初始化网文项目:{title}"
-```
-
-### 8.3 输出三大定律提醒
-
-1. **大纲即法律**: 遵循大纲,不擅自发挥
-2. **设定即物理**: 遵守设定,不自相矛盾(查询 index.db 确认)
-3. **发明需识别**: 新实体由 Data Agent 自动提取
-
----
-
-## AskUserQuestion 轮次汇总
-
-| 轮次 | 阶段 | 问题数 | 适用模式 |
-|------|------|--------|----------|
-| Round 1 | Phase 1 | 1 | All |
-| Round 2 | Phase 2 | 1 | All |
-| Round 3 | Phase 2 | 2 | All |
-| Round 4 | Phase 3 | 3 | All |
-| Round 5 | Phase 4 | 4 | Standard/Deep |
-| Round 6 | Phase 5 | 8 | Standard/Deep |
-| Round 7 | Phase 6 | 3 | Deep |
-| Round 8 | Phase 6 | 3 | Deep |
-| Round 9 | Phase 6.5 | 1 | Standard/Deep |
-
-**Quick 模式**: Round 1-4
-**Standard 模式**: Round 1-6, 9
-**Deep 模式**: Round 1-9
-
----
-
-## 变量映射(用于 init_project.py)
-
-> 统一变量名,直接拼接到 Phase 7 的命令参数。
-
-| 来源问题 | 变量名 | 格式示例 |
-|---------|--------|----------|
-| 主角结构 | `protagonist_structure` | 单主角 / 多主角 |
-| 女主配置 | `heroine_config` | 无女主 / 单女主 / 多女主 |
-| 女主姓名 | `heroine_names` | 叶清 / 叶清,苏晚 |
-| 女主定位 | `heroine_role` | 事业线 / 情感线 / 对抗线 |
-| 多主角姓名 | `co_protagonists` | 林天,顾言 |
-| 多主角定位 | `co_protagonist_roles` | 主线,副线 |
-| 反派分层 | `antagonist_tiers` | 小反派:张三;中反派:李四;大反派:王五 |
-| 世界规模 | `world_scale` | 多大陆 |
-| 势力格局 | `factions` | 门派/宗门 |
-| 力量体系 | `power_system_type` | 境界修炼型 |
-| 社会阶层 | `social_class` | 阶级森严 |
-| 资源分配 | `resource_distribution` | 资源稀缺 |
-| 货币体系 | `currency_system` | 灵石/灵晶 |
-| 货币兑换 | `currency_exchange` | 1灵晶=100灵石 |
-| 宗门层级 | `sect_hierarchy` | 宗主-长老-核心-内门-外门 |
-| 典型境界链 | `cultivation_chain` | 练气-筑基-金丹-元婴 |
-| 小境界划分 | `cultivation_subtiers` | 初/中/后/巅 |
-| 金手指可见度 | `gf_visibility` | 明牌 |
-| 金手指不可逆代价 | `gf_irreversible_cost` | 寿命 / 记忆 |
-
-**复合题材**:`genre = 题材A+题材B`(最多 2 个),其余变量不变。
+Get-Item "{project_root}/大纲/总纲.md"
+```
+
+### Final check
+- `.webnovel/state.json` 存在且包含 title/genre/target_words/target_chapters
+- `设定集/世界观.md`、`力量体系.md`、`主角卡.md`、`金手指设计.md` 已生成
+- `大纲/总纲.md` 已填:一句话故事 / 核心主线 / 创意约束 / 反派分层
+- `.webnovel/idea_bank.json` 已写入(有创意约束时)
+
+### Hard fail conditions (must stop)
+- 任一关键文件不存在(state.json / 总纲.md / 设定集主文件)
+- 总纲关键字段为空(故事一句话 / 核心主线 / 创意约束 / 反派分层)
+- idea_bank.json 需要但未生成(当创意约束被启用时)
+
+### Rollback / recovery
+If any hard fail triggers:
+1. Stop and report missing items.
+2. Ask only for missing info.
+3. Re-run the minimal step needed:
+   - Missing files → re-run init_project.py.
+   - 总纲缺字段 → patch 总纲.md only.
+   - idea_bank.json 缺失 → write it only.
+4. Re-run Final check. Do not proceed to /webnovel-plan until passing.

+ 209 - 380
.claude/skills/webnovel-plan/SKILL.md

@@ -1,419 +1,245 @@
 ---
 name: webnovel-plan
-description: Plans detailed volume outlines with chapter-by-chapter breakdown, cool-point distribution, and Strand Weave pacing. Activates when user requests outline planning or /webnovel-plan.
-allowed-tools: Read Write Edit AskUserQuestion Bash
+description: Builds volume and chapter outlines from the total outline, inherits creative constraints, and prepares writing-ready chapter plans. Use when the user asks for outlining or runs /webnovel-plan.
 ---
 
-# Outline Planning Skill
+# Outline Planning
 
-## 定位说明
+Purpose: refine 总纲 into volume + chapter outlines. Do not redesign the global story.
 
-本技能用于**将总纲细化为章节大纲**,而非从头设计卷结构。
+## Project Root Guard
+- Must run inside a project containing `.webnovel/state.json`.
+- If missing, ask for the project path and `cd` into it.
 
-- 卷的章节范围、核心冲突、关键爽点、伏笔安排等信息**从总纲获取**
-- 用户可选择**微调**总纲设定,但不建议大幅修改
-- 重点是为每一章设计具体内容:目标、爽点、Strand、实体、伏笔
+## References (read at specific phases)
+**Before Step 3 (volume skeleton)**:
+- skills/webnovel-plan/references/strand-weave-pattern.md
+- skills/webnovel-plan/references/cool-points-guide.md
+- .claude/references/genre-profiles.md (load genre-specific standards)
 
----
-
-## Project Root Guard(必须先确认)
-
-- 必须在项目根目录执行(需存在 `.webnovel/state.json`)
-- 若当前目录不存在该文件,先询问用户项目路径并 `cd` 进入
-- 进入后设置变量:`$PROJECT_ROOT = (Resolve-Path ".").Path`
-- **禁止**在 `.claude/` 下写入任何项目文件
-
----
-
-## Workflow Checklist
-
-```
-大纲规划进度:
-- [ ] Phase 1: 加载核心资料
-- [ ] Phase 2: 加载项目数据 + 解析总纲
-- [ ] Phase 2.5: 加载创意约束(如存在) ← 新增
-- [ ] Phase 3: 确认上下文充足
-- [ ] Phase 4: 选择规划范围
-- [ ] Phase 5: 微调确认(可选)
-- [ ] Phase 6: 生成章节大纲
-- [ ] Phase 7: 质量验证(含约束继承检查)
-- [ ] Phase 8: 保存并更新状态
-```
-
----
-
-## Phase 1: 加载核心资料
-
-### 1.1 加载爽点指南(必须执行)
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan/references/cool-points-guide.md"
-```
+**Before Step 4 (chapter outlines)**:
+- .claude/references/reading-power-taxonomy.md (for hook types and pacing)
 
-**关键规则**:
-- 每章 ≥1 个小爽点(单一模式)
-- 每 5 章 ≥1 个组合爽点(2种模式叠加)
-- 每 10-15 章 ≥1 个里程碑爽点(改变主角地位)
-- 避免连续 3 章同类型
-
-### 1.2 加载节奏规范(必须执行)
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan/references/strand-weave-pattern.md"
-```
-
-**关键规则**:
-- Quest ≤5 连续章
-- Fire 每 10 章内出现
-- Constellation 每 15 章内出现
-- 目标比例: Quest 55-65%, Fire 20-30%, Constellation 10-20%
-
-### 1.3 加载大纲设计参考(必须执行)
-
-```bash
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan/references/outlining/chapter-planning.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan/references/outlining/conflict-design.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan/references/outlining/outline-structure.md"
-cat "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-plan/references/outlining/plot-frameworks.md"
-```
-
----
-
-## Phase 2: 加载项目数据
-
-### 2.1 加载状态和总纲
+## Workflow
+1. Load project data.
+2. Select volume and confirm scope.
+3. Generate volume skeleton.
+4. Generate chapter outlines in batches.
+5. Validate + save + update state.
 
+## 1) Load project data
 ```bash
 cat "$PROJECT_ROOT/.webnovel/state.json"
 cat "$PROJECT_ROOT/大纲/总纲.md"
 ```
 
-### 2.1.1 读取人物与反派设定(如存在)
-
-```bash
-if (Test-Path "$PROJECT_ROOT/设定集/主角组.md") { Get-Content "$PROJECT_ROOT/设定集/主角组.md" -Encoding UTF8 }
-if (Test-Path "$PROJECT_ROOT/设定集/女主卡.md") { Get-Content "$PROJECT_ROOT/设定集/女主卡.md" -Encoding UTF8 }
-if (Test-Path "$PROJECT_ROOT/设定集/反派设计.md") { Get-Content "$PROJECT_ROOT/设定集/反派设计.md" -Encoding UTF8 }
-```
-### 2.2 解析总纲卷结构
+Optional (only if they exist):
+- `设定集/主角组.md`
+- `设定集/女主卡.md`
+- `设定集/反派设计.md`
+- `.webnovel/idea_bank.json` (inherit constraints)
 
-从总纲中提取:
-- 总体结构(阶段/章节/境界/地图)
-- 各卷信息:
-  - 章节范围
-  - 核心冲突
-  - 关键爽点(已设计的)
-  - 卷末高潮
-  - 主要登场角色
-  - 伏笔安排(埋/收)
+If 总纲.md lacks volume ranges / core conflict / climax, ask the user to fill those before proceeding.
 
-### 2.3 检查已有详细大纲
+## 2) Select volume
+- Offer choices from 总纲.md (卷名 + 章节范围).
+- Confirm any special requirement (tone, POV emphasis, romance, etc.).
+If 总纲缺少卷名/章节范围/核心冲突/卷末高潮,先补问并更新总纲,再继续。
 
+## 3) Generate volume skeleton
+Load genre profile and apply standards:
 ```bash
-Get-ChildItem "$PROJECT_ROOT/大纲/第*卷*.md" -ErrorAction SilentlyContinue
+cat ".claude/references/genre-profiles.md"
 ```
 
----
-
-## Phase 2.5: 加载创意约束(如存在)
-
-### 2.5.1 检查 idea_bank.json
-
+Extract for current genre:
+- Strand 比例(Quest/Fire/Constellation)
+- 爽点密度标准(每章最低/推荐)
+- 钩子类型偏好
+
+### Strand Weave 规划策略
+Based on genre profile, distribute chapters:
+- **Quest Strand** (主线推进): 40-60% 章节
+  - 目标明确、进展可见、有阶段性成果
+  - 例:突破境界、完成任务、获得宝物
+- **Fire Strand** (情感/关系): 20-35% 章节
+  - 人物关系变化、情感冲突、团队动态
+  - 例:与女主互动、师徒矛盾、兄弟背叛
+- **Constellation Strand** (世界/谜团): 10-25% 章节
+  - 世界观揭示、伏笔埋设、谜团推进
+  - 例:发现古老秘密、揭示反派阴谋、世界真相
+
+**Weaving pattern** (recommended):
+- 每 3-5 章切换主导 Strand
+- 高潮章节可多 Strand 交织
+- 卷末 3-5 章集中 Quest Strand
+
+### 爽点密度规划策略
+Based on genre profile:
+- **常规章节**: 1-2 个小爽点(强度 2-3)
+- **关键章节**: 2-3 个爽点,至少 1 个中爽点(强度 4-5)
+- **高潮章节**: 3-4 个爽点,至少 1 个大爽点(强度 6-7)
+
+**Distribution rule**:
+- 每 5-8 章至少 1 个关键章节
+- 每卷至少 1 个高潮章节(通常在卷末)
+
+### 约束触发规划策略
+If idea_bank.json exists:
 ```bash
-if (Test-Path "$PROJECT_ROOT/.webnovel/idea_bank.json") {
-    Get-Content "$PROJECT_ROOT/.webnovel/idea_bank.json" -Encoding UTF8
-}
-```
-
-### 2.5.2 提取继承约束
-
-如果 `idea_bank.json` 存在,提取以下约束用于大纲规划:
-
-| 约束类型 | 来源字段 | 用途 |
-|---------|---------|------|
-| 反套路规则 | `constraints_inherited.anti_trope` | 每 N 章至少触发 1 次 |
-| 硬约束 | `constraints_inherited.hard_constraints` | 贯穿全卷的世界观/能力限制 |
-| 主角缺陷 | `constraints_inherited.protagonist_flaw` | 影响主角行为和成长 |
-| 反派镜像 | `constraints_inherited.antagonist_mirror` | 设计反派冲突 |
-
-### 2.5.3 约束触发频率
-
-| 卷规模 | 约束触发频率 |
-|--------|-------------|
-| ≤20章 | 每 5 章至少 1 次 |
-| 21-40章 | 每 5 章至少 1 次 |
-| 41-60章 | 每 6 章至少 1 次 |
-| >60章 | 每 7 章至少 1 次 |
-
-**约束触发示例**:
-- 反套路规则"金手指有代价" → 第5章主角使用金手指付出代价
-- 硬约束"修仙者不能杀凡人" → 第12章主角面临凡人威胁但无法直接出手
-
----
-
-## Phase 3: 确认上下文充足
-
-**检查清单**:
-- [ ] 爽点类型和密度要求已理解
-- [ ] Strand Weave 比例已理解
-- [ ] 总纲卷结构已解析(知道有多少卷、每卷范围)
-- [ ] 当前写作进度已知(state.json)
-- [ ] 章节规划技巧已加载(outlining/*)
-
-**如有缺失 → 返回对应 Phase**
-
----
-
-## Phase 4: 选择规划范围
-
-### 4.1 选择要规划的卷
-
-**[AskUserQuestion Round 1]**
-
-根据总纲解析结果,动态生成选项:
-
-| 问题 | 选项示例 |
-|------|----------|
-| 要规划第几卷? | 第1卷:废材崛起(1-50章) / 第2卷:宗门大比(51-100章) / 第3卷:乱葬探秘(101-150章) / 其他卷 |
-
-> 选项从总纲自动提取,显示卷名和章节范围。如果用户选"其他卷",追问具体卷号。
-
-### 4.2 显示该卷总纲信息
-
-选择卷后,展示从总纲获取的信息:
-
-```
-【第X卷总纲信息】
-- 章节范围: 第{start}-{end}章
-- 核心冲突: {conflict}
-- 关键爽点: {cool_points}
-- 卷末高潮: {climax}
-- 登场角色: {characters}
-- 反派层级: {antagonist_tier}
-- 伏笔安排: {foreshadowing}
+cat ".webnovel/idea_bank.json"
 ```
 
----
-
-## Phase 5: 微调确认(可选)
-
-### 5.1 确认是否调整
-
-**[AskUserQuestion Round 2]**
+Calculate trigger frequency:
+- **反套路规则**: 每 N 章触发 1 次
+  - N = max(5, 总章数 / 10)
+  - 例:50 章卷 → 每 5 章触发
+  - 例:100 章卷 → 每 10 章触发
+- **硬约束**: 贯穿全卷,在章节目标/爽点设计中体现
+- **主角缺陷**: 每卷至少 2 次成为冲突来源
+- **反派镜像**: 反派出场章节必须体现镜像对比
 
-| 问题 | 选项 |
-|------|------|
-| 是否调整卷设定? | 使用总纲设定(推荐) / 微调核心冲突 / 微调爽点安排 / 微调伏笔 |
-| 爽点类型侧重? | 按总纲均衡分布 / 侧重打脸反杀 / 侧重淘宝捡漏 / 侧重识破伪装 |
-
-### 5.2 Strand 分布偏好
-
-**[AskUserQuestion Round 3]**
-
-| 问题 | 选项 |
-|------|------|
-| 本卷节奏偏好? | Quest重(战斗升级) / Fire重(感情发展) / Constellation重(世界观) / 均衡分布 |
-| 感情线安排? | 推进现有感情线 / 引入新角色 / 维持暧昧 / 本卷无感情戏 |
-
-### 5.3 实力提升确认
-
-**[AskUserQuestion Round 4]**(如总纲有境界变化)
-
-| 问题 | 选项 |
-|------|------|
-| 境界突破时机? | 卷初突破 / 卷中突破 / 卷末突破(推荐) / 无突破 |
-| 突破方式? | 战斗中顿悟 / 闭关修炼 / 机缘获得 / 生死危机激发 |
-
----
-
-## Phase 6: 生成章节大纲
-
-### ⚠️ Token 控制策略
-
-**问题**:50章详细大纲一次性生成约 12000-17000 字,容易导致思考超时(504错误)。
-
-**解决方案:分批生成**
-
-| 卷规模 | 分批策略 | 每批章节数 |
-|--------|----------|-----------|
-| ≤20章 | 1批完成 | 全部 |
-| 21-40章 | 2批 | 每批10-20章 |
-| 41-60章 | 3批 | 每批15-20章 |
-| >60章 | 4+批 | 每批15章 |
-
-**执行流程**:
-1. 先生成**卷骨架**(卷摘要 + Strand规划 + 爽点密度表)
-2. 分批生成**章节详细大纲**(每批10-20章)
-3. 每批生成后保存,再继续下一批
-
-### 6.1 第一步:生成卷骨架
+Use this template and fill from 总纲 + idea_bank:
 
 ```markdown
 # 第 {volume_id} 卷:{卷名}
 
-> **章节范围**: 第 {start} - {end} 章
-> **核心冲突**: {从总纲获取或用户调整}
-> **本卷目标**: {境界/地位/关系变化}
+> 章节范围: 第 {start} - {end} 章
+> 核心冲突: {conflict}
+> 卷末高潮: {climax}
 
 ## 卷摘要
-{2-3 段落,概述本卷剧情走向}
-
----
+{2-3 段落概述}
 
-## Strand Weave 规划(先规划,后填充)
+## 关键人物与反派
+- 主要登场角色:
+- 反派层级:
 
+## Strand Weave 规划
 | 章节范围 | 主导 Strand | 内容概要 |
 |---------|------------|---------|
-| 第1-5章 | Quest | {简要概述} |
-| 第6章 | Fire | {简要概述} |
-| 第7-10章 | Quest | {简要概述} |
-| ... | ... | ... |
-
-### Strand 占比统计
-- Quest: X% (目标: 55-65%)
-- Fire: Y% (目标: 20-30%)
-- Constellation: Z% (目标: 10-20%)
-
----
-
-## 爽点密度规划(先规划关键节点)
 
+## 爽点密度规划
 | 章节 | 爽点类型 | 具体内容 | 强度 |
 |------|---------|---------|------|
-| 第1章 | 小爽点 | {开局爽点} | ⭐ |
-| 第5章 | 组合爽点 | {第一个组合} | ⭐⭐ |
-| 第10章 | 里程碑爽点 | {第一个里程碑} | ⭐⭐⭐ |
-| 第{end}章 | 里程碑爽点 | {卷末高潮} | ⭐⭐⭐ |
-
----
 
 ## 伏笔规划
+| 章节 | 操作 | 伏笔内容 |
+|------|------|---------|
 
-| 章节 | 操作 | 伏笔内容 | 层级 |
-|------|------|---------|------|
-| 第X章 | 埋设 | {内容} | 支线 |
-| 第Y章 | 回收 | {内容} | 核心 |
-
-## 主角/女主推进(如适用)
-
-| 角色 | 本卷目标 | 关键转折 | 关系推进 |
-|------|----------|----------|----------|
-| 主角 | {目标} | {转折} | {关系} |
-| 女主 | {目标} | {转折} | {关系} |
-
-## 反派分层推进
-
-| 层级 | 目标 | 出场章节 | 本卷推进 |
-|------|------|----------|----------|
-| 小反派 | {目标} | {章节} | {推进方式} |
-| 中反派 | {目标} | {章节} | {推进方式} |
-| 大反派 | {目标} | {章节} | {推进方式} |
+## 约束触发规划(如有)
+- 反套路规则:每 N 章触发一次
+- 硬约束:贯穿全卷
 ```
 
-**骨架生成后,询问用户是否继续生成章节详情。**
-
-### 6.2 第二步:分批生成章节详情
-
-**[AskUserQuestion Round 5]**(骨架完成后)
-
-| 问题 | 选项 |
-|------|------|
-| 骨架已生成,继续生成章节详情? | 生成第1-10章 / 生成第1-20章 / 全部生成(可能超时) / 先保存骨架 |
-
-**每批章节格式**(增强版,控制字数):
+## 4) Generate chapter outlines (batched)
+Batching rule:
+- ≤20 章:1 批
+- 21–40 章:2 批
+- 41–60 章:3 批
+- >60 章:4+ 批
+
+### Chapter generation strategy
+For each chapter, determine:
+
+**1. Strand assignment** (follow volume skeleton distribution)
+- Quest: 主线任务推进、目标达成、能力提升
+- Fire: 人物关系、情感冲突、团队动态
+- Constellation: 世界揭示、伏笔埋设、谜团推进
+
+**2. 爽点设计** (based on Strand and position)
+- Quest Strand → 成就爽点(打脸、逆袭、突破)
+- Fire Strand → 情感爽点(认可、保护、告白)
+- Constellation Strand → 认知爽点(真相、预言、身份)
+
+**3. 钩子设计** (based on next chapter's Strand)
+- 悬念钩子:提出问题、制造危机
+- 承诺钩子:预告奖励、暗示转折
+- 情感钩子:关系变化、角色危机
+
+**4. 反派层级** (based on volume skeleton)
+- 无:日常章节、修炼章节、关系章节
+- 小:小冲突、小反派、局部对抗
+- 中:中反派出场、重要冲突、阶段性对抗
+- 大:大反派出场、核心冲突、卷级高潮
+
+**5. 关键实体** (new or important)
+- 新角色:姓名 + 一句话定位
+- 新地点:名称 + 一句话描述
+- 新物品:名称 + 功能
+- 新势力:名称 + 立场
+
+**6. 约束检查** (if idea_bank exists)
+- 是否触发反套路规则?
+- 是否体现硬约束?
+- 是否展现主角缺陷?
+- 是否体现反派镜像?
+
+Chapter format (include 反派层级 for context-agent):
 
 ```markdown
-## 第 {batch_start}-{batch_end} 章详情
-
 ### 第 {N} 章:{标题}
-- **目标**: {20字以内}
-- **开头类型**: {冲突开场/悬疑开场/动作开场/对话开场/氛围开场}
-- **爽点**: {类型} - {30字以内}
-- **Strand**: {Quest|Fire|Constellation}
-- **视角/主角**: {主角A/主角B/女主/群像}
-- **反派层级**: {无/小反派/中反派/大反派}
-- **实体**: {新增角色/物品,如有}
-- **钩子类型**: {危机钩/悬念钩/情绪钩/选择钩/渴望钩}
-- **钩子内容**: {章末悬念,30字以内}
-- **接住上章**: {如何接住上章钩子,20字以内}
+- 目标: {20字以内}
+- 爽点: {类型} - {30字以内}
+- Strand: {Quest|Fire|Constellation}
+- 反派层级: {无/小/中/大}
+- 视角/主角: {主角A/主角B/女主/群像}
+- 关键实体: {新增或重要出场}
+- 钩子: {类型} - {30字以内}
 ```
 
-**每批约 1500-2500 字,避免超时。**
-
-### 6.3 分批保存策略
-
-每批生成后立即追加保存到大纲文件:
+**字段说明**:
+- **钩子**:本章应设置的章末钩子(规划用)
+  - 例:悬念钩 - 神秘人身份即将揭晓
+  - 意思是:本章结尾要设置这个悬念钩子
+  - 下章 context-agent 会读取 chapter_meta[N].hook(实际实现的钩子),生成"接住上章"指导
+  - 钩子类型参考:悬念钩 | 危机钩 | 承诺钩 | 情绪钩 | 选择钩 | 渴望钩
 
+Save after each batch:
 ```bash
-# 第一批
-@'
-{第1-10章内容}
-'@ | Add-Content -Encoding UTF8 "$PROJECT_ROOT/大纲/第{volume_id}卷-详细大纲.md"
-
-# 第二批
 @'
-{第11-20章内容}
+{batch_content}
 '@ | Add-Content -Encoding UTF8 "$PROJECT_ROOT/大纲/第{volume_id}卷-详细大纲.md"
 ```
 
-这样即使中途失败,已生成的内容不会丢失。
-
----
-
-## Phase 7: 质量验证
-
-**验证清单**:
-
-### 爽点检查
-- [ ] 每章有 ≥1 小爽点
-- [ ] 每 5 章有 ≥1 组合爽点
-- [ ] 每 10-15 章有 ≥1 里程碑爽点
-- [ ] 无 3+ 连续同类型爽点
-
-### Strand 检查
-- [ ] Quest ≤5 连续章
-- [ ] Fire 每 10 章内出现
-- [ ] Constellation 每 15 章内出现
-- [ ] 占比符合目标范围
-
-### 一致性检查
-- [ ] 与总纲核心冲突一致
-- [ ] 与总纲伏笔安排一致
-- [ ] 登场角色符合总纲设定
-- [ ] 卷末高潮符合预期
-- [ ] 多主角/女主视角分配合理(如适用)
-
-### 约束继承检查(如有 idea_bank.json)
-- [ ] 反套路规则每 N 章至少触发 1 次
-- [ ] 硬约束在关键章节体现
-- [ ] 主角缺陷影响至少 2 个关键决策
-- [ ] 反派镜像设计在反派出场章节体现
-
-**约束触发统计表**(如适用):
-
-```markdown
-## 约束触发统计
-
-| 约束 | 触发章节 | 触发方式 |
-|------|---------|---------|
-| {反套路规则} | 第X章, 第Y章 | {描述} |
-| {硬约束1} | 第A章, 第B章 | {描述} |
-| {硬约束2} | 第C章 | {描述} |
-| 主角缺陷 | 第D章, 第E章 | {影响决策} |
-```
-
----
-
-## Phase 8: 保存并更新状态
-
-### 8.1 保存大纲文件
-
-```bash
-# 保存到: 大纲/第{volume_id}卷-详细大纲.md
-```
-
-### 8.2 更新项目状态
-
+## 5) Validate + save
+### Validation checks (must pass all)
+
+**1. 爽点密度检查**
+- 每章 ≥1 小爽点(强度 2-3)
+- 每 5-8 章至少 1 个关键章节(强度 4-5)
+- 每卷至少 1 个高潮章节(强度 6-7)
+
+**2. Strand 比例检查**
+Count chapters by Strand and compare with genre profile:
+- Quest: 应占 40-60%
+- Fire: 应占 20-35%
+- Constellation: 应占 10-25%
+
+If deviation > 15%, adjust chapter assignments.
+
+**3. 总纲一致性检查**
+- 卷核心冲突是否贯穿章节?
+- 卷末高潮是否在最后 3-5 章体现?
+- 关键人物是否按计划登场?
+
+**4. 约束触发频率检查** (if idea_bank exists)
+- 反套路规则触发次数 ≥ 总章数 / N(N = max(5, 总章数/10))
+- 硬约束在至少 50% 章节中体现
+- 主角缺陷至少 2 次成为冲突来源
+- 反派镜像在反派出场章节中体现
+
+**5. 完整性检查**
+Every chapter must have:
+- 目标(20 字以内)
+- 爽点(类型 + 30 字描述)
+- Strand(Quest/Fire/Constellation)
+- 反派层级(无/小/中/大)
+- 视角/主角
+- 关键实体(至少 1 个)
+- 钩子(类型 + 30 字描述)
+
+Update state (include chapters range):
 ```bash
 python "${CLAUDE_PLUGIN_ROOT}/scripts/update_state.py" \
   --project-root "$PROJECT_ROOT" \
@@ -421,21 +247,24 @@ python "${CLAUDE_PLUGIN_ROOT}/scripts/update_state.py" \
   --chapters-range "{start}-{end}"
 ```
 
-### 8.3 输出下一步建议
-
-- 如需继续规划下一卷 → 重新执行 /webnovel-plan
-- 如准备开始写作 → 执行 /webnovel-write
-
----
-
-## AskUserQuestion 轮次汇总
-
-| 轮次 | 阶段 | 问题数 | 说明 |
-|------|------|--------|------|
-| Round 1 | Phase 4 | 1 | 选择要规划的卷 |
-| Round 2 | Phase 5 | 2 | 确认是否调整 + 爽点侧重 |
-| Round 3 | Phase 5 | 2 | Strand偏好 + 感情线 |
-| Round 4 | Phase 5 | 2 | 境界突破(如适用) |
-| Round 5 | Phase 6 | 1 | 骨架完成后确认生成范围 |
-
-**总计**: 5轮,约8个问题(Round 4/5 可选)
+Final check:
+- 章纲文件已写入:`大纲/第{volume_id}卷-详细大纲.md`
+- 每章包含:目标/爽点/Strand/反派层级/视角/关键实体/钩子
+- 与总纲冲突/高潮一致,约束触发频率合理(如有 idea_bank)
+
+### Hard fail conditions (must stop)
+- 章纲文件不存在或为空
+- 任一章节缺少:目标/爽点/Strand/反派层级/视角/关键实体/钩子
+- 与总纲核心冲突或卷末高潮明显冲突
+- 约束触发频率不足(当 idea_bank 启用时)
+
+### Rollback / recovery
+If any hard fail triggers:
+1. Stop and list the failing items.
+2. Re-generate only the failed batch (do not overwrite the whole file).
+3. If the last batch is invalid, remove that batch and rewrite it.
+4. Only update state after Final check passes.
+
+Next steps:
+- 继续规划下一卷 → /webnovel-plan
+- 开始写作 → /webnovel-write

+ 227 - 0
_data_flow_validation.md

@@ -0,0 +1,227 @@
+# 数据流验证:webnovel-plan → context-agent → webnovel-write
+
+## 1. 章纲字段映射
+
+### webnovel-plan 输出(章纲格式)
+```markdown
+### 第 N 章:{标题}
+- 目标: {20字以内}
+- 爽点: {类型} - {30字以内}
+- Strand: {Quest|Fire|Constellation}
+- 反派层级: {无/小/中/大}
+- 视角/主角: {主角A/主角B/女主/群像}
+- 关键实体: {新增或重要出场}
+- 钩子: {类型} - {30字以内}  ← 本章应设置的章末钩子
+```
+
+### context-agent 输入需求
+```
+1. 本章核心任务 ← 章纲"目标"字段
+2. 接住上章 ← 上章"钩子"字段(从 chapter_meta 读取)
+3. 出场角色 ← 章纲"关键实体"字段
+4. 场景与力量约束 ← 从设定集推断
+5. 风格指导 ← 章纲"Strand"字段
+6. 连续性与伏笔 ← 从 index.db 读取
+7. 追读力策略 ← 章纲"钩子"字段(本章应设置的)
+```
+
+### context-agent 输出(创作任务书)
+```
+1. 本章核心任务(冲突一句话、必须完成、绝对不能、反派层级)
+2. 接住上章(上章钩子、读者期待、开头必须)
+3. 出场角色(状态、动机、情绪底色、说话风格、红线)
+4. 场景与力量约束(地点、可用能力、禁用能力)
+5. 风格指导(本章类型、参考样本、最近模式、本章建议)
+6. 连续性与伏笔(时间/位置/情绪连贯;必须处理/可选伏笔)
+7. 追读力策略(章末钩子类型+强度、微兑现建议、差异化提示)
+```
+
+---
+
+## 2. 数据流验证
+
+### ✅ 完全对接的字段
+
+| 章纲字段 | context-agent 使用 | webnovel-write 使用 |
+|---------|-------------------|-------------------|
+| 反派层级 | 写入"本章核心任务" | 写作时体现反派出场/冲突 |
+| Strand | 写入"风格指导" | 决定章节类型(Quest/Fire/Constellation)|
+| 爽点 | 写入"追读力策略"的微兑现建议 | 写作时设计爽点场景 |
+| 关键实体 | 写入"出场角色" | 写作时安排角色登场 |
+| 目标 | 写入"本章核心任务" | 写作时完成目标 |
+
+### ✅ 跨章传递的字段
+
+| 章纲字段 | 本章使用 | 下章使用 |
+|---------|---------|---------|
+| 钩子 | 写作时设置章末钩子 | context-agent 读取为"上章钩子" |
+
+**数据流**:
+```
+第 N 章章纲.钩子
+  → 写作时实现
+  → 写入 chapter_meta[N].hook
+  → 第 N+1 章 context-agent 读取
+  → 写入"接住上章"板块
+  → 第 N+1 章写作时兑现
+```
+
+### ⚠️ 需要明确的字段含义
+
+**章纲的"钩子"字段**:
+- ✅ **正确理解**:本章应设置的章末钩子(规划用)
+- ❌ **错误理解**:上章留下的钩子(这个应该从 chapter_meta 读取)
+
+**验证方式**:
+```bash
+# 第 100 章章纲
+钩子: 悬念钩 - 神秘人身份即将揭晓
+
+# 第 100 章写作后,chapter_meta[100].hook 应该是:
+{
+  "type": "悬念钩",
+  "content": "神秘人身份即将揭晓",
+  "strength": "strong"
+}
+
+# 第 101 章 context-agent 读取 chapter_meta[100].hook
+# 输出到"接住上章"板块:
+上章钩子: 悬念钩 - 神秘人身份即将揭晓
+读者期待: 本章必须揭示神秘人身份
+开头必须: 安排神秘人出场或身份揭示场景
+```
+
+---
+
+## 3. 缺失的数据流
+
+### ❌ 章纲未提供,但 context-agent 需要的
+
+| 数据 | context-agent 需求 | 当前解决方案 |
+|------|-------------------|-------------|
+| 上章钩子如何兑现 | "接住上章"板块需要明确兑现方式 | 从 chapter_meta 读取 + 推断 ✅ |
+| 角色动机 | "出场角色"板块需要动机 | 从大纲+角色状态推断 ✅ |
+| 场景地点 | "场景与力量约束"板块需要地点 | 从设定集+上章推断 ✅ |
+| 最近模式 | "风格指导"板块需要差异化 | 从 index.db 读取 ✅ |
+
+**结论**:所有缺失数据都有推断机制,无需修改章纲格式。
+
+---
+
+## 4. 验证结论
+
+### ✅ 数据流完整性
+- 章纲 → context-agent:所有必需字段都能获取
+- context-agent → webnovel-write:创作任务书包含所有写作需要的信息
+- 跨章传递:钩子字段能正确传递到下一章
+
+### ✅ 字段语义明确
+- 章纲的"钩子"字段 = 本章应设置的章末钩子(规划用)
+- chapter_meta 的 hook 字段 = 本章实际设置的钩子(执行结果)
+- 下章 context-agent 读取 chapter_meta.hook(不是章纲的钩子字段)
+
+### ✅ 推断机制完善
+- 角色动机:从大纲+角色状态推断
+- 场景地点:从设定集+上章推断
+- 兑现方式:从上章钩子类型推断
+
+### ⚠️ 需要补充的文档说明
+
+在 webnovel-plan SKILL.md 中补充:
+
+```markdown
+**钩子字段说明**:
+- 章纲的"钩子"字段是规划本章应设置的章末钩子
+- 不是上章留下的钩子(那个由 context-agent 从 chapter_meta 读取)
+- 例:钩子: 悬念钩 - 神秘人身份即将揭晓
+  - 意思是:本章结尾要设置这个悬念钩子
+  - 下章 context-agent 会读取这个钩子,生成"接住上章"指导
+```
+
+---
+
+## 5. 测试场景
+
+### 场景 1:标准流程
+```
+1. webnovel-plan 生成第 100 章章纲
+   - 钩子: 危机钩 - 敌人大军压境
+
+2. webnovel-write 第 100 章
+   - context-agent 读取第 99 章的 chapter_meta[99].hook
+   - 生成"接住上章":兑现第 99 章的钩子
+   - 生成"追读力策略":本章要设置"危机钩 - 敌人大军压境"
+   - 写作时在章末实现这个钩子
+   - 写入 chapter_meta[100].hook = {type: "危机钩", content: "敌人大军压境"}
+
+3. webnovel-write 第 101 章
+   - context-agent 读取 chapter_meta[100].hook
+   - 生成"接住上章":本章必须处理"敌人大军压境"危机
+```
+
+### 场景 2:第 1 章(无上章)
+```
+1. webnovel-plan 生成第 1 章章纲
+   - 钩子: 悬念钩 - 主角身世之谜
+
+2. webnovel-write 第 1 章
+   - context-agent 检测到无上章,跳过"接住上章"板块
+   - 生成"追读力策略":本章要设置"悬念钩 - 主角身世之谜"
+   - 写作时在章末实现这个钩子
+```
+
+### 场景 3:钩子类型不匹配
+```
+1. 章纲规划:钩子: 悬念钩 - 神秘人身份
+2. 实际写作:设置了危机钩(偏离规划)
+3. reader-pull-checker 检测到偏差
+4. 润色阶段修正或记录 Override Contract
+```
+
+---
+
+## 6. 改进建议
+
+### 建议 1:在 webnovel-plan 中补充钩子字段说明
+
+在 `Chapter format` 部分补充:
+
+```markdown
+- 钩子: {类型} - {30字以内}
+  - 说明:本章应设置的章末钩子(规划用)
+  - 例:悬念钩 - 神秘人身份即将揭晓
+  - 下章 context-agent 会读取这个钩子,生成"接住上章"指导
+```
+
+### 建议 2:在 context-agent 中补充数据来源说明
+
+在"关键数据来源"部分补充:
+
+```markdown
+- 章纲的"钩子"字段:本章应设置的章末钩子(规划)
+- chapter_meta[N].hook:本章实际设置的钩子(执行结果)
+- context-agent 读取 chapter_meta[N-1].hook 作为"上章钩子"
+```
+
+### 建议 3:在 webnovel-write 中补充验证逻辑
+
+在 Step 3 审查阶段补充:
+
+```markdown
+**钩子一致性检查**:
+- 章纲规划的钩子类型 vs 实际写作的钩子类型
+- 如果不一致,reader-pull-checker 应标记为 medium 问题
+- 允许合理偏离(如更强的钩子类型),但需记录原因
+```
+
+---
+
+## 7. 最终结论
+
+✅ **数据流完整**:webnovel-plan → context-agent → webnovel-write 的数据流完整,所有必需字段都能正确传递。
+
+✅ **语义明确**:章纲的"钩子"字段含义明确(本章应设置的章末钩子),不会与 chapter_meta.hook 混淆。
+
+✅ **推断机制**:缺失数据有完善的推断机制,无需修改章纲格式。
+
+⚠️ **需要补充文档**:在 webnovel-plan 和 context-agent 中补充钩子字段的说明,避免理解偏差。