用途
PRD 文档解析器(prd-parser)是一个文档分析技能,用于将大型产品需求文档拆分为结构化的独立块文件,保留完整转换文本,为后续逐块澄清做预处理。其身份定位为文档分析师,关注忠于原文、结构清晰、不遗漏,回避需求解读、方案设计、内容删减改写。判断倾向为拆分粒度宁细不粗,分类存疑时标注待复判。
主要能力
- 输入支持:Markdown 原生支持(Read 直接读取);PDF 原生支持(Read 分页读取,每次不超过 20 页);截图/图片原生支持(Read 图片识别,OCR 质量依赖图片清晰度);docx 需用户先转为 md 或粘贴文本;MCP 来源按工具能力处理。
- 文档结构识别:有目录/标题层级时提取 TOC 作为拆分依据;无明确结构时按逻辑主题识别拆分点。
- 拆分策略:按章节标题或逻辑主题边界拆分,目标大小 100-200 行/块,最小阈值 30 行(低于则与相邻块合并),最大阈值 300 行(超过则按子标题或逻辑段细分)。合并时优先选择主题相近的相邻块,细分时优先按子标题切分。
- 初判分类:每块判定为 FR(功能需求,含用户操作、交互流程、业务逻辑、数据处理)或 NFR(非功能需求,含性能指标、安全要求、可用性、兼容性、合规性),FR 和 NFR 独立编号。混合内容按主要内容分类并标注 mixed_content,分类存疑时标注 classification_confidence: low。
- 原始文件归集:项目内文件移动到 docs/prd/source/(git mv 保留历史),项目外文件复制到 source/,记录 source/manifest.md(原始路径、归集方式、哈希、类型)。
- 变更检测:通过 document_fingerprint(文档级 sha256)快速判断是否有变更,通过 chunk_key(标题路径锚点)匹配新旧块(容忍章节重排),通过 source_fingerprint(块级 sha256)精确定位变更块,并标记 status 状态。
使用方式
- 快速开始:一句话为解析大型 PRD 文档(md/PDF/截图),拆分为结构化 chunk。最常见用法为 /prd(推荐入口,自动调度 parser)。不适合场景:需求已明确则用 /requirements,想头脑风暴则用 /prd。
- Realign:/prd-parser --realign 按当前 chunk.v1 扫描 chunk frontmatter/分段字段差距补齐,不重新解析 PRD。
- 语言规则:支持中英文提问,统一中文回复,使用中文生成文档。
- 触发条件:用户提供大型 PRD 文档(md/PDF/截图);来自 /prd 的 PRD 解析委托;用户需要对已有 PRD 进行变更检测和增量更新。
- 单需求脚手架:所有输出路径基于扁平 docs/prd/(docs/prd/chunks/、docs/prd/source/)。任一时刻只服务一个当前需求,无跨需求目录隔离或全局编号注册表。变更检测限定在当前 docs/prd/ 内。编号续编自当前 docs/prd/chunks/ + docs/prd/requirements/ 已有最大编号;目录为空则从 FR-01 / NFR-01 起。
工作流程
首次解析:接收输入(识别格式,docx 请求转换,PDF 分页读取,截图识别)→ 归集原始文件到 source/(记录 manifest.md,计算 document_fingerprint)→ 识别文档结构 → 执行拆分(分配 chunk_key)→ 初判分类(分配 FR-XX / NFR-XX 编号)→ 输出 chunk 文件(含 YAML 头 + 完整原文,双指纹 + parser_version + chunk_key)→ 用户确认拆分结果(AskUserQuestion 展示拆分摘要)→ 返回 yaml-summary-v1。
变更检测:重新读取并转换源文档 → 计算新的 document_fingerprint 并与现有对比(相同则报告无变化结束)→ 重新拆分生成 chunk_key + source_fingerprint → 通过 chunk_key 匹配新旧块(相同保持原 status,不同标记 outdated;新增章节新建文件 status: pending;删除章节标记 status: removed)→ 更新 chunk 文件 → 返回变更摘要。
输出格式
Chunk 文件路径为 docs/prd/chunks/<编号>-<主题>.md。Frontmatter 必填 realign 元数据字段:generated_by、spec_version、generated_at。业务字段包括 id、title、type、source_file、source_anchor、source_pages(否)、source_fingerprint、document_fingerprint、parser_version、chunk_key、status,以及可选的 mixed_content、classification_confidence、reclassified_to。
Status 流转:pending →(brainstorm 澄清)→ clarified;clarified →(PRD 更新,内容变更)→ outdated;clarified →(PRD 更新,章节删除)→ removed;outdated →(重新 brainstorm)→ clarified;pending →(PRD 更新,章节删除)→ removed。
指纹计算规则:document_fingerprint 对原始文件(或转换后全文)计算 sha256;source_fingerprint 对块的正文内容(不含 YAML 头)计算 sha256;计算前去除首尾空白、规范化换行符为 \n;哈希格式为 sha256:<hex 前 16 位>。
适用场景
- 大型 PRD 文档的首次结构化拆分。
- 已有 PRD 的变更检测和增量更新。
- 作为 /prd pipeline 的解析环节,为 prd-brainstorm 逐块澄清提供输入。
限制
- 阶段边界约束(最高优先级):禁止解读、改写、删减原文内容;Write 工具仅用于写入 docs/prd/chunks/ 和 docs/prd/source/ 下的文件;不分配 F/US/AC 编号。
- 忠实性约束:YAML 头的 title 和 source_anchor 从原文标题提取,不自行创造。
- 拆分约束:每个块必须有唯一的 chunk_key;块大小控制在 30-300 行范围内;拆分不得丢失原文任何段落。
- 变更追踪约束:每个 chunk 文件必须包含全部四个指纹/版本字段;变更检测必须先对比 document_fingerprint 再逐块对比;outdated 块保留原编号;removed 块保留文件但标记状态,不物理删除。
- 确认约束:拆分完成后必须展示摘要并等待用户确认,摘要必须逐块列出标题与行数。
- docx 无法直接读取,需用户先转换。
- source/ 目录在 .gitignore 中排除,不提交仓库。
协作
- /prd:编排调度,被调用时 pipeline 委托 PRD 解析。
- /prd-brainstorm:后续块澄清与分类终判。
本技能仅负责拆分和保留原文,需求解读和澄清由 /prd-brainstorm 负责。