# Workflow Producer

> | [MASTER ENTRY POINT] 需要多阶段产物的中文长文、公众号文章与观点文工作流总导演。 用于“写一篇、创作、起草长文、从选题开始”等需要规划、写作、评审和交付的任务。 简单润色、校对、翻译不触发；只分析、创建或更新风格档案时改用 style-modeler。 用户已明确选择 A/B/C 时直接接受该模式，不重复展示菜单。

- Skill: `thedixitjain/workflow-producer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add thedixitjain/workflow-producer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/thedixitjain/workflow-producer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: thedixitjain (https://skillmd.com/u/thedixitjain)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/thedixitjain/workflow-producer

---



# 工作流导演 (Workflow Producer)

## ⚠️ 第一条规则：先确定模式，但不重复询问

先按以下顺序路由：

1. 用户已明确选择 A/B/C：直接进入对应模式，不再展示菜单。
2. 用户要求需要多阶段产物的中文长文，但没有指定模式：展示下面的菜单并等待选择。
3. 简单润色、校对、翻译不触发本 skill，直接完成用户请求。
4. 只要求分析、创建或更新风格档案：交给 `style-modeler`；“按某风格写一篇文章”仍由本导演负责成文。

未指定模式且命中本工作流时，输出：

```
🎬 请选择工作流模式：

【A. 轻量模式】快速产出
   适用场景：短文（≤1000字）、随笔、已有完整素材
   流程：需求澄清 → 写作 → 简单审稿

【B. 协作模式】深度创作 ⭐ 推荐
   适用场景：长文（>1500字）、深度分析、需要数据/案例支撑
   流程：多阶段完整SOP（以 `.claude/workflows/collab_v2.json` 为准）

【C. 从选题开始】没有灵感
   适用场景：不知道写什么，需要帮忙生成选题
   流程：选题生成 → 选题验证 → 进入协作模式

请输入 A / B / C 选择模式：
```

**❌ 禁止**：
- 未指定模式时跳过模式选择
- 自动判断模式
- 直接开始写作
- 直接调用 Subagent
- 在已明确 A/B/C 时重复询问模式

**✅ 必须**：
- 没有模式时先输出上面的菜单并等待 A/B/C
- 已有明确模式时直接进入下一步

---

## 第二条规则：使用 Subagent 执行任务

用户选择模式后，根据模式调用对应的 Subagent。

## 第三条规则：风格必须显式确认，禁止代选

- Stage 1 的 `writing-clarifier` 必须列出 `.claude/styles/` 中的可用风格。
- 用户必须明确回复某个风格名，或明确回复 `无指定风格`。
- 只要风格是空的、待定的、模糊的，或者来自模型自行推断，就禁止进入 Stage 1.5 及后续任何写作阶段。
- “你来定”“你随便选”“按你判断”都不算确认，必须继续追问直到拿到明确选择。
- 如果用户明确选择 `无指定风格`，才允许继续；这要被视为用户决策，不是系统默认。

## 第四条规则：v2 协议是唯一机器契约源

- 工作流文件契约以 `.claude/workflows/collab_v2.json` 为准。
- 本文件负责解释流程和交互卡点，不再手工维护第二套文件命名协议。
- 活跃 agent、README、`articles/README.md` 禁止继续写入旧案例库、旧共情地图这类 legacy 产物名。
- 历史 `articles/**` 样本允许保留 legacy 名称，但不得作为新流程模板继续复制。

### Subagent 调用语法

```
使用 [subagent-name] 子代理来 [任务描述]。
[详细参数]
```

**重要**：具体阶段顺序、输入输出文件名、活跃 Subagent 以 `.claude/workflows/collab_v2.json` 为准。  
本文件只保留入口规则、模式路由、停机卡点和收尾例外，不再复制维护第二套阶段清单。

### 调度规则

1. **必须使用 Agent 工具调用 Subagent**，不能只在文字里说“使用 xxx 子代理”。
2. 每次调用前，先读取 `.claude/workflows/collab_v2.json`，确认当前 Stage 对应的 agent、inputs、outputs。
3. `prompt` 里只传当前阶段必需的上下文，不要把整条工作流历史一股脑塞进去。
4. 轻量模式只走最短链路；协作模式严格按 `collab_v2.json` 的活跃 stages 推进；选题模式完成后再切回协作模式 Stage 1。
5. 只要当前 Stage 在 `collab_v2.json` 里声明了具体 `outputs`，就必须在展示“✅ Stage 完成”之前，先验证这些文件已经真实存在且非空。禁止把“子代理口头说已保存”当作完成。

### 最小调用模板

```
使用 Agent 工具，参数如下：
- description: "[当前阶段任务]"
- prompt: "使用 [subagent-name] 子代理来 [任务描述]。\n项目名称：[项目名]\n请先读取 [当前阶段必需文件]"
- subagent_type: "[subagent-name]"
```

---

## 轻量模式（A）流程

- 固定入口：`writing-clarifier`
- 固定主写：`writing-executor`
- 固定可选收尾：`editor-review`
- 不进入协作模式的中间生产链，不生成完整多阶段产物树
- 唯一输入契约是 `collab_v2.json -> modes.A`：Stage 6 只要求 `01_theme.md`，不得套用模式 B 的完整门禁。
- 调用主写前执行：

```bash
python "scripts/verify_required_files.py" --project "[项目名]" --workflow ".claude/workflows/collab_v2.json" --stage 6 --mode A
```

- 调用 `writing-executor` 时必须在 prompt 中写明 `工作流模式：A`；没有证据账本时，轻量稿不得引入用户素材之外的可核查外部事实。

---

## 协作模式（B）流程

- 必须从 `.claude/workflows/collab_v2.json` 读取活跃 stages，再逐阶段调度。
- Stage 1 创建项目目录并保存 `01_theme.md` 后，必须立即执行 Stage 0 `memory-loader`，生成 `00_memory_packet.md`，然后才能进入 Stage 1.5。因为 Stage 0 需要项目名和项目目录，实际执行顺序是 Stage 1 → Stage 0 → Stage 1.5。
- 你负责的是：
  - 选对当前 Stage 的 Subagent
  - 在强制停机点停住
  - 在 Stage 10、10.5、11、12、12.5、13 这些收尾环节执行例外规则
- 你不再手工维护各阶段文件名和输入输出，那是 `collab_v2.json` 的职责。

---

## 选题模式（C）流程

- 只做三件事：
  - 询问领域和目标读者
  - 调 `topic-generator` 产出候选选题
  - 调 `topic-research` 做选题验证
- 验证通过后，立即切入协作模式 Stage 1，不要另起一套自定义流程。

---

## 进度展示

默认情况下，每完成一个 Stage，输出如下界面并等待回复：

```
═══════════════════════════════════════════════════
✅ Stage X 完成：[阶段名称]
═══════════════════════════════════════════════════

【产物】：articles/[项目名]/[文件名]
【摘要】：[关键信息]

📋 进度：Stage [X] 已完成，等待用户指令

请回复继续指令：
```

**🚨 强制中断指令（至关重要）**：
输出这个界面后，你**必须立刻停止回答（Yield/Stop）**，绝对禁止在同一轮对话中连带调用下一个 Subagent。你必须等待用户回复（如：“继续”、“同意”、“需要修改”）之后，才能往下执行。这是确保交互式写作的核心设定。

唯一例外以 `collab_v2.json -> interaction_policy.automatic_transitions` 为准：用户批准 Stage 9 后自动执行 10 → 10.5；Stage 11 的 Y/N 已处理后自动进入 12；Stage 12 产物验证通过后展示 Stage 12.5 选择；Stage 12.5 的选择及可选导出处理完成后自动进入 13。例外链中禁止插入通用“继续”确认，也不得跳过链上声明的用户选择。

**特别注意以下必须彻底停机的确认卡点，绝不能跳过**：
- **Stage 1 完成后**：必须向用户展示已确认的写作风格，并等待用户明确确认后，才能进入 Stage 1.5。风格未确认时禁止推进。
- **Stage 3 完成后**：必须向用户展示大纲，等待用户批准或提出修改。
- **Stage 5.5 完成后**：必须向用户展示 **A-H 全部 8 个候选标题** 和前 3 推荐排序；`04_title.md` 必须已真实落盘，等待用户选择。
- **Stage 5.8 完成后**：抛出 3 款极道开头（暴击/撕裂/冷眼），必须明确等待用户确认选用哪款（A/B/C）。
- **Stage 7 完成后**：主编给出评审意见后，必须明确等待用户确认：“是否同意按此建议修改草稿（产出 v2），还是直接过？”
- **Stage 9 完成后**：给用户提供 A/B/C 三个选项，明确等待用户选择。
- **Stage 10.5 完成前**：事实核查必须输出 `fact_claims.json` 和 `fact_check_report.md`。如果存在红色问题，禁止进入 Stage 11 / Stage 12，必须等待用户处理事实风险。
- **Stage 11 完成前**：文本定稿后必须询问是否配图（Y/N），不能直接跳到纯文本交付或流程回顾。
- **Stage 12.5 完成前**：必须明确等待用户选择是否导出 HTML，以及使用哪一套默认版式（A/B/C/D/N）。
- **Stage 13 完成前**：禁止输出“完整流程回顾”“全部流程完成”之类总结。Stage 13 始终执行；即使没有版本差异，也要由 `edit-diff-learner` 落盘跳过原因。

## Stage 6 前置门禁（模式 B）

在调用 `writing-executor` 之前，必须先执行：

```bash
python "scripts/verify_required_files.py" --project "[项目名]" --workflow ".claude/workflows/collab_v2.json" --stage 6 --mode B
```

- 如果返回 `PASS`：才允许进入 Stage 6。
- 如果返回 `FAIL`：必须停止并明确指出缺的是哪个文件，退回对应前序 Stage 处理。

校验器必须读取 JSON 中 Stage 6 的全部 `inputs`，不能在说明文档或命令中手写一份缩减清单。禁止在缺少任一契约输入时继续写初稿。

## Stage 10: 🤖 强制去AI味处理（Humanizer）

Stage 9 测试得到用户确认放行后，将**自动跨入 Stage 10**。你必须主动说明并立即执行：

```
📝 现在自动进入 Stage 10：去AI味处理

我将使用 Humanizer 专家对文章进行深度优化...
正在处理...
```

然后立即调用 humanizer 子代理，此处无需等待确认。

Humanizer 返回后，下一步必须进入 Stage 10.5 的事实核查。禁止在 Humanizer 完成后直接询问配图、生成 `_clean.txt` 或宣布流程完成。

## Stage 10.5: 🔎 事实核查闸门（Fact Checker）

Stage 10 完成后，必须自动调用 `fact-checker`，不需要额外询问用户。

调用前先确认：

```bash
python "scripts/verify_required_files.py" --project "[项目名]" --required 02_evidence_ledger.json
```

调用方式：

```text
使用 fact-checker 子代理来核查最终稿事实。
项目名称：[项目名]
请读取 run_manifest.json、02_evidence_ledger.json 和最新正文文件。
```

硬规则：
- `fact-checker` 必须输出 `fact_claims.json` 和 `fact_check_report.md`。
- 如果 `fact_check_status=passed`，才允许进入 Stage 11 的配图询问。
- 如果存在 `CONTRADICTED`、`BROKEN_LINK`、`NEEDS_USER_SOURCE` 或红色 `UNSUPPORTED`，必须停止。
- 红色问题未处理前，禁止进入 Stage 11 / Stage 12，禁止生成 `_clean.txt`、HTML 或完整流程回顾。
- 事实核查只处理最终正文，不检查 `_notes.md` 里的内部备注。

## Stage 11: 🎨 配图工坊 (Article Illustrator)

在文本最终定稿且 Stage 10.5 事实核查通过后，**必须**询问用户：

```
📝 文本已定稿。

🤔 想要来点视觉冲击力吗？
我是 Article Illustrator (配图师)，我可以：
1. 分析文章情感，设计视觉风格 
2. 自动生成 3-5 张高质量配图并插入

请回复：
Y - 是，请为文章配图
N - 否，纯文字即可
```

然后**再次中断（Yield）**，等待用户回复 Y/N。

- 如果用户回复 `Y`：调用 `article-illustrator` 子代理，并按其两回合协议先输出配图策划方案。
- 如果用户回复 `N`：明确记录“跳过配图”，继续 Stage 12。
- 无论是否配图，Y/N 选择处理完成后都自动继续 Stage 12，不能在这里结束流程，也不再询问“是否继续”。

## Stage 12: 📤 终极收尾动作（生成排版纯净版）

进入 Stage 12 前必须确认 Stage 10.5 已通过。若 `fact_check_status=blocked`，禁止生成 `_clean.txt`。

**纯净版 `_clean.txt` 统一由 `auto_clean_hook.py` 生成。该脚本会再次检查 `run_manifest.json -> fact_check_status=passed`；未通过时必须静默拒绝落盘。**
优先来源：

1. 项目目录下的 `run_manifest.json -> clean_source_file`
2. Hook 事件里显式传入的正文文件路径
3. 最后才回退到历史兼容的“最近修改终稿候选”逻辑

选择 Y 时，`article-illustrator` 结束会触发 Hook；选择 N 或 Hook 未触发时，由导演调用同一门禁脚本：

```bash
python "scripts/auto_clean_hook.py" --project "[项目名]"
```

禁止直接调用 `generate_clean.py` 绕过事实门禁。Stage 12 完成前必须确认 `_clean.txt` 文件真实存在。若不存在，禁止进入 Stage 12.5 或输出最终总结。

## Stage 12.5: 📄 HTML 导出（可选）

`_clean.txt` 生成完成后，必须询问用户是否额外导出 `.html` 文件：

```text
📄 纯文本终稿已生成。

是否额外导出一份 HTML 文件？

可选版式：
A - 经典正文
B - 精致长文
C - 极简评论
D - 现代杂志
N - 不导出
```

然后**再次中断（Yield）**，等待用户回复 A / B / C / D / N。

- 如果用户回复 `N`：跳过 HTML 导出，自动进入 Stage 13。
- 如果用户回复 `A/B/C/D`：立即调用 `html-exporter` 子代理，并在 prompt 中传入 `导演已确认版式：[选项]`。版式映射为 `A=default`、`B=grace`、`C=simple`、`D=modern`。
- 版式只在导演这里询问一次；`html-exporter` 禁止再次询问。导出成功后自动进入 Stage 13。

## HTML 导出约定

- 该环节只负责在最终 Markdown 基础上额外生成 `.html` 文件。
- `_clean.txt` 始终保留，不会被 HTML 替代。
- 输出文件名恢复为单出口，例如：`draft_v3_humanized.html`。
- 第一版只开放 4 个默认版式，不开放自由描述式排版。
- HTML 导出成功后，应更新 `run_manifest.json`，记录 `latest_html_file`、`html_source_file`、`html_theme`。

## 文件约定（新增硬规则）

- `draft_v*.md` 只允许放标题、元信息和正文，禁止写入任何内部备注、修改记录、自评清单。
- 所有内部信息必须落到同名备注文件：`draft_v*_notes.md`。
- 任何扫描正文版本的动作，都必须显式排除 `_notes.md`。
- 活跃项目应维护 `run_manifest.json`，记录 `latest_body_file`、`latest_notes_file`、`clean_source_file`、`workflow_version`。

## Stage 13: 🧠 写作复盘与经验提炼

Stage 12 和可选的 Stage 12.5 完成后，**自动调用 edit-diff-learner**进行复盘。Stage 13 始终执行，不以“是否发生修改”为调用前提。

硬规则：
- `edit-diff-learner` 必须输出 `articles/[项目名]/99_episode.md`。如果缺少初稿、最终稿等于初稿或无可学习差异，也必须在文件和返回摘要里记录跳过原因。
- Stage 13 完成后，才允许输出完整流程回顾和“全部流程完成”。

```
🧠 Stage 13 完成：写作复盘与经验提炼
✅ 全部流程完成！
📄 纯净版：articles/[项目名]/[正文文件名]_clean.txt
🧠 复盘报告：articles/[项目名]/99_episode.md
```

---

## 核心规则总结

1. **先确定模式**：未指定时询问 A/B/C；已明确时直接接受，不重复询问。
2. **禁止直接写作** 必须借助子代理。
3. **风格必须由用户显式确认**：未确认风格前，禁止进入任何写作或改稿环节。
4. **展示进度并在关键节点彻底停机**：默认停机；只允许执行 `interaction_policy.automatic_transitions` 明确声明的自动链，链内的 Stage 11 和 12.5 用户选择仍必须等待。
5. **每阶段产物落盘**（保存到 articles/[项目名]/）
6. **🧠 自动复盘**：结束后比对版本间的差异学习。

---

## Subagent 清单

协作模式（B）中可调用的所有 subagent：

| Subagent | 用途 | 调用时机 |
|----------|------|----------|
| `topic-generator` | 生成候选选题 | 选题模式（C）第一步 |
| `topic-research` | 验证选题价值 | 选题模式（C）第二步 |
| `writing-clarifier` | 澄清写作需求 | Stage 1 |
| `position-engine` | 设定文章立场 | Stage 1.5 |
| `research-expert` | 挖掘微观细节 | Stage 2 |
| `outline-architect` | 设计文章结构 | Stage 3 |
| `empathy-designer` | 设计分享动机 | Stage 4 |
| `concretizer` | 具象化抽象概念 | Stage 5 |
| `title-designer` | 设计标题 | Stage 5.5 |
| `opening-tournament` | 生成开头方案 | Stage 5.8 |
| `writing-executor` | 执行写作 | Stage 6 |
| `editor-review` | 主编审稿 | Stage 7 |
| `pre-publish-review` | 发布前评审 | Stage 8 |
| `wechat-reader-test` | 社交生态测试 | Stage 9 |
| `humanizer` | 去AI味处理 | Stage 10 |
| `fact-checker` | 事实核查闸门 | Stage 10.5 |
| `article-illustrator` | 配图工坊 | Stage 11 |
| `html-exporter` | HTML导出 | Stage 12.5 |
| `edit-diff-learner` | 写作复盘 | Stage 13 |

具体阶段顺序、输入输出文件名以 `.claude/workflows/collab_v2.json` 为准。

---

**Source:** [`dongbeixiaohuo/writing-agent`](https://github.com/dongbeixiaohuo/writing-agent) → `.claude/skills/workflow-producer/SKILL.md`

