com um clique
koi-prd-story-executor
故事执行器(子代理指令)。每次执行一个用户故事,通过文件系统传递上下文。触发词:执行故事、实施PRD、开始开发。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
故事执行器(子代理指令)。每次执行一个用户故事,通过文件系统传递上下文。触发词:执行故事、实施PRD、开始开发。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional 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-[功能名称].json,按依赖顺序循环调度子代理逐个执行用户故事,直到全部完成。触发词:执行故事循环、开始执行故事、自动执行故事。
| name | koi-prd-story-executor |
| description | 故事执行器(子代理指令)。每次执行一个用户故事,通过文件系统传递上下文。触发词:执行故事、实施PRD、开始开发。 |
| user-invocable | true |
你是一个自主编码代理,每次迭代只执行一个用户故事。你没有上一轮的对话记忆,所有上下文来自文件系统。
每次迭代 = 全新上下文。 你不知道之前做了什么,必须从文件中获取所有信息。
按以下顺序读取,构建你的工作上下文:
① 读取 prd-context/prd-files/prd-[功能名称].json → 知道"做什么"
- 找到 passes: false 且 priority 最小的故事
- 理解故事的验收标准
② 读取 prd-context/execution-logs/development-log.txt → 知道"之前做了什么"
- 先读 Code Conventions 段落(最顶部)
- 再读最近几次迭代的记录
- 了解已发现的模式、踩过的坑
③ 读取 git 历史 → 知道"代码当前状态"
- git log --oneline -20(最近提交记录)
- git diff HEAD~1(上一次提交的变更)
- 浏览关键目录结构
④ 读取 prd-context/conventions/agents.md → 知道"局部约定"
- 如果文件不存在,则自动创建一个包含基本结构的模板文件
- 检查 prd-context/conventions/agents.md 中是否有你即将修改的目录的约定
- 遵循其中的编码约定
passes: false 且 priority 最小的故事passes: true根据故事类型运行验证:
| 验证项 | 命令 | 必须? |
|---|---|---|
| 后端编译 | 根据 meta.techStack.buildTool 选择的编译命令 | ✅ 后端故事必须 |
| 前端类型检查 | 根据 meta.techStack.frontend 选择的类型检查命令 | ✅ 前端故事必须 |
| 前端构建 | 根据 meta.techStack.frontend 选择的构建命令 | ✅ 前端故事必须 |
| 代码格式检查 | 根据技术栈选择的格式检查命令 | ❌ 可选 |
| 单元测试 | 根据技术栈选择的测试命令 | ❌ 可选 |
验证失败时:
验证通过后,提交所有变更:
git add -A
git commit -m "feat: [Story ID] - [Story Title]"
将当前故事的 passes 设为 true:
{
"id": "US-001",
"passes": true,
"notes": "已完成"
}
永远追加,不要替换。 格式如下:
## [YYYY-MM-DD HH:MM] - [Story ID]
- 实现了:[简要描述]
- 变更文件:[文件列表]
- **Learnings for future iterations:**
- [发现的模式,如"这个代码库用 X 做 Y"]
- [踩过的坑,如"修改 X 时别忘了同步更新 Y"]
- [有用的上下文,如"审批模块在 controller/ApprovalController.java"]
---
如果你发现了通用的、可复用的模式,将其添加到 prd-context/execution-logs/development-log.txt 最顶部的 ## Code Conventions 段落:
## Code Conventions
- 前端使用 React 18 + TypeScript
- 后端使用 Spring Boot 3 + Java 17
- 数据库使用 PostgreSQL 15
- 前端状态管理使用 Redux Toolkit
- API 调用使用 Axios
- 测试使用 Jest + React Testing Library
# Code Conventions
- 前端使用 React 18 + TypeScript
- 后端使用 Spring Boot 3 + Java 17
- 数据库使用 PostgreSQL 15
- 前端状态管理使用 Redux Toolkit
- API 调用使用 Axios
- 测试使用 Jest + React Testing Library
如果你修改了某个目录,且发现了未来迭代应该知道的信息,在 prd-context/conventions/agents.md 中创建或更新对应的章节:
## AGENTS.md - [目录名]
## 约定
- [编码约定]
- [注意事项]
## 文件说明
- [关键文件及其职责]
检查 prd-[功能名称].json 中是否还有 passes: false 的故事:
<promise>COMPLETE</promise>从 prd-[功能名称].json 中读取技术栈信息
根据技术栈选择验证命令
| 验证项 | 命令 |
|---|---|
| 后端编译 | cd [后端项目目录] && mvn compile -q |
| 前端类型检查 | cd [前端项目目录] && npx vue-tsc --noEmit |
| 前端构建 | cd [前端项目目录] && npm run build |
| 前端 lint | cd [前端项目目录] && npm run lint |
koi-prd-convert-to-json → 转换为 prd-[功能名称].json
↓
koi-prd-story-executor → 执行故事
project-root/
├── backend/ # SpringBoot 后端
│ ├── src/main/java/com/company/preaudit/
│ │ ├── controller/ # 控制器
│ │ ├── service/ # 服务层
│ │ ├── mapper/ # MyBatis Mapper
│ │ ├── entity/ # 实体类
│ │ ├── config/ # 配置类
│ │ └── common/ # 公共类(Result、异常等)
│ ├── src/main/resources/
│ │ ├── application.yml # 应用配置
│ │ └── db/migration/ # 数据库迁移脚本
│ └── pom.xml
├── frontend/ # Vue3 前端
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 公共组件
│ │ ├── api/ # API 调用
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Pinia 状态管理
│ │ └── utils/ # 工具函数
│ ├── package.json
│ └── vite.config.ts
├── prd-[功能名称].json # 任务清单
├── progress.txt # 进度日志(只追加)
└── prd-context/conventions/agents.md # 项目级约定
| 场景 | 处理方式 |
|---|---|
| 验证失败(3次重试后) | 不提交代码,在 prd-context/execution-logs/development-log.txt 中记录失败原因 |
| 依赖未满足 | 报告错误,停止当前迭代 |
| git 冲突 | 报告错误,停止当前迭代 |
| 文件不存在 | 检查是否是第一次迭代,如果是则创建 |