/install gen-code
\r \r
/gen-code - 代码生成技能\r
\r
技能 ID: gen-code\r
技能名称: 代码生成技能\r
版本: 2.6.0\r
描述: 按任务和规范生成高质量代码;支持单任务或任务范围分批生成;支持设计文档驱动自动执行(自动调用gen-tasks);支持新项目生成和遗留项目上下文感知生成;生成前强制执行代码复用检测;生成时强制执行质量门禁检查和任务完成度检查;生成后自动更新任务状态;默认从 docs/coding-specs/ 读取技术规范(与生成规范技能写入路径一致)\r
\r
---\r
\r
触发条件(多格式兼容)\r
\r
格式 1:斜杠命令(推荐用于 Cursor、GitHub Copilot、Codeium)\r
\r
/gen-code # 交互式选择任务\r
/gen-code Task-001 # 单任务\r
/gen-code Task-001..010 # 任务范围,按批生成\r
/gen-code --from-design docs/design/xxx.md # 直接按设计文档执行\r
/gen-code --auto # 自动执行所有任务\r
/gen-code --continue # 继续执行下一个任务\r
```\r
\r
### 格式 2:Skills 前缀(用于支持 /skills 前缀的 AI 助手)\r
\r
```\r
/skills gen-code\r
/skills/gen-code\r
/skills gen-code Task-001\r
```\r
\r
### 格式 3:意图识别(推荐用于 Claude、通义灵码)\r
\r
```\r
生成代码\r
写代码\r
帮我实现这个功能\r
为任务 Task-001 生成代码\r
按设计文档生成代码\r
自动执行所有任务\r
```\r
\r
### 所有触发方式\r
\r
- `/gen-code`\r
- `/gen-code Task-001`(单任务)\r
- `/gen-code Task-001..010`(任务范围,按批生成)\r
- `/gen-code --from-design \x3C设计文档路径>`(直接按设计文档执行)\r
- `/gen-code --auto`(自动执行所有任务)\r
- `/gen-code --continue`(继续执行下一个任务)\r
- `/skills gen-code`\r
- `/skills/gen-code`\r
- `/code`\r
- `生成代码`\r
- `写代码`\r
- `实现功能`\r
- `按设计文档生成代码`\r
\r
## 技能边界(防止误触发)\r
\r
- **本技能适用于**:新项目生成、遗留项目上下文感知生成\r
- **自动检测项目类型**:通过检测 `docs/design/design-line.md` 或 `docs/analysis/codebase-analysis.md` 自动判断是否为遗留项目\r
- **遗留项目**:自动使用上下文感知模式,基于设计主线和代码库分析生成与存量风格一致的代码\r
- **新项目**:使用标准代码生成模式\r
- **设计文档驱动**:支持直接按设计文档依次执行所有功能模块\r
\r
---\r
\r
**文件落盘**:凡写入仓库内文件(含更新 `docs/tasks.md`、生成前后端代码)须遵守 [SKILLS-FILE-OUTPUT.md](../SKILLS-FILE-OUTPUT.md);新项目前后端目录另见下文「检查 0」。\r
\r
---\r
\r
## 输入来源(单一事实来源,强制)\r
\r
`gen-code` 从以下两个来源读取输入,**优先级明确**:\r
\r
### 1. 契约文件(机器可读,优先)\r
\r
若采用契约驱动开发,优先读取机器可读的 YAML 契约文件:\r
\r
| 契约文件 | 路径 | 用途 | 读取时机 |\r
|---------|------|------|---------|\r
| **数据库契约** | `docs/contracts/database-contract.yaml` | 表结构、字段定义、索引、外键 | 数据层任务(Entity/Mapper/SQL) |\r
| **接口契约** | `docs/contracts/api-contract.yaml` | API 路径、请求/响应定义、错误码 | 接口层任务(Controller/前端 API) |\r
\r
**读取规则**:\r
- **若契约文件存在**:优先使用 YAML 契约(结构精确,无歧义)\r
- **若契约文件不存在**:降级使用设计文档 + 技术规范\r
\r
### 2. 技术规范(人类可读,风格标准)\r
\r
`gen-coding-specs` 生成的技术规范,定义编码风格和标准:\r
\r
| 项 | 路径 | 用途 |\r
|----|------|------|\r
| **根目录** | `docs/coding-specs/`(相对仓库根) |\r
| **索引** | `docs/coding-specs/coding.index.md` | 技术栈概览、规范分册列表 |\r
| **分册** | `coding.api.md`、`coding.architecture.md`、`coding.data-models.md`、`coding.vue.md`、`coding.coding-style.md`、`coding.testing.md`、`coding.security.md`、`coding.performance.md`、`coding.documentation.md`、`coding.code-review.md`、`coding.version-control.md` | 按任务类型读取对应分册 |\r
\r
**读取规则**:\r
- **必须读取**:`coding.index.md`(确认技术栈)\r
- **按需读取**:按任务类型读取对应分册(如数据层任务读 `coding.data-models.md`)\r
\r
### 3. 来源优先级与分工\r
\r
| 信息类型 | 来源 | 优先级 | 说明 |\r
|---------|------|--------|------|\r
| 表名、字段名、类型 | `database-contract.yaml` | 🔴 高 | 精确结构定义 |\r
| 表命名风格(下划线/驼峰) | `coding.data-models.md` | 🟡 中 | 风格规范 |\r
| API 路径、参数、响应 | `api-contract.yaml` | 🔴 高 | 精确接口定义 |\r
| 接口风格(POST/GET、URL 格式) | `coding.api.md` | 🟡 中 | 风格规范 |\r
| 代码格式、命名规范 | `coding.coding-style.md` | 🟡 中 | 编码风格 |\r
| 测试要求 | `coding.testing.md` | 🟡 中 | 测试规范 |\r
\r
**缺失时的处理**:\r
\r
- 若 `docs/coding-specs/` 不存在,或缺少 `coding.index.md`:输出提示 **先执行 `/gen-coding-specs`(或等价技能)生成技术规范**;仅在用户明确选择「跳过规范、高风险继续」时方可仅依赖设计文档与任务描述生成代码。\r
- 若 `docs/contracts/` 不存在:自动降级使用设计文档中的定义(非契约驱动模式)\r
\r
---\r
\r
## 前置条件\r
\r
- 任务列表已生成,或用户已提供清晰的任务描述\r
- **遗留项目**:建议先执行 `/analyze --phase=deep` 生成设计主线,以获得最佳生成效果\r
- **任务范围说明**:支持 `Task-001..010` 形式指定范围,将按批生成(默认每批 3 个任务,可询问用户调整)\r
\r
---\r
\r
## 前置检查(增强版)\r
\r
### 检查 0:新项目仓库布局与前后端目录(强制,空仓库 / 前后端分离)\r
\r
**问题背景**:从零创建的空仓库通常没有 `src/main/java` 或独立的前后端工程根目录;若仍按单体路径生成,会导致前后端代码混在同一层级或写入失败。\r
\r
**适用条件**(满足任一即执行本检查):\r
- 判定为**新项目**(未检测到 `docs/design/design-line.md` 且未检测到 `docs/analysis/codebase-analysis.md`),且\r
- PRD/设计文档/任务描述为**前后端分离**(如 Vue + Spring Boot、React + Node),或任务类型列含「前端」「后端」「接口层」「页面」等需分端落位的信息。\r
\r
**执行步骤**:\r
\r
1. **读取目录约定**(按优先级) \r
- 优先从 `docs/design/*.md` 的 **「仓库与代码目录结构」**(或等价小节)读取 `frontendRoot` / `backendRoot`(或表格中的前端根目录、后端根目录)。 \r
- 若设计文档未写明:从 PRD「技术栈/部署」推断为前后端分离时,**询问用户一次**确认根目录命名,或使用下列**默认约定**(二选一须在后续任务中保持一致): \r
- **默认 A**:`frontend/`(前端 SPA)、`backend/`(后端 API) \r
- **默认 B**:`web/`、`server/`(若用户更习惯短名)\r
\r
2. **创建目录(必须先于写文件)**\r
- 若 `frontendRoot` 或 `backendRoot` 对应路径在仓库中**不存在**,**必须先创建**该目录(及后续代码所需的最小子路径,例如 `frontend/src`、`backend/src/main/java` 等,按技术栈惯例)。\r
- **禁止**在父目录不存在时直接写深层文件;**禁止**因未建目录而仅输出代码到对话中。\r
\r
2.5. **项目脚手架初始化(基于技术栈,强制)**\r
\r
**问题背景**:新项目空仓库即使创建了目录结构,也缺少 `pom.xml`、`package.json` 等项目配置文件,导致生成的代码无法构建和运行。本步骤根据设计文档中的技术栈自动生成对应的项目脚手架。\r
\r
**触发条件**(前后端独立判断):\r
- 后端:`{backendRoot}` 不存在 **任何** 项目配置文件(`pom.xml` / `build.gradle` / `requirements.txt` / `go.mod`)\r
- 前端:`{frontendRoot}` 不存在 `package.json`\r
\r
**技术栈识别**(按优先级):\r
1. `docs/coding-specs/coding.index.md` → 「技术栈概览」小节\r
2. `docs/design/*.md` → 设计文档中的技术栈定义\r
3. 向用户确认\r
\r
**支持的后端技术栈**:\r
\r
| 技术栈 | 识别特征 | 脚手架产物 |\r
|--------|---------|-----------|\r
| Spring Boot 3 + Maven | spring-boot-starter | pom.xml、Application.java、application.yml(dev/prod)、CorsConfig、Result、PageResult、GlobalExceptionHandler、.gitignore |\r
| Spring Boot 3 + Gradle | build.gradle | build.gradle、settings.gradle、同上配置与代码文件 |\r
| Python + FastAPI | fastapi | requirements.txt、main.py、config.py、models/、api/、routers/、.gitignore |\r
| Python + Django | django | requirements.txt、manage.py、settings.py、urls.py、wsgi.py、apps/、.gitignore |\r
| Python + Flask | flask | requirements.txt、app.py、config.py、blueprints/、.gitignore |\r
| Node.js + Express | express | package.json、tsconfig.json、src/app.ts、src/routes/、src/middleware/、.gitignore |\r
| Go + Gin | gin | go.mod、main.go、config/、handler/、model/、middleware/、.gitignore |\r
\r
**支持的前端技术栈**:\r
\r
| 技术栈 | 识别特征 | 脚手架产物 |\r
|--------|---------|-----------|\r
| Vue 3 + Vite + TypeScript | vue + vite | package.json、vite.config.ts、tsconfig.json、index.html、main.ts、App.vue、router/、stores/、api/request.ts、.env.development、.gitignore |\r
| React + Vite + TypeScript | react + vite | package.json、vite.config.ts、tsconfig.json、index.html、main.tsx、App.tsx、router/、api/request.ts、.env.development、.gitignore |\r
| Vue 3 + Vite + JavaScript | vue(无 TS) | 同 Vue 3 TS 但去掉 tsconfig.json,使用 .js 文件 |\r
\r
**生成规则**:\r
- 版本号从 `coding.index.md` 读取(如 Spring Boot 3.2.x、Vue 3.3.x)\r
- 包名 / GroupId 从设计文档读取(如 `com.example.points`),或询问用户确认\r
- 配置文件内容基于项目定制:数据库/Redis 连接从设计文档读取、代理目标从 API 地址读取\r
- 前后端可独立触发(纯后端项目不生成前端脚手架)\r
\r
**防重复**:生成后在 `{root}/.scaffold-initialized` 写入时间戳,后续任务检测到该文件则跳过。\r
\r
**输出确认示例**:\r
```\r
检测到新项目,需要初始化项目脚手架。\r
\r
**技术栈识别**:\r
- 后端:Spring Boot 3.2 + MyBatis-Plus 3.5 + MySQL 8.0 + Redis 7.x\r
- 前端:Vue 3.3 + TypeScript + Vite 5.x + Ant Design Vue 4.x + Pinia\r
\r
将生成后端脚手架(backend/)和前端脚手架(frontend/),具体文件清单见 [prompt.md 脚手架模板]。\r
是否确认生成?\r
Y) 确认 N) 修改技术栈 C) 跳过(不推荐,项目将无法构建)\r
```\r
\r
**脚手架模板的完整定义**见 [prompt.md](./prompt.md)「项目脚手架初始化」节。\r
\r
3. **路径映射规则**(生成时严格遵守) \r
- **后端**:Java/Kotlin Controller、Service、Mapper、Entity、SQL 脚本、Spring 配置等 → 写入 **backendRoot** 下(保持包路径 `src/main/java/...`)。 \r
- **前端**:Vue/React 页面、组件、`api/` 调用封装、路由、样式等 → 写入 **frontendRoot** 下。 \r
- **任务表驱动**:若 `docs/tasks.md` 中任务标注了「类型:后端 / 前端 / 数据层」或 `layer: backend|frontend`,必须与上述根目录一致;若任务写错层级,应先提醒用户或按设计文档纠正再生成。\r
\r
4. **与存量项目的区别** \r
- **存量项目**:以现有工程结构为准(上下文感知),不强行改为 `frontend/` + `backend/`,除非设计文档明确要求迁移。 \r
- **新项目 + 前后端分离**:必须遵循本节,避免混用仓库根下单一 `src/` 表示全栈。\r
\r
5. **自检清单(写入每个文件前)**\r
- [ ] 已确定 `frontendRoot` 与 `backendRoot`(来自设计文档或用户确认或默认约定)\r
- [ ] 根目录已存在或已创建\r
- [ ] 项目脚手架已初始化(pom.xml / package.json 等配置文件已生成,或已存在)\r
- [ ] 当前任务属于前端或后端之一,路径前缀正确 \r
\r
---\r
\r
### 检查 1:存量项目检测(强制)\r
\r
**检测逻辑**:\r
```\r
IF (docs/design/design-line.md EXISTS OR docs/analysis/codebase-analysis.md EXISTS) THEN\r
判定为存量项目\r
输出提示:「检测到当前项目为存量项目(已存在设计主线或代码库分析报告)」\r
给出选项:\r
A) 仍使用 /gen-code(自动启用上下文感知模式,确保与现有架构一致)\r
B) 强制使用标准模式(不推荐,可能产生边界违规)\r
\r
IF 用户选择 B THEN\r
输出警告:「⚠️ 警告:在存量项目中使用 /gen-code 可能导致:\r
- 违反服务边界(跨服务访问数据库或内部实现)\r
- 违反微前端边界(破坏子应用独立性)\r
- 与现有代码风格不一致\r
- 产生技术债务\r
\r
是否确认继续?(建议先阅读 docs/design/design-line.md)」\r
\r
IF 用户再次确认 THEN\r
继续执行,但在生成代码时增加边界检查\r
ELSE\r
终止,建议使用 /gen-code(自动检测为遗留项目)\r
ELSE\r
终止,建议使用 /gen-code(自动检测为遗留项目)\r
```\r
\r
### 检查 2:设计文档检查(强制)\r
\r
**检测逻辑**:\r
```\r
IF (用户按任务编号生成 AND 未提供设计文档路径) THEN\r
检查 docs/design/ 下是否存在设计文档\r
\r
IF (设计文档不存在) THEN\r
输出提示:「⚠️ 未找到设计文档,无法读取数据流与集成契约」\r
给出选项:\r
A) 先执行 /gen-design 生成设计文档(推荐)\r
B) 提供设计文档路径\r
C) 跳过设计文档检查,基于任务描述生成(不推荐)\r
\r
IF 用户选择 C THEN\r
输出警告:「⚠️ 警告:跳过设计文档检查可能导致:\r
- 数据流与整体架构不一致\r
- 集成点未正确实现\r
- 产生技术债务\r
\r
是否确认继续?」\r
\r
IF 用户再次确认 THEN\r
继续执行,但标记为「高风险生成」\r
ELSE\r
终止,建议用户先执行 /gen-design\r
ELSE\r
从设计文档读取数据流与集成契约\r
```\r
\r
### 检查 3:设计验证检查(推荐)\r
\r
**检测逻辑**:\r
```\r
IF (设计文档存在) THEN\r
检查是否已执行设计验证(查看 docs/reviews/ 下是否有验证报告)\r
\r
IF (设计验证未执行) THEN\r
输出提示:「💡 建议先执行 /validate --mode=dataflow 验证设计文档」\r
给出选项:\r
A) 先执行 /validate --mode=dataflow(推荐)\r
B) 跳过验证,直接生成代码\r
\r
IF 用户选择 B THEN\r
输出提示:「好的,将跳过设计验证直接生成代码。若后续发现设计问题,可能需要重新生成。」\r
```\r
\r
### 检查 4:任务 - 数据流映射检查(推荐)\r
\r
**检测逻辑**:\r
```\r
IF (docs/tasks.md 存在) THEN\r
检查任务是否标注所属数据流(dataflow: DF-XXX)\r
\r
IF (任务未标注数据流) THEN\r
输出提示:「💡 任务未标注所属数据流,可能导致生成的代码与整体数据流不一致」\r
给出选项:\r
A) 先执行 /gen-tasks 重新生成任务列表(推荐)\r
B) 手动指定数据流编号\r
C) 跳过检查,直接生成代码\r
\r
IF 用户选择 C THEN\r
输出提示:「好的,将跳过数据流映射检查直接生成代码。」\r
```\r
\r
---\r
\r
## 阻断策略说明\r
\r
**P0 阻断(必须修复)**:\r
- 存量项目未确认边界约束 → 阻断\r
- 设计文档不存在且用户拒绝生成 → 阻断\r
\r
**P1 阻断(强烈建议修复)**:\r
- 设计验证未执行 → 警告,用户确认后可继续\r
- 任务未标注数据流 → 警告,用户确认后可继续\r
\r
**P2 提示(可选修复)**:\r
- 代码风格与存量不一致 → 提示,生成后建议 review\r
\r
---\r
\r
## 上下文感知模式\r
\r
### 自动检测\r
\r
技能会自动检测项目类型:\r
\r
```\r
检测到当前项目为遗留项目(已存在设计主线或代码库分析报告)。\r
将自动启用上下文感知模式,基于现有架构和代码风格生成代码。\r
\r
设计主线: docs/design/design-line.md\r
代码分析: docs/analysis/codebase-analysis.md\r
\r
是否继续?\r
```\r
\r
### 上下文感知生成规则\r
\r
在上下文感知模式下,生成的代码将遵循:\r
\r
1. **风格一致性**\r
- 命名风格(驼峰/下划线)\r
- 代码格式(缩进、换行、括号)\r
- 注释风格(Javadoc/行内注释)\r
- 日志规范\r
\r
2. **架构一致性**\r
- 分层结构(Controller/Service/Repository)\r
- 设计模式(策略、工厂等)\r
- 异常处理方式\r
- 事务处理机制\r
\r
3. **技术栈一致性**\r
- 使用项目已有的依赖库\r
- 遵循项目配置(Spring、数据库等)\r
- 使用项目的工具类\r
- 遵循安全规范\r
\r
4. **边界约束**\r
- **服务边界**:微服务架构下,不跨服务直接访问其他服务的数据库或内部实现\r
- **微前端边界**:微前端架构下,不破坏子应用边界\r
\r
---\r
\r
## 技能行为\r
\r
### 任务范围(分批)模式(仅当用户指定 Task-XXX..YYY 时)\r
\r
当用户指定任务范围(如 `/gen-code Task-001..010`)时:\r
\r
1. **解析范围**:从 `docs/tasks.md` 确认 Task-001 至 Task-010 存在且顺序明确。\r
2. **分批计划**:默认每批 3 个任务(可询问用户「分批大小:3 个任务/批,是否修改?」),输出分批计划。\r
3. **确认后按批执行**:每批内对每个任务依次执行「阶段零」→「阶段一」→「阶段二」→「阶段二点五」→「阶段三」,完成一批后询问「是否继续下一批?」直至全部完成。\r
\r
### 设计文档驱动模式\r
\r
当用户使用 `/gen-code --from-design docs/design/xxx-design.md` 时:\r
\r
**功能**:直接按设计文档依次执行所有功能模块,自动调用 gen-tasks 生成任务列表。\r
\r
**核心改进(v2.4)**:\r
- **不再自己生成执行计划**,而是调用 gen-tasks 生成标准任务列表\r
- 复用 gen-tasks 的实现点清单,确保任务完成度检查正常工作\r
- 任务列表格式与手动执行 /gen-tasks 完全一致\r
\r
**执行流程**:\r
\r
```\r
/gen-code --from-design docs/design/points-design.md\r
│\r
▼\r
┌───────────────────────┐\r
│ 阶段一:前置检查 │\r
│ - 检查设计文档存在 │\r
│ - 检查设计验证报告 │\r
└───────────┬───────────┘\r
│\r
▼\r
┌───────────────────────┐\r
│ 阶段二:调用 gen-tasks│ ← 复用 gen-tasks 能力\r
│ - 生成标准任务列表 │\r
│ - 包含实现点清单 │\r
│ - 包含功能单元划分 │\r
└───────────┬───────────┘\r
│\r
▼\r
┌───────────────────────┐\r
│ 阶段三:用户确认 │\r
│ - 展示任务列表 │\r
│ - 确认是否开始执行 │\r
└───────────┬───────────┘\r
│\r
▼\r
┌───────────────────────┐\r
│ 阶段四:依次执行任务 │\r
│ - 代码复用检测 │\r
│ - 生成代码 │\r
│ - 完成度检查 │\r
│ - 更新任务状态 │ ← v2.4 新增\r
│ - 质量门禁检查 │\r
│ - 自动进入下一任务 │\r
└───────────┬───────────┘\r
│\r
▼\r
┌───────────────────────┐\r
│ 阶段五:完成报告 │\r
│ - 汇总所有任务结果 │\r
│ - 列出遗留问题 │\r
│ - 提供下一步建议 │\r
│ - 更新任务列表状态 │ ← v2.4 新增\r
└───────────────────────┘\r
```\r
\r
**输出示例**:\r
\r
```\r
正在检查设计文档...\r
\r
✅ 设计文档存在:docs/design/points-design.md\r
✅ 设计验证通过:docs/reviews/points-design-validation.md\r
\r
正在调用 gen-tasks 生成任务列表...\r
\r
**任务列表已生成**(docs/tasks.md)\r
\r
## 功能单元概览\r
| 功能单元 | 描述 | 任务数 | 状态 |\r
|----------|------|--------|------|\r
| FU-001 | 积分获取 | 6 | ⏳ 待执行 |\r
| FU-002 | 积分消费 | 4 | ⏳ 待执行 |\r
| FU-003 | 积分查询 | 3 | ⏳ 待执行 |\r
\r
## 任务列表\r
| 序号 | 任务编号 | 任务名称 | 类型 | 工时 | 依赖 | 状态 |\r
|------|----------|----------|------|------|------|------|\r
| 1 | Task-001 | 积分表设计 | 数据层 | 2h | - | ⏳ 待执行 |\r
| 2 | Task-002 | 积分实体与Mapper | 数据层 | 4h | Task-001 | ⏳ 待执行 |\r
| 3 | Task-003 | 积分计算服务 | 业务层 | 4h | Task-002 | ⏳ 待执行 |\r
| 4 | Task-004 | 积分API实现 | 接口层 | 4h | Task-003 | ⏳ 待执行 |\r
| 5 | Task-005 | 积分展示组件 | 前端 | 3h | Task-004 | ⏳ 待执行 |\r
| 6 | Task-006 | FU-001集成测试 | 集成 | 4h | Task-001~005 | ⏳ 待执行 |\r
\r
**总任务数**:13(含集成任务)\r
**预计总工时**:42h\r
\r
是否开始执行?\r
A) 开始执行所有任务(推荐)\r
B) 选择部分任务执行\r
C) 查看详细任务清单(含实现点)\r
```\r
\r
**执行过程**:\r
\r
```\r
正在执行任务 [1/13]:Task-001 积分表设计\r
\r
[阶段零:代码复用检测]\r
检测到可复用组件:DateUtils、StringUtils、Result\r
是否复用? A) 确认 B) 说明原因\r
\r
[阶段一:任务上下文确认]\r
任务描述:设计用户积分表结构\r
所属数据流:DF-002 积分获取与扣减流\r
所属功能单元:FU-001 积分获取\r
\r
实现点清单:\r
- [ ] IP-001: 创建 points_balance 表\r
- [ ] IP-002: 创建 points_record 表\r
- [ ] IP-003: 设计索引(user_id, created_at)\r
- [ ] IP-004: 添加外键约束\r
\r
[阶段二:生成代码]\r
✅ 已生成:V1__create_points_tables.sql\r
\r
[阶段二点五:任务完成度检查]\r
实现点完成度:100%(4/4)\r
✅ 任务完成度检查通过\r
\r
[阶段三:代码质量门禁检查]\r
✅ 质量门禁检查通过\r
\r
[阶段四:更新任务状态] ← v2.4 新增\r
✅ 已更新 docs/tasks.md:Task-001 状态 → ✅ 已完成\r
\r
────────────────────────────────────\r
\r
正在执行任务 [2/13]:Task-002 积分实体与Mapper\r
...\r
\r
────────────────────────────────────\r
\r
正在执行任务 [13/13]:Task-013 FU-003集成测试\r
...\r
\r
────────────────────────────────────\r
\r
**执行完成报告**\r
\r
## 执行概览\r
- 总任务数:13\r
- 成功:11\r
- 部分完成:1\r
- 失败:0\r
- 跳过:1\r
- 总耗时:约 38h\r
\r
## 任务执行详情\r
| 任务 | 状态 | 完成度 | 备注 |\r
|------|------|--------|------|\r
| Task-001 | ✅ 已完成 | 100% | - |\r
| Task-002 | ✅ 已完成 | 100% | - |\r
| Task-003 | ✅ 已完成 | 100% | - |\r
| Task-004 | ⚠️ 部分完成 | 85% | 缺少异常处理 |\r
| Task-005 | ✅ 已完成 | 100% | - |\r
| Task-006 | ✅ 已完成 | 100% | - |\r
| ... | ... | ... | ... |\r
\r
## 遗留问题\r
1. Task-004 积分API实现缺少异常处理(建议补充)\r
2. 建议执行 /validate --mode=integration 进行完整集成验证\r
\r
## 下一步建议\r
1. 补充积分API异常处理\r
2. 执行 /review-code src/ 进行代码审查\r
3. 执行 /gen-test src/ 生成测试用例\r
```\r
\r
### 自动执行模式(v2.4 新增)\r
\r
当用户使用 `/gen-code --auto` 时:\r
\r
**功能**:自动读取任务列表并依次执行所有任务。\r
\r
**执行流程**:\r
\r
```\r
/gen-code --auto\r
│\r
▼\r
┌───────────────────────┐\r
│ 读取 docs/tasks.md │\r
│ 识别所有任务 │\r
└───────────┬───────────┘\r
│\r
▼\r
┌───────────────────────┐\r
│ 检查已完成任务 │\r
│ 确定起始任务 │\r
└───────────┬───────────┘\r
│\r
▼\r
┌───────────────────────┐\r
│ 依次执行未完成任务 │\r
│ - 代码复用检测 │\r
│ - 生成代码 │\r
│ - 完成度检查 │\r
│ - 质量门禁检查 │\r
│ - 更新任务状态 │\r
└───────────┬───────────┘\r
│\r
▼\r
┌───────────────────────┐\r
│ 遇到问题暂停 │\r
│ 用户确认后继续 │\r
└───────────────────────┘\r
```\r
\r
**输出示例**:\r
\r
```\r
正在读取任务列表...\r
\r
**任务列表概览**\r
- 总任务数:13\r
- 已完成:3\r
- 待执行:10\r
\r
**待执行任务**\r
| 序号 | 任务编号 | 任务名称 | 状态 |\r
|------|----------|----------|------|\r
| Task-004 | 积分计算服务 | ⏳ 待执行 |\r
| Task-005 | 积分API实现 | ⏳ 待执行 |\r
| Task-006 | 积分展示组件 | ⏳ 待执行 |\r
| ... | ... | ... |\r
\r
是否开始自动执行?\r
A) 开始执行(推荐)\r
B) 从指定任务开始\r
C) 查看详细任务清单\r
```\r
\r
### 继续执行模式(v2.4 新增)\r
\r
当用户使用 `/gen-code --continue` 时:\r
\r
**功能**:继续执行下一个待执行的任务。\r
\r
**适用场景**:\r
- 上次执行中断后继续\r
- 单任务执行后想继续下一个\r
- 逐步执行任务\r
\r
**输出示例**:\r
\r
```\r
正在查找下一个待执行任务...\r
\r
**下一个任务**\r
- 任务编号:Task-004\r
- 任务名称:积分计算服务\r
- 所属功能单元:FU-001 积分获取功能\r
\r
是否开始执行?\r
A) 开始执行 B) 跳过此任务 C) 查看任务详情\r
```\r
\r
### 阶段零:代码复用检测(v2.4 新增,强制执行)\r
\r
**重要**:在生成代码前,必须先执行代码复用检测,确保不会重复造轮子。\r
\r
**检测内容**:\r
1. **可复用组件检测**:扫描项目中的工具类、基础组件、业务服务\r
2. **相似代码检测**:检测与当前任务功能相似的现有代码\r
3. **现有依赖检测**:分析项目已有依赖,避免引入重复依赖\r
\r
**输出示例**:\r
```\r
正在执行代码复用检测...\r
\r
**可复用组件检测报告**\r
\r
## 检测概览\r
- 扫描目录:src/\r
- 检测到可复用组件:23 个\r
- 与当前任务相关:5 个\r
\r
## 推荐复用组件\r
\r
### 工具类(强烈推荐复用)\r
\r
| 组件名 | 路径 | 功能描述 | 复用建议 |\r
|--------|------|----------|----------|\r
| DateUtils | src/main/java/com/example/util/DateUtils.java | 日期格式化、解析 | ⭐ 直接使用 |\r
| StringUtils | src/main/java/com/example/util/StringUtils.java | 字符串处理 | ⭐ 直接使用 |\r
| EncryptUtils | src/main/java/com/example/util/EncryptUtils.java | MD5/AES加密 | ⭐ 直接使用 |\r
\r
### 基础组件(必须使用)\r
\r
| 组件名 | 路径 | 功能描述 | 复用建议 |\r
|--------|------|----------|----------|\r
| Result | src/main/java/com/example/common/Result.java | 统一响应类 | ⭐ 必须使用 |\r
| PageResult | src/main/java/com/example/common/PageResult.java | 分页响应类 | ⭐ 必须使用 |\r
| GlobalExceptionHandler | src/main/java/com/example/exception/GlobalExceptionHandler.java | 全局异常处理 | ⭐ 必须使用 |\r
\r
### 相似代码检测\r
\r
| 相似代码 | 相似度 | 建议 |\r
|----------|--------|------|\r
| PointsService.java | 85% | 可参考现有积分计算逻辑 |\r
| OrderService.java | 60% | 可参考订单处理流程 |\r
\r
## 禁止重复实现\r
\r
⚠️ 以下组件已存在,**禁止重新实现**:\r
\r
1. **DateUtils** - 已有日期工具类,禁止新建 DateUtil、DateHelper 等\r
2. **StringUtils** - 已有字符串工具类,禁止新建 StringHelper 等\r
3. **Result** - 已有统一响应类,禁止新建 Response、ApiResponse 等\r
\r
## 复用确认\r
\r
请确认以下事项:\r
- [ ] 我已阅读可复用组件清单\r
- [ ] 我将在代码中使用现有工具类\r
- [ ] 我不会重新实现已存在的组件\r
\r
是否确认?\r
A) 确认,开始生成代码\r
B) 我有特殊原因需要重写(需说明)\r
C) 查看更多详情\r
```\r
\r
**强制阻断规则**:\r
\r
| 情况 | 处理 |\r
|------|------|\r
| 检测到可复用工具类但用户选择重写 | 阻断,要求说明原因 |\r
| 检测到相似度 > 80% 的代码 | 阻断,要求确认是否复用 |\r
| 尝试引入禁止依赖 | 阻断,要求使用替代方案 |\r
\r
### 阶段一:任务上下文确认(含契约文件读取)\r
\r
若存在设计文档(`docs/design/*.md`),**必须**先从中读取「数据流主线」「集成点清单」。\r
若存在契约文件(`docs/contracts/*.yaml`),**必须优先读取**契约文件中的精确结构定义。\r
\r
```\r
正在分析 Task-001:用户积分表设计\r
\r
**任务描述**:\r
设计用户积分表结构,包括字段定义、索引设计。\r
\r
**数据流与集成契约**(从设计文档读取):\r
- 所属数据流:DF-001 积分获取流\r
- 所属功能单元:FU-001 积分管理\r
- 上游输入:用户签到事件\r
- 下游输出:积分余额更新、积分流水记录\r
\r
**契约文件检测**:\r
- ✅ 检测到数据库契约:docs/contracts/database-contract.yaml\r
- 表定义:points_balance、points_record\r
- 字段数:6 字段 + 9 字段\r
- 索引定义:3 个索引\r
- ✅ 检测到接口契约:docs/contracts/api-contract.yaml\r
- API 定义:3 个接口(GET /api/points/balance、POST /api/points/sign-in、...)\r
\r
**实现点清单**(来自 gen-tasks):\r
- [ ] IP-001: 创建 points_balance 表(对照契约:6 字段)\r
- [ ] IP-002: 创建 points_record 表(对照契约:9 字段)\r
- [ ] IP-003: 设计索引(idx_user_id、idx_created_at)\r
- [ ] IP-004: 添加外键约束(fk_user → user.id)\r
\r
**验收标准**:\r
- 表结构与契约文件一致(优先)或设计文档一致(无契约时)\r
- 索引覆盖常用查询\r
- 字段类型与契约定义的 javaType 一致\r
\r
**技术栈确认**:\r
- ✅ 前端:Vue 3 + Ant Design Vue\r
- ✅ 后端:Spring Boot 3 + MyBatis-Plus\r
- ✅ AI 能力:LangChain4j(如需要)\r
\r
**技术规范(已读文件)**:\r
- ✅ `docs/coding-specs/coding.index.md`(技术栈概览)\r
- ✅ `docs/coding-specs/coding.data-models.md`(数据模型规范:命名风格、索引规范)\r
- ✅ `docs/coding-specs/coding.coding-style.md`(编码风格:Java 命名规范)\r
\r
**数据来源优先级**:\r
1. **结构定义**(表名、字段名、类型):使用 `database-contract.yaml`(机器可读,精确)\r
2. **命名风格**(下划线/驼峰):遵循 `coding.data-models.md`(人类可读,风格)\r
3. **代码格式**:遵循 `coding.coding-style.md`\r
\r
**项目类型**:遗留项目(自动启用上下文感知模式)\r
- 设计主线:docs/design/design-line.md\r
- 代码分析:docs/analysis/codebase-analysis.md\r
\r
生成代码时将遵循上述数据流、契约定义与技术规范,并保持与现有代码风格一致。是否按此设计生成代码?\r
```\r
\r
### 阶段二:生成代码\r
\r
根据项目类型选择生成模式:\r
\r
**新项目模式**:\r
- 使用标准技术栈和最佳实践\r
- 遵循默认编码规范\r
\r
**遗留项目模式(上下文感知)**:\r
- 读取设计主线和代码库分析\r
- 学习现有代码风格\r
- 生成与存量风格一致的代码\r
\r
```\r
正在生成代码...\r
\r
✅ 已生成以下文件:\r
\r
【后端代码】\r
**实体类**:\r
- src/main/java/com/example/points/entity/PointsBalance.java\r
\r
**Mapper 接口**:\r
- src/main/java/com/example/points/mapper/PointsBalanceMapper.java\r
\r
**Service 层**:\r
- src/main/java/com/example/points/service/PointsService.java\r
- src/main/java/com/example/points/service/impl/PointsServiceImpl.java\r
\r
**Controller 层**:\r
- src/main/java/com/example/points/controller/PointsController.java\r
\r
**配置文件**:\r
- src/main/resources/application.yml\r
- src/main/resources/mapper/PointsBalanceMapper.xml\r
\r
【前端代码】(如需要)\r
**Vue 组件**:\r
- src/views/points/PointsQuery.vue\r
- src/api/points.ts\r
\r
**单元测试**:\r
- src/test/java/com/example/points/mapper/PointsBalanceMapperTest.java\r
```\r
\r
### 阶段二点五:任务完成度检查\r
\r
**重要**:生成代码后,必须对照实现点清单检查任务完成度。完成度 \x3C 80% 必须补充实现。\r
\r
```\r
正在执行任务完成度检查...\r
\r
**实现点完成情况**:\r
\r
| 实现点 | 状态 | 说明 |\r
|--------|------|------|\r
| IP-001: 创建 points_balance 表 | ✅ 已完成 | V1__create_points_tables.sql |\r
| IP-002: 创建 points_record 表 | ✅ 已完成 | V1__create_points_tables.sql |\r
| IP-003: 设计索引(user_id, created_at) | ✅ 已完成 | 已添加索引 |\r
| IP-004: 添加外键约束 | ✅ 已完成 | 已添加外键 |\r
\r
**完成度统计**:\r
- 总实现点:4\r
- 已完成:4\r
- 未完成:0\r
- 完成度:100%\r
\r
✅ 任务完成度检查通过(≥ 80%)\r
\r
**若完成度 \x3C 80%**:\r
```\r
⚠️ 任务完成度检查未通过\r
\r
**完成度统计**:\r
- 总实现点:4\r
- 已完成:2\r
- 未完成:2\r
- 完成度:50%(\x3C 80%)\r
\r
**未完成的实现点**:\r
- IP-003: 设计索引(user_id, created_at)\r
- IP-004: 添加外键约束\r
\r
正在自动补充遗漏的实现点...\r
\r
补充完成后重新检查...\r
```\r
\r
### 阶段三:代码质量门禁检查(生成后必须执行)\r
\r
**重要**:生成代码后,必须执行以下质量门禁检查。任何 P0 检查项不通过,必须重新生成代码。\r
\r
```\r
正在执行代码质量门禁检查...\r
\r
**P0 强制检查项**:\r
\r
□ 复杂度检查\r
- 方法长度 ≤ 80 行\r
- 嵌套深度 ≤ 3 层\r
- 参数数量 ≤ 5 个\r
- 圈复杂度 ≤ 10\r
\r
□ 安全检查\r
- SQL 使用 #{} 而非 ${}(防止注入)\r
- 无 XSS 漏洞(用户输入已转义)\r
- 无敏感信息硬编码(密码、密钥等)\r
- 接口有权限控制\r
\r
□ 空指针防护\r
- 外部输入有 null 检查\r
- 集合操作前有判空\r
- Optional 使用正确\r
\r
□ 事务正确性\r
- 多表操作在事务中\r
- 事务范围合理(无远程调用在事务内)\r
- 异常回滚配置正确\r
\r
□ 测试覆盖\r
- 核心业务逻辑有测试\r
- 异常分支有测试\r
\r
**P1 设计一致性检查**:\r
\r
□ 接口一致性\r
- API 路径与设计文档一致\r
- 请求/响应字段与设计一致\r
\r
□ 数据一致性\r
- 数据库字段与设计一致\r
- 数据类型与设计一致\r
\r
□ 数据流一致性\r
- 输入来源与设计一致\r
- 输出目标与设计一致\r
- 集成点实现正确\r
\r
□ 上下文一致性(遗留项目模式)\r
- 代码风格与现有项目一致\r
- 架构分层与现有项目一致\r
- 命名规范与现有项目一致\r
```\r
\r
### 阶段四:更新任务状态\r
\r
**重要**:任务执行完成后,必须更新 docs/tasks.md 中的任务状态。\r
\r
```\r
正在更新任务状态...\r
\r
✅ 已更新 docs/tasks.md:\r
- Task-001 状态:⏳ 待执行 → ✅ 已完成\r
- 完成度:100%\r
- 完成时间:2026-03-07 14:30:00\r
\r
**当前进度**:\r
- 总任务数:13\r
- 已完成:1\r
- 待执行:12\r
- 完成率:7.7%\r
```\r
\r
### 阶段五:代码健康度评分\r
\r
```\r
**代码健康度评分**:\r
\r
| 维度 | 得分 | 说明 |\r
|------|------|------|\r
| 可读性 | 95/100 | 命名清晰,注释完整 |\r
| 可维护性 | 88/100 | 方法适中,结构清晰 |\r
| 安全性 | 100/100 | 无安全风险 |\r
| 测试覆盖 | 90/100 | 核心路径已覆盖 |\r
| 复杂度 | 92/100 | 整体简洁 |\r
| 上下文一致性 | 96/100 | 与现有项目风格一致(遗留项目模式) |\r
\r
**综合得分**:93/100 (A)\r
\r
✅ 质量门禁检查通过\r
\r
是否继续 Task-002?\r
```\r
\r
**若质量门禁不通过**:\r
```\r
⚠️ 代码质量门禁检查未通过\r
\r
| 检查维度 | 结果 | 问题详情 |\r
|----------|------|----------|\r
| 复杂度 | ❌ 不通过 | processOrder() 方法 120 行,超过 80 行限制 |\r
| 嵌套深度 | ❌ 不通过 | 第 45 行嵌套深度 4 层,超过 3 层限制 |\r
| 上下文一致性 | ❌ 不通过 | 命名风格与现有项目不一致(应使用下划线而非驼峰) |\r
\r
**代码健康度评分**:72/100 (C)\r
\r
正在分析问题并重新生成代码...\r
```\r
\r
---\r
\r
## 质量门禁标准\r
\r
### 复杂度标准\r
\r
| 指标 | 阈值 | 说明 |\r
|------|------|------|\r
| 方法长度 | ≤ 80 行 | 超过则拆分方法 |\r
| 嵌套深度 | ≤ 3 层 | 超过则使用提前返回或提取方法 |\r
| 参数数量 | ≤ 5 个 | 超过则封装为 DTO |\r
| 圈复杂度 | ≤ 10 | 超过则拆分方法或使用策略模式 |\r
\r
### 安全标准\r
\r
| 检查项 | 要求 | 违规示例 | 正确示例 |\r
|--------|------|----------|----------|\r
| SQL 注入 | 使用 #{} | `WHERE id = ${id}` | `WHERE id = #{id}` |\r
| XSS | 输入转义 | 直接输出用户输入 | `HtmlUtils.htmlEscape()` |\r
| 敏感信息 | 禁止硬编码 | `password = "123456"` | 使用配置或密钥管理 |\r
| 权限控制 | 接口鉴权 | 无鉴权直接暴露 | `@PreAuthorize("hasRole('ADMIN')")` |\r
\r
### 代码健康度等级\r
\r
| 等级 | 分数范围 | 说明 | 处理建议 |\r
|------|----------|------|----------|\r
| A+ | 95-100 | 优秀 | 可直接使用 |\r
| A | 90-94 | 良好 | 可直接使用 |\r
| B+ | 85-89 | 较好 | 建议优化后使用 |\r
| B | 80-84 | 合格 | 需小幅优化 |\r
| C | 70-79 | 需改进 | 必须优化后使用 |\r
| D | 60-69 | 较差 | 需要重构 |\r
| E | \x3C60 | 不合格 | 需要重新生成 |\r
\r
**强制要求**:代码健康度评分必须 ≥ 80 分(B 级及以上)才能输出,否则必须重新生成。\r
\r
---\r
\r
## 相关技能\r
\r
### 前置技能\r
\r
- **gen-design**: 系统设计,提供设计文档(数据流、集成点)\r
- **gen-coding-specs**: 技术规范生成,提供 **`docs/coding-specs/`**(编码风格、API 规范、数据模型规范)\r
- 无则须提示用户先执行或接受高风险跳过(见上文「输入来源」)\r
- **contract-gen**: 契约生成,提供 **`docs/contracts/*.yaml`**(数据库契约、接口契约)\r
- 若采用契约驱动开发,本技能优先读取 YAML 契约\r
- 若无契约文件,自动降级使用设计文档 + 技术规范\r
- **gen-tasks**: 任务拆解,提供 `docs/tasks.md`(任务列表、实现点清单)\r
- **analyze**: 存量分析,遗留项目的前置技能(生成设计主线、代码库分析)\r
\r
### 后续技能\r
\r
- **validate --mode=task-completion**: 任务完成度验证\r
- **validate --mode=contract-consistency**: 代码与契约一致性验证(契约驱动模式)\r
- **review-code**: 代码审查\r
\r
衔接总览见 [SKILL-VALUE-CHAIN.md](../SKILL-VALUE-CHAIN.md)。\r
\r
---\r
\r
## 版本历史\r
\r
| 版本 | 日期 | 变更说明 |\r
|------|------|----------|\r
| 2.5.0 | 2026-03-24 | 新增步骤 2.5:基于技术栈的项目脚手架自动初始化(Spring Boot/Python/Node.js/Go + Vue/React) |\r
| 2.4.1 | 2026-03-24 | 新增「检查 0」:新项目空仓库前后端分离时的目录创建与 frontend/backend 根路径落位 |\r
| 2.4.0 | 2026-03-07 | 设计文档驱动模式(自动调用gen-tasks)、自动执行模式、继续执行模式、代码复用检测(强制)、任务完成度检查(强制)、任务状态自动更新 |\r
| 2.3.0 | 2026-03-06 | 新增代码复用检测阶段、任务完成度检查阶段 |\r
| 2.0.0 | 2026-03-05 | 新增设计主线驱动模式、存量项目支持增强 |\r
| 1.0.0 | 2026-03-01 | 初始版本 |\r
\r
---\r
\r
*本技能是 AI Speckits 技能体系的编码实现阶段。*\r
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install gen-code - After installation, invoke the skill by name or use
/gen-code - Provide required inputs per the skill's parameter spec and get structured output
What is Gen Code?
按任务和规范生成高质量代码。支持新项目生成和遗留项目上下文感知生成。默认使用 Vue3 + Ant Design + Spring Boot 3 + MyBatis-Plus,AI 能力使用 LangChain4j + LangGraph4j。 It is an AI Agent Skill for Claude Code / OpenClaw, with 114 downloads so far.
How do I install Gen Code?
Run "/install gen-code" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Gen Code free?
Yes, Gen Code is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Gen Code support?
Gen Code is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Gen Code?
It is built and maintained by Liu Feng (@lf951515851); the current version is v1.0.0.