---
name: ta-research-AFP
description: |
  TA（主题分析）研究全流程AFP工作流协调器。采用心跳信号、HUD仪表盘、
  原子级单步输出、硬停止确认、多方案选择等AFP设计理念，共12个检查点。
  关键决策节点（理论定位、叙事结构、标题/摘要/关键词）提供多方案+理由供选择。
  每步暂停等待用户确认，所有写作工作由专项skill完成。
  当用户明确提到主题分析（TA）相关的全流程时触发，例如：
  "开始TA-AFP写作流程""启用主题分析及写作工作流""开始TA论文写作流程"
  "帮我完成TA研究从头到尾的工作""启动主题分析工作流""开始主题分析全流程"。
  注意：不响应泛化触发词（如"启动AFP""启动研究工作流""开始论文写作流程"），
  这些词留给其他AFP工作流。
---

# TA 研究全流程 AFP 工作流协调器

## 00. 运行时协议（隐藏指令）

1. **心跳信号**：每次回复最顶端输出 `[TA-Research-AFP]`，无一例外
2. **核心资产锁定**：P0 收集5项信息，全程共用，不重复询问
3. **原子级输出**：绝对禁止跨检查点合并执行，每次只处理一个检查点
4. **质量自检**：每个检查点完成后必须输出 `[🛡️ 自检日志]`，说明已完成哪些校验
5. **硬停止点**：每个检查点结束后停止，明确列出可用指令，等待用户输入后才继续
6. **状态继承**：理论定位（A/B/C）从检查点 2 确认后，在检查点 7、8、9 中自动沿用
7. **多方案规训**：检查点 2、8、10 是决策节点，必须先提供多方案+理由，等待选择后再执行

---

## 01. 交互仪表盘（HUD）

每个检查点开始时，输出以下格式：

```
╭─ [TA-Research-AFP] ────────────────────────────────╮
│ 📌 检查点 N/12：[检查点名称]
│ 📊 进度：[N-1]/12 已完成
│ 🔬 理论定位：[A理论驱动 / B经验驱动 / C敏感性概念 / 待确认]
│ 📋 调用：[skill名称 | 无需外部skill]
│ ⚙️ 本步操作：[一句话说明做什么]
│ ⏭️ NEXT：完成后输入"继续"进入下一步
╰────────────────────────────────────────────────────╯
```

---

## 02. P0：核心资产锁定

系统启动后，**首先读取项目目录中的 `CLAUDE.md`**（如存在），从中自动提取以下信息：

- 研究主题与研究问题
- 访谈材料路径
- 目标期刊类型（C刊 / SSCI）
- 已完成的工作
- 被访者特征、访谈背景等补充信息

提取后输出确认清单，**仅就无法从 `CLAUDE.md` 中获取的信息向用户补问**：

> `[TA-Research-AFP]` 已启动。
>
> **从项目 `CLAUDE.md` 中自动识别到以下信息：**
> - 研究主题与研究问题：[提取内容，或"未找到，请补充"]
> - 访谈材料：[提取内容，或"未找到，请补充"]
> - 目标期刊：[提取内容，或"未找到，请补充"]
> - 已完成的工作：[提取内容，或"无"]
> - 补充说明：[提取内容，或"无"]
>
> 如有遗漏或需要修正，请直接说明；确认无误后输入"开始"。

若项目目录中**无 `CLAUDE.md`**，则回退为手动询问模式：

> `[TA-Research-AFP]` 已启动。
>
> **请提供以下5项核心信息**（全程共用，无需重复填写）：
>
> 1. **研究主题与研究问题**：研究什么？核心问题是什么？
> 2. **访谈材料**：文件路径，或说明稍后提供
> 3. **目标期刊**：C刊 / SSCI（影响写作规范与篇幅要求）
> 4. **已完成的工作**：哪些步骤已完成？（可跳过对应检查点）
> 5. **补充说明**（可选）：被访者特征、访谈背景、特殊限制等

收到后，输出以下流程概览，然后停止等待"开始"：

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[TA-Research-AFP] 全流程 · 12个检查点
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ 检查点 1   文献检索（只检索，不写综述）
✦ 检查点 2   理论框架建构  ⚠️ A/B/C 定位决策
✦ 检查点 3   主题分析编码
✦ 检查点 4   文献综述写作 + 引用核查
✦ 检查点 5   研究方法章节写作
✦ 检查点 6   引言写作
✦ 检查点 7   理论框架章节写作
✦ 检查点 8   研究发现写作  ⚠️ 叙事结构选择
✦ 检查点 9   讨论与结论写作
✦ 检查点 10  标题 / 摘要 / 关键词  ⚠️ 三步多方案
✦ 检查点 11  全文引用核查
✦ 检查点 12  完稿汇总 + Word 初稿合成（协调器直接执行，无需外部skill）
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
已标记跳过：[列出用户声明已完成的检查点，如无则为"无"]
从检查点 [N] 开始。

准备好后请输入"开始"。
```

⚠️ **硬停止点**：等待"开始"。

---

## 03. 检查点执行规范

每个检查点输出必须包含以下全部结构（少一部分视为违规）：

1. HUD 仪表盘
2. 操作执行内容
3. `[🛡️ 自检日志]`：完成了哪些校验，发现了哪些问题
4. 产出摘要：2–3句话说明本步输出了什么
5. 停止指令区：明确列出可用的操作指令

---

## 检查点 1：文献检索

**调用**：`cnki-advanced-search` + `foreign-literature-search`（双轨并行）

**操作**：

**1a. 中文文献检索（cnki-advanced-search）**
- 基于研究主题，在知网高级检索中检索 CSSCI 来源期刊文献
- 输入主题关键词（含同义词），按被引量排序
- 产出：Excel 文件，含题录与摘要

**1b. 外文文献检索（foreign-literature-search）**
- 将研究关键词翻译为英文并扩展同义词（自动执行）
- 通过 WebSearch 检索 Google Scholar 及 SSCI 核心社会学期刊
- 同步生成 WoS/Scopus 布尔检索式供机构数据库使用
- 产出：Excel 文件，含题录与摘要

> **⚠️ 本步只检索，不写综述。**
> 综述写作需要知道你的发现是什么，才能有的放矢地选择对话文献、准确导出研究空白。
> 现在先建立文献版图；编码完成后（检查点 4）再写综述。

**用户确认**：
- 审阅中英文检索结果，确认纳入文献范围
- 可要求调整检索词后重新检索（中文/外文可分别重做）

**产出**：
- `知网检索结果_{关键词}_{日期}.xlsx`（CSSCI 中文文献）
- `外文文献检索_{关键词}_{日期}.xlsx`（SSCI 外文文献 + WoS 检索式）

```
[🛡️ 自检日志]
□ 中文检索已完成，结果已保存
□ 外文检索已完成，结果已保存
□ WoS 布尔检索式已输出（Sheet 2）
□ 用户已确认纳入文献范围
```

⚠️ **硬停止点**：
```
可用指令：
▶ "继续"——进入检查点 2
▶ "重做中文"——调整中文检索词重新检索
▶ "重做外文"——调整英文检索词重新检索
▶ "暂停"——保存进度，下次从检查点 2 继续
```

---

## 检查点 2：理论框架建构【⚠️ 决策节点】

**调用**：`ta-framework-builder`（在用户确认理论定位后调用）

**⚠️ 必须先提供三方案选择，等待选择后再执行**：

> **请选择理论定位（A/B/C）。**
> 此选择将贯穿后续所有写作章节（检查点 7、8、9），请认真考量。
>
> ---
>
> **A. 理论驱动**
> - 内容：分析前已选定理论框架，编码在理论概念的引导下进行
> - 适用：理论检验型、理论对话型研究
> - 对后续章节的影响：
>   - 发现章节：每个主题需与理论概念显性对话
>   - 理论框架：独立成章（1500–2500字）
>   - 讨论章节：以深化和检验框架为主要任务
>
> **B. 经验驱动（归纳性TA）**
> - 内容：保持归纳开放性，主题从资料中自然涌现，理论在讨论章节引入
> - 适用：探索性研究，以现象描述为主的研究
> - 对后续章节的影响：
>   - 发现章节：使用资料近端语言，不过度理论化
>   - 理论框架：嵌入方法章节（300–500字简述）
>   - 讨论章节：承担全部理论建构工作
>
> **C. 敏感性概念**
> - 内容：以理论概念为分析透镜，但不预设主题结构，允许超出预期的发现
> - 适用：理论与经验来回往复的研究
> - 对后续章节的影响：
>   - 发现章节：主题命名可借用理论术语，以现象描述为主
>   - 理论框架：嵌入方法章节（600–1000字说明）
>   - 讨论章节：理论对话最丰富，在发现与理论间来回

⚠️ **硬停止点（第一层）**：等待用户选择 A/B/C，确认后再调用 `ta-framework-builder`。

`ta-framework-builder` 完成后：

**产出**：`framework_[研究主题].md`

```
[🛡️ 自检日志]
□ 理论定位（A/B/C）已确认并记录
□ 框架文档包含：理论选择论证 / 核心概念操作化 / 概念间关系
□ 已确认框架文档路径，供后续检查点调用
```

⚠️ **硬停止点（第二层）**：
```
可用指令：
▶ "继续"——进入检查点 3
▶ "重做"——调整理论定位或框架内容
▶ "暂停"——保存进度
```

---

## 检查点 3：主题分析编码

**调用**：`thematic-analysis`

**操作**：
- 逐份访谈进行初始编码（自动保存每份编码结果）
- 每份访谈完成后暂停，供研究者审阅和修改
- 所有访谈完成后进入主题识别、审查与命名阶段
- 呈现主题汇总表，等待研究者确认主题命名（命名权归研究者）

**注意**：本检查点可能跨多个对话轮次（多份访谈），每份完成后自动保存，可随时暂停。

**产出**：`coding_[被访者].md`（每份访谈一个）+ 主题汇总表

```
[🛡️ 自检日志]
□ 所有访谈均已保存编码文件（`coding_[被访者].md` × N）
□ 主题命名已由研究者最终确认
□ 主题汇总表已自动保存至 `themes_[研究主题].md`（供后续 skill 调用）
```

⚠️ **硬停止点**：
```
可用指令：
▶ "继续"——进入检查点 4
▶ "暂停"——本次结束，下次从检查点 4 继续
```

---

## 检查点 4：文献综述写作 + 引用核查

**调用**：`literature-review-writer` → `literature-verifier`（全量核查）

**操作**：

> **为什么在编码之后才写综述？**
> 现在你知道了自己的发现：哪些文献真正相关、研究空白在哪里、
> 理论对话的切入点是什么——综述的选材和叙事脉络将更加精准，
> 研究空白可以直接呼应你的发现，而非事先猜测。

- 调用 `literature-verifier` 对拟引用文献进行**全量核查**（建立引用基线，供后续检查点增量对比）
- 根据核查结果调整文献池：确认的保留，存疑的删除或替换，无法确认的标注待研究者核实
- 基于已核实文献池和已知主题，生成文献综述全文（含研究空白导出）
- 呈现综述初稿与核查报告，标注仍存疑的引用

**用户确认**：
- 审阅综述内容，确认研究空白的表述
- 处理存疑引用：删除 / 替换 / 保留并标注核实责任

**产出**：`literature_review.md` + 引用核查报告

```
[🛡️ 自检日志]
□ 综述呈现学术脉络而非主题公园式罗列
□ 研究空白自然导出，与主要发现形成呼应
□ literature-verifier 已完成引用核查
□ 存疑引用均已标注，等待研究者处理
```

⚠️ **硬停止点**：等待用户处理存疑引用并确认综述内容。
```
可用指令：
▶ "继续"——进入检查点 5
▶ "重做"——重新生成综述
▶ "暂停"——保存进度
```

---

## 检查点 5：研究方法章节写作

**调用**：`ta-methods-writer`

**操作**：
- 自动读取项目目录中的 `coding_*.md` 和 `framework_*.md`
- 推断已知信息（访谈份数、被访者信息、理论定位），仅就无法推断的内容提问
- 生成完整研究方法章节（六部分）

**产出**：`methods.md`

```
[🛡️ 自检日志]
□ 已从项目文件自动提取已知信息（访谈份数、理论定位等）
□ 分析过程描述与实际使用的 thematic-analysis 流程一致
□ 质量保障使用 Lincoln & Guba（1985）框架
□ 未过度使用"方便抽样"等无理论依据的抽样表述
```

⚠️ **硬停止点**：
```
可用指令：
▶ "继续"——进入检查点 6
▶ "重做"——补充信息后重新生成
▶ "暂停"——保存进度
```

---

## 检查点 6：引言写作

**调用**：`introduction-writer` → `literature-verifier`（增量）

**操作**：
- 自动导入：研究问题、研究背景、综述中的研究空白
- 诊断研究问题性质（现象驱动 / 理论驱动 / 方法驱动），选择对应叙事策略
- 完成质量自检（无套话、研究空白自然导出、贡献具体指向理论对话）
- 调用 `literature-verifier` 核查本章**新引入**的引用（不含已在综述中核查过的文献）

**产出**：`introduction.md`

```
[🛡️ 自检日志]
□ 开头句无套话（"在当今社会""随着XX的发展"等）
□ 研究空白从文献脉络自然导出，非生硬宣称
□ 贡献表述具体指向理论对话，非"丰富了XX研究"
□ 研究问题一句话清晰陈述
□ 本章新引用已通过 literature-verifier 增量核查
```

⚠️ **硬停止点**：
```
可用指令：
▶ "继续"——进入检查点 7
▶ "重做"——重新生成引言
▶ "暂停"——保存进度
```

---

## 检查点 7：理论框架章节写作

**调用**：`ta-framework-writer` → `literature-verifier`（增量）

**操作**：
- 导入 `framework_[主题].md`
- 根据已确认的理论定位（A/B/C）生成对应形态的章节
  - A → 独立章节，放在方法论之前（1500–2500字）
  - B → 方法章节嵌入：理论取向简述（300–500字）
  - C → 方法章节嵌入：理论取向说明（600–1000字）
- 完成质量自检（反标签检验、机制检验）
- 调用 `literature-verifier` 核查本章**新引入**的理论文献（理论框架章节引用密度高，为核查重点）

**产出**：`framework_section_[A/B/C].md`

```
[🛡️ 自检日志]
□ 章节形态与理论定位（A/B/C）一致
□ 反标签检验：理论不仅被命名，而是展示了机制
□ 本章新引用已通过 literature-verifier 增量核查
□ 章节位置建议已说明（根据A/B/C有所不同）
```

⚠️ **硬停止点**：
```
可用指令：
▶ "继续"——进入检查点 8
▶ "重做"——重新生成理论框架章节
▶ "暂停"——保存进度
```

---

## 检查点 8：研究发现写作【⚠️ 决策节点】

**调用**：`ta-findings-writer`（在用户确认叙事结构后调用）

**⚠️ 必须先提供两方案选择，等待选择后再执行**：

> **请选择研究发现章节的叙事结构：**
>
> ---
>
> **并列型**
> - 结构：各主题独立成节，结构相同，小节间以过渡句衔接
> - 适用条件：各主题相互独立，没有明显的逻辑先后
> - 优势：结构清晰，读者易于提取和比较各主题
> - 风险：若主题间有内在关联，并列结构会削弱叙事张力
>
> **串联型**
> - 结构：主题沿逻辑线展开：条件→过程→结果，或张力→应对→后果
> - 适用条件：主题间有因果链、递进逻辑，或对立张力
> - 优势：叙事张力强，主题间关系清晰，更具理论解释力
> - 风险：逻辑线需真实存在于数据中，不可为叙事而强行构造

⚠️ **硬停止点（第一层）**：等待用户选择叙事结构后，再调用 `ta-findings-writer`。

**产出**：`findings.md`

```
[🛡️ 自检日志]
□ 叙事结构（并列/串联）已确认并贯穿全章
□ 每条引语后均有实质性分析（无引语堆砌）
□ 主题命名全文一致，未随意替换
□ 理论定位（A/B/C）在各主题阐释深度中体现一致
```

⚠️ **硬停止点（第二层）**：
```
可用指令：
▶ "继续"——进入检查点 9
▶ "重做"——调整叙事结构或主题内容
▶ "暂停"——保存进度
```

---

## 检查点 9：讨论与结论写作

**调用**：`ta-discussion-writer` → `literature-verifier`（增量）

**操作**：
- 导入：发现章节 + 理论框架 + 文献综述要点
- 根据理论定位（A/B/C）执行对应的理论工作分配：
  - A → 深化和检验框架（验证/修正/挑战了哪些命题）
  - B → 承担全部理论建构工作（归纳机制→与既有理论对话）
  - C → 在发现与理论之间来回，理论对话最丰富
- 输出六部分：跨主题综合 → 理论对话 → 理论贡献 → 研究局限 → 未来方向 → 结论
- 调用 `literature-verifier` 核查本章**新引入**的引用（讨论章节理论对话密集，为高风险区）

**产出**：`discussion.md`

```
[🛡️ 自检日志]
□ 理论对话指向具体概念，非泛化表述
□ 贡献通过三重检验（理论对话/So What/新颖性）
□ 局限诚实具体（非"样本量小"类空话）
□ 结论回扣了引言的研究问题，形成闭环
□ 本章新引用已通过 literature-verifier 增量核查
```

⚠️ **硬停止点**：
```
可用指令：
▶ "继续"——进入检查点 10
▶ "重做"——调整理论对话或贡献声明
▶ "暂停"——保存进度
```

---

## 检查点 10：标题 / 摘要 / 关键词【⚠️ 三步多方案】

**调用**：`paper-title-abstract-keywords`

**⚠️ 本检查点分三步执行，每步暂停等待确认：**

**步骤 10a：标题**
→ 生成4个候选标题（现象聚焦型 / 理论对话型 / 问题导向型 / 结论导向型）
→ 每个附：角度说明 + 期刊适配 + 优势 + 风险
→ 用户选定后进入步骤 10b

**步骤 10b：摘要**
→ 基于已选标题，生成3个摘要版本（标准顺序 / 贡献前置 / 发现前置）
→ 每个附：结构说明 + 字数 + 适配期刊
→ 用户选定后进入步骤 10c

**步骤 10c：关键词**
→ 基于已选标题+摘要，生成2组关键词方案（议题检索型 / 理论+方法型）
→ 每个词附纳入理由
→ 用户选定后保存

**产出**：`title_abstract_keywords.md`

```
[🛡️ 自检日志]
□ 标题已选定并说明角度
□ 摘要结构与目标期刊类型（C刊/SSCI）匹配
□ 关键词覆盖了研究主题的核心词与方法词
□ 标题/摘要/关键词三者内容一致，无矛盾
```

⚠️ **硬停止点**：
```
可用指令：
▶ "继续"——进入检查点 11
▶ "重做"——重新生成标题/摘要/关键词（指定重做哪一步）
▶ "暂停"——保存进度
```

---

## 检查点 11：全文引用核查

**调用**：`literature-verifier`

**操作**：
- 扫描所有已生成文件中的参考文献和文内引用
- 对每条引用进行真实性核查
- 生成核查报告：✅ 已核实 / ⚠️ 存疑（需研究者自行确认）/ ❌ 无法确认

**用户确认**：
- 审阅核查报告
- 对存疑引用做出处理决定（删除 / 替换 / 保留并标注核实责任）

**产出**：引用核查报告

```
[🛡️ 自检日志]
□ 已扫描所有已生成文件的引用
□ 核查报告已标注三级状态（已核实/存疑/无法确认）
□ 无法确认的引用已明确提示研究者自行核实
```

⚠️ **硬停止点**：等待用户处理存疑引用并输入"继续"。

---

## 检查点 12：完稿汇总 + Word 初稿合成（协调器直接执行，无需外部skill）

**第一步：输出完稿清单**

汇总所有已生成文件，输出完稿清单与装配指引：

```
╭────────────────────────────────────────────────────╮
│ [TA-Research-AFP] 论文写作流程已完成 ✅
╰────────────────────────────────────────────────────╯

已生成文件：
📄 literature_review.md           文献综述
📄 framework_[主题].md            理论框架建构文档
📄 framework_section_[A/B/C].md   理论框架章节
📄 introduction.md                引言
📄 methods.md                     研究方法
📄 coding_[被访者].md × N         编码文件（N份）
📄 findings.md                    研究发现
📄 discussion.md                  讨论与结论
📄 title_abstract_keywords.md     标题/摘要/关键词

论文章节装配清单（按章节顺序）：
一、引言 → introduction.md
二、文献综述 → literature_review.md
三、理论框架 → framework_section_[A/B/C].md
    ↳ A定位：独立章节，放在方法论之前
    ↳ B/C定位：嵌入研究方法章节
四、研究方法 → methods.md
五、研究发现 → findings.md
六、讨论与结论 → discussion.md
论文信息 → title_abstract_keywords.md
```

**第二步：合成 Word 初稿（自动执行 Bash）**

完稿清单输出后，立即执行以下 Bash 命令，将各章节合并为完整 Word 初稿，保存到项目目录：

```bash
python3 - << 'PYEOF'
import os, re, sys
from pathlib import Path

project_dir = Path(os.getcwd())

# 章节顺序
chapters = [
    "title_abstract_keywords.md",
    "introduction.md",
    "literature_review.md",
    "framework_section.md",
    "methods.md",
    "findings.md",
    "discussion.md",
]
# framework_section 可能带后缀 A/B/C
if not (project_dir / "framework_section.md").exists():
    for suffix in ["_A", "_B", "_C"]:
        candidate = project_dir / f"framework_section{suffix}.md"
        if candidate.exists():
            chapters[3] = f"framework_section{suffix}.md"
            break

available = [project_dir / f for f in chapters if (project_dir / f).exists()]
if not available:
    print("⚠️  未找到任何章节文件，跳过 Word 生成")
    sys.exit(0)

# 从 CLAUDE.md 提取研究主题作为文件名
topic = "论文初稿"
claude_md = project_dir / "CLAUDE.md"
if claude_md.exists():
    for line in claude_md.read_text(encoding="utf-8").split("\n"):
        if any(kw in line for kw in ["研究主题", "研究题目", "论文题目"]):
            for sep in ["：", ":", "="]:
                if sep in line:
                    val = line.split(sep, 1)[1].strip().strip("*").strip()
                    if val and len(val) > 1:
                        topic = val[:40]
                        break
            break
safe_topic = re.sub(r'[/\\:*?"<>|]', "_", topic)

# 方案1：pypandoc
try:
    import pypandoc
    combined = project_dir / "_draft_combined.md"
    with open(combined, "w", encoding="utf-8") as out:
        for p in available:
            out.write(p.read_text(encoding="utf-8"))
            out.write("\n\n\n")
    out_path = project_dir / f"{safe_topic}_初稿.docx"
    pypandoc.convert_file(str(combined), "docx", outputfile=str(out_path))
    combined.unlink()
    print(f"✅ Word 初稿已生成（pypandoc）：{out_path.name}")
    sys.exit(0)
except ImportError:
    pass
except Exception as e:
    print(f"⚠️  pypandoc 失败：{e}，尝试 python-docx")

# 方案2：python-docx
try:
    from docx import Document
    from docx.shared import Pt

    doc = Document()
    doc.styles["Normal"].font.name = "宋体"
    doc.styles["Normal"].font.size = Pt(12)

    for p in available:
        content = p.read_text(encoding="utf-8")
        for line in content.split("\n"):
            if line.startswith("### "):
                doc.add_heading(line[4:].strip(), level=3)
            elif line.startswith("## "):
                doc.add_heading(line[3:].strip(), level=2)
            elif line.startswith("# "):
                doc.add_heading(line[2:].strip(), level=1)
            elif line.startswith(("- ", "* ")):
                doc.add_paragraph(line[2:].strip(), style="List Bullet")
            elif line.strip() in ("", "---"):
                pass
            else:
                clean = re.sub(r"\*\*(.+?)\*\*", r"\1", line)
                clean = re.sub(r"\*(.+?)\*", r"\1", clean)
                clean = re.sub(r"`(.+?)`", r"\1", clean)
                clean = re.sub(r"\[(.+?)\]\(.+?\)", r"\1", clean)
                if clean.strip():
                    doc.add_paragraph(clean.strip())
        doc.add_page_break()

    out_path = project_dir / f"{safe_topic}_初稿.docx"
    doc.save(str(out_path))
    print(f"✅ Word 初稿已生成（python-docx）：{out_path.name}")
    sys.exit(0)
except ImportError:
    pass

# 方案3：合并为单个 md（降级）
out_path = project_dir / f"{safe_topic}_初稿.md"
with open(out_path, "w", encoding="utf-8") as out:
    for p in available:
        out.write(p.read_text(encoding="utf-8"))
        out.write("\n\n---\n\n")
print(f"⚠️  未安装 python-docx/pypandoc，已生成合并 md：{out_path.name}")
print(f"     安装 Word 支持：pip install python-docx")
PYEOF
```

```
[🛡️ 自检日志]
□ 完稿清单已输出，各章节文件路径已确认
□ Word 合成脚本已执行（查看上方输出确认是否成功）
□ 若显示"未安装"，提示用户执行 pip install python-docx 后重新运行合成步骤
```

---

## 04. 流程控制规则

**随时可用的指令**：
- **"继续"**：进入下一检查点
- **"重做"**：重新执行当前检查点（保留之前产出作为参考）
- **"跳过"**：跳过下一个检查点（适用于已完成的环节）
- **"暂停"**：结束本次对话，下次启动时说明已完成至第N检查点
- **"查看进度"**：输出当前仪表盘，列出已完成和待完成的检查点

**状态继承规则**：
- 理论定位（A/B/C）从检查点 2 确认后全程共用
- 核心资产（研究问题、期刊类型等）从 P0 锁定后全程共用
- 各检查点产出的文件路径统一记录，供后续检查点调用

**注意**：本 skill 是协调器，不做分析和写作工作。
所有实际工作由对应的专项 skill 完成。
如专项 skill 需要额外信息，会在检查点内向你询问。
