一键导入
koi-prd-story-loop
故事循环执行器。读取prd-[功能名称].json,按依赖顺序循环调度子代理逐个执行用户故事,直到全部完成。触发词:执行故事循环、开始执行故事、自动执行故事。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
故事循环执行器。读取prd-[功能名称].json,按依赖顺序循环调度子代理逐个执行用户故事,直到全部完成。触发词:执行故事循环、开始执行故事、自动执行故事。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
PRD 规范性校验器。用于检查 PRD 文档是否符合规范要求。触发词:检查prd、校验prd、prd规范检查。
将 PRD 文档转换为 prd.json 格式,用于故事循环执行器逐故事执行。触发词:转换 prd、转 json、create prd.json、prd 转 json。
生成产品需求文档(PRD)。用于规划功能、启动新项目。触发词:创建prd、写prd、规划功能、产品需求文档。
PRD 生成与校验流水线。自动执行 生成→校验→修正→复检 的循环流程,输出符合规范的 PRD。触发词:生成prd流水线、prd pipeline、创建高质量prd。
故事执行器(子代理指令)。每次执行一个用户故事,通过文件系统传递上下文。触发词:执行故事、实施PRD、开始开发。
| name | koi-prd-story-loop |
| description | 故事循环执行器。读取prd-[功能名称].json,按依赖顺序循环调度子代理逐个执行用户故事,直到全部完成。触发词:执行故事循环、开始执行故事、自动执行故事。 |
| user-invocable | true |
读取 prd-[功能名称].json,循环调度子代理逐个执行用户故事,直到全部完成或达到最大迭代次数。
本技能是编排层技能,由主对话执行。不直接编写代码,而是通过 Task 工具启动独立子代理来执行每个故事。
prd-story-loop(本技能,编排层 — 主对话执行)
└── Task(general_purpose_task) → 执行 koi-prd-story-executor(独立子代理)
prd-[功能名称].json 文件已存在(通过 koi-prd-convert-to-json 技能生成,位于 prd-context/prd-files/ 目录)development-log.txt 文件已初始化(位于 prd-context/execution-logs/ 目录,如不存在则自动创建)初始化
↓
① 读取 prd-context/prd-files/prd-[功能名称].json,统计故事总数和待执行数量
↓
② 生成代办计划(可选)
- 如果智能体平台支持代办功能,为每个用户故事生成对应的代办
- 添加必要的额外计划任务
- 记录代办到 development-log.txt
↓
③ 检查/初始化 prd-context/execution-logs/development-log.txt
↓
④ 检查/初始化 git 仓库
⑤ 检查/初始化 prd-context/conventions/agents.md(如果不存在则创建空文件)
↓
循环(最多 maxIterations 轮)
↓
① 从 prd-[功能名称].json 找到下一个可执行故事
- passes: false
- 所有依赖(dependencies)的 passes 均为 true
- priority 最小
↓
② 更新代办状态为"进行中"(可选)
- 如果使用了代办功能,更新对应代办的状态
↓
② 启动子代理(Task 工具)
- 传入:当前故事信息 + prd-context/execution-logs/development-log.txt 上下文
- 子代理执行:读取上下文 → 写代码 → 验证 → 提交 → 更新文件
↓
③ 检查子代理返回结果
- 成功 → 继续下一个故事
- 失败 → 记录原因,跳过或重试
↓
④ 检查终止条件
- 全部 passes: true → 输出完成报告,终止
- 达到最大迭代次数 → 输出进度报告,终止
---
## 子代理调用方式
使用 Task 工具启动子代理,参数如下:
- `subagent_type`: "general_purpose_task"
- `description`: "执行故事 [Story ID]"
- `response_language`: 与用户输入语言一致
- `query`: 按以下模板填写
### query 模板
先调用 Skill('koi-prd-story-executor') 加载执行器指令,然后执行以下故事:
---
## 上下文传递机制
子代理是独立进程,看不到主对话历史。因此:
1. **子代理需要的所有信息**必须显式写入 query 参数
2. **子代理自己读取文件**获取详细上下文(prd-[功能名称].json、development-log.txt、git log、prd-context/conventions/agents.md)
3. **编排者从子代理返回结果中提取**执行状态
4. **编排者不需要传递代码内容**,子代理会自己读 git 和文件系统
---
## 并行执行策略
对于**无依赖关系**的故事,可以并行启动多个子代理:
US-001(无依赖)──┐ US-002(无依赖)──┤── 可并行 US-003(无依赖)──┘ US-004(依赖 US-001)── 必须等 US-001 完成
### 并行规则
1. 扫描所有 `passes: false` 的故事
2. 找出依赖全部满足的故事集合
3. 如果集合中有多个故事,可并行启动(最多 3 个并行子代理)
4. 并行故事完成后,重新扫描,继续下一批
### 串行 vs 并行决策
| 场景 | 策略 | 原因 |
|------|------|------|
| scaffold 故事(项目初始化、数据库设计) | 串行 | 后续所有故事都依赖它们 |
| 同类型后端接口故事 | 可并行 | 互不依赖 |
| 前端页面 + 对应后端接口 | 串行 | 前端依赖后端接口 |
| fullstack 故事 | 串行 | 涉及前后端联合变更 |
---
## 终止条件
按优先级排列:
1. **全部故事 passes: true** → 立即终止,输出完成报告
2. **达到最大迭代次数** → 终止,输出进度报告
3. **连续 3 个故事失败** → 终止,输出错误报告
4. **用户主动终止** → 保留当前进度,可随时恢复
---
## 恢复机制
如果执行中断(达到最大迭代次数或用户终止),可以随时恢复:
1. `prd-[功能名称].json` 中记录了每个故事的 `passes` 状态
2. `progress.txt` 中记录了每次迭代的详细日志
3. 重新调用本技能时,会自动跳过已完成的 story
---
## 输出报告
### 完成报告(全部通过)
| 迭代 | 故事 | 类型 | 状态 | 说明 |
|---|---|---|---|---|
| 1 | US-001 | scaffold | 通过 | 后端项目初始化 |
| 2 | US-002 | scaffold | 通过 | 核心业务表设计 |
| ... | ... | ... | ... | ... |
### 进度报告(未全部完成)
| 故事 | 失败原因 | 建议 |
|---|---|---|
| US-025 | mvn compile 失败 | 检查依赖冲突 |
| ... | ... | ... |
---
## 异常处理
| 异常场景 | 处理方式 |
|---------|---------|
| 子代理执行超时 | 终止子代理,标记故事为失败,继续下一个 |
| 子代理返回错误 | 记录错误信息,跳过该故事 |
| git 冲突 | 标记故事为失败,提示用户手动解决 |
| prd-[功能名称].json 损坏 | 终止循环,提示用户检查文件 |
---
## 与其他技能的配合
koi-prd-generator / koi-prd-pipeline → 生成 PRD(Markdown) ↓ koi-prd-convert-to-json → 转换为 prd.json ↓ koi-prd-story-loop → 循环调度执行(本技能) ↓ koi-prd-story-executor → 子代理执行单个故事