---
name: yida-flash-note-to-prd
description: 闪记转 PRD。从钉钉闪记（AI 听记）、会议记录、需求文档中提取产品需求，生成结构化的 PRD 文档。支持文本、图片、链接三种输入方式，三层 Prompt 架构确保高质量提取。不适用于：直接创建宜搭应用（PRD 生成后还需 yida-app 流程），或处理非需求类文档（如技术文档、代码文件）。
---

# 钉钉闪记转高质量 Prompt 技能

## 严格禁止 (NEVER DO)

- 不要在没有闪记内容的情况下强行生成 PRD，必须等待用户提供闪记文本、图片或链接
- 不要将生成的 prompt 写入项目根目录，必须写入 `prd/<项目名>.md`
- 不要忽略闪记中的 A1 结构化摘要（会议摘要、待办事项、决策结论），这是最高优先级信息
- 不要生成传统产品文档格式，输出必须是可直接驱动宜搭开发的结构化 prompt

## 严格要求 (MUST DO)

- 必须自动识别输入类型：文本闪记 / 图片闪记 / 闪记链接，分别处理
- 必须提取会议元信息（标题、参会人、时间）并写入 prompt 上下文
- 生成的 prompt 必须包含：MVP 边界、用户角色与权限、核心用户旅程、功能模块、字段设计表、流程/状态机、数据关联与约束、交互验收标准、报表需求、OpenYida 落地约束、待确认事项
- 生成完成后必须提示用户确认 PRD 内容，再进入开发流程

## 适用场景

| 用户意图 | 触发条件 |
|---------|---------|
| 闪记转需求文档 | 用户发送闪记文本/图片、提到"闪记"、"会议纪要"、"会议记录" |
| 快速启动开发 | 从会议记录直接生成可执行的开发 prompt |

## 触发条件

**正向触发**：
- 用户发送闪记文本/图片
- 用户提到"闪记"、"会议纪要"、"会议记录"、"闪记转需求"
- 用户发送钉钉闪记链接（`shanji.dingtalk.com` 或 `alidocs.dingtalk.com`）
- 用户口述会议要点，要求整理成需求

**不适用场景（不要触发）**：
- 直接创建宜搭应用（PRD 生成后还需 `yida-app` 流程）
- 处理非需求类文档（如技术文档、代码文件）
- 用户已有完整 PRD，无需从闪记生成

## 异常处理

| 异常场景 | 处理方式 |
|---------|----------|
| 闪记内容为空或过短 | 提示用户补充更多会议内容，至少需要包含功能需求描述 |
| 图片识别失败 | 提示用户重新上传清晰图片，或直接粘贴闪记文本 |
| 闪记链接无法访问 | 提示用户在钉钉中打开链接，复制全文后粘贴 |
| PRD 文件写入失败 | 检查 `prd/` 目录是否存在，确认文件系统权限 |
| 生成的 PRD 质量不佳 | 展示待确认事项，引导用户补充关键信息后重新生成 |

## Agent 错误处理策略

当 Agent 执行本技能遇到错误时，必须遵循以下默认行为：

| 错误类型 | 默认处理策略 |
|---------|-------------|
| 输入内容为空 | 停止执行，主动询问用户提供闪记内容（文本/图片/链接） |
| 输入内容过短（<100 字） | 提示用户内容可能不足以生成完整 PRD，询问是否继续或补充 |
| 图片识别失败 | 提示用户重新上传清晰图片，或改用文本粘贴方式 |
| 闪记链接无法访问 | 引导用户在钉钉中打开链接，复制全文后粘贴 |
| 文件写入失败 | 检查目录权限，尝试创建 `prd/` 目录后重试 |
| 生成结果不完整 | 展示已生成内容，询问用户是否需要补充或调整 |
| 未知错误 | 停止执行，完整展示错误信息，建议用户反馈问题 |

---


## 概述

本技能将钉钉闪记（会议录音转文字的会议纪要、AI 听记图文纪要）**自动识别并转化为高质量的结构化 prompt**。生成的 prompt 写入 `prd/<项目名>.md`，可直接驱动后续宜搭应用开发流程（创建应用 → 创建表单 → 编写页面 → 发布上线）。

> **核心理念**：`prd/<项目名>.md` 不是传统的产品文档，而是一段**精心结构化的 prompt**——它包含了足够的业务语义信息（功能模块、字段设计、流程设计、报表需求等），使得后续技能可以直接读取并执行开发。

**核心能力**：
- **自动识别闪记输入**：用户直接发送闪记文本或图片，AI 智能体自动触发本技能
- **智能识别钉钉 A1 / 闪记生成的结构化摘要**（会议摘要、待办事项、决策结论等），作为高优先级信息
- **自动提取会议元信息**（标题、参会人、时间、时长等），丰富 prompt 上下文
- **识别发言人角色标注**（如"张三(产品经理)"），帮助区分不同角色视角
- **生成可直接驱动开发的结构化 prompt**，包含 MVP 边界、角色权限、核心旅程、功能模块、字段设计表、流程/状态机、数据约束、验收标准、报表需求和待确认事项

---

## 何时使用

当以下情况发生时，**自动触发**本技能（无需用户明确说"转 PRD"）：

- 用户发送了一段**会议纪要/闪记文本**（包含发言人对话、讨论内容等）
- 用户发送了**闪记截图/图片**（钉钉闪记的图文纪要截图）
- 用户发送了**钉钉闪记链接**（`shanji.dingtalk.com` 或 `alidocs.dingtalk.com`）
- 用户提到"闪记"、"会议纪要"、"会议记录转PRD"、"闪记转需求"等关键词
- 用户口述会议要点，要求整理成需求

---

## ⚡ AI 智能体自动执行流程（核心）

> **重要**：本技能的主要执行方式是 **AI 智能体直接处理**，而非调用 CLI 命令。AI 智能体自身就是大模型，可以直接完成闪记内容的理解和高质量 prompt 生成。

当识别到用户输入为闪记/会议纪要内容时，按以下流程自动执行：

```
[Step 1] 识别输入类型
         - 图片 → 用视觉能力识别图片中的所有文字内容
         - 文本 → 直接使用
         - 闪记链接 → 提示用户复制闪记全文后粘贴
           ↓
[Step 2] 内容预处理（AI 智能体自行完成，参照预处理规则）
         - 去除时间戳、口语填充词、重复标点
         - 识别会议元信息（标题、参会人、时间等）
         - 识别 A1 生成的结构化摘要段落（📋 会议摘要、✅ 待办事项、📌 决策结论等）
         - 识别发言人及其角色标注
           ↓
[Step 3] 生成高质量结构化 prompt
         - 按照「Prompt 输出模板」和「内容提取规则」生成
         - AI 智能体直接生成，无需调用外部 AI 接口
         - 严格遵循字段设计规则（使用宜搭标准字段类型）
         - 严格遵循质量标准（每个模块含功能描述、交互规则、业务规则、字段设计表和验收标准）
         - 生成的 prompt 必须包含足够的业务语义信息，使后续技能可直接读取执行
           ↓
[Step 4] 写入文件 prd/<项目名>.md
           ↓
[Step 5] 输出摘要，询问用户是否需要调整
         - 展示：项目名称、功能模块数、待确认事项数
         - 询问：是否需要修改或补充
         - 提示：可继续执行宜搭应用开发流程（prompt 已就绪）
```

### 图片输入处理规则

当用户发送图片时：
1. 使用视觉能力**完整识别**图片中的所有文字内容，包括标题、正文、表格、列表等
2. 注意识别图片中的**结构化布局**（如分栏、卡片、流程图等），保留其逻辑关系
3. 识别图片中的**标签/标注**（如 Emoji 标识、颜色标注、高亮文字等），这些通常是重点信息
4. 将识别结果作为闪记文本，进入 Step 2 继续处理

### 闪记链接处理规则

以下 URL 模式自动识别为钉钉闪记链接：
- `https://shanji.dingtalk.com/app/transcribes/...` — 钉钉闪记（AI 听记）分享链接
- `https://alidocs.dingtalk.com/...` — 钉钉文档中的闪记

钉钉闪记页面是 SPA 应用，需要登录态才能获取数据。当用户提供闪记链接时：
1. 提示用户在钉钉中打开链接，复制闪记全文后粘贴
2. 或导出为 .txt 文件后告知文件路径

---

## CLI 命令（可选的自动化工具）

> 以下 CLI 命令是可选的自动化工具，适用于批量处理或脚本化场景。日常使用中，直接将闪记内容发给 AI 智能体即可。

### flash-to-prd — 闪记转 PRD

```bash
# 从文件读取闪记内容并生成 PRD
openyida flash-to-prd --file <闪记文件路径> [--name <项目名>]

# 从标准输入读取闪记内容
cat meeting.txt | openyida flash-to-prd --name <项目名>
```

| 参数 | 必填 | 说明 |
|------|------|------|
| `--file` | 否 | 闪记文本文件路径（支持 .txt / .md） |
| `--name` | 否 | 项目名称，用于生成 PRD 文件名（默认从闪记内容中提取） |
| `--max-tokens` | 否 | AI 最大输出 token 数（默认 8000） |

**输出**：生成 `prd/<项目名>.md` 文件

---

## 处理流程

```
[Step 1] 接收闪记内容（文本/文件/链接）
           ↓
[Step 2] 预处理（preprocessFlashNote）：
         - 去除时间戳、口语填充词、重复标点
         - 合并同一发言人的连续发言
         - 清理多余空行
           ↓
[Step 3] 会议识别（新增能力）：
         - extractMeetingMeta：提取会议元信息（标题、参会人、时间、时长等）
         - extractA1Summary：识别钉钉 A1 生成的结构化摘要段落
         - extractSpeakers：识别发言人及其角色标注
         - buildMeetingContext：组装会议上下文信息
           ↓
[Step 4] 分段判断（splitIntoSegments）：
         - ≤ 6000 字 → 单段模式
         - > 6000 字 → 按段落边界智能分段
           ↓
[Step 5] AI 提取（buildFlashNoteToPrdPrompt）：
         - 会议上下文作为高优先级信息注入 Prompt
         - 单段模式：三层 Prompt 架构，直接输出 Markdown PRD
         - 多段模式：每段输出 JSON 结构化数据
           ↓
[Step 6]（仅多段模式）合并去重（buildMergePrompt）：
         - 合并各段 JSON 结果
         - 去重、解决冲突
         - 生成完整 Markdown PRD
           ↓
[Step 7] 输出到 prd/<项目名>.md
           ↓
[Step 8] 展示 PRD 摘要，询问用户确认或调整
```

---

## Prompt 输出模板

> 📖 生成的 PRD 文件标准结构详见 [references/flash-note-prd-template.md](references/flash-note-prd-template.md)。

---

## AI Prompt 设计

> 📖 完整的三层 Prompt 架构、Prompt 原文、分段处理策略和调用方式详见 [references/flash-note-prompt.md](references/flash-note-prompt.md)。

---

## 闪记内容预处理规则

在发送给 AI 之前，对闪记原文进行预处理（实现在 `build-flash-note-prompt.js` 的 `preprocessFlashNote` 函数中）：

| 处理步骤 | 说明 | 正则/规则 |
|---------|------|----------|
| 去除时间戳 | 移除 `[00:01:23]` 等时间标记 | `/\[?\d{1,2}:\d{2}(?::\d{2})?\]?\s*/g` |
| 去除口语填充词 | 移除"嗯"、"那个"、"就是说"、"对对对"等口语化表达 | 预定义填充词列表匹配 |
| 合并连续空行 | 多个空行合并为单个换行 | `/\n{3,}/g` → `\n\n` |
| 去除重复标点 | 连续重复标点合并为一个 | `/([，。！？,\.!?])\1+/g` |
| 合并连续发言 | 同一人连续多段发言合并为一段（用逗号连接） | 按发言人前缀匹配合并 |
| 保留发言人标识 | 保留"张三："等发言人前缀，帮助 AI 理解上下文 | 支持中英文冒号格式 |

---

## 会议识别能力（v2.0 新增）

预处理完成后，自动执行以下会议识别步骤：

### 会议元信息提取（extractMeetingMeta）

从闪记头部提取结构化的会议元信息：

| 识别字段 | 匹配关键词 | 示例 |
|---------|-----------|------|
| 会议标题 | 会议主题/标题/名称、Meeting Title/Topic | `会议主题：产品需求评审会` |
| 会议时间 | 会议时间/日期、Date/Time | `会议时间：2026-03-24 14:00` |
| 会议时长 | 会议时长/时长、Duration | `会议时长：45 分钟` |
| 参会人员 | 参会人/与会人/出席、Participants/Attendees | `参会人员：张三、李四、王五` |
| 主持人 | 主持人/组织者/发起人、Organizer/Host | `主持人：张三` |
| 会议地点 | 会议地点/位置、Location | `会议地点：3 号会议室` |

### 钉钉 A1 摘要识别（extractA1Summary）

自动识别钉钉 A1 / 闪记 AI 生成的结构化摘要段落，支持 Emoji 标识和纯文本标识两种格式：

| 段落类型 | Emoji 标识 | 纯文本标识 | 说明 |
|---------|-----------|-----------|------|
| 会议摘要 | 📋 / 📝 | 【会议摘要】 | AI 生成的会议内容总结 |
| 待办事项 | ✅ / ☑️ | 【待办事项】 | 会议中确定的行动项 |
| 决策结论 | 📌 / 🔑 / 💡 | 【决策结论】 | 会议中达成的决策 |
| 讨论要点 | 📊 / 📈 | 【讨论要点】 | 关键讨论内容摘要 |
| 后续跟进 | ⏭️ / 👉 | 【后续跟进】 | 下一步计划和跟进事项 |

> **优先级说明**：A1 摘要段落被视为高优先级信息，会在 Prompt 中优先注入，帮助 AI 更准确地提取需求。

### 发言人角色识别（extractSpeakers）

自动识别闪记中发言人的角色标注，支持以下格式：

```
张三(产品经理)：...      → 识别为 张三，角色：产品经理
李四（技术负责人）：...   → 识别为 李四，角色：技术负责人
王五[设计师]：...         → 识别为 王五，角色：设计师
赵六：...                → 识别为 赵六，角色：未标注
```

识别到的发言人角色信息会注入 Prompt，帮助 AI 区分不同角色视角的发言。

---

## 与其他技能配合

Prompt 生成后，可无缝衔接宜搭应用开发流程：

```
闪记（文本/图片）→ [本技能] → prd/<项目名>.md（高质量 prompt）
                                    ↓
                          [yida-create-app] → 创建应用
                                    ↓
                          [yida-create-form-page] → 创建表单
                                    ↓
                          [yida-custom-page] → 开发自定义页面
                                    ↓
                          [yida-publish-page] → 发布上线
```

| 后续技能 | 用途 | 从 prompt 中获取的信息 |
|---------|------|----------------------|
| `yida-create-app` | 创建宜搭应用 | 项目名称 |
| `yida-create-form-page` | 创建表单 | 字段设计（字段名、类型、必填、选项） |
| `yida-create-process` | 配置审批流程 | 流程设计（节点、审批人、条件） |
| `yida-custom-page` | 开发自定义页面 | 功能模块、页面布局需求 |
| `yida-report` | 创建报表 | 数据报表需求 |

---

## OpenYida PRD 质量门槛

生成或评审 `prd/<项目名>.md` 时，必须检查以下内容；缺失时写入「待确认事项」，不要假装已经明确：

| 质量项 | 必须回答的问题 |
|--------|----------------|
| MVP 边界 | 第一版必须做什么，哪些放到二期 |
| 用户与权限 | 谁使用工作台，谁维护后台表，谁审批/调度/查看报表 |
| 核心旅程 | 用户从进入页面到完成关键任务的步骤，是否避免原生表单割裂体验 |
| 数据模型 | 表单之间如何关联，哪些字段唯一，哪些字段只能后台维护 |
| 状态机 | 状态有哪些，谁能改，允许从哪个状态流转到哪个状态 |
| 冲突与异常 | 时间冲突、重复提交、并发提交、取消/退回/失败如何处理 |
| 交互验收 | 什么叫“好用”，用可验证标准描述，如 30 秒内完成预约、冲突即时提示 |
| OpenYida 约束 | PRD 只写业务语义，不写 `formUuid`/`fieldId`；Schema ID 写入 `.cache/<项目名>-schema.json` |

## 前置依赖

- Node.js ≥ 16
- 已登录宜搭（`.cache/cookies.json` 存在且有效），用于调用 AI 接口

---

## 注意事项

1. **闪记质量影响 PRD 质量**：如果闪记内容过于碎片化或口语化严重，生成的 PRD 可能需要用户手动补充完善
2. **长文本分段处理**：闪记内容超过 6000 字时，建议分段提取后合并，避免超出 AI 模型 token 限制
3. **待确认事项必须处理**：PRD 中的"待确认事项"需要用户逐一确认后，才能进入开发阶段
4. **PRD 不记录技术 ID**：PRD 文档只记录业务语义信息（字段名、类型、说明），`formUuid`、`fieldId` 等技术 ID 写入 `.cache/` 临时文件
5. **支持迭代优化**：用户可以对生成的 PRD 提出修改意见，AI 会基于反馈重新调整 PRD 内容
6. **本技能不读写 memory**：生成的 PRD 输出到 `prd/<项目名>.md` 文件，不依赖跨会话的 memory 状态
