# Document Pipeline

> 统一写作流水线。任何文档/文章/报告均走此流程：研究→草稿→逻辑自检→真实性校对→画图规划→批量画图→图片自审→审稿→格式转换（HTML/LaTeX/MD）。可从任意阶段入场（已有草稿直接审核，已审稿直接转格式）。触发词：「写一篇/帮我写/写一份/我有初稿了/帮我检查逻辑/帮我配图/从画图开始/从[Stage名称]开始继续/转成HTML/转成LaTeX」。注意：「只要审稿」请直接触发 article-proofreading；「帮我审稿」不触发本 Skill。

- **Type:** Skill
- **Install:** `agentstack add skill-tashangkd-tashan-cursor-skills-document-pipeline`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [TashanGKD](https://agentstack.voostack.com/s/tashangkd)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [TashanGKD](https://github.com/TashanGKD)
- **Source:** https://github.com/TashanGKD/tashan-cursor-skills/tree/main/skills/document-pipeline

## Install

```sh
agentstack add skill-tashangkd-tashan-cursor-skills-document-pipeline
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 统一写作流水线（document-pipeline）

> **适用范围**：任何类型的文档——知识库文章、微信公众号、学术论文、技术报告、产品分析等
> **核心价值**：一条完整的、任意阶段可入场的写作闭环，最终产出带原始 Mermaid + qwen-image 嵌入的 MD 手稿，以及可选的格式转换
> **与旧 Skill 的关系**：wechat-article-writer / general-article-writer / research-output 均为本 Skill 的 thin wrapper，触发词不变，内部转发到此处

---

## 知识导航表（执行前必须理解的概念根）

| 层级 | 文档 | 需要理解的概念 |
|---|---|---|
| **D0 认知根（必读）** | `_内部总控/认知结构/L1_系统性文档/待建维度/写作习惯与风格手册.md`（待建，暂用 `_内部总控/AI思维碎片/写作习惯与风格手册.md`）| 郑总的写作风格偏好：文章结构/语言风格/禁用套话/标题原则（D0是写作的认知根）|
| **D3 规范参考** | `.cursor/skills/article-proofreading/SKILL.md`（作为审稿标准参考，非触发执行）| 五轮审稿标准：AI腔/标题错误/绝对表达/结构层次/结语完整性 |
| **D4 运行时数据** | — | 写作时无固定运行时数据；从任意Stage入场时读取已有草稿 |

**核心概念速查**：
① 流水线 = 8个Stage，可任意入场；有草稿直接从审稿Stage开始，不必从研究开始
② 配图是独立Stage：先完成文字内容，再统一做配图，不混合执行
③ 真实性校对先于审稿：事实正确→逻辑正确→文风优化，顺序不可颠倒

---

## 触发判断（先执行）

```
触发条件：
IF 用户表达了「产出一篇文档/文章/报告」的意图
   OR 用户提供了草稿并要求「继续/检查/配图/审稿/转格式」
   OR 用户明确说「从 Stage X 开始」/ 「只要做 Y」
THEN 执行 Stage 0，确定入场点和目标格式

不应触发的情况（让 AI 直接回答即可）：
- 用户只问一个知识性问题（「XX 是什么？」）
- 用户要修改代码 → role-前端/后端开发
- 用户要更新 L1 认知结构文档 → cognitive-update-knowledge
- 用户要做学术 SI 补充材料 → academic-si-writer（全局 Skill）
```

---

## Stage 0：入场检测（必须执行）

> 确认 3 件事：① 从哪个 Stage 开始 ② 目标格式 ③ 若是调研模式，确认维度

```
A. 判断 target_format：
   - 用户说「公众号/微信/WeChat/推文」→ target_format = html
   - 用户说「学术论文/LaTeX/论文/期刊」→ target_format = latex
   - 用户说「知识库/认知结构/调研笔记/研究报告」→ target_format = md + mode = research
   - 其他/未说明 → target_format = md（默认，不询问，直接继续）

   **文档性质判断（写入位置决策）**：
   - **原创思考类**（用户自己的分析/产品定义/架构设计/认知洞见）→ 写入认知结构 L1/L2 或项目目录
     判断依据：内容以用户第一人称视角表达、包含「我的判断」「我认为」或明显是用户原创的产品/架构/认知文档
   - **外部调研类**（基于外部来源整理的知识）→ 写入认知结构知识库（REF-EXT）
     判断依据：引用了外部文献/官方文档/第三方数据、内容主要是「X工具是什么/X框架如何使用」
   - **内部经验积累类**（实际执行中产生的踩坑记录/最佳实践/操作规范）→ 写入总规范库
     判断依据：「我们踩过的坑」「部署时发现」「实际操作步骤」「配置参数」等实操内容；
     路由规则：确认主题分类 → 写入 `_内部总控/开发规范/[主题]/踩坑速查.md` 或 `最佳实践.md`
     主题示例：AI服务器助手/ 、前端规范/、部署规范/、后端规范/ 等；若主题子目录不存在则先创建
   ⚠️ 若无法判断是「原创思考」还是「内部经验」，询问：「这是你自己的新思考，还是实际执行中总结的经验？」

B. 判断入场 Stage（规则1优先于规则2，触发词优先）：
   规则1：用户说了明确的操作关键词时，直接采用，不检查草稿信号：
   - 用户提供了完整草稿（有目录/多节/超过500字）+ 说「检查逻辑/审核结构/逻辑有没有问题」→ 入场 Stage 2
   - 用户提供了完整草稿（有目录/多节/超过500字）+ 说「核实/真实性/事实有没有错/来源」→ 入场 Stage 3
   - 用户提供了完整草稿（有目录/多节/超过500字）+ 说「配图/画图/加图/从画图开始」→ 入场 Stage 4
   - 用户提供了完整草稿（已有图）+ 说「审稿/给审稿者/交给审核」→ 入场 Stage 7
   - 用户提供了已审稿的 MD + 说「转 HTML/转 LaTeX/发布」→ 入场 Stage 8
   - 用户说「写一篇/帮我写/我想写/研究一下并写成文档」→ 入场 Stage 1
   - **用户说「完善[已有文档]/给[已有文档]加图/补图/按规范完善/这篇文档缺图」+ 明确指向已存在的知识库文档（REF-EXT）→ mode=improve，入场 Stage 2（仅执行图片识别+生成，跳过 Stage 1 研究和 Stage 8D 注册）**
   - 无法判断 → 询问「你现在在哪个阶段？有现成草稿吗？」

C. 若 mode = research，判断文档所属维度（存储路径用）：
   - 技术/工具/架构/系统/API → 系统架构思维维度
   - 认知科学/学习/注意力 → 认知科学基础维度
   - 产品设计/商业/市场/用户研究 → 产品视野维度
   - 写作/内容/表达/传播 → 写作维度
   - 研究方法/学术规范/论文写作 → 研究范式维度
   - 组织管理/团队/协作/运营 → 组织管理维度
   research 模式的 6 个维度选项：
   ① 系统架构思维维度：技术/工具/架构/系统/API/框架/开源项目
   ② 认知科学基础维度：认知/学习/注意力/记忆/心理/神经
   ③ 产品视野维度：产品设计/商业/市场/用户研究
   ④ 写作维度：写作/内容/表达/传播/媒体
   ⑤ 研究范式维度：研究方法/学术规范/论文写作
   ⑥ 组织管理维度：组织/团队/协作/运营/管理
   - 多维度命中（话题横跨多个维度）→ 列出候选维度询问用户选择
   - 零维度命中（话题不在任何维度关键词中）→ 默认存入①系统架构思维维度，标注 [待分类]
   - 完全无法判断 → 列出以上 6 个选项让用户选择

Stage 0 输出：[target_format, entry_stage, dimension（research 模式）]

  ⚠️ 单任务声明：整条流水线（Stage 0-8）视为一次完整任务。
  auto-experience-hook 仅在流水线最终完成（Stage 8 结束或用户明确终止）时触发一次，
  不在每个 Stage 完成时独立触发。
```

---

## Stage 1：研究 + 草稿

> 从零开始写。按需搜索，遵循写作风格手册。

```
输入：主题/指令 + 用户补充说明

Step 1.0  多主题逻辑关系确认（多主题文章必做，单主题跳过）
  判断：文章是否包含 2 个或以上并列/递进/对比的主题？
  如是 → 在起草前，明确向用户确认（或从上下文判断）各主题的逻辑关系：
    - 并列（两个独立价值，各自成立，无主次）→ 两节分别正面展开，不互相作为论据
    - 递进（主题B建立在主题A之上）→ A在前，B在后，有衔接
    - 转折（主题B是对主题A的修正或否定）→ 明确标出转折点
    - 因果（主题A导致主题B）→ 先因后果，因与果都要充分展开
  ⛔ 禁止：把「并列」结构处理为「主论点 + 反驳坏想法」结构
  ⛔ 禁止：在未确认逻辑关系的情况下直接起草多主题文章

Step 1.1  读取写作风格手册（必做，不可跳过）
  路径：_内部总控/认知结构/L1_系统性文档/待建维度/写作习惯与风格手册.md
  提取 4 类约束（语言风格 / 禁止事项 / 段落规范 / 结构原则）
  文件不存在 → 使用内置默认约束：
    - 禁止 AI 腔（不写「综上所述/值得注意/不难发现」等空话）
    - 每段有实质内容，不以罗列替代分析
    - 结论先行，论据在后
    - 禁止「一是…二是…三是…」排比句堆砌

Step 1.1.5  认知文档引用扫描（文章主题来自用户认知结构时执行）
  当文章需要引用用户认知结构中的内容时：
  a. 先在 _内部总控/认知结构/L1_系统性文档/ 目录下做全局 Glob 扫描
  b. 找到一个相关文档后，继续检查是否有「同名但路径不同」或「更完整的主文档」
  c. 确认主文档（通常是行数最多的版本）后再引用
  ⛔ 禁止：找到一个相关文档就立即引用，不检查是否有更完整的版本

Step 1.2  网络搜索（主题涉及外部知识时执行）
  执行 2-3 次 WebSearch（不同角度的查询词）
  对重要结果执行 WebFetch 获取原文
  来源记录：[来源N] 作者/机构 | 标题 | URL | YYYY-MM-DD

Step 1.3  写草稿（遵循 Step 1.1 风格约束）
  结构：
    - 文章类型/研究报告：摘要 → 目录 → 正文各节 → 参考资料
    - 知识库文档（research 模式）：REF-EXT 头部占位 → 摘要 → 目录 → 各节 → 参考资料
  
  写作要求：
    - 重要主张标注来源 [来源N] 或 [待核实]
    - 关键概念首次出现时定义
    - 段落间有显式的逻辑连接（不允许段落跳跃）
    - 结尾必须有「## 参考资料」节（格式：[来源N] 作者 | 标题 | URL | 日期）

输出：草稿（内存，不写文件，等 Stage 8 统一写入）
失败处理：
  WebSearch 全部失败 → 继续写，在摘要后标注「[本文基于 AI 训练知识，无实时来源，请核实]」
```

---

## Stage 2：逻辑自检

> 以批判者视角扫描，不只是格式整理。

```
输入：草稿（来自 Stage 1，或用户提供的初稿）

检查项（逐节执行）：
  A. 论点-论据完整性：
     有结论但无过程的段落 → 标注「[?? 需补充论据：此处结论跳跃]」
  
  B. 概念一致性：
     扫描同一概念的不同表述（如「用户」vs「客户」vs「访客」）
     若存在混用 → 统一为最准确的表述，全文替换
  
  C. 段落间跳跃：
     前段到后段若存在未说明的推理步骤 → 补出过渡句
  
  D. 结构合理性：
     说明类：定义 → 展开 → 示例
     分析类：问题 → 分析 → 结论
     比较类：维度 → 逐项比较 → 综合判断
     若结构不符 → 调整节顺序，不修改内容

  ⚠️ 硬约束：
  - 禁止改写任何句子的措辞和风格（哪怕 AI 觉得「这句话可以更好」）
  - 只允许：插入标注、补充过渡句、调整节顺序、统一概念表述
  - 如果判断不了是否属于「逻辑修复」，默认不修改，标注供用户决策

输出：
  - 修订后草稿（已修复小问题）
  - 逻辑自检报告（3行以内：主要发现 + 已修/未修说明）

失败处理：
  若发现严重概念矛盾（同一概念两处含义根本不同）→
  停下，向用户描述矛盾：「[概念X] 在第N节指的是A，但在第M节指的是B，请确认哪个是正确的」
  等用户决策后继续
```

---

## Stage 3：真实性校对

> 核实来源，标注无法核实的内容。不删除，只标注。

```
输入：Stage 2 草稿

Step 3.1  验证已标注来源
  抽查 2-3 条 [来源N]，尝试 WebFetch 验证 URL 可访问且内容对应
  URL 失效 → 标注「[来源N 链接失效，待更新]」

Step 3.2  扫描未标注的事实性主张
  触发标准（以下任一）：
    - 包含具体数字/百分比
    - 包含年份 + 事件
    - 引用机构/组织的政策或数据
    - 描述某技术/产品的具体能力（"支持X个/达到X%"）
  
  处理方式：
    - 可查到来源 → 添加 [来源N] 并加入参考资料节
    - 无法核实 → 标注「[待核实：需确认此数据来源]」
    - 基于已知 AI 训练知识 → 标注「[基于训练知识，建议人工核实]」

Step 3.3  不删内容原则
  即使某段内容疑似有误，也只标注，不删除。
  「[?? 可能有误：建议核实 XXX]」

输出：
  - 草稿（含 [待核实] 标注）
  - 核查摘要：「已核实 N 条 / 待核实 M 条 / 失效链接 K 条」

失败处理：
  所有来源 URL 均无法访问 → 如实标注，不捏造，告知用户
```

---

## Stage 4：画图规划

> 确定哪些地方需要图，哪种图，生成什么内容。

```
输入：Stage 3 草稿

Step 4.1  读取全场景绘图指南
  执行 Glob: **/全场景绘图指南.md
  找到 → 读取「关系类型 → 图类型映射」部分
  未找到 → 使用内置基础映射（见下方备用映射表）

Step 4.2  扫描草稿，标记画图位置
  对每一节，判断是否有以下信号：
  
  → Mermaid flowchart：
    流程/步骤/执行顺序/决策分支
    
  → Mermaid graph LR：
    层级/包含/架构/模块依赖/组织结构
    
  → Mermaid sequenceDiagram：
    时序/多方交互/API 调用链
    
  → qwen-image（Mermaid 不适合的）：
    多维比较/矩阵/象限图
    概念框架/循环/飞轮/生态系统
    数据可视化/统计图表
    需要视觉美感的架构概览图
    已有 Mermaid 的位置 → 同时安排 qwen-image 可视化增强版

Step 4.3  生成画图计划
  格式（每项）：
  [图编号] | 位置（第N节，段落描述） | 类型（Mermaid-flowchart/qwen-image/等）| 内容描述 | 提示词草稿

备用基础映射表（绘图指南不可用时）：
  流程/步骤 → Mermaid flowchart TD
  层级/架构 → Mermaid graph LR
  时序/API → Mermaid sequenceDiagram
  比较/分析/框架 → qwen-image
  已有 Mermaid → 额外添加 qwen-image 可视化版

输出：画图计划列表（内存）

失败处理：
  扫描完整篇，确实没有适合画图的位置（纯文字性文档） →
  询问「这篇文档是否需要配图？如需要，请告诉我哪些地方，或跳过直接进入 Stage 7 审稿」
```

---

## Stage 5：批量画图

> Mermaid 直接插入（保留原始代码），qwen-image 生成并嵌入 base64。

```
前置检查（Stage 5 入场时必做）：
  A. 是否有内存草稿（来自 Stage 1-4）或用户提供的文档？
     无 → 询问「请提供要插入图片的文档，或输入占位符（我会创建空白文档嵌入图片）」
     有 → 继续
  B. 是否有 Stage 4 的画图计划列表？
     无（用户直接给了图描述）→ 将用户输入解析为画图计划格式：
       [图编号] | 内容描述（用户给的） | 类型（根据内容判断 Mermaid/qwen-image） | 嵌入位置（草稿末尾）
     有 → 继续

⚠️ 编程实现时的关键踩坑（2026-03-21）：
  当用 Python 脚本处理含 base64 图片的 Markdown 文档（如先提取图片→再 markdown.convert→再还原图片）时：
  占位符格式必须满足「不含双下划线」：
  - ❌ 禁止：`__IMG_0__`、`__PLACEHOLDER_0__`（含 `__` 的格式会被 Markdown 库解析为 `` 标签）
  - ✅ 正确：`IMGPLACEHOLDER0ENDIMG`、`IMG_SLOT_0_END` 等（无双下划线的格式）
  - 根因：Markdown 中 `__text__` = `text`，占位符被解析后无法原样找回
  - 症状：24 张图片全部消失，输出 HTML 从预期 35MB 缩小到 124KB

⚠️ 踩坑 DP-03：Write 工具写含中文引号的 Python 脚本导致 SyntaxError（2026-03-23）：
  - **场景**：Write 工具写入含中文引号（U+201C `"` / U+201D `"`）的 Python 脚本，Python 3.12+ 将其解析为 SyntaxError
  - **解决**：两步解耦——含中文内容写入模板文件（.html / .txt），再用纯 ASCII Python 脚本读取并处理
  - **预防**：凡 Python 脚本中需要包含中文字符串内容时，改用外部文件读取方式；Write 工具产出 Python 文件后必须先检查是否含非 ASCII 引号

输入：Stage 4 画图计划 + Stage 3 草稿

对每个 Mermaid 图（按计划顺序）：
  在草稿对应位置插入：
  \`\`\`mermaid
  [Mermaid 代码]
  \`\`\`

对每个 qwen-image 图：
  > **双语三元组规范（每图强制）**：
>
> **核心结构**：每个图位置 = 多个「三元组」，每个三元组 = (Mermaid骨架 + 中文图 + 英文图)
>
> 这三者不是翻译关系，而是同一逻辑在不同视觉语境中的三种表达层次：
> - **Mermaid**：逻辑结构，语言无关，可编辑
> - **中文图（qwen-image）**：为中文语境优化（中文标签 + 中文视觉审美）
> - **英文图（DMXAPI DALL-E 3）**：为国际传播优化（英文标签 + 西式演示风格）

> 1. 先撰写 2-4 个不同视角提示词（见下方视角选取原则）
> 2. 每个提示词调用一次 qwen-image，生成对应图片
> 3. 所有图片均嵌入文档，标注视角名称
> 4. 所有提示词写入同目录 `[文档名]_提示词记录.md`

**视角选取原则（从以下选 2-4 个互补角度）**：
- 「结构视角」：层级/模块/依赖关系（架构图）
- 「流程视角」：时序/步骤/因果链（流程图）
- 「对比视角」：新旧/多方对比（比较性内容）
- 「用户视角」：终端用户/使用者角度（产品图）
- 「生态视角」：全景/生态圈/涌现（系统整体图）
- 「数据视角」：量化/矩阵/热力（分析性内容）

**每个视角必须撰写两种提示词**：
1. **中文提示词**（qwen-image）：使用中文描述，要求中文标签、中文视觉风格（专业/简洁/现代）
2. **英文提示词**（DMXAPI DALL-E 3）：使用英文描述，要求English labels，international presentation style

**DMXAPI 调用参数**：
```
API Key: sk-wzI4JscScaJ1pxVKRQ4qxmJcpH1OIgsqshlP55Tq6NtZ3H5p
Base URL: https://www.dmxapi.cn/v1
Model: dall-e-3
Endpoint: POST /images/generations
Body: {"model": "dall-e-3", "prompt": "[英文提示词]", "size": "1024x768", "quality": "standard", "n": 1}
```

Step 5.1  执行图片生成（调用 `ai-image-generator` Skill）

    加载：`.cursor/skills/ai-image-generator/SKILL.md`
    
    按该 Skill 的模型选择原则：
    - 信息图/结构图/有中文标注 → 用 `qwen-image-2.0-pro`（multimodal endpoint）
    - 纯视觉风格图 → 用 `wan2.6-t2i`（text2image endpoint）
    
    遵循 ai-image-generator Skill 的完整调用规范（API_KEY/endpoint/重试策略）。
  
  Step 5.2  嵌入文档
    若该位置已有 Mermaid：
    先保留 Mermaid 代码块，然后为每个视角分别插入一张图：
    ```mermaid
    [原 Mermaid 代码，保留不删]
    ```
    > 📐 视角A：[视角名称]
    
    > 📐 视角B：[视角名称]
    
    （共2-4张，取决于Step 5.A确定的视角数）
    
    若该位置无 Mermaid：同样生成多视角，每张标注视角名称。

输出：草稿（含所有 Mermaid 代码块 + qwen-image base64）
⚠️ 不输出完成信号，不等用户确认，立即进入 Stage 6。

失败处理：
  单张 qwen-image 生成失败 → 保留 Mermaid，标注「[图生成失败：XXX，保留文字版本]」
  所有 qwen-image 全部失败 →
    保留所有 Mermaid
    末尾标注「[图片生成服务暂时不可用，已保留 Mermaid 版本]」
    明确告知用户后继续 Stage 6
```

---

## Stage 6：图片自审

> 每张 qwen-image 图与对应文字对照，严重不符则重生成（最多 1 次）。

```
输入：Stage 5 草稿（含所有图）

对每张 qwen-image 图执行：
  A. 图与文字一致性：
     图展示的内容 == 对应段落描述的内容？
     
  B. 图内元素正确性：
     流向/箭头方向正确？
     标签/文字无错误？
     颜色语义一致（如红色=危险/蓝色=信息）？
     
  C. 处理决策：
     严重不符（图展示了完全不相关的内容）→ 重新生成（最多 1 次）
       重新生成失败 → 删除该图，标注「[图片无法生成符合要求的版本，已删除]」
     轻微偏差（大体正确，细节不够精确）→ 标注「[图待优化：XXX]」，不重生成
     完全准确 → 无需操作

输出：
  - 修订后草稿（含重生成的图或删除/标注）
  - 图片自审报告：「N 张通过 / M 张轻微偏差待优化 / K 张删除重试失败」

失败处理：
  图片服务完全不可用 → 跳过自审，直接进 Stage 7，末尾标注「[Stage 6 跳过：图片服务不可用]」
```

---

## Stage 7：交给审稿者

> 自动触发 article-proofreading，独立视角，全面挑问题。

```
输入：Stage 6 草稿

Step 7.1  触发 article-proofreading Skill
  传入草稿全文 + 文章类型标注（research/article/report/analysis）
  
  article-proofreading Skill 会检查：
    - AI 腔检测（绝对表达/套话/无实质内容的结构）
    - 标题写法（4种错误类型）
    - 逻辑跳跃（补充逻辑）
    - 概念一致性（再次验证）
    - 结语完整性

Step 7.2  根据审稿结论执行
  P0（严重，必须修改）→ AI 直接在草稿中修复
  P1/P2（建议）→ 输出建议清单，询问用户是否采纳

Step 7.3  配图门控检查（进入 Stage 8 之前必做）
  
  ⚠️ 此步骤在「审稿通过 → 进 Stage 8」之间强制执行，不可跳过。
  
  IF target_format = html AND Stage 4-6（画图规划/批量画图/图片自审）尚未执行：
    扫描草稿中的 ASCII 框图/代码块（含结构图/流程图/飞轮图/架构图特征）：
    
    发现 [N] 处适合配图的位置（ASCII 结构图 / 纯文字描述的架构/流程）→
    输出：「⚠️ 配图门控：检测到 [N] 处适合替换为真实图片的位置，但 Stage 4-6（画图规划→生成→自审）尚未执行。
           建议：先执行 Stage 4（配图规划），再进入 Stage 8 HTML 转换。
           选择：
           [现在执行 Stage 4] → 跳回 Stage 4 继续画图流程
           [跳过配图，直接进 Stage 8] → 保留 ASCII 图，HTML 中以  展示
           [我已在外部生成图片，嵌入后再进 Stage 8] → 跳至 Stage 8」
    
    未发现适合配图的位置（纯文字/表格型文章）→ 直接进入 Step 7.4
  
  ELSE（Stage 4-6 已执行，或 target_format != html）→ 直接进入 Step 7.4

Step 7.4  完成信号
  审稿通过后，明确输出：
  「✅ 审稿完成。
   选择下一步（必须选一个）：
   A. 进行 Stage 8 格式转换（目标：[target_format]）
   B. 跳过格式转换，直接保存为 Markdown 文件（询问保存路径）
   C. 不保存，结束
   
   ⚠️ 选 A 或 B 才会保存文件，选 C 会丢失所有工作。」

  若用户选 C：AI 必须发出独立二次确认：
  「⚠️ 确认放弃？从 Stage 1 到 Stage 7 的所有工作将全部丢失，无法恢复。
   输入「确认放弃」继续，或选择 A/B 保存文档。」
  用户明确说「确认放弃」后 → 终止，不写任何文件。

备用方案（article-proofreading Skill 不可用时）：
  执行内置简化审稿：
  1. 扫描「综上所述/值得注意/不难发现/显而易见」等 AI 腔词语 → 建议删除
  2. 检查标题是否含感叹号/过度修饰词 → 建议修改
  3. 检查结尾段落是否存在 → 不存在则提醒添加
  标注「[使用内置简化审稿，建议后续补充完整审稿]」

输出：
  - 审稿通过的草稿（已修复 P0）
  - P1/P2 建议清单（若有）
```

---

## Stage 8：格式转换与保存（可选）

> 按 target_format 分叉，保存到对应位置。

```
输入：Stage 7 草稿 + target_format + dimension（research 模式）

分叉 A：target_format = html
  ⚠️ 不调用 wechat-article-writer（避免循环调用，HTML 逻辑内联执行）
  
  Step A.0  Markdown 真源确认（内联 wechat-article-writer Step 4.5 逻辑）
    确认手稿内容已冻结，不再修改
    任何内容修改必须先改 MD 手稿，再生成 HTML
  
  Step A.1  F-022 挑战者反思（公众号专属，内联 wechat-article-writer Step 6.8 逻辑）
    以「第一次读这篇文章的普通读者」视角检查 3 点：
    1. 哪个段落理解障碍最大（信息密度过高/概念跳跃）？
    2. 标题与正文最核心内容是否一致？
    3. 文章最弱的一段在哪里（内容最空洞/逻辑最跳跃）？
    发现可修复问题 → 修复后继续；无重大问题 → 输出「内容自检：[轻微问题描述]」
  
  Step A.2  转换为微信 HTML
    参照 _内部总控/AI思维碎片/微信公众号发布手册.md §2 HTML 规范
    图片：base64 嵌入，不引用本地路径
    颜色：H2=#2980b9，H3=#e67e22，strong=#e74c3c，协会简介=#7f8c8d
  
  Step A.3  添加底部模板
    参照发布手册 §4.3：署名 → 分隔线 → TA SHAN logo → 协会简介 → 二维码 → 官网说明
  
  Step A.4  排版核查（运行 C:/Temp/check_html.py 或手动核查15项）
    → 15项全部 [OK] 才输出最终 HTML
  
  Step A.5  告知用户发布步骤（用浏览器打开 HTML 文件，复制到微信编辑器）
  
  输出：HTML 文件 + 发布指引

分叉 B：target_format = latex
  调用 academic-si-writer
  输出：.tex 文件 + 编译指令

分叉 C：target_format = md + mode != research
  **文档性质检查（Stage 0 已判断，此处执行保存路由）**：
  
  - 若 Stage 0 判断为**原创思考类**（用户自己的分析/产品定义/认知文档）：
    → 路由规则：询问「这份文档属于认知结构（写入L1/L2），还是项目目录（写入项目群/）？」
    → 认知结构类：保存到 `_内部总控/认知结构/L1_系统性文档/[维度]/[文件名]_YYYYMMDD.md`
       并触发 `cognitive-structure-write-guard`（L1 写保护规则）
    → 项目类：询问具体路径，保存到用户指定位置
  
  - 若 Stage 0 判断为**外部调研类**，但 target_format=md 且 mode 非 research：
    → 提示「外部调研类文档建议改用 mode=research 走 Stage 8D 正式注册流程」
    → 用户可选择继续保存到任意路径，或改走 Stage 8D

  - 若 Stage 0 判断为**内部经验积累类**（踩坑/最佳实践/操作规范）：
    → 确认主题（如：AI服务器助手/部署规范/前端规范/后端规范 等）
    → 确认文档类型（踩坑速查 / 最佳实践 / 操作手册）
    → 路径：`_内部总控/开发规范/[主题]/[类型].md`
    → 主题子目录不存在时自动创建
    → 写入后在 `_内部总控/开发规范/_开发规范总索引.md` 中追加一行索引（若索引文件存在）

  - 若性质不明：询问保存路径（或使用用户指定路径）
  
  最终执行 Write：[确定路径]/[文件名]_YYYYMMDD.md
  输出：文件路径

分叉 D：target_format = md + mode = research
  Step 8.1  确认保存路径
    路径：_内部总控/认知结构/L1_系统性文档/[dimension]/知识库/[文件名]_YYYYMMDD.md
    目录不存在 → 自动创建
  
  Step 8.2  补全 REF-EXT 头部（替换 Stage 1 的占位）
    > 文档类型：REF-EXT（外部参考知识）
    > 创建日期：YYYY-MM-DD
    > 使用目标：[填写]
    > 来源说明：[WebSearch/WebFetch获取]
    > 关联关系：[若有]
    > 注意：本文档为外部知识汇编，不算知识结构 L1/L2/L3 正文
    > 分类注记：文档分类清单.md 第十二节
  
  Step 8.3  写入文件
    执行 Write
  
  Step 8.4  三处注册（research 模式专属，不可跳过）
    ① 更新 文档分类清单.md 第十二节
       追加格式：| L1_系统性文档/[维度]/知识库/[文件名] | REF-EXT | [维度] | ★ CURRENT | [摘要，含行数+日期] |
    
    ② 更新 知识图谱_正式文档.md（REF-EXT 区段）
       路径：_内部总控/认知结构/知识图谱_正式文档.md
       操作：在 REF-EXT 表格最后一行之后追加一行
       格式：| REF-EXT-[序号] | [文件简称] | REF-EXT | [核心内容一句话] | L1/[维度]/知识库 |
       序号：读取现有 REF-EXT 条目的最大序号 +1
       注意：知识库/路径豁免 write-guard 的备份/变更记录要求，但知识图谱注册仍必须执行
    
    ③ 追加系统日志：_内部总控/认知结构/L3_原始记录/系统日志.md
       格式：[LOG-YYYYMMDD-NN] document-pipeline | 保存知识库文档 | [文件名]

  输出：
    - 已保存的 MD 文件路径
    - 分类清单更新确认
    - 系统日志条目

失败处理：
  HTML 转换失败 → 保存 MD，提示「HTML 转换失败，已保留 MD 版本，请手动转换」
  LaTeX 转换失败 → 保存 MD，提示「LaTeX 转换失败，已保留 MD 版本，请手动处理」
  写入失败 → 告知用户，提供草稿完整内容，请求手动保存
```

---

## 边界条件总表

| 情况 | 处理方式 |
|---|---|
| 用户中途打断 | 询问「是否继续，还是修改草稿后再从当前 Stage 继续？」|
| 文档超长（>5000字）| Stage 2/3 分节执行，不跳过任何节 |
| 用户说「只画图不审稿」| Stage 4→5→6→8，跳过 Stage 7 |
| 用户说「只转格式，其他都好了」| 直接 Stage 8 |
| 全场景绘图指南不存在 | Stage 4 使用内置映射，不终止 |
| 写作风格手册不存在 | Stage 1 使用内置默认约束，不终止 |
| research 模式维度无法判断 | 列出 6 个选项，等用户确认 |
| 用户同时触发 wechat-article-writer | 识别为 target_format=html，进入本 Skill |

---

## 强绑定规则

- **R2 NO_FABRICATION**：禁止捏造来源、数据、引用——无法核实的必须标注
- **R1 EVIDENCE_FIRST**：来源类别必须明确（WebSearch / AI知识 / 推断）
- **R3 READ_FIRST**：Stage 1 必须真正执行 WebSearch，不允许纯凭训练知识写含事实性主张的文档
- **R6 ARTIFACT_FIRST**：输出必须落到文件，不允许只在对话中展示
- **R8 VERIFY_BEFORE_FREEZE**：Stage 7 审稿通过后才能执行 Stage 8 保存

---

## 与现有 Skill 的关系

| Skill | 关系 | 行为 |
|---|---|---|
| wechat-article-writer | thin wrapper | 触发词命中 → 设置 target_format=html → 转发到本 Skill |
| general-article-writer | thin wrapper | 触发词命中 → 设置 target_format=md → 转发到本 Skill |
| research-output | thin wrapper | 触发词命中 → 设置 mode=research → 转发到本 Skill |
| article-proofreading | Stage 7 调用 | 传入草稿，接收审稿报告 |
| academic-si-writer | Stage 8 latex 调用 | 传入草稿，生成 LaTeX |
| article-image-angles | 可选增强 | Stage 4 用户主动说「我想看多个配图视角」时调用 |
| article-image-styles | 可选增强 | Stage 5 用户主动说「用某种风格」时调用 |

---

## 变更记录

### v1.0 — 2026-03-19 — 初始创建

**根因**：现有写作 Skill 碎片化（wechat-article-writer / general-article-writer / research-output），
各自有不同链路和缺口（有的有审核无配图审核，有的有配图无审核）。
用户需要一条完整的、任意 Stage 可入场的写作流水线，
最终产出带原始 Mermaid + qwen-image 嵌入的 MD

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [TashanGKD](https://github.com/TashanGKD)
- **Source:** [TashanGKD/tashan-cursor-skills](https://github.com/TashanGKD/tashan-cursor-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-tashangkd-tashan-cursor-skills-document-pipeline
- Seller: https://agentstack.voostack.com/s/tashangkd
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
