初始化自动化开发工作流技能库
This commit is contained in:
+16
@@ -0,0 +1,16 @@
|
||||
# 系统文件
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# 临时文件
|
||||
*.tmp
|
||||
*.temp
|
||||
|
||||
# 日志
|
||||
*.log
|
||||
@@ -0,0 +1,164 @@
|
||||
# 自动化开发工作流技能库
|
||||
|
||||
> 基于 Claude Code 的自动化开发全流程技能集合,覆盖需求 → 审核 → 设计 → TDD → 计划 → 开发 → 测试 → 交付的完整闭环。
|
||||
|
||||
## 技能清单
|
||||
|
||||
| 技能 | 指令 | 说明 | 阶段 |
|
||||
|------|------|------|------|
|
||||
| dev-workflow | `/dev-workflow` | 工作流总控,管理全流程进度 | 总控 |
|
||||
| dev-requirement | `/dev-requirement` | 需求分析,产出需求文档 | 第 1 阶段 |
|
||||
| dev-review | `/dev-review` | 需求审核,过滤无关/复杂需求 | 第 2 阶段 |
|
||||
| dev-design | `/dev-design` | 技术设计与选型 | 第 3 阶段 |
|
||||
| dev-tdd | `/dev-tdd` | 测试先行,生成测试骨架 | 第 4 阶段 |
|
||||
| dev-plan | `/dev-plan` | 步骤分解,定义验收标准 | 第 5 阶段 |
|
||||
| dev-develop | `/dev-develop` | 开发执行,让测试变绿 | 第 6 阶段 |
|
||||
| dev-test | `/dev-test` | 测试验证,代码审核 | 第 7 阶段 |
|
||||
| dev-deliver | `/dev-deliver` | 交付发布 + 反馈闭环 | 第 8 阶段 |
|
||||
|
||||
## 安装方式
|
||||
|
||||
### 安装整个技能库
|
||||
|
||||
```bash
|
||||
npx skills add http://jiulu-gameplay.com.cn:13001/congsh/workFlowSkill.git --all
|
||||
```
|
||||
|
||||
### 安装单个技能
|
||||
|
||||
```bash
|
||||
# 安装主控技能
|
||||
npx skills add http://jiulu-gameplay.com.cn:13001/congsh/workFlowSkill.git --skill dev-workflow
|
||||
|
||||
# 安装需求分析技能
|
||||
npx skills add http://jiulu-gameplay.com.cn:13001/congsh/workFlowSkill.git --skill dev-requirement
|
||||
```
|
||||
|
||||
### 全局安装(推荐)
|
||||
|
||||
```bash
|
||||
npx skills add http://jiulu-gameplay.com.cn:13001/congsh/workFlowSkill.git --all -g -y
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
安装完成后,在项目目录中:
|
||||
|
||||
```bash
|
||||
# 启动工作流
|
||||
claude /dev-workflow
|
||||
|
||||
# 或直接启动某个阶段
|
||||
claude /dev-requirement
|
||||
```
|
||||
|
||||
## 权限配置
|
||||
|
||||
为获得最佳自动化体验,建议配置权限等级:
|
||||
|
||||
```bash
|
||||
# 开发模式:常用命令自动批准
|
||||
cp .claude/permissions/level-3-dev.json .claude/settings.json
|
||||
```
|
||||
|
||||
## 工作流流程
|
||||
|
||||
```
|
||||
╔═════════════════════════════════════════════════════════════════════════╗
|
||||
║ 自动化开发工作流 ║
|
||||
╚═════════════════════════════════════════════════════════════════════════╝
|
||||
|
||||
┌───────────────┐
|
||||
│ 需求收集 │ /dev-requirement
|
||||
│ 产出文档 │ docs/requirements/
|
||||
└───────────────┘
|
||||
│
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ 需求审核 │ /dev-review
|
||||
│ 通过/拒绝/ │ docs/reviews/
|
||||
│ 上报决策 │
|
||||
└───────────────┘
|
||||
│
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ 技术设计 │ /dev-design
|
||||
│ 架构与选型 │ docs/design/
|
||||
└───────────────┘
|
||||
│
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ TDD测试 │ /dev-tdd
|
||||
│ 先行 │ docs/test-cases/
|
||||
└───────────────┘
|
||||
│
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ 步骤分解 │ /dev-plan
|
||||
│ 验收标准 │ docs/plans/
|
||||
└───────────────┘
|
||||
│
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ 开发执行 │ /dev-develop
|
||||
│ 让测试变绿 │ docs/dev-logs/
|
||||
└───────────────┘
|
||||
│
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ 测试验证 │ /dev-test
|
||||
│ 审核+测试 │ docs/test-reports/
|
||||
└───────────────┘
|
||||
│
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ 交付发布 │ /dev-deliver
|
||||
│ +反馈闭环 │ docs/deliverables/
|
||||
└───────────────┘
|
||||
│
|
||||
└──────────┐
|
||||
▼
|
||||
┌────────────┐
|
||||
│ 人工反馈 │
|
||||
│ 驱动迭代 │
|
||||
└────────────┘
|
||||
```
|
||||
|
||||
## 更新技能
|
||||
|
||||
```bash
|
||||
# 更新本库所有技能
|
||||
npx skills update workFlowSkill -y
|
||||
|
||||
# 检查是否有更新
|
||||
npx skills check
|
||||
```
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
workFlowSkill/
|
||||
├── README.md
|
||||
├── .gitignore
|
||||
├── dev-workflow/SKILL.md # 工作流总控
|
||||
├── dev-requirement/SKILL.md # 需求分析
|
||||
├── dev-review/SKILL.md # 需求审核
|
||||
├── dev-design/SKILL.md # 技术设计
|
||||
├── dev-tdd/SKILL.md # TDD测试先行
|
||||
├── dev-plan/SKILL.md # 步骤分解
|
||||
├── dev-develop/SKILL.md # 开发执行
|
||||
├── dev-test/SKILL.md # 测试验证
|
||||
└── dev-deliver/SKILL.md # 交付发布
|
||||
```
|
||||
|
||||
## 外部工具占位(后续接入)
|
||||
|
||||
| 功能 | 当前占位 | 后续替换 |
|
||||
|------|---------|---------|
|
||||
| 工单状态同步 | `docs/processed-requirements.md` | 工单系统 API |
|
||||
| 上报决策人 | `docs/reviews/pending/` | 邮件 MCP / Webhook |
|
||||
| 定时触发 | 无 | 外部脚本 + Claude CLI |
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
@@ -0,0 +1,219 @@
|
||||
---
|
||||
name: dev-deliver
|
||||
description: 开发流程 - 交付阶段,生成接口文档、使用文档、部署文档等交付物
|
||||
---
|
||||
|
||||
# 交付
|
||||
|
||||
> 开发流程第六阶段:基于实际代码和文档生成交付文档。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-deliver`,也可说"生成交付文档"或"准备交付"。
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/deliverables/`
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 前置检查:读取所有前序产出物
|
||||
- [ ] 生成接口文档
|
||||
- [ ] 生成使用文档
|
||||
- [ ] 生成部署文档
|
||||
- [ ] 生成变更摘要
|
||||
- [ ] 用户审阅并保存
|
||||
|
||||
### 1. 前置检查
|
||||
|
||||
读取所有前序阶段的产出物:
|
||||
- `docs/requirements/` — 需求文档
|
||||
- `docs/design/` — 设计文档
|
||||
- `docs/plans/` — 步骤计划
|
||||
- `docs/dev-logs/` — 开发日志
|
||||
- `docs/test-reports/` — 测试报告
|
||||
|
||||
如果某些阶段缺失,提示用户但不阻止执行。基于已有信息生成交付文档。
|
||||
|
||||
### 2. 生成接口文档
|
||||
|
||||
**基于实际代码扫描:**
|
||||
- 读取项目源代码文件
|
||||
- 识别 API 端点、路由定义
|
||||
- 提取函数签名和参数
|
||||
- 识别请求/响应格式
|
||||
- 提取错误码定义
|
||||
|
||||
**生成格式:**
|
||||
|
||||
```markdown
|
||||
## 接口文档
|
||||
|
||||
### API 接口 N:<名称>
|
||||
|
||||
**方法**:POST
|
||||
**路径**:/api/xxx
|
||||
**描述**:xxx
|
||||
|
||||
**请求参数**:
|
||||
| 参数 | 类型 | 必填 | 描述 |
|
||||
|------|------|------|------|
|
||||
|
||||
**响应格式**:
|
||||
[实际响应结构]
|
||||
|
||||
**错误码**:
|
||||
| 错误码 | 描述 |
|
||||
|--------|------|
|
||||
```
|
||||
|
||||
如果项目不是 API/库类型,调整为文档对应的接口形式(函数接口、模块接口等)。
|
||||
|
||||
### 3. 生成使用文档
|
||||
|
||||
**基于项目配置文件:**
|
||||
- 读取 package.json / pyproject.toml / Makefile 等
|
||||
- 识别依赖和版本要求
|
||||
- 提取安装/构建命令
|
||||
- 读取配置文件示例
|
||||
|
||||
**生成格式:**
|
||||
|
||||
```markdown
|
||||
## 使用文档
|
||||
|
||||
### 环境要求
|
||||
- Node.js >= 18
|
||||
- npm >= 9
|
||||
|
||||
### 安装
|
||||
[实际安装命令]
|
||||
|
||||
### 配置
|
||||
[实际配置说明]
|
||||
|
||||
### 基本用法
|
||||
[使用示例]
|
||||
```
|
||||
|
||||
### 4. 生成部署文档
|
||||
|
||||
**基于项目结构和配置:**
|
||||
- 识别部署相关文件(Dockerfile、docker-compose.yml 等)
|
||||
- 提取环境变量定义
|
||||
- 识别外部依赖服务
|
||||
- 提取构建和部署命令
|
||||
|
||||
**生成格式:**
|
||||
|
||||
```markdown
|
||||
## 部署文档
|
||||
|
||||
### 环境变量
|
||||
| 变量名 | 必填 | 描述 | 默认值 |
|
||||
|--------|------|------|--------|
|
||||
|
||||
### 部署步骤
|
||||
1. xxx
|
||||
2. yyy
|
||||
|
||||
### 依赖服务
|
||||
- 数据库:xxx
|
||||
- 缓存:xxx
|
||||
```
|
||||
|
||||
### 5. 生成变更摘要
|
||||
|
||||
**基于需求文档和开发日志:**
|
||||
|
||||
```markdown
|
||||
## 变更摘要
|
||||
|
||||
### 新增
|
||||
- 功能 A(涉及文件:src/xxx.ts)
|
||||
|
||||
### 修改
|
||||
- 功能 B 优化(涉及文件:src/yyy.ts)
|
||||
|
||||
### 已知问题
|
||||
- [问题 1]:描述及临时解决方案
|
||||
```
|
||||
|
||||
### 6. 用户审阅
|
||||
|
||||
- 将完整交付文档展示给用户
|
||||
- 分段确认:接口文档 → 使用文档 → 部署文档 → 变更摘要
|
||||
- 收集反馈并修改
|
||||
- 循环直到用户确认
|
||||
|
||||
### 7. 保存文档
|
||||
|
||||
按以下格式保存完整交付文档:
|
||||
|
||||
```markdown
|
||||
# 交付文档:<项目名称>
|
||||
|
||||
> 创建日期:YYYY-MM-DD
|
||||
> 版本:1.0.0
|
||||
> 状态:已交付
|
||||
|
||||
## 1. 项目概览
|
||||
## 2. 接口文档
|
||||
## 3. 使用文档
|
||||
## 4. 部署文档
|
||||
## 5. 变更摘要
|
||||
```
|
||||
|
||||
保存到 `docs/deliverables/YYYY-MM-DD-<项目名>.md`
|
||||
|
||||
### 8. 发布执行(可选)
|
||||
|
||||
根据项目类型,询问用户是否需要执行发布操作:
|
||||
|
||||
```
|
||||
是否执行发布操作?
|
||||
[1] git tag + push
|
||||
[2] npm publish / docker push
|
||||
[3] 跳过,仅保留文档
|
||||
```
|
||||
|
||||
如选择发布,协助用户执行对应的命令(通过 Bash tool),并记录操作日志。
|
||||
|
||||
### 9. 反馈收集(闭环)
|
||||
|
||||
交付完成后,收集本轮开发的反馈:
|
||||
|
||||
```markdown
|
||||
## 反馈记录
|
||||
|
||||
> 对应交付:docs/deliverables/xxx.md
|
||||
> 反馈日期:YYYY-MM-DD
|
||||
|
||||
### 评分(1-5)
|
||||
- 需求理解准确度:
|
||||
- 实现符合预期度:
|
||||
- 整体满意度:
|
||||
|
||||
### 问题与优化点
|
||||
- [ ] 问题 1
|
||||
- [ ] 问题 2
|
||||
|
||||
### 是否启动新一轮迭代
|
||||
- [ ] 是 → 更新 workflow-status.md 为"需求分析"阶段
|
||||
- [ ] 否 → 标记流程结束
|
||||
```
|
||||
|
||||
保存到 `docs/feedback/YYYY-MM-DD-<项目名>.md`。
|
||||
|
||||
更新 `docs/workflow-status.md`:
|
||||
- 如用户选择迭代:当前阶段 = "需求分析",提示 `/dev-requirement`
|
||||
- 如用户结束:状态 = "已完成"
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 接口文档必须基于实际代码,不凭空编造
|
||||
- 环境变量从代码中实际提取(搜索 process.env、os.environ 等)
|
||||
- 部署步骤基于项目实际配置(Dockerfile、CI/CD 等)
|
||||
- 如无法从代码提取,明确标注"需手动补充"
|
||||
@@ -0,0 +1,127 @@
|
||||
---
|
||||
name: dev-design
|
||||
description: 开发流程 - 设计阶段,技术选型与细节设计,产出设计文档
|
||||
---
|
||||
|
||||
# 设计
|
||||
|
||||
> 开发流程第二阶段:基于需求文档进行技术选型和细节设计。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-design`,也可说"开始设计"。
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/design/`
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 前置检查:读取需求文档
|
||||
- [ ] 探索现有代码库
|
||||
- [ ] 技术选型
|
||||
- [ ] 前端风格设计(如涉及)
|
||||
- [ ] 细节设计循环
|
||||
- [ ] 用户确认并保存
|
||||
|
||||
### 1. 前置检查
|
||||
|
||||
- 读取 `docs/requirements/` 目录下的需求文档
|
||||
- 如果不存在,提示用户先运行 `/dev-requirement` 完成需求分析
|
||||
- 用户可选择跳过(直接进入设计)
|
||||
- 展示需求文档摘要,确认设计范围
|
||||
|
||||
### 2. 探索现有代码库
|
||||
|
||||
- 查看项目文件结构
|
||||
- 识别现有技术栈(package.json、pyproject.toml 等)
|
||||
- 了解现有架构模式
|
||||
- 识别可复用的模块和接口
|
||||
|
||||
### 3. 技术选型
|
||||
|
||||
识别需要做出的技术决策,逐个讨论:
|
||||
|
||||
**规则:**
|
||||
- 每个决策点提出 2-3 个方案
|
||||
- 说明每个方案的优缺点
|
||||
- 给出推荐方案和理由
|
||||
- 使用多选方式让用户选择
|
||||
|
||||
**常见决策点:**
|
||||
- 框架选择
|
||||
- 数据库/存储方案
|
||||
- 状态管理方案
|
||||
- API 风格(REST/GraphQL/RPC)
|
||||
- 认证方案
|
||||
|
||||
### 4. 前端风格设计(如涉及)
|
||||
|
||||
如果项目涉及 UI:
|
||||
- 询问视觉风格偏好
|
||||
- 确定配色方案、字体、间距规范
|
||||
- 确定组件库(如有)
|
||||
- 确定布局模式
|
||||
|
||||
如果项目不涉及 UI,跳过此步骤。
|
||||
|
||||
### 5. 细节设计循环
|
||||
|
||||
按以下维度逐个展开设计,每个维度分段展示给用户确认:
|
||||
|
||||
**模块划分:**
|
||||
- 将系统拆分为职责单一的模块
|
||||
- 每个模块有清晰的边界和接口
|
||||
|
||||
**数据模型:**
|
||||
- 核心数据结构定义
|
||||
- 数据关系
|
||||
- 存储方案
|
||||
|
||||
**接口设计:**
|
||||
- 模块间接口 / API 端点
|
||||
- 输入输出规范
|
||||
- 错误码定义
|
||||
|
||||
**错误处理:**
|
||||
- 异常场景识别
|
||||
- 错误处理策略
|
||||
- 边界情况处理
|
||||
|
||||
### 6. 保存设计文档
|
||||
|
||||
按以下模板保存:
|
||||
|
||||
```markdown
|
||||
# 设计文档:<项目名称>
|
||||
|
||||
> 创建日期:YYYY-MM-DD
|
||||
> 对应需求:docs/requirements/YYYY-MM-DD-xxx.md
|
||||
> 状态:已确认
|
||||
|
||||
## 1. 技术选型
|
||||
| 决策点 | 选择 | 理由 | 备选方案 |
|
||||
|-------|------|------|---------|
|
||||
|
||||
## 2. 架构设计
|
||||
### 整体架构
|
||||
### 模块划分
|
||||
| 模块 | 职责 | 依赖 |
|
||||
|------|------|------|
|
||||
|
||||
## 3. 数据模型
|
||||
## 4. 接口设计
|
||||
## 5. 前端设计(如适用)
|
||||
## 6. 错误处理与边界情况
|
||||
```
|
||||
|
||||
保存为 `docs/design/YYYY-MM-DD-<项目名>.md`,提示下一步可调用 `/dev-tdd` 生成测试用例(测试先行)。
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 技术选型基于项目实际约束,不盲目追求新技术
|
||||
- 设计文档中的每个需求都能追溯到需求文档
|
||||
- 前端风格仅在涉及 UI 时展开
|
||||
- 模块划分遵循单一职责原则
|
||||
@@ -0,0 +1,132 @@
|
||||
---
|
||||
name: dev-develop
|
||||
description: 开发流程 - 开发执行阶段,按步骤执行开发并逐条验证验收标准
|
||||
---
|
||||
|
||||
# 开发执行
|
||||
|
||||
> 开发流程第四阶段:按步骤计划执行开发,每步完成后验证验收标准。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-develop`,也可说"开始开发"。
|
||||
|
||||
支持指定步骤:`/dev-develop 步骤3` 或 `/dev-develop 3`
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/dev-logs/`
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 前置检查:读取步骤计划
|
||||
- [ ] 读取/创建开发日志
|
||||
- [ ] 步骤执行循环(对每个步骤)
|
||||
- [ ] 生成完整开发日志
|
||||
|
||||
### 1. 前置检查
|
||||
|
||||
- 读取 `docs/plans/` 目录下的步骤计划
|
||||
- 如果不存在,提示用户先运行 `/dev-plan`(用户可选择跳过,直接开始开发)
|
||||
- 展示步骤概览和进度
|
||||
|
||||
### 2. 读取/创建开发日志
|
||||
|
||||
- 检查 `docs/dev-logs/` 是否已有本次开发日志
|
||||
- 如果有:读取进度,从未完成的步骤继续
|
||||
- 如果没有:创建新的开发日志
|
||||
|
||||
开发日志格式:
|
||||
|
||||
```markdown
|
||||
# 开发日志:<项目名称>
|
||||
|
||||
> 创建日期:YYYY-MM-DD
|
||||
> 对应计划:docs/plans/YYYY-MM-DD-xxx.md
|
||||
> 状态:进行中
|
||||
|
||||
## 进度概览
|
||||
|
||||
| # | 步骤 | 状态 | 完成时间 |
|
||||
|---|------|------|---------|
|
||||
| 1 | xxx | ✅ 已完成 | HH:MM |
|
||||
| 2 | yyy | 🔄 进行中 | - |
|
||||
| 3 | zzz | ⏳ 待执行 | - |
|
||||
|
||||
---
|
||||
|
||||
## 步骤 N:xxx
|
||||
|
||||
**开始时间**:HH:MM
|
||||
**完成时间**:HH:MM
|
||||
|
||||
**执行内容**:
|
||||
- 创建了 src/xxx.ts
|
||||
- 修改了 src/yyy.ts
|
||||
|
||||
**验收结果**:
|
||||
- [x] 标准 1:通过(附验证命令输出)
|
||||
- [x] 标准 2:通过
|
||||
|
||||
**备注**:
|
||||
[任何偏离计划的情况]
|
||||
```
|
||||
|
||||
### 3. 步骤执行循环
|
||||
|
||||
对每个待执行的步骤:
|
||||
|
||||
**3a. 展示步骤详情**
|
||||
- 展示当前步骤的目标、具体任务和验收标准
|
||||
- 确认用户准备开始
|
||||
|
||||
**3b. 执行开发任务**
|
||||
- 按步骤计划中的任务项逐一执行
|
||||
- 编写/修改代码,保持简洁
|
||||
- 不添加计划之外的功能
|
||||
|
||||
**3c. 自动运行检查**
|
||||
- 检查是否有 lint 配置,有则运行
|
||||
- 检查是否有 type check 配置,有则运行
|
||||
- 检查是否有 build 命令,有则运行
|
||||
- 运行现有测试(如有)
|
||||
- 如果检查失败,修复后重新运行
|
||||
|
||||
**3d. 逐条验证验收标准**
|
||||
- 对照步骤计划中的每条验收标准
|
||||
- 展示每条标准的验证方式和结果
|
||||
- 对于命令行验证:展示命令输出
|
||||
- 对于文件检查:展示文件内容
|
||||
- 对于功能验证:描述验证过程
|
||||
|
||||
**3e. 用户确认**
|
||||
- 展示所有验收标准的验证结果
|
||||
- 询问用户是否确认通过
|
||||
- **通过**:标记步骤完成,更新开发日志,进入下一步
|
||||
- **未通过**:根据反馈修复,重新验证,回到 3d
|
||||
|
||||
### 4. 完成开发日志
|
||||
|
||||
所有步骤完成后:
|
||||
- 更新开发日志状态为"已完成"
|
||||
- 记录总体完成时间
|
||||
- 保存到 `docs/dev-logs/YYYY-MM-DD-<项目名>.md`
|
||||
- 提示下一步可调用 `/dev-test` 进行测试
|
||||
|
||||
## 断点续做
|
||||
|
||||
如果开发中途退出(会话结束),下次启动 `/dev-develop` 时:
|
||||
- 自动读取开发日志
|
||||
- 识别最后一个"进行中"的步骤
|
||||
- 询问用户是从该步骤重新开始,还是继续下一步
|
||||
- 支持用户指定任意步骤:`/dev-develop 3`
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 每个步骤开始前明确展示目标,不盲目动手
|
||||
- 验收标准逐条核对,不自评"通过"
|
||||
- 用户确认后才进入下一步,不跳过
|
||||
- 遇到问题及时反馈,不强行继续
|
||||
- 代码修改保持简洁,不添加计划外的增强
|
||||
@@ -0,0 +1,123 @@
|
||||
---
|
||||
name: dev-plan
|
||||
description: 开发流程 - 步骤分解阶段,将设计拆解为可验证的实施步骤
|
||||
---
|
||||
|
||||
# 步骤分解
|
||||
|
||||
> 开发流程第三阶段:将设计拆解为可验证的实施步骤,每步提供验收标准。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-plan`,也可说"分解步骤"或"制定开发计划"。
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/plans/`
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 前置检查:读取需求和设计文档
|
||||
- [ ] 分析设计,识别实现步骤
|
||||
- [ ] 定义每个步骤的验收标准
|
||||
- [ ] 展示完整步骤列表
|
||||
- [ ] 用户确认并保存
|
||||
|
||||
### 1. 前置检查
|
||||
|
||||
- 读取 `docs/requirements/` 和 `docs/design/`
|
||||
- 如果任一目录为空,提示用户先完成对应阶段(可选择跳过)
|
||||
- 展示需求和设计摘要,确认分解范围
|
||||
|
||||
### 2. 分析设计,识别步骤
|
||||
|
||||
基于设计文档的模块划分和架构,将实现工作拆解为步骤。
|
||||
|
||||
**拆解原则:**
|
||||
- 每个步骤必须**可独立验证**
|
||||
- 步骤粒度:一个步骤应能在一次开发会话中完成
|
||||
- 优先按依赖关系排序:基础模块先于上层模块
|
||||
- 同一模块的相关任务归为同一步骤
|
||||
|
||||
### 3. 定义验收标准
|
||||
|
||||
为每个步骤定义验收标准。
|
||||
|
||||
**验收标准要求:**
|
||||
- **可客观判断**:能通过命令执行、文件检查或视觉确认
|
||||
- **具体明确**:不使用"基本完成"、"大致可用"等模糊描述
|
||||
- **可演示**:每个步骤完成后都能展示具体成果
|
||||
|
||||
**好的验收标准示例:**
|
||||
```
|
||||
- [ ] 执行 `npm run build` 无错误
|
||||
- [ ] 访问 /api/users 返回 200 和用户列表 JSON
|
||||
- [ ] 用户可以点击"添加"按钮并在列表中看到新条目
|
||||
```
|
||||
|
||||
**不好的验收标准示例:**
|
||||
```
|
||||
- [ ] 基本功能可用
|
||||
- [ ] 接口设计完成
|
||||
```
|
||||
|
||||
### 4. 展示步骤列表
|
||||
|
||||
按以下格式展示完整计划:
|
||||
|
||||
```markdown
|
||||
# 实施计划:<项目名称>
|
||||
|
||||
> 创建日期:YYYY-MM-DD
|
||||
> 对应需求:docs/requirements/YYYY-MM-DD-xxx.md
|
||||
> 对应设计:docs/design/YYYY-MM-DD-xxx.md
|
||||
> 状态:待执行
|
||||
|
||||
## 步骤概览
|
||||
|
||||
| # | 步骤名称 | 依赖 | 状态 |
|
||||
|---|---------|------|------|
|
||||
| 1 | xxx | 无 | 待执行 |
|
||||
|
||||
---
|
||||
|
||||
## 步骤 N:<标题>
|
||||
|
||||
**目标**:一句话描述
|
||||
|
||||
**具体任务**:
|
||||
- [ ] 任务项 1
|
||||
- [ ] 任务项 2
|
||||
|
||||
**验收标准**:
|
||||
- [ ] 标准 1(可验证描述)
|
||||
- [ ] 标准 2
|
||||
|
||||
**涉及文件**:
|
||||
- src/xxx.ts(新建/修改)
|
||||
|
||||
**预估复杂度**:低/中/高
|
||||
|
||||
---
|
||||
|
||||
## 依赖关系图
|
||||
|
||||
步骤 1 → 步骤 2, 3 → 步骤 4
|
||||
```
|
||||
|
||||
### 5. 用户确认
|
||||
|
||||
- 展示完整步骤列表
|
||||
- 询问是否需要调整(合并、拆分、重排序)
|
||||
- 修改后循环展示直到用户确认
|
||||
- 保存为 `docs/plans/YYYY-MM-DD-<项目名>.md`
|
||||
- 提示下一步可调用 `/dev-develop` 开始开发
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 验收标准是步骤分解的核心,必须可验证
|
||||
- 步骤之间依赖关系必须明确,无循环依赖
|
||||
- 不遗漏设计文档中的任何模块或接口
|
||||
- 步骤数量适中(通常 3-10 个),避免过度拆分
|
||||
@@ -0,0 +1,125 @@
|
||||
---
|
||||
name: dev-requirement
|
||||
description: 开发流程 - 需求分析阶段,通过探讨和澄清循环产出需求文档
|
||||
---
|
||||
|
||||
# 需求分析
|
||||
|
||||
> 开发流程第一阶段:通过探讨 → 产出 → 澄清循环,产出满意的需求文档。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-requirement` 或 `/dev-req`,也可说"开始需求分析"。
|
||||
|
||||
支持传入需求来源:`/dev-requirement docs/idea.md` 或 `/dev-requirement Issue#42`。
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/requirements/`
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 探索项目上下文
|
||||
- [ ] 收集原始需求
|
||||
- [ ] 探讨循环(澄清问题)
|
||||
- [ ] 产出需求文档
|
||||
- [ ] 用户确认并保存
|
||||
|
||||
### 1. 探索项目上下文
|
||||
|
||||
启动后首先了解当前项目状态:
|
||||
|
||||
- 读取项目根目录的文件结构
|
||||
- 查看现有文档(README、CLAUDE.md 等)
|
||||
- 查看最近的 git 提交(如有)
|
||||
- 查看是否已有 `docs/requirements/` 目录下的需求文档
|
||||
|
||||
### 2. 收集原始需求
|
||||
|
||||
根据用户输入获取需求来源:
|
||||
|
||||
- 如果传入文件路径,读取该文件作为原始需求
|
||||
- 如果传入 Issue 编号,尝试读取 Issue 内容
|
||||
- 如果无参数,询问用户描述需求
|
||||
|
||||
### 3. 探讨循环
|
||||
|
||||
参考 superpowers:brainstorming 的核心模式:
|
||||
|
||||
**规则:**
|
||||
- 一次只问一个澄清问题
|
||||
- 优先使用多选选项向用户提问
|
||||
- 提出 2-3 个方案供选择时,说明权衡和推荐
|
||||
- YAGNI 原则:主动去掉不必要的需求
|
||||
- 不要自作主张添加用户没提到的需求
|
||||
|
||||
**探讨内容:**
|
||||
- 业务背景和目标
|
||||
- 用户角色和使用场景
|
||||
- 核心功能需求
|
||||
- 非功能需求(性能、安全等)
|
||||
- 约束和假设
|
||||
- 范围边界(包含/不包含)
|
||||
|
||||
**退出条件:** 你已充分理解以下内容:
|
||||
- 为什么做这个项目
|
||||
- 谁是目标用户
|
||||
- 核心功能有哪些
|
||||
- 成功标准是什么
|
||||
|
||||
### 4. 产出需求文档
|
||||
|
||||
按以下模板生成需求文档,分段展示给用户审阅:
|
||||
|
||||
```markdown
|
||||
# 需求文档:<项目名称>
|
||||
|
||||
> 创建日期:YYYY-MM-DD
|
||||
> 状态:已确认
|
||||
|
||||
## 1. 背景与目标
|
||||
### 业务背景
|
||||
### 核心目标
|
||||
### 成功指标
|
||||
|
||||
## 2. 功能需求
|
||||
(每个需求用用户故事格式)
|
||||
### 用户故事 N
|
||||
**作为** [角色],**我想要** [功能],**以便** [价值]
|
||||
验收条件:
|
||||
- [ ] 条件 1
|
||||
|
||||
## 3. 非功能需求
|
||||
- 性能:
|
||||
- 安全:
|
||||
- 兼容性:
|
||||
- 可维护性:
|
||||
|
||||
## 4. 约束与假设
|
||||
### 技术约束
|
||||
### 业务假设
|
||||
|
||||
## 5. 范围说明
|
||||
### 包含
|
||||
### 不包含
|
||||
```
|
||||
|
||||
**审阅规则:**
|
||||
- 每展示一段后询问是否满意
|
||||
- 收集反馈后修改,进入下一轮展示
|
||||
- 循环直到用户确认整体满意
|
||||
|
||||
### 5. 保存文档
|
||||
|
||||
- 确保 `docs/requirements/` 目录存在
|
||||
- 保存为 `docs/requirements/YYYY-MM-DD-<项目名>.md`
|
||||
- 告知用户文件位置,提示下一步可调用 `/dev-review` 进行需求审核
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 探讨阶段不急躁,确保充分理解后再产出
|
||||
- 产出时不遗漏探讨中确认的任何需求点
|
||||
- 文档中的每个需求都有对应的验收条件
|
||||
- 范围说明中的"不包含"要明确列出并说明原因
|
||||
@@ -0,0 +1,218 @@
|
||||
---
|
||||
name: dev-review
|
||||
description: 开发流程 - 需求审核阶段,评估需求相关性、复杂度与可行性,决定推进、拒绝或上报决策
|
||||
---
|
||||
|
||||
# 需求审核
|
||||
|
||||
> 开发流程第二阶段:审核需求的相关性、复杂度与可行性,过滤无关需求,拦截复杂/高风险需求上报决策。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-review`,也可说"审核需求"。
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/reviews/`(审核通过的记录)
|
||||
`docs/reviews/pending/`(待决策的审核记录)
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 前置检查:读取需求文档
|
||||
- [ ] 相关性评估
|
||||
- [ ] 复杂度评估
|
||||
- [ ] 可行性评估
|
||||
- [ ] 生成审核结论
|
||||
- [ ] 更新状态(避免重复触发)
|
||||
- [ ] 上报决策人(如需要,外部工具占位)
|
||||
|
||||
### 1. 前置检查
|
||||
|
||||
- 读取 `docs/requirements/` 目录下最新的需求文档
|
||||
- 读取 `docs/processed-requirements.md` 已处理需求清单(如存在)
|
||||
- 检查该需求是否已在处理中或已处理,避免重复审核
|
||||
- 如未找到需求文档,提示用户先运行 `/dev-requirement`
|
||||
|
||||
### 2. 相关性评估
|
||||
|
||||
判断需求是否属于本系统的业务范围。
|
||||
|
||||
**评估标准:**
|
||||
- 需求的功能领域是否在本系统职责范围内
|
||||
- 是否涉及本系统已有模块的合理扩展
|
||||
- 是否属于本团队/项目的维护范围
|
||||
|
||||
**结论:**
|
||||
- **相关** → 继续下一步评估
|
||||
- **无关** → 直接拒绝,记录原因
|
||||
|
||||
### 3. 复杂度评估
|
||||
|
||||
评估需求的技术实现复杂度。
|
||||
|
||||
| 等级 | 判断标准 | 处理方式 |
|
||||
|------|---------|---------|
|
||||
| 简单 | 现有模式直接套用,无新架构 | 直接通过 |
|
||||
| 中等 | 需要新模块或接口设计,但技术路径清晰 | 直接通过 |
|
||||
| 复杂 | 涉及架构变更、跨系统协调、性能敏感场景 | 标记需决策 |
|
||||
|
||||
**触发"需决策"的典型情况:**
|
||||
- 需要引入新的技术栈或基础设施
|
||||
- 涉及大量数据迁移或兼容性问题
|
||||
- 需要与其他团队/系统协调接口
|
||||
- 性能要求超出当前架构能力
|
||||
- 安全合规风险较高
|
||||
|
||||
### 4. 可行性评估
|
||||
|
||||
检查需求在当前约束下是否可行。
|
||||
|
||||
**评估维度:**
|
||||
- **技术约束**:现有技术栈是否支持
|
||||
- **资源约束**:人力、时间是否足够
|
||||
- **依赖约束**:是否依赖外部系统/团队
|
||||
- **合规约束**:是否符合安全/合规要求
|
||||
|
||||
### 5. 生成审核结论
|
||||
|
||||
三种结论,只能有一种:
|
||||
|
||||
#### A. 通过
|
||||
|
||||
需求属于本系统范围,复杂度在可控范围内,可直接进入设计阶段。
|
||||
|
||||
**产出:** `docs/reviews/YYYY-MM-DD-<项目名>-review.md`
|
||||
|
||||
```markdown
|
||||
# 需求审核报告
|
||||
|
||||
> 对应需求:docs/requirements/YYYY-MM-DD-xxx.md
|
||||
> 审核日期:YYYY-MM-DD
|
||||
|
||||
## 审核结论:通过
|
||||
|
||||
## 评估详情
|
||||
### 相关性:相关
|
||||
[说明]
|
||||
|
||||
### 复杂度:简单/中等
|
||||
[说明]
|
||||
|
||||
### 可行性:可行
|
||||
[说明]
|
||||
|
||||
## 建议下一步
|
||||
进入设计阶段:`/dev-design`
|
||||
```
|
||||
|
||||
#### B. 拒绝
|
||||
|
||||
需求与本系统无关,或技术上不可行。
|
||||
|
||||
**产出:** `docs/reviews/YYYY-MM-DD-<项目名>-review.md`
|
||||
|
||||
```markdown
|
||||
# 需求审核报告
|
||||
|
||||
## 审核结论:拒绝
|
||||
|
||||
## 拒绝原因
|
||||
- 原因 1
|
||||
- 原因 2
|
||||
|
||||
## 建议
|
||||
[转交给哪个系统/团队,或建议用户如何调整]
|
||||
```
|
||||
|
||||
**操作:**
|
||||
- 将需求标记为"已拒绝"
|
||||
- 更新 `docs/processed-requirements.md`
|
||||
- 告知用户流程终止,不进入后续阶段
|
||||
|
||||
#### C. 需决策
|
||||
|
||||
需求相关但复杂度过高或存在不确定性,需要上报决策人评估。
|
||||
|
||||
**产出:** `docs/reviews/pending/YYYY-MM-DD-<项目名>-pending.md`
|
||||
|
||||
```markdown
|
||||
# 待决策需求上报
|
||||
|
||||
> 对应需求:docs/requirements/YYYY-MM-DD-xxx.md
|
||||
> 审核日期:YYYY-MM-DD
|
||||
|
||||
## 需决策事项
|
||||
|
||||
| # | 问题 | 影响 | 建议方案 |
|
||||
|---|------|------|---------|
|
||||
| 1 | 涉及架构变更 | 影响现有模块 A、B | 方案 X / 方案 Y |
|
||||
| 2 | 需要跨团队协作 | 依赖团队 C 的接口 | 先协调再排期 |
|
||||
|
||||
## 复杂度评估
|
||||
[详细说明]
|
||||
|
||||
## 推荐决策
|
||||
[给出倾向性建议]
|
||||
```
|
||||
|
||||
### 6. 更新状态(避免重复触发)
|
||||
|
||||
**当前实现(文件占位):**
|
||||
|
||||
更新 `docs/processed-requirements.md`:
|
||||
|
||||
```markdown
|
||||
# 已处理需求清单
|
||||
|
||||
| 需求文件 | 审核结论 | 状态 | 处理日期 |
|
||||
|---------|---------|------|---------|
|
||||
| YYYY-MM-DD-xxx.md | 通过 | 处理中 | YYYY-MM-DD |
|
||||
| YYYY-MM-DD-yyy.md | 拒绝 | 已关闭 | YYYY-MM-DD |
|
||||
| YYYY-MM-DD-zzz.md | 需决策 | 待决策 | YYYY-MM-DD |
|
||||
```
|
||||
|
||||
**后续替换(外部工具接入时):**
|
||||
|
||||
```
|
||||
# TODO: 接入工单系统 API
|
||||
# - 通过的工单:调用 set_status(ticket_id, "处理中")
|
||||
# - 拒绝的工单:调用 set_status(ticket_id, "已拒绝")
|
||||
# - 需决策的工单:调用 set_status(ticket_id, "待决策")
|
||||
```
|
||||
|
||||
### 7. 上报决策人(外部工具占位)
|
||||
|
||||
对于"需决策"的需求,当前流程:
|
||||
|
||||
1. 生成 `docs/reviews/pending/xxx-pending.md`
|
||||
2. 展示给用户,说明需要上报的内容
|
||||
3. **提示用户手动转发给决策人**
|
||||
|
||||
**后续替换(外部工具接入时):**
|
||||
|
||||
```
|
||||
# TODO: 接入通知渠道
|
||||
# 方案 A:邮件 MCP server
|
||||
# - 调用 send_email(decision_maker, subject, content)
|
||||
# 方案 B:企业微信/钉钉 Webhook
|
||||
# - 调用 send_webhook(url, message)
|
||||
# 方案 C:工单系统内置通知
|
||||
# - 调用 add_comment(ticket_id, "@决策人 请审核")
|
||||
```
|
||||
|
||||
## 流转规则
|
||||
|
||||
| 审核结论 | 下一步 | 状态 |
|
||||
|---------|--------|------|
|
||||
| 通过 | `/dev-design` | 处理中 |
|
||||
| 拒绝 | 流程终止 | 已关闭 |
|
||||
| 需决策 | 等待外部反馈,之后重新 `/dev-review` | 待决策 |
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 审核不通过时明确说明原因,给出替代建议
|
||||
- "需决策"不是拒绝,而是暂停等待更多信息
|
||||
- 每次审核都记录到 `processed-requirements.md`,确保不重复处理
|
||||
- 用户可覆盖审核结论(强制推进),但记录覆盖原因
|
||||
@@ -0,0 +1,169 @@
|
||||
---
|
||||
name: dev-tdd
|
||||
description: 开发流程 - TDD 测试先行阶段,基于设计文档生成测试骨架,实现测试驱动开发
|
||||
---
|
||||
|
||||
# TDD 测试先行
|
||||
|
||||
> 开发流程第四阶段:基于设计文档生成测试骨架,先写测试再写实现,确保验收标准可量化。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-tdd`,也可说"生成测试用例"或"TDD"。
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/test-cases/`(测试用例设计文档)
|
||||
项目源码中的测试文件(`.test.ts` / `.spec.ts` / `_test.py` 等)
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 前置检查:读取需求和设计文档
|
||||
- [ ] 检测项目测试框架
|
||||
- [ ] 按模块识别测试点
|
||||
- [ ] 生成测试用例文档
|
||||
- [ ] 生成测试代码骨架(空实现 / 先失败)
|
||||
- [ ] 验证测试可运行且初始状态为失败
|
||||
- [ ] 用户确认
|
||||
|
||||
### 1. 前置检查
|
||||
|
||||
- 读取 `docs/requirements/` 需求文档
|
||||
- 读取 `docs/design/` 设计文档(模块划分、接口定义、数据模型)
|
||||
- 如果设计文档不存在,提示用户先运行 `/dev-design`(可选择跳过,基于需求直接生成)
|
||||
- 展示设计摘要,确认测试生成范围
|
||||
|
||||
### 2. 检测项目测试框架
|
||||
|
||||
自动检测项目使用的测试框架:
|
||||
|
||||
| 语言 | 检测方式 | 常用框架 |
|
||||
|------|---------|---------|
|
||||
| JavaScript/TypeScript | package.json devDependencies | jest, vitest, mocha, playwright |
|
||||
| Python | pyproject.toml / requirements.txt | pytest, unittest |
|
||||
| Java | pom.xml / build.gradle | JUnit, TestNG |
|
||||
| Go | go.mod | testing, testify |
|
||||
| Rust | Cargo.toml | 内置 test |
|
||||
|
||||
如果没有检测到测试框架:
|
||||
- 询问用户是否安装(推荐 Vitest 或 Jest 用于 JS/TS,pytest 用于 Python)
|
||||
- 如用户拒绝,生成 `docs/test-cases/` 下的纯文本测试用例文档,不生成代码
|
||||
|
||||
### 3. 按模块识别测试点
|
||||
|
||||
基于设计文档的模块划分,为每个模块识别测试点:
|
||||
|
||||
**每个模块的测试点维度:**
|
||||
- **正常路径**:标准输入下的预期输出
|
||||
- **边界情况**:空值、最大值、最小值、空数组等
|
||||
- **错误路径**:异常输入、权限不足、网络失败等
|
||||
- **状态转换**:涉及状态机的模块,各状态转换路径
|
||||
|
||||
### 4. 生成测试用例文档
|
||||
|
||||
为每个模块生成测试用例设计文档,保存到 `docs/test-cases/`:
|
||||
|
||||
```markdown
|
||||
# 测试用例设计:<模块名>
|
||||
|
||||
> 对应设计:docs/design/xxx.md
|
||||
> 对应模块:模块 A
|
||||
|
||||
## 测试用例 1:正常路径 - [简短描述]
|
||||
|
||||
**目标**:验证标准场景下的正确行为
|
||||
**输入**:[具体值或描述]
|
||||
**预期输出**:[具体值或描述]
|
||||
**涉及接口**:[函数/端点名]
|
||||
**优先级**:高
|
||||
|
||||
## 测试用例 2:边界情况 - [简短描述]
|
||||
|
||||
**目标**:验证边界输入的处理
|
||||
**输入**:[边界值]
|
||||
**预期输出**:[预期行为]
|
||||
**优先级**:中
|
||||
|
||||
## 测试用例 3:错误路径 - [简短描述]
|
||||
|
||||
**目标**:验证异常情况的处理
|
||||
**输入**:[异常输入]
|
||||
**预期输出**:[错误码/异常类型]
|
||||
**优先级**:中
|
||||
```
|
||||
|
||||
### 5. 生成测试代码骨架
|
||||
|
||||
基于检测到的测试框架,生成实际的测试代码文件:
|
||||
|
||||
**原则:**
|
||||
- 每个测试用例对应一个测试函数
|
||||
- 测试函数名清晰描述场景:`should_xxx_when_xxx`
|
||||
- 导入被测模块(根据设计文档中的接口定义)
|
||||
- 使用 `todo()` 或 `skip()` 标记尚未实现的测试,或先写失败的断言
|
||||
- 不编写被测模块的实现代码
|
||||
|
||||
**示例(Vitest / TypeScript):**
|
||||
|
||||
```typescript
|
||||
// src/modules/user/user.service.test.ts
|
||||
import { describe, it, expect } from 'vitest'
|
||||
import { UserService } from './user.service'
|
||||
|
||||
describe('UserService', () => {
|
||||
describe('创建用户', () => {
|
||||
it('should create user with valid input', () => {
|
||||
// TODO: 实现测试
|
||||
// const service = new UserService()
|
||||
// const result = service.create({ name: '张三', email: 'zs@example.com' })
|
||||
// expect(result.name).toBe('张三')
|
||||
expect(true).toBe(false) // 初始状态:失败
|
||||
})
|
||||
|
||||
it('should reject empty name', () => {
|
||||
// TODO: 实现测试
|
||||
expect(true).toBe(false) // 初始状态:失败
|
||||
})
|
||||
})
|
||||
})
|
||||
```
|
||||
|
||||
### 6. 验证测试可运行且失败
|
||||
|
||||
生成测试后:
|
||||
- 运行测试框架(如 `npm test` / `pytest`)
|
||||
- 确认测试可以被识别并执行
|
||||
- 确认测试当前状态为**失败**(红)
|
||||
- 如测试无法运行,修复配置问题(路径、导入、框架设置等)
|
||||
|
||||
### 7. 用户确认
|
||||
|
||||
- 展示生成的测试用例文档摘要
|
||||
- 展示测试代码骨架的关键部分
|
||||
- 展示测试运行结果(确认是失败的)
|
||||
- 询问用户是否满意,或需要补充/修改测试场景
|
||||
- 修改后循环直到确认
|
||||
|
||||
## 流转规则
|
||||
|
||||
生成完成后,提示下一步:
|
||||
- `/dev-plan` — 将开发工作拆解为步骤(推荐)
|
||||
- `/dev-develop` — 直接进入开发,让测试变绿
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 测试用例必须能追溯到设计文档中的接口定义
|
||||
- 测试初始状态必须为失败(红),不允许一开始就通过
|
||||
- 不编写被测模块的实现代码,只写测试
|
||||
- 测试函数名使用描述性语言,不依赖注释解释场景
|
||||
- 如果设计文档中的接口不明确,先回到 `/dev-design` 澄清
|
||||
|
||||
## TDD 原则提醒
|
||||
|
||||
1. **红**:先写一个失败的测试
|
||||
2. **绿**:写最小代码让测试通过
|
||||
3. **重构**:优化代码,保持测试通过
|
||||
|
||||
本阶段只负责第 1 步(红)。第 2-3 步在 `/dev-develop` 中完成。
|
||||
@@ -0,0 +1,182 @@
|
||||
---
|
||||
name: dev-test
|
||||
description: 开发流程 - 测试阶段,包括代码审核、单模块测试和全流程测试
|
||||
---
|
||||
|
||||
# 测试
|
||||
|
||||
> 开发流程第五阶段:代码审核 + 单模块测试 + 全流程测试。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-test`,也可说"开始测试"。
|
||||
|
||||
## 产出目录
|
||||
|
||||
`docs/test-reports/`
|
||||
|
||||
## 执行流程
|
||||
|
||||
### 启动时选择
|
||||
|
||||
展示测试范围选择:
|
||||
|
||||
```
|
||||
请选择测试范围:
|
||||
|
||||
[1] 完整测试流程(代码审核 → 模块测试 → 全流程测试)
|
||||
[2] 仅代码审核
|
||||
[3] 仅模块测试
|
||||
[4] 仅全流程测试
|
||||
```
|
||||
|
||||
使用多选方式让用户选择。
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] 前置检查:读取计划和开发日志
|
||||
- [ ] 阶段 A:代码审核(如选择)
|
||||
- [ ] 阶段 B:单模块测试(如选择)
|
||||
- [ ] 阶段 C:全流程测试(如选择)
|
||||
- [ ] 生成测试报告
|
||||
|
||||
### 前置检查
|
||||
|
||||
- 读取 `docs/plans/` 和 `docs/dev-logs/`
|
||||
- 确认开发已全部完成(所有步骤状态为"已完成")
|
||||
- 如果未完成,提示用户先运行 `/dev-develop` 完成剩余步骤
|
||||
- 用户可选择跳过(对已完成部分进行测试)
|
||||
|
||||
### 阶段 A:代码审核
|
||||
|
||||
#### A1. 确定审核范围
|
||||
|
||||
- 从开发日志中提取所有修改/新建的文件列表
|
||||
- 展示给用户确认
|
||||
|
||||
#### A2. 逐文件审核
|
||||
|
||||
对每个文件检查以下维度:
|
||||
|
||||
| 维度 | 检查内容 |
|
||||
|------|---------|
|
||||
| 安全性 | SQL 注入、XSS、命令注入、敏感信息泄露等 OWASP Top 10 |
|
||||
| 性能 | N+1 查询、内存泄漏、不必要的同步操作、大数据量处理 |
|
||||
| 代码规范 | 命名一致性、函数长度、代码重复 |
|
||||
| 设计符合度 | 对照设计文档,检查实现是否符合设计 |
|
||||
| 边界情况 | 空值处理、错误路径、并发场景 |
|
||||
|
||||
#### A3. 审核报告
|
||||
|
||||
产出审核结果:
|
||||
|
||||
```markdown
|
||||
## 代码审核详情
|
||||
|
||||
### 审核文件列表
|
||||
- src/xxx.ts
|
||||
- src/yyy.ts
|
||||
|
||||
### 发现问题
|
||||
|
||||
| # | 文件 | 行号 | 严重度 | 描述 | 状态 |
|
||||
|---|------|------|--------|------|------|
|
||||
| 1 | xxx.ts | 42 | 高 | SQL 注入风险 | ⏳ 待修复 |
|
||||
```
|
||||
|
||||
#### A4. 用户确认修复
|
||||
|
||||
- 展示审核发现的问题
|
||||
- 与用户确认哪些需要修复
|
||||
- 执行修复
|
||||
- 修复后重新验证
|
||||
|
||||
### 阶段 B:单模块测试
|
||||
|
||||
#### B1. 框架检测
|
||||
|
||||
自动检测项目使用的测试框架:
|
||||
- JavaScript/TypeScript:检查 package.json 中的 jest、vitest、mocha 等
|
||||
- Python:检查 pytest、unittest 等
|
||||
- 如果没有测试框架,询问用户是否需要安装
|
||||
|
||||
#### B2. 逐模块生成测试
|
||||
|
||||
按步骤计划中的模块划分:
|
||||
- 为每个模块生成单元测试
|
||||
- 测试覆盖:正常路径、边界情况、错误路径
|
||||
- 生成测试代码后展示给用户确认
|
||||
|
||||
#### B3. 运行测试
|
||||
|
||||
- 执行生成的测试
|
||||
- 展示测试结果
|
||||
- 失败的测试进入修复循环:修复 → 重新运行 → 直到通过
|
||||
|
||||
#### B4. 测试结果记录
|
||||
|
||||
```markdown
|
||||
## 模块测试详情
|
||||
|
||||
### 测试框架:Vitest
|
||||
|
||||
| 模块 | 测试文件 | 用例数 | 通过 | 失败 |
|
||||
|------|---------|--------|------|------|
|
||||
| 模块A | xxx.test.ts | 5 | 5 | 0 |
|
||||
```
|
||||
|
||||
### 阶段 C:全流程测试
|
||||
|
||||
#### C1. 设计测试场景
|
||||
|
||||
基于需求文档中的用户故事设计端到端测试场景:
|
||||
- 每个用户故事对应至少一个测试场景
|
||||
- 场景应覆盖完整的用户操作流程
|
||||
|
||||
#### C2. 执行全流程测试
|
||||
|
||||
- 按场景逐步验证
|
||||
- 检查模块间的协作是否正常
|
||||
- 验证完整的数据流转
|
||||
- 检查集成点(API 调用、数据库操作等)
|
||||
|
||||
#### C3. 记录结果
|
||||
|
||||
```markdown
|
||||
## 全流程测试详情
|
||||
|
||||
### 场景 1:用户注册流程
|
||||
- 步骤 1:打开注册页 ✅
|
||||
- 步骤 2:填写表单 ✅
|
||||
- 步骤 3:提交注册 ✅
|
||||
- 步骤 4:验证成功 ✅
|
||||
```
|
||||
|
||||
### 生成测试报告
|
||||
|
||||
汇总所有阶段的测试结果:
|
||||
|
||||
```markdown
|
||||
# 测试报告:<项目名称>
|
||||
|
||||
> 创建日期:YYYY-MM-DD
|
||||
> 对应计划:docs/plans/YYYY-MM-DD-xxx.md
|
||||
> 状态:已完成
|
||||
|
||||
## 审核摘要
|
||||
|
||||
| 阶段 | 状态 | 发现问题 | 已修复 |
|
||||
|------|------|---------|--------|
|
||||
| 代码审核 | 完成 | N | N |
|
||||
| 模块测试 | 完成 | N | N |
|
||||
| 全流程测试 | 完成 | N | N |
|
||||
```
|
||||
|
||||
保存到 `docs/test-reports/YYYY-MM-DD-<项目名>.md`,提示下一步可调用 `/dev-deliver` 生成交付文档。
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 代码审核以设计文档为基准,检查实现是否符合设计
|
||||
- 测试失败不跳过,必须修复后重新运行
|
||||
- 全流程测试按用户故事场景组织,确保端到端可运行
|
||||
- 兼容已有的 `automated-testing` 技能(框架检测和模板可复用)
|
||||
@@ -0,0 +1,138 @@
|
||||
---
|
||||
name: dev-workflow
|
||||
description: 自动化开发工作流主控,串联需求→设计→计划→开发→测试→交付全流程
|
||||
---
|
||||
|
||||
# 自动化开发工作流
|
||||
|
||||
> 开发流程总控:管理全流程状态,引导用户按阶段推进,记录进度上下文。
|
||||
|
||||
## 调用方式
|
||||
|
||||
`/dev-workflow`,也可说"开始工作流"或"查看进度"。
|
||||
|
||||
支持指定阶段:`/dev-workflow 需求` 或 `/dev-workflow test`
|
||||
|
||||
## 状态文件
|
||||
|
||||
`docs/workflow-status.md`
|
||||
|
||||
## 执行流程
|
||||
|
||||
### 启动时
|
||||
|
||||
首先读取 `docs/workflow-status.md`(如存在),确定当前阶段和进度。如果不存在,创建新的状态文件。
|
||||
|
||||
### 阶段路由
|
||||
|
||||
根据用户输入或当前状态,引导至对应阶段:
|
||||
|
||||
| 阶段 | Skill 指令 | 说明 |
|
||||
|------|-----------|------|
|
||||
| 需求分析 | `/dev-requirement` | 收集并确认需求 |
|
||||
| 需求审核 | `/dev-review` | 评估相关性、复杂度,决定推进/拒绝/上报 |
|
||||
| 技术设计 | `/dev-design` | 技术选型与架构设计 |
|
||||
| TDD 测试先行 | `/dev-tdd` | 基于设计生成测试骨架(先写测试) |
|
||||
| 步骤分解 | `/dev-plan` | 将开发工作拆解为可执行步骤 |
|
||||
| 开发执行 | `/dev-develop` | 按步骤执行开发,让测试变绿 |
|
||||
| 测试验证 | `/dev-test` | 代码审核、模块测试、全流程测试 |
|
||||
| 交付发布 | `/dev-deliver` | 发布操作 + 生成交付文档 + 收集反馈 |
|
||||
|
||||
### 状态跟踪
|
||||
|
||||
状态文件格式:
|
||||
|
||||
```markdown
|
||||
# 工作流状态
|
||||
|
||||
> 项目:[项目名]
|
||||
> 创建日期:YYYY-MM-DD
|
||||
> 最后更新:YYYY-MM-DD HH:MM
|
||||
|
||||
## 阶段进度
|
||||
|
||||
| 阶段 | 状态 | 完成时间 | 产出文件 |
|
||||
|------|------|---------|---------|
|
||||
| 需求分析 | ⏳ 未开始 / ✅ 已完成 | - | docs/requirements/xxx.md |
|
||||
| 需求审核 | ⏳ 未开始 / ✅ 已通过 / ❌ 已拒绝 / ⏸️ 待决策 | - | docs/reviews/xxx.md |
|
||||
| 技术设计 | ⏳ 未开始 / ✅ 已完成 | - | docs/design/xxx.md |
|
||||
| TDD 测试先行 | ⏳ 未开始 / ✅ 已完成 | - | docs/test-cases/xxx.md |
|
||||
| 步骤分解 | ⏳ 未开始 / ✅ 已完成 | - | docs/plans/xxx.md |
|
||||
| 开发执行 | ⏳ 未开始 / 🔄 进行中 / ✅ 已完成 | - | docs/dev-logs/xxx.md |
|
||||
| 测试验证 | ⏳ 未开始 / ✅ 已完成 | - | docs/test-reports/xxx.md |
|
||||
| 交付发布 | ⏳ 未开始 / ✅ 已完成 | - | docs/deliverables/xxx.md |
|
||||
|
||||
## 当前阶段
|
||||
|
||||
[当前所处阶段及简要说明]
|
||||
|
||||
## 建议下一步
|
||||
|
||||
- [ ] [具体的下一步操作建议]
|
||||
```
|
||||
|
||||
### 阶段完成回调
|
||||
|
||||
每个阶段 skill 执行完成后,自动更新状态文件:
|
||||
- 标记当前阶段为"已完成"
|
||||
- 记录产出文件路径
|
||||
- 推荐下一步 skill
|
||||
|
||||
### 断点续做
|
||||
|
||||
重新调用 `/dev-workflow` 时:
|
||||
- 读取状态文件,定位到上次完成的阶段
|
||||
- 询问用户是继续下一阶段,还是回顾/修改已完成的阶段
|
||||
- 支持用户指定任意阶段重新执行
|
||||
|
||||
### 权限等级检测(启动时)
|
||||
|
||||
工作流启动时检测当前自动批准权限范围,给出等级建议:
|
||||
|
||||
**四个预设等级(配置模板位于 `.claude/permissions/`):**
|
||||
|
||||
| 等级 | 名称 | 自动批准范围 | 适用场景 |
|
||||
|------|------|-------------|---------|
|
||||
| level-1 | 严格模式 | 无,所有操作需确认 | 生产环境、敏感项目 |
|
||||
| level-2 | 标准模式 | 只读操作(Read/Glob/Grep/ls/git status) | 日常查看、低风险 |
|
||||
| level-3 | 开发模式 | 开发常用命令 + 只读 + 编辑 | **本工作流推荐** |
|
||||
| level-4 | 完全自动 | 所有操作 | 仅隔离环境(Docker/worktree) |
|
||||
|
||||
**检测逻辑:**
|
||||
- 检查项目级 `.claude/settings.json` 是否存在
|
||||
- 根据 `permissions.allow` 的数量和范围判断当前等级
|
||||
- 如未配置或等级低于 level-2,提示用户调整
|
||||
|
||||
**切换方式:**
|
||||
|
||||
```bash
|
||||
# 方式一:项目级配置(仅影响本项目,推荐)
|
||||
cp .claude/permissions/level-3-dev.json .claude/settings.json
|
||||
|
||||
# 方式二:用户级配置(影响所有项目)
|
||||
# 手动编辑 ~/.claude/settings.json,在 permissions.allow 中添加允许项
|
||||
```
|
||||
|
||||
**各阶段对权限的需求:**
|
||||
|
||||
| 阶段 | 最小推荐等级 | 原因 |
|
||||
|------|-------------|------|
|
||||
| 需求分析 | level-2 | 主要是读取和提问 |
|
||||
| 需求审核 | level-2 | 读取需求文档,生成审核报告 |
|
||||
| 技术设计 | level-2 | 读取代码、生成设计文档 |
|
||||
| TDD 测试先行 | level-3 | 需要创建测试文件、运行测试框架 |
|
||||
| 步骤分解 | level-2 | 主要是读取和生成计划文档 |
|
||||
| 开发执行 | **level-3** | 需要大量 Edit/Write/Bash(build/test/git) |
|
||||
| 测试验证 | **level-3** | 需要运行测试、生成报告 |
|
||||
| 交付发布 | level-3 | 需要 git tag/push、生成交付文档 |
|
||||
|
||||
> **建议**:使用本工作流时至少配置为 level-3,否则每步操作都需要确认,流程推进效率极低。
|
||||
|
||||
## 关键行为
|
||||
|
||||
- 始终先读取状态,不重复创建已存在的文档
|
||||
- 阶段之间通过 `docs/` 目录传递上下文
|
||||
- 允许用户跳过阶段(用户明确选择时),但记录跳过的原因
|
||||
- 每个阶段结束后更新状态文件,确保进度不丢失
|
||||
- 不强制用户按顺序执行,但默认推荐线性流程
|
||||
- 权限不足时提示用户调整,不强行执行需要确认的操作
|
||||
Reference in New Issue
Block a user