用途
Ralph TUI - Create Beads 是一个把 PRD(markdown 文件或文本)转换为 beads 的技能,用于 ralph-tui 的自主执行。它会在 .beads/beads.jsonl 中创建 beads:为功能创建一个 epic bead,为每个用户故事创建子 bead,并设置 bead 之间的依赖关系,输出结果可直接用于 ralph-tui run --tracker beads。
注意:该技能随 ralph-tui 的 Beads tracker 插件捆绑提供。未来的 tracker 插件(Linear、GitHub Issues 等)将捆绑各自的任务创建技能。
主要能力
-
从 PRD 的“Quality Gates”章节提取质量门禁:
- 通用门禁:适用于所有故事的命令(如 pnpm typecheck)。
- UI 门禁:仅适用于 UI 故事的命令(如使用 dev-browser 技能在浏览器中验证)。
- 如果 PRD 中没有 Quality Gates 章节:询问用户哪些命令应通过,或使用合理默认值(如 npm run typecheck)。
-
创建 epic bead,并链接回源 PRD(通过 --external-ref)。
-
为每个用户故事创建子 bead,并把质量门禁追加到验收标准中。
-
使用 bd dep add 设置依赖关系,语法为 bd dep add <issue> <depends-on>,即 issue 依赖于(被阻塞于)depends-on。
使用方式
Beads 使用 bd create 命令配合 HEREDOC 语法来安全处理特殊字符。关键点:始终使用 <<'EOF'(单引号)作为 HEREDOC 分隔符,以防止 shell 解释描述中的反引号、$变量和 ()。
创建 epic:
bd create --type=epic
--title="[Feature Name]"
--description="$(cat <<'EOF'
[Feature description from PRD]
EOF
)"
--external-ref="prd:./tasks/feature-name-prd.md"
创建子 bead(验收标准中包含质量门禁):
bd create
--parent=EPIC_ID
--title="[Story Title]"
--description="$(cat <<'EOF'
[Story description with acceptance criteria INCLUDING quality gates]
EOF
)"
--priority=[1-4]
添加依赖:
bd dep add ralph-tui-002 ralph-tui-001 # US-002 depends on US-001 bd dep add ralph-tui-003 ralph-tui-002 # US-003 depends on US-002
创建完成后运行 ralph-tui:
处理特定 epic
ralph-tui run --tracker beads --epic ralph-tui-abc
或让它自动挑选最佳任务
ralph-tui run --tracker beads
ralph-tui 会:处理指定 epic 内的 beads(或选择最佳可用任务);完成时关闭每个 bead;当所有子任务完成时关闭 epic;epic 完成时输出 <promise>COMPLETE</promise>。
故事大小与排序规则
故事大小(首要规则):每个故事必须能在一次 ralph-tui 迭代(约一个 agent 上下文窗口)内完成。ralph-tui 每次迭代都会启动一个全新的 agent 实例,不记得之前的工作。如果故事太大,agent 会在完成前耗尽上下文。
合适大小的故事示例:添加数据库列 + 迁移;在现有页面添加 UI 组件;用新逻辑更新 server action;为列表添加筛选下拉框。
过大的故事(需拆分)示例:“构建整个仪表盘” → 拆分为 schema、查询、UI 组件、筛选器;“添加认证” → 拆分为 schema、中间件、登录 UI、会话处理;“重构 API” → 按端点或模式拆分为每个故事一个。
经验法则:如果你无法用 2-3 句话描述这个变更,它就太大了。
故事排序:依赖优先。故事按依赖顺序执行,较早的故事不能依赖较晚的故事。正确顺序:schema/数据库变更(迁移)→ server actions/后端逻辑 → 使用后端的 UI 组件 → 聚合数据的仪表盘/汇总视图。错误顺序:先 UI 组件(依赖尚不存在的 schema),后 schema 变更。
验收标准
每个 bead 的描述应包含验收标准:来自 PRD 的故事特定标准(该故事要完成什么),以及从 PRD 的 Quality Gates 章节追加的质量门禁。
好的标准(可验证)示例:“向 investor 表添加 investorType 列,默认 'cold'”;“筛选下拉框有选项:All、Cold、Friend”;“点击切换显示确认对话框”。
差的标准(模糊)示例:“工作正常”;“用户可以轻松做 X”;“良好的 UX”;“处理边界情况”。
转换规则
- 先从 PRD 提取 Quality Gates。
- 每个用户故事 → 一个 bead。
- 第一个故事:无依赖(创建基础)。
- 后续故事:依赖其前驱(UI 依赖后端等)。
- 优先级:基于依赖顺序,然后文档顺序(0=critical,2=medium,4=backlog)。
- 所有故事:status: "open"。
- 验收标准:故事标准 + 追加的质量门禁。
- UI 故事:还要追加 UI 特定门禁(浏览器验证)。
拆分大型 PRD
如果 PRD 包含大功能,需拆分。例如原始需求“添加朋友外联轨道,使用不同的消息”,可拆分为:US-001 向数据库添加 investorType 字段;US-002 向 investor 列表 UI 添加类型切换;US-003 创建朋友特定的阶段推进逻辑;US-004 创建朋友消息模板;US-005 为朋友接通任务生成;US-006 添加按类型筛选;US-007 更新新 investor 表单;US-008 更新仪表盘计数。每个都是一个聚焦的变更,可以独立完成和验证。
输出位置
Beads 写入:.beads/beads.jsonl
创建 Beads 前的检查清单
- 已从 PRD 提取 Quality Gates(或缺失时询问用户)
- 每个故事可在一次迭代内完成(足够小)
- 故事按依赖排序(schema → backend → UI)
- 质量门禁已追加到每个 bead 的验收标准
- UI 故事有浏览器验证(如果 Quality Gates 中指定)
- 验收标准可验证(不模糊)
- 没有故事依赖较晚的故事(只依赖较早的故事)
- 创建 beads 后用 bd dep add 添加依赖
限制
该技能依赖 ralph-tui 的 Beads tracker 插件;其他 tracker 插件(Linear、GitHub Issues 等)将捆绑各自的任务创建技能。资料未提供收费、价格、平台支持范围等信息。