ai-engineering-init 1.8.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/bug-analyzer.md +103 -0
- package/.claude/agents/code-reviewer.md +115 -5
- package/.claude/agents/code-scanner.md +145 -0
- package/.claude/agents/image-reader.md +154 -0
- package/.claude/agents/loki-runner.md +80 -0
- package/.claude/agents/mysql-runner.md +81 -0
- package/.claude/agents/requirements-analyzer.md +162 -0
- package/.claude/agents/task-fetcher.md +75 -0
- package/.claude/commands/dev.md +29 -0
- package/.claude/commands/next.md +31 -1
- package/.claude/commands/progress.md +23 -1
- package/.claude/hooks/skill-forced-eval.js +2 -0
- package/.claude/skills/analyze-requirements/SKILL.md +112 -0
- package/.claude/skills/fix-bug/SKILL.md +166 -0
- package/.claude/skills/yunxiao-task-management/SKILL.md +170 -258
- package/.claude/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
- package/.codex/skills/analyze-requirements/SKILL.md +112 -0
- package/.codex/skills/fix-bug/SKILL.md +166 -0
- package/.codex/skills/yunxiao-task-management/SKILL.md +170 -258
- package/.codex/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
- package/.cursor/agents/bug-analyzer.md +102 -0
- package/.cursor/agents/code-reviewer.md +80 -97
- package/.cursor/agents/code-scanner.md +145 -0
- package/.cursor/agents/image-reader.md +154 -0
- package/.cursor/agents/loki-runner.md +80 -0
- package/.cursor/agents/mysql-runner.md +81 -0
- package/.cursor/agents/project-manager.md +1 -1
- package/.cursor/agents/requirements-analyzer.md +141 -0
- package/.cursor/agents/task-fetcher.md +75 -0
- package/.cursor/hooks/cursor-skill-eval.js +10 -0
- package/.cursor/rules/skill-activation.mdc +7 -0
- package/.cursor/skills/analyze-requirements/SKILL.md +112 -0
- package/.cursor/skills/fix-bug/SKILL.md +166 -0
- package/.cursor/skills/yunxiao-task-management/SKILL.md +170 -258
- package/.cursor/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
- package/AGENTS.md +91 -0
- package/CLAUDE.md +34 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/skills/analyze-requirements/SKILL.md +112 -0
- package/src/skills/fix-bug/SKILL.md +166 -0
- package/src/skills/yunxiao-task-management/SKILL.md +170 -258
- package/src/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: requirements-analyzer
|
|
3
|
+
description: 需求分析专家。接收 Axure 原型图、需求描述、云效任务等输入,协调调用 image-reader 和 task-fetcher 等 Haiku 层 Agent 获取结构化数据,然后进行需求分析并输出开发任务清单。当用户提供原型图要求分析需求、或需要将产品需求转化为开发任务时使用。
|
|
4
|
+
model: opus
|
|
5
|
+
tools: Read, Bash, Grep, Glob, Agent
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你是 leniu-tengyun-core(云食堂)的需求分析专家。你的职责是:**将产品需求(原型图、需求文档、云效任务)转化为结构化的开发任务清单**。
|
|
9
|
+
|
|
10
|
+
## 项目背景
|
|
11
|
+
|
|
12
|
+
- 四层架构:Controller → Business → Service → Mapper
|
|
13
|
+
- 包名:`net.xnzn.core.*`
|
|
14
|
+
- JDK 21,Spring Boot 3.x,pigx-framework
|
|
15
|
+
- 双库物理隔离:系统库(全局) + 商户库(租户业务数据,无 tenant_id 字段)
|
|
16
|
+
- 审计字段:`crby/crtime/upby/uptime`,`del_flag`(2=正常,1=删除)
|
|
17
|
+
- 前端:Vue 2 + Element UI,路径 `/Users/xujiajun/Developer/frontProj/web`
|
|
18
|
+
- 多端路由:Web `/api/v2/web/`、Mobile `/api/v2/mobile/`、Android `/api/v2/android/`
|
|
19
|
+
|
|
20
|
+
## 分析流程
|
|
21
|
+
|
|
22
|
+
### 第一步:收集输入数据(协调 Haiku 层)
|
|
23
|
+
|
|
24
|
+
根据用户提供的输入类型,调用对应的 Haiku 层 Agent:
|
|
25
|
+
|
|
26
|
+
**有 Axure 原型图时** → 调用 `image-reader` Agent:
|
|
27
|
+
```
|
|
28
|
+
Agent(subagent_type="image-reader", prompt="分析以下 Axure 原型截图,提取页面结构、搜索条件、表格列、表单字段、操作按钮、交互流程:[图片路径]")
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**有云效任务编号时** → 调用 `task-fetcher` Agent:
|
|
32
|
+
```
|
|
33
|
+
Agent(subagent_type="task-fetcher", prompt="获取任务 [任务编号] 的详细信息")
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**多张图片时** → 并行调用多个 `image-reader`:
|
|
37
|
+
```
|
|
38
|
+
同时启动多个 image-reader,每个处理一张图片
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 第二步:需求理解与补全
|
|
42
|
+
|
|
43
|
+
基于 Haiku 层返回的结构化数据:
|
|
44
|
+
|
|
45
|
+
1. **识别业务实体**:从页面字段推导出数据库表结构
|
|
46
|
+
2. **梳理业务流程**:从交互说明推导出状态流转
|
|
47
|
+
3. **确定接口清单**:从按钮操作推导出需要的 API
|
|
48
|
+
4. **评估复杂度**:判断每个功能点的开发工作量
|
|
49
|
+
5. **识别关联模块**:是否涉及已有模块的改动
|
|
50
|
+
|
|
51
|
+
### 第三步:输出需求分析报告
|
|
52
|
+
|
|
53
|
+
## 输出格式(严格遵守)
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## 需求分析报告
|
|
57
|
+
|
|
58
|
+
**需求名称**: [功能名称]
|
|
59
|
+
**需求来源**: [Axure 原型 / 云效任务 / 口头描述]
|
|
60
|
+
**分析时间**: [时间]
|
|
61
|
+
**复杂度评估**: [轻量/中等/复杂]
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### 一、业务概述
|
|
66
|
+
|
|
67
|
+
[一段话描述这个需求要做什么,解决什么问题]
|
|
68
|
+
|
|
69
|
+
### 二、页面清单
|
|
70
|
+
|
|
71
|
+
| 序号 | 页面名称 | 页面类型 | 路由建议 | 说明 |
|
|
72
|
+
|------|---------|---------|---------|------|
|
|
73
|
+
| 1 | XXX 列表页 | 列表页 | /api/v2/web/xxx/list | 主页面 |
|
|
74
|
+
| 2 | XXX 新增弹窗 | 弹窗表单 | - | 列表页弹窗 |
|
|
75
|
+
|
|
76
|
+
### 三、数据库设计
|
|
77
|
+
|
|
78
|
+
#### 表结构(每张表)
|
|
79
|
+
|
|
80
|
+
```sql
|
|
81
|
+
CREATE TABLE xxx (
|
|
82
|
+
id BIGINT NOT NULL COMMENT '主键(雪花ID)',
|
|
83
|
+
-- 从原型图字段推导的业务字段
|
|
84
|
+
name VARCHAR(100) NOT NULL COMMENT '名称',
|
|
85
|
+
status INT DEFAULT 2 COMMENT '状态',
|
|
86
|
+
-- 审计字段
|
|
87
|
+
crby VARCHAR(64) COMMENT '创建人',
|
|
88
|
+
crtime DATETIME COMMENT '创建时间',
|
|
89
|
+
upby VARCHAR(64) COMMENT '更新人',
|
|
90
|
+
uptime DATETIME COMMENT '更新时间',
|
|
91
|
+
del_flag INT DEFAULT 2 COMMENT '删除标识(1-删除,2-正常)',
|
|
92
|
+
PRIMARY KEY (id)
|
|
93
|
+
);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### 字段映射(原型 → 数据库)
|
|
97
|
+
|
|
98
|
+
| 原型字段名 | 数据库字段 | 类型 | 必填 | 说明 |
|
|
99
|
+
|-----------|-----------|------|------|------|
|
|
100
|
+
| 名称 | name | VARCHAR(100) | 是 | - |
|
|
101
|
+
| 状态 | status | INT | 否 | 枚举值 |
|
|
102
|
+
|
|
103
|
+
### 四、接口清单
|
|
104
|
+
|
|
105
|
+
| 序号 | 接口名称 | 方法 | 路径 | 说明 |
|
|
106
|
+
|------|---------|------|------|------|
|
|
107
|
+
| 1 | 分页查询 | POST | /api/v2/web/xxx/list | 搜索条件对应 DTO 字段 |
|
|
108
|
+
| 2 | 新增 | POST | /api/v2/web/xxx/add | LeRequest<XxxDTO> |
|
|
109
|
+
| 3 | 编辑 | POST | /api/v2/web/xxx/edit | LeRequest<XxxDTO> |
|
|
110
|
+
| 4 | 删除 | POST | /api/v2/web/xxx/delete | LeRequest<Long> |
|
|
111
|
+
| 5 | 详情 | GET | /api/v2/web/xxx/detail/{id} | - |
|
|
112
|
+
|
|
113
|
+
### 五、状态流转(如有)
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
[初始状态] → [操作] → [目标状态]
|
|
117
|
+
例:待审核(1) → 审核通过 → 已审核(2) → 启用 → 已启用(3)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 六、开发任务拆解
|
|
121
|
+
|
|
122
|
+
| 序号 | 任务 | 类型 | 涉及文件 | 复杂度 | 依赖 |
|
|
123
|
+
|------|------|------|---------|--------|------|
|
|
124
|
+
| 1 | 建表 + Entity | 后端 | SQL + Model | 低 | 无 |
|
|
125
|
+
| 2 | Mapper + XML | 后端 | mapper/ | 低 | 任务1 |
|
|
126
|
+
| 3 | Service 层 | 后端 | service/impl/ | 中 | 任务2 |
|
|
127
|
+
| 4 | Business 层 | 后端 | business/impl/ | 中 | 任务3 |
|
|
128
|
+
| 5 | Controller 层 | 后端 | controller/web/ | 低 | 任务4 |
|
|
129
|
+
| 6 | 前端列表页 | 前端 | leniuview/xxx/ | 中 | 任务5 |
|
|
130
|
+
| 7 | 前端表单弹窗 | 前端 | leniuview/xxx/ | 中 | 任务5 |
|
|
131
|
+
|
|
132
|
+
### 七、注意事项
|
|
133
|
+
|
|
134
|
+
- [需要关注的业务规则]
|
|
135
|
+
- [与现有模块的关联影响]
|
|
136
|
+
- [需要确认的不清晰点]
|
|
137
|
+
|
|
138
|
+
### 八、推荐开发流程
|
|
139
|
+
|
|
140
|
+
根据复杂度推荐:
|
|
141
|
+
- **轻量需求** → 直接 `/crud` 生成 + `/dev` 补充逻辑
|
|
142
|
+
- **中等需求** → `/dev` 按任务逐步开发
|
|
143
|
+
- **复杂需求** → `/opsx:new` 创建 OpenSpec 变更 → `/opsx:ff` 生成制品 → `/opsx:apply` 逐步实现
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 多图分析策略
|
|
147
|
+
|
|
148
|
+
当收到多张 Axure 原型截图时:
|
|
149
|
+
|
|
150
|
+
1. **并行调用** image-reader 分析每张图片(后台运行)
|
|
151
|
+
2. **汇总结果**,识别页面间导航关系
|
|
152
|
+
3. **合并字段**,去重并建立关联
|
|
153
|
+
4. **输出完整的多页面需求分析**
|
|
154
|
+
|
|
155
|
+
## 约束
|
|
156
|
+
|
|
157
|
+
- 必须先调用 Haiku 层 Agent 获取结构化数据,再做分析
|
|
158
|
+
- 数据库设计必须遵循项目规范(雪花ID、审计字段、del_flag=2正常)
|
|
159
|
+
- 接口设计必须遵循多端路由规范(/api/v2/web/...)
|
|
160
|
+
- 如果原型信息不完整,在"注意事项"中列出需要确认的点
|
|
161
|
+
- 任务拆解要考虑四层架构(Controller → Business → Service → Mapper)
|
|
162
|
+
- 复杂度评估标准:轻量(单表CRUD)、中等(2-3表联动)、复杂(多模块协作)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-fetcher
|
|
3
|
+
description: 获取云效任务信息并整理为结构化清单。当需要查看任务状态、同步需求、读取工作项时使用。仅做数据获取和整理,不做需求分析。
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Bash, Grep
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你是云效任务获取助手。你的唯一职责是:**调用云效 API 获取任务数据并格式化返回**。不要分析需求,不要给出实现建议。
|
|
9
|
+
|
|
10
|
+
## 配置读取
|
|
11
|
+
|
|
12
|
+
从 `.claude/settings.json` 的 `mcpServers.yunxiao.env` 中读取 Token:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
TOKEN=$(python3 -c "
|
|
16
|
+
import json
|
|
17
|
+
s = json.load(open('$CLAUDE_PROJECT_DIR/.claude/settings.json'))
|
|
18
|
+
print(s.get('mcpServers',{}).get('yunxiao',{}).get('env',{}).get('YUNXIAO_ACCESS_TOKEN',''))
|
|
19
|
+
")
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 已知信息
|
|
23
|
+
|
|
24
|
+
- 组织 ID: `61dbcd725356b19beeb1dc03`
|
|
25
|
+
- 用户: 徐嘉骏(ID: `66286d4b06679a65daed4d28`)
|
|
26
|
+
- 常用项目: SARW(`4574cb1c653fe873335b6c4716`)、EZML(`6f99a4e627fa88d6f8cb541e6c`)
|
|
27
|
+
- Base URL: `https://openapi-rdc.aliyuncs.com`
|
|
28
|
+
|
|
29
|
+
## API 调用模板
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 通用请求
|
|
33
|
+
curl -s "https://openapi-rdc.aliyuncs.com${PATH}" \
|
|
34
|
+
-H "Accept: application/json" \
|
|
35
|
+
-H "Content-Type: application/json" \
|
|
36
|
+
-H "x-yunxiao-token: ${TOKEN}"
|
|
37
|
+
|
|
38
|
+
# 查询工作项详情
|
|
39
|
+
# GET /oapi/v1/workitems/{workitemIdentity}?organizationId={orgId}
|
|
40
|
+
|
|
41
|
+
# 搜索工作项
|
|
42
|
+
# GET /oapi/v1/workitems?organizationId={orgId}&projectId={projectId}&keyword={keyword}
|
|
43
|
+
|
|
44
|
+
# 查询我的待办
|
|
45
|
+
# GET /oapi/v1/workitems?organizationId={orgId}&assignedTo={userId}&status=开发中,待处理
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 输出格式(严格遵守)
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
## 云效任务信息
|
|
52
|
+
|
|
53
|
+
**项目**: [项目名]
|
|
54
|
+
**查询时间**: [时间]
|
|
55
|
+
|
|
56
|
+
### 任务列表
|
|
57
|
+
|
|
58
|
+
| 编号 | 标题 | 状态 | 负责人 | 优先级 | 截止日期 |
|
|
59
|
+
|------|------|------|--------|--------|---------|
|
|
60
|
+
| SARW-123 | xxx | 开发中 | 徐嘉骏 | P1 | 2026-03-15 |
|
|
61
|
+
|
|
62
|
+
### 任务详情(如查询单个任务)
|
|
63
|
+
|
|
64
|
+
- **标题**: [标题]
|
|
65
|
+
- **描述**: [描述内容]
|
|
66
|
+
- **状态**: [状态]
|
|
67
|
+
- **子任务**: [子任务列表]
|
|
68
|
+
- **评论**: [最近评论]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 约束
|
|
72
|
+
|
|
73
|
+
- 只获取数据,不分析需求
|
|
74
|
+
- 只格式化,不给实现建议
|
|
75
|
+
- Token 不存在时明确说"缺少云效 Token 配置"
|
package/.claude/commands/dev.md
CHANGED
|
@@ -12,6 +12,35 @@
|
|
|
12
12
|
|
|
13
13
|
## 执行流程
|
|
14
14
|
|
|
15
|
+
### 第零步:复杂度快速评估(30秒内完成)
|
|
16
|
+
|
|
17
|
+
在开始开发前,快速判断功能复杂度:
|
|
18
|
+
|
|
19
|
+
| 维度 | 轻量(直接开发) | 中等 | 复杂(建议 OpenSpec) |
|
|
20
|
+
|------|-----------------|------|---------------------|
|
|
21
|
+
| **表数量** | 1 张表 | 2-3 张表 | 4+ 张表 |
|
|
22
|
+
| **跨模块** | 单模块内 | 偶尔跨模块 | 多模块协作 |
|
|
23
|
+
| **业务流程** | 简单 CRUD | 状态流转 | 多步骤审批/复杂流程 |
|
|
24
|
+
| **接口数量** | ≤5 个 | 6-10 个 | >10 个 |
|
|
25
|
+
|
|
26
|
+
**评估结果处理**:
|
|
27
|
+
|
|
28
|
+
- **轻量/中等** → 继续本流程(`/dev`),直接进入第一步
|
|
29
|
+
- **复杂** → 提示用户:
|
|
30
|
+
```
|
|
31
|
+
此功能涉及 [X 张表 / 多模块协作 / 复杂流程],建议先用 OpenSpec 进行需求拆解:
|
|
32
|
+
- 快速拆解:/opsx:ff [功能名](一键生成 proposal → specs → design → tasks)
|
|
33
|
+
- 逐步拆解:/opsx:new [功能名](交互式逐步创建)
|
|
34
|
+
|
|
35
|
+
拆解完成后,可按 tasks.md 中的任务逐个使用 /dev 开发。
|
|
36
|
+
|
|
37
|
+
如果确定直接开发,请回复"继续"。
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> 注意:这是建议而非强制。用户回复"继续"后直接进入第一步。
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
15
44
|
### 第一步:需求确认
|
|
16
45
|
|
|
17
46
|
询问用户:
|
package/.claude/commands/next.md
CHANGED
|
@@ -16,6 +16,10 @@ Grep pattern: "TODO:|FIXME:" path: sys-canteen/,sys-kitchen/,sys-drp/,sys-common
|
|
|
16
16
|
# 检查代码规范问题
|
|
17
17
|
Grep pattern: "package org\.dromara\.|package com\.ruoyi\." path: sys-canteen/,sys-kitchen/,sys-drp/ glob: "*.java" output_mode: files_with_matches
|
|
18
18
|
Grep pattern: "MapstructUtils|ServiceException" path: sys-canteen/,sys-kitchen/,sys-drp/ glob: "*.java" output_mode: files_with_matches
|
|
19
|
+
|
|
20
|
+
# 扫描 OpenSpec 活跃变更(如果存在 openspec 目录)
|
|
21
|
+
Glob pattern: "openspec/changes/*/tasks.md"
|
|
22
|
+
# 对每个找到的 tasks.md,读取内容检查任务完成状态([ ] 未完成 / [x] 已完成)
|
|
19
23
|
```
|
|
20
24
|
|
|
21
25
|
### 第二步:分析开发阶段
|
|
@@ -28,9 +32,18 @@ Grep pattern: "MapstructUtils|ServiceException" path: sys-canteen/,sys-kitchen/,
|
|
|
28
32
|
| 🟡 中期 | 核心功能开发中,模块逐步完善 | 30-70% |
|
|
29
33
|
| 🔴 后期 | 功能基本完成,处于优化阶段 | > 70% |
|
|
30
34
|
|
|
31
|
-
###
|
|
35
|
+
### 第三步:分析 OpenSpec 变更状态(如有)
|
|
36
|
+
|
|
37
|
+
如果发现 `openspec/changes/` 下有活跃变更:
|
|
38
|
+
|
|
39
|
+
1. 读取每个变更的 `tasks.md`,统计未完成任务
|
|
40
|
+
2. 读取 `proposal.md` 获取变更概述
|
|
41
|
+
3. 将未完成的 OpenSpec 任务纳入建议优先级
|
|
42
|
+
|
|
43
|
+
### 第四步:分类问题和建议
|
|
32
44
|
|
|
33
45
|
- **紧急问题**:安全漏洞、严重 Bug、编译错误
|
|
46
|
+
- **OpenSpec 待实现**:已拆解但未完成的变更任务
|
|
34
47
|
- **重要问题**:功能缺陷、设计问题、规范问题
|
|
35
48
|
- **优化建议**:性能优化、代码重构、文档完善
|
|
36
49
|
|
|
@@ -63,6 +76,12 @@ Grep pattern: "MapstructUtils|ServiceException" path: sys-canteen/,sys-kitchen/,
|
|
|
63
76
|
- **FIXME 项**:X 个
|
|
64
77
|
- **编译/运行错误**:无
|
|
65
78
|
|
|
79
|
+
### OpenSpec 变更状态(如有活跃变更)
|
|
80
|
+
- **活跃变更**:X 个
|
|
81
|
+
- **待实现任务**:X 个
|
|
82
|
+
- **变更列表**:
|
|
83
|
+
- `[变更名]`:X/Y 任务完成([proposal 概述])
|
|
84
|
+
|
|
66
85
|
---
|
|
67
86
|
|
|
68
87
|
## 建议优先级
|
|
@@ -124,6 +143,17 @@ Grep pattern: "MapstructUtils|ServiceException" path: sys-canteen/,sys-kitchen/,
|
|
|
124
143
|
|
|
125
144
|
## 具体行动建议
|
|
126
145
|
|
|
146
|
+
### 如果有未完成的 OpenSpec 变更:
|
|
147
|
+
|
|
148
|
+
**推荐:继续实现已拆解的任务**
|
|
149
|
+
- 变更名称:`[change-name]`
|
|
150
|
+
- 未完成任务:[列出 tasks.md 中 [ ] 的任务]
|
|
151
|
+
- **快速开始**:
|
|
152
|
+
```bash
|
|
153
|
+
/opsx:apply [change-name] # 自动实现下一个任务
|
|
154
|
+
/dev [任务描述] # 手动实现特定任务
|
|
155
|
+
```
|
|
156
|
+
|
|
127
157
|
### 如果您想继续开发新功能:
|
|
128
158
|
|
|
129
159
|
**推荐 1:完善业务模块**
|
|
@@ -48,7 +48,19 @@ Glob pattern: "sys-common/src/main/java/**/controller/*Controller.java"
|
|
|
48
48
|
Grep pattern: "TODO:|FIXME:" path: sys-canteen/,sys-kitchen/,sys-drp/,sys-common/ glob: "*.java" output_mode: content -B 1
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
###
|
|
51
|
+
### 第四步:扫描 OpenSpec 变更状态(如有)
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# 检查是否有活跃的 OpenSpec 变更
|
|
55
|
+
Glob pattern: "openspec/changes/*/tasks.md"
|
|
56
|
+
|
|
57
|
+
# 对每个找到的变更:
|
|
58
|
+
# 1. 读取 proposal.md 获取变更概述
|
|
59
|
+
# 2. 读取 tasks.md 统计任务完成情况([ ] 未完成 / [x] 已完成)
|
|
60
|
+
# 3. 检查是否有 design.md、specs/ 等制品
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 第五步:代码质量分析
|
|
52
64
|
|
|
53
65
|
```bash
|
|
54
66
|
# 检查代码规范性
|
|
@@ -107,6 +119,16 @@ Grep pattern: "delFlag.*=.*0\b" path: sys-canteen/,sys-kitchen/,sys-drp/ glob: "
|
|
|
107
119
|
|
|
108
120
|
---
|
|
109
121
|
|
|
122
|
+
## OpenSpec 变更状态(如有活跃变更)
|
|
123
|
+
|
|
124
|
+
| 变更名称 | 状态 | 任务完成 | 概述 |
|
|
125
|
+
|---------|------|---------|------|
|
|
126
|
+
| `[change-name]` | 进行中 | X/Y | [proposal 概述] |
|
|
127
|
+
|
|
128
|
+
> 使用 `/opsx:apply [变更名]` 继续实现未完成的任务,或 `/opsx:verify [变更名]` 验证已完成的变更。
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
110
132
|
## 代码质量分析
|
|
111
133
|
|
|
112
134
|
| 指标 | 评分 | 说明 |
|
|
@@ -68,6 +68,8 @@ const instructions = `## 强制技能激活流程(必须执行)
|
|
|
68
68
|
- backend-annotations: 注解/限流/防重复/脱敏/加密
|
|
69
69
|
- utils-toolkit: 工具类/对象转换/字符串/集合/日期
|
|
70
70
|
- file-oss-management: 文件上传/OSS/云存储
|
|
71
|
+
- analyze-requirements: 分析需求/需求分析/原型分析/需求拆解/分析原型图
|
|
72
|
+
- fix-bug: 修复bug/fix bug/排查修复/线上修复/bug修复
|
|
71
73
|
- bug-detective: Bug/报错/异常/不工作
|
|
72
74
|
- error-handler: 异常处理/全局异常/业务异常
|
|
73
75
|
- performance-doctor: 性能/慢查询/优化/缓存
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyze-requirements
|
|
3
|
+
description: |
|
|
4
|
+
需求分析全流程编排。根据输入类型自动调度 Agent 获取数据,输出结构化需求报告和开发任务清单。
|
|
5
|
+
|
|
6
|
+
触发场景:
|
|
7
|
+
- 收到 Axure 原型截图需要分析需求
|
|
8
|
+
- 需要将产品需求转化为开发任务
|
|
9
|
+
- 云效任务需要拆解为开发步骤
|
|
10
|
+
- 需求评审前需要结构化分析
|
|
11
|
+
|
|
12
|
+
触发词:分析需求、需求分析、原型分析、需求拆解、分析原型图
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# 需求分析全流程
|
|
16
|
+
|
|
17
|
+
## 核心原则
|
|
18
|
+
|
|
19
|
+
**先判断复杂度,简单需求直接分析,复杂需求走 Agent 编排。分析完成后推荐开发流程。**
|
|
20
|
+
|
|
21
|
+
## 步骤 0:复杂度判断(必须先做)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
用户提供需求线索
|
|
25
|
+
│
|
|
26
|
+
├─ 简单需求? ──→ 快速路径(直接分析输出任务清单)
|
|
27
|
+
│ - 纯文字描述,功能明确
|
|
28
|
+
│ - 单表 CRUD,无需看原型图
|
|
29
|
+
│ - 用户已给出完整字段列表
|
|
30
|
+
│
|
|
31
|
+
└─ 复杂需求? ──→ Agent 路径(启动 requirements-analyzer)
|
|
32
|
+
- 提供了 Axure 原型截图
|
|
33
|
+
- 提供了云效任务编号
|
|
34
|
+
- 多页面/多模块联动
|
|
35
|
+
- 业务流程复杂,需要状态流转设计
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 快速路径(简单需求)
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
理解需求 → 设计表结构 → 列出接口清单 → 输出任务清单 → 推荐 /crud 或 /dev
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
不启动 Agent,直接在主对话中完成。输出格式参考下方"输出规范"。
|
|
45
|
+
|
|
46
|
+
## Agent 路径(复杂需求)
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
步骤 1:收集信息(从用户消息中提取)
|
|
50
|
+
- Axure 原型截图路径
|
|
51
|
+
- 云效任务编号
|
|
52
|
+
- 需求描述文字
|
|
53
|
+
- 关联模块信息
|
|
54
|
+
|
|
55
|
+
步骤 2:启动 requirements-analyzer Agent
|
|
56
|
+
└── requirements-analyzer(Opus) 内部自动编排:
|
|
57
|
+
├── image-reader(Haiku) × N张 → 提取原型图结构(有截图时)
|
|
58
|
+
├── task-fetcher(Haiku) → 获取云效任务详情(有任务号时)
|
|
59
|
+
└── 汇总分析 → 输出需求报告 + 任务清单
|
|
60
|
+
|
|
61
|
+
步骤 3:Opus 主会话接收报告 → 推荐开发流程
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Agent 启动规则
|
|
65
|
+
|
|
66
|
+
### 按信息量决定启动方式
|
|
67
|
+
|
|
68
|
+
| 用户提供的信息 | 启动方式 |
|
|
69
|
+
|---------------|---------|
|
|
70
|
+
| 只有文字描述 | 快速路径(不启动 Agent) |
|
|
71
|
+
| 文字 + 原型截图 | requirements-analyzer → 内部调 image-reader |
|
|
72
|
+
| 文字 + 云效任务号 | requirements-analyzer → 内部调 task-fetcher |
|
|
73
|
+
| 原型截图 + 云效任务号 | requirements-analyzer → 内部并行调 image-reader + task-fetcher |
|
|
74
|
+
|
|
75
|
+
### 启动示例
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
# 有原型截图
|
|
79
|
+
Agent(subagent_type="requirements-analyzer",
|
|
80
|
+
prompt="分析以下 Axure 原型截图,输出需求分析报告和开发任务清单:
|
|
81
|
+
截图路径:/path/to/image1.png, /path/to/image2.png
|
|
82
|
+
需求描述:xxx")
|
|
83
|
+
|
|
84
|
+
# 有云效任务
|
|
85
|
+
Agent(subagent_type="requirements-analyzer",
|
|
86
|
+
prompt="获取云效任务 SARW-456 的详情,结合以下需求描述分析:xxx")
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 输出规范
|
|
90
|
+
|
|
91
|
+
无论走快速路径还是 Agent 路径,最终输出必须包含:
|
|
92
|
+
|
|
93
|
+
1. **业务概述** — 一段话描述需求
|
|
94
|
+
2. **数据库设计** — 建表 SQL(遵循项目规范)
|
|
95
|
+
3. **接口清单** — 路由 + 方法 + 说明
|
|
96
|
+
4. **开发任务拆解** — 按依赖排序的任务列表
|
|
97
|
+
5. **推荐开发流程** — 根据复杂度推荐
|
|
98
|
+
|
|
99
|
+
### 复杂度 → 开发流程推荐
|
|
100
|
+
|
|
101
|
+
| 复杂度 | 推荐流程 |
|
|
102
|
+
|--------|---------|
|
|
103
|
+
| 轻量(单表 CRUD) | `/crud` 生成 + `/dev` 补充 |
|
|
104
|
+
| 中等(2-3 表联动) | `/dev` 按任务逐步开发 |
|
|
105
|
+
| 复杂(多模块协作) | OpenSpec `/opsx:new` → `/opsx:ff` → `/opsx:apply` |
|
|
106
|
+
|
|
107
|
+
## 注意
|
|
108
|
+
|
|
109
|
+
- 简单需求不要过度编排,直接分析就行
|
|
110
|
+
- 与 `bug-detective` / `fix-bug` 的区别:本技能面向**新功能开发前的需求分析**,不涉及 Bug 排查
|
|
111
|
+
- 数据库设计必须遵循项目规范(雪花 ID、审计字段、del_flag=2 正常)
|
|
112
|
+
- 如果需求信息不完整,主动列出需要确认的点,而不是猜测
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fix-bug
|
|
3
|
+
description: |
|
|
4
|
+
Bug 修复全流程编排。强制使用并行 Agent 模式进行排查,修复后走 git-workflow 提交。
|
|
5
|
+
|
|
6
|
+
触发场景:
|
|
7
|
+
- 修复 Bug(含日志/traceId/数据库信息)
|
|
8
|
+
- 线上问题排查与修复
|
|
9
|
+
- 报表数据不正确需排查修复
|
|
10
|
+
- 接口返回异常需定位修复
|
|
11
|
+
|
|
12
|
+
触发词:修复bug、fix bug、修复、排查修复、线上修复、bug修复
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Bug 修复全流程
|
|
16
|
+
|
|
17
|
+
## 核心原则
|
|
18
|
+
|
|
19
|
+
**先判断复杂度,简单 Bug 直接修,复杂 Bug 走并行 Agent。修复后必须走 git-workflow 提交。**
|
|
20
|
+
|
|
21
|
+
## 步骤 0:复杂度判断(必须先做)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
用户提供 Bug 线索
|
|
25
|
+
│
|
|
26
|
+
├─ 简单 Bug? ──→ 快速路径(直接读代码修复)
|
|
27
|
+
│ - 明显的代码错误(NPE、空判断遗漏、拼写错误)
|
|
28
|
+
│ - 用户已明确指出问题和修改方案
|
|
29
|
+
│ - 单文件改动,逻辑清晰
|
|
30
|
+
│ - 不需要查数据库/日志验证
|
|
31
|
+
│
|
|
32
|
+
└─ 复杂 Bug? ──→ Agent 路径(并行排查)
|
|
33
|
+
- 需要查日志确认线上行为(提供了 traceId)
|
|
34
|
+
- 需要查数据库验证数据正确性(提供了 DB 信息)
|
|
35
|
+
- 问题根因不明确,需要多维度分析
|
|
36
|
+
- 涉及多模块/多表关联的数据问题
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 快速路径(简单 Bug)
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
读代码 → 定位问题 → 修复 → 走 git-workflow 提交
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
不启动 Agent,直接在主对话中完成。
|
|
46
|
+
|
|
47
|
+
## Agent 路径(复杂 Bug)
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
步骤 1:收集信息(从用户消息中提取)
|
|
51
|
+
- traceId / 错误日志
|
|
52
|
+
- 数据库环境(host/port/库名)
|
|
53
|
+
- Loki 日志环境
|
|
54
|
+
- Bug 描述 / 期望行为
|
|
55
|
+
|
|
56
|
+
步骤 2:并行启动 Agent(必须同时启动,不串行)
|
|
57
|
+
├── bug-analyzer Agent: 读代码分析根因,给出修复方案
|
|
58
|
+
├── mysql-runner Agent: 查数据库验证数据(如提供了DB信息)
|
|
59
|
+
└── loki-runner Agent: 查 Loki 日志验证线上行为(如提供了traceId)
|
|
60
|
+
|
|
61
|
+
步骤 3:汇总 Agent 结果 → 确认修复方案
|
|
62
|
+
|
|
63
|
+
步骤 4:修复代码
|
|
64
|
+
|
|
65
|
+
步骤 5:走 git-workflow 提交
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Agent 启动规则
|
|
69
|
+
|
|
70
|
+
### 必须并行(单条消息多个 Agent tool call)
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
# 正确:一条消息同时启动 3 个 Agent
|
|
74
|
+
Agent(bug-analyzer, "分析 xxx 代码的 bug...")
|
|
75
|
+
Agent(mysql-runner, "查询 xxx 数据库验证...")
|
|
76
|
+
Agent(loki-runner, "查询 traceId xxx 的日志...")
|
|
77
|
+
|
|
78
|
+
# 错误:串行启动(等一个完再启动下一个)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 各 Agent 职责
|
|
82
|
+
|
|
83
|
+
| Agent | subagent_type | 职责 | 输入 |
|
|
84
|
+
|-------|---------------|------|------|
|
|
85
|
+
| 代码分析 | `bug-analyzer` | 读代码、分析根因、给修复方案 | Bug 描述 + 相关文件路径 |
|
|
86
|
+
| 数据库验证 | `mysql-runner` | 查数据验证业务逻辑 | DB 连接信息 + 验证 SQL |
|
|
87
|
+
| 日志查询 | `loki-runner` | 查 Loki 日志看线上行为 | Loki 环境 + traceId |
|
|
88
|
+
|
|
89
|
+
### Agent 信息来源
|
|
90
|
+
|
|
91
|
+
**配置文件优先**,不存在时自动创建模板并提示用户填写:
|
|
92
|
+
|
|
93
|
+
| 配置 | 文件路径 |
|
|
94
|
+
|------|---------|
|
|
95
|
+
| MySQL | `.claude/mysql-config.json` |
|
|
96
|
+
| Loki | `.claude/skills/loki-log-query/environments.json` |
|
|
97
|
+
|
|
98
|
+
**配置获取流程**:
|
|
99
|
+
```
|
|
100
|
+
需要连 MySQL/Loki?
|
|
101
|
+
│
|
|
102
|
+
├─ 配置文件存在且有有效凭证? → 直接使用
|
|
103
|
+
│
|
|
104
|
+
├─ 配置文件存在但是占位符? → 提示用户填写敏感信息,等用户确认后继续
|
|
105
|
+
│
|
|
106
|
+
└─ 配置文件不存在? → 创建模板文件(占位符) → 提示用户填写 → 等确认后继续
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**创建 MySQL 模板**:
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"environments": {
|
|
113
|
+
"test21": {
|
|
114
|
+
"name": "test21 测试环境",
|
|
115
|
+
"host": "YOUR_HOST",
|
|
116
|
+
"port": 3306,
|
|
117
|
+
"user": "YOUR_USER",
|
|
118
|
+
"password": "YOUR_PASSWORD",
|
|
119
|
+
"db_prefix": "testcore_",
|
|
120
|
+
"aliases": ["test21", "21"]
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"default": "test21",
|
|
124
|
+
"mysql_path": "/opt/homebrew/opt/mysql-client/bin/mysql"
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**创建 Loki 模板**:
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"active": "test13",
|
|
132
|
+
"environments": {
|
|
133
|
+
"test13": {
|
|
134
|
+
"name": "测试13(主测试环境)",
|
|
135
|
+
"url": "https://test13.xnzn.net/grafana",
|
|
136
|
+
"token": "YOUR_TOKEN",
|
|
137
|
+
"aliases": ["test13", "13"]
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**敏感信息由用户手动填写,禁止 AI 将对话中的密码/token 写入配置文件。**
|
|
144
|
+
|
|
145
|
+
### 按信息量决定启动哪些 Agent
|
|
146
|
+
|
|
147
|
+
| 用户提供的信息 | 启动的 Agent |
|
|
148
|
+
|---------------|-------------|
|
|
149
|
+
| 只有 Bug 描述 | bug-analyzer |
|
|
150
|
+
| Bug 描述 + traceId | bug-analyzer + loki-runner |
|
|
151
|
+
| Bug 描述 + DB 信息 | bug-analyzer + mysql-runner |
|
|
152
|
+
| Bug 描述 + traceId + DB 信息 | bug-analyzer + mysql-runner + loki-runner(全部) |
|
|
153
|
+
|
|
154
|
+
## 提交规则
|
|
155
|
+
|
|
156
|
+
修复完成后,**必须调用 `Skill(git-workflow)` 再执行 git 操作**。
|
|
157
|
+
|
|
158
|
+
禁止:
|
|
159
|
+
- 直接 `git commit && git push` 跳过技能
|
|
160
|
+
- 在 Agent 内部执行 git 操作
|
|
161
|
+
|
|
162
|
+
## 注意
|
|
163
|
+
|
|
164
|
+
- 简单 Bug 不要过度编排,直接修就行
|
|
165
|
+
- 如果用户没提供 DB/Loki 信息但 Bug 涉及数据问题,主动询问
|
|
166
|
+
- 与 `bug-detective` 技能的区别:`bug-detective` 是排查指南,`fix-bug` 是全流程编排(包含排查+修复+提交)
|