# Yida Flash Note To Prd

> 从已有钉钉闪记、会议记录或需求文档内容中提取产品需求，生成结构化 PRD。若用户只给 taskUuid，先用 yida-tingji 读取内容，再进入本技能。

- Skill: `openyida/yida-flash-note-to-prd` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add openyida/yida-flash-note-to-prd`
- Raw SKILL.md: https://api.skillmd.com/api/skills/openyida/yida-flash-note-to-prd/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: openyida (https://skillmd.com/u/openyida)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/openyida/yida-flash-note-to-prd

---


# 闪记和会议内容转 PRD

## 严格禁止 (NEVER DO)

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

## 严格要求 (MUST DO)

- 必须自动识别输入类型：文本闪记 / 图片闪记 / 闪记链接，分别处理
- 用户只提供 `taskUuid` 且要求转 PRD 时，必须先加载 `yida-tingji` 读取听记内容，再用读取结果生成 PRD
- 必须提取会议元信息（标题、参会人、时间）并写入 PRD 上下文
- 生成的 PRD 必须包含：MVP 边界、用户角色与权限、核心用户旅程、功能模块、字段设计表、流程/状态机、数据关联与约束、交互验收标准、报表需求、OpenYida 落地约束、待确认事项
- 生成完成后必须提示用户确认 PRD 内容；用户确认要继续搭应用时，交给 `yida-app`

## 适用场景

| 用户意图 | 触发条件 |
|---------|---------|
| 闪记转需求文档 | 用户发送闪记文本/图片、提到"闪记"、"会议纪要"、"会议记录" |
| 快速启动开发 | 从会议记录直接生成可执行的 PRD |
| taskUuid 转 PRD | 先由 `yida-tingji` 读取听记，再处理已有内容 |

## 触发条件

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

> ⚠️ PRD 生成后还需 `yida-app` 流程创建应用；本技能不处理非需求类文档（技术文档、代码文件）。

## 异常处理

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

## Agent 错误处理策略

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

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

---


## 概述

本技能将钉钉闪记、会议记录、需求讨论文本或截图转成结构化 PRD。生成结果写入 `prd/<项目名>/prd.md`，用户确认后再交给 `yida-app` 执行应用搭建或补齐。

> **核心理念**：PRD 只写业务语义和验收口径，便于后续技能读取并执行；不要在 PRD 中编造 `appType`、`formUuid`、`fieldId` 等真实 ID。

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

---

## 何时使用

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

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

---

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

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

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

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

### 图片输入处理规则

当用户发送图片时：
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/<项目名>/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/<项目名>/prd.md
           ↓
[Step 8] 展示 PRD 摘要，询问用户确认或调整
```

---

## PRD 输出模板

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

---

## 生成规则参考

> 📖 完整的三层 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 摘要段落被视为高优先级信息，会优先注入生成上下文，帮助 AI 更准确地提取需求。

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

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

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

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

---

## PRD 输出要求

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

- 第一版必须做什么，哪些放到二期。
- 谁使用主入口，谁维护后台表，谁审批、调度或查看报表。
- 用户从进入页面到完成关键任务的步骤。
- 表单之间如何关联，哪些字段唯一，哪些字段只能后台维护。
- 状态有哪些，谁能改，允许从哪个状态流转到哪个状态。
- 时间冲突、重复提交、并发提交、取消、退回、失败如何处理。
- 用可验证标准描述验收口径。
- PRD 只写业务语义，不写 `appType`、`formUuid`、`fieldId`；真实 ID 写入 `.cache/<项目名>-schema.json`。

## 前置依赖

- Node.js ≥ 16
- 已登录宜搭（存在有效 `.cache/auth-token-<env>.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/<项目名>/prd.md` 文件，不依赖跨会话的 memory 状态

