产品与设计
需要把 PRD 转为 ralph-tui 可执行任务文件时…
将 PRD(Markdown 或文本)转换为供 ralph-tui 自主执行的任务文件 prd.json。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要把 PRD 转为 ralph-tui特定
解决思路
- 先读取 PRD(Markdown 文件或文本),定位其中的 'Quality Gates' 部分。
- 从 'Quality Gates' 中提取 universal gates:适用于所有故事的命令,例如 `pnpm typecheck`、`pnpm lint`。
- 从 'Quality Gates' 中提取 UI gates:只适用于 UI 故事的检查,例如 'Verify in browser using dev-browser skill'。
- 如果 PRD 没有 'Quality Gates' 部分,询问用户哪些命令必须通过;若无法询问,使用合理默认值,例如 `npm run typecheck`。
- 解析 PRD 中的 user stories,每个 user story 生成一个 JSON entry。
- 为每条故事生成顺序 ID:US-001、US-002 等。
- 按依赖顺序设置 priority:1 表示最高优先级。
- 为每条故事设置 dependsOn 数组,列出该故事依赖的故事 ID。
- 所有新故事初始设置 passes: false 和 notes: ""(空字符串)。
- 从功能名派生 branchName:使用 kebab-case,并加前缀 `ralph/`,例如 `ralph/task-priority`。
- 把故事自身的 acceptance criteria 从 PRD 中提取出来,再在末尾追加 Quality Gates。
- UI 故事还要在 acceptance criteria 末尾追加 UI-specific gates,例如浏览器验证。
- 输出必须是根层扁平 JSON 对象,根层包含 'name' 和 'userStories';不要包在 'prd' 对象里,也不要用 'tasks' 数组。
- 不要使用复杂嵌套结构;即使 PRD 描述 phases/milestones/sprints,也必须扁平化成单个 'userStories' 数组。
- 不要使用 'status' 字段;未完成用 `"passes": false`,完成用 `"passes": true`。
- 确保根层字段包括:name、branchName、description、userStories。
- userStories 中每条包含:id、title、description、acceptanceCriteria、priority、passes、notes、dependsOn。
- 遵守 #1 规则:每条故事必须能在一次 ralph-tui iteration(约一个 agent context window)内完成。
- 注意 ralph-tui 每次 iteration 会启动全新 agent 实例,不记得之前工作;故事太大 Agent 会上下文耗尽。
- 合适大小的故事示例:添加数据库列 + migration;给已有页面添加 UI 组件;用新逻辑更新 server action;给列表添加筛选下拉框。
- 过大的故事要拆分:'Build the entire dashboard' 拆成 schema、queries、UI components、filters。
- 过大的故事要拆分:'Add authentication' 拆成 schema、middleware、login UI、session handling。
- 过大的故事要拆分:'Refactor the API' 按每个 endpoint 或每个 pattern 拆成多条故事。
- 经验法则:如果你不能用 2-3 句话描述这个改动,它就太大了,需要拆分。
- 使用 dependsOn 指定哪些故事必须先完成。
- 依赖行为:US-002 在 US-001 完成前显示为 blocked。
- 依赖行为:US-001 未完成时,ralph-tui 永远不会选择 US-002 执行。
- 依赖行为:处理 US-002 时,prompt 中会包含 'Prerequisites: US-001'。
- 正确依赖顺序:1) schema/database 改动(无依赖);2) backend logic(依赖 schema);3) UI components(依赖 backend);4) integration/polish(依赖 UI)。
- Acceptance criteria 应包含两部分:1) 来自 PRD 的故事特定标准;2) 从 Quality Gates 部分追加到末尾的质量门禁。
- 好的可验证标准示例:'Add `status` column to tasks table with default 'open''。
- 好的可验证标准示例:'Filter dropdown has options: All, Open, Closed'。
- 好的可验证标准示例:'Clicking delete shows confirmation dialog'。
- 避免模糊标准,例如 'Works correctly'、'User can do X easily'、'Good UX'、'Handles edge cases'。
- 转换规则:先提取 Quality Gates。
- 转换规则:每个 user story 生成一个 JSON entry。
- 转换规则:ID 顺序编号(US-001、US-002 等)。
- 转换规则:priority 按依赖顺序设置(1 = 最高)。
- 转换规则:dependsOn 使用故事 ID 数组。
- 转换规则:所有故事设置 passes: false 且 notes 为空。
- 转换规则:branchName 从功能名派生,kebab-case,并加 `ralph/` 前缀。
- 转换规则:acceptance criteria = 故事标准 + 追加的 quality gates。
- 转换规则:UI 故事还要追加 UI-specific gates(浏览器验证)。
- 默认输出位置:`./tasks/prd.json`,与 PRD Markdown 文件放在一起,保持 PRD 相关文件都在 `tasks/` 目录。
- 也可指定其他路径;ralph-tui 通过 `ralph-tui run --prd ./path/to/prd.json` 使用。
- 创建 prd.json 后运行:`ralph-tui run --prd ./tasks/prd.json`。
- ralph-tui 会从 prd.json 加载故事,选择 passes: false 且没有阻塞依赖的最高优先级故事,生成包含故事详情和 acceptance criteria 的 prompt,运行 agent 实现故事,完成后标记 passes: true,并重复直到所有故事通过。
- 保存前检查:已从 PRD 提取 Quality Gates,或在缺失时询问用户。
- 保存前检查:每条故事能在一次 iteration 内完成。
- 保存前检查:故事按依赖排序(schema → backend → UI)。
- 保存前检查:每条故事的 dependsOn 正确设置。
- 保存前检查:quality gates 已追加到每条故事的 acceptance criteria。
- 保存前检查:如果 Quality Gates 指定了浏览器验证,UI 故事已有对应检查。
- 保存前检查:acceptance criteria 可验证,不模糊。
- 保存前检查:没有循环依赖。
适用边界 · 注意事项
- 没有 ralph-tui 或未启用其 JSON tracker 插件,或不需要用 ralph-tui 的 `--prd` 执行任务时,不要按此格式生成 prd.json。
- PRD 无法拆成可在单次 agent context window 内完成的小故事时,先拆分需求再转换。
- 如果使用 Linear、GitHub Issues 等其他 tracker 插件,应使用对应插件自带的 task creation skill,而不是本 JSON 格式。