@haaaiawd/anws 2.0.5 → 2.1.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/package.json +1 -1
- package/templates/.agents/skills/task-planner/SKILL.md +40 -2
- package/templates/.agents/skills/task-planner/references/TASK_TEMPLATE.md +68 -38
- package/templates/.agents/workflows/blueprint.md +38 -48
- package/templates/.agents/workflows/change.md +52 -39
- package/templates/.agents/workflows/explore.md +34 -0
- package/templates/.agents/workflows/genesis.md +59 -14
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haaaiawd/anws",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Anws — A spec-driven workflow framework for AI-assisted development. Empowers prompt engineers to build production-ready software through structured PRD → Architecture → Task decomposition. Works with Claude Code, GitHub Copilot, Cursor, Windsurf, and any tool that reads AGENTS.md.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anws",
|
|
@@ -18,8 +18,10 @@ description: 使用WBS方法将系统设计文档分解为层次化任务。支
|
|
|
18
18
|
2. **加载必需文档**:读取 Architecture Overview + PRD
|
|
19
19
|
3. **加载可选文档**:扫描 ADR 目录 + System Design 目录
|
|
20
20
|
4. **缺失检查**:必需文档缺失则报错退出
|
|
21
|
-
5.
|
|
22
|
-
6.
|
|
21
|
+
5. **加载测试约束**:如果 Workflow 或 ADR 提供测试策略、质量门禁、Sprint 边界,必须一并纳入任务生成输入
|
|
22
|
+
6. **执行拆解**:按 WBS 方法拆解任务
|
|
23
|
+
7. **应用验证类型选择逻辑**:为每个任务分配“最轻但足够”的验证类型,避免默认升级为 E2E
|
|
24
|
+
8. **输出**:保存到 `.anws/v{N}/05_TASKS.md`
|
|
23
25
|
|
|
24
26
|
---
|
|
25
27
|
|
|
@@ -33,6 +35,13 @@ description: 使用WBS方法将系统设计文档分解为层次化任务。支
|
|
|
33
35
|
> 3. **可验证** - 每个Task有明确的Done When标准
|
|
34
36
|
> 4. **可追溯** - 每个Task关联PRD需求 [REQ-XXX]
|
|
35
37
|
|
|
38
|
+
> [!IMPORTANT]
|
|
39
|
+
> **测试规划附加原则**:
|
|
40
|
+
> - 优先选择**最轻但足够**的验证类型
|
|
41
|
+
> - 如 Workflow / ADR 已声明测试策略,必须优先遵循,不得自行改重
|
|
42
|
+
> - **冒烟测试默认仅用于 `INT-S{N}` 或极少数里程碑任务**
|
|
43
|
+
> - **回归测试仅在已有关键能力可能被破坏时生成**,不是所有任务的默认要求
|
|
44
|
+
|
|
36
45
|
❌ **错误做法**:
|
|
37
46
|
- 平铺任务列表(无层次)
|
|
38
47
|
- 任务过大(如"实现整个后端")
|
|
@@ -114,6 +123,7 @@ description: 使用WBS方法将系统设计文档分解为层次化任务。支
|
|
|
114
123
|
- **验收标准**:
|
|
115
124
|
- [ ] Done When 1
|
|
116
125
|
- [ ] Done When 2
|
|
126
|
+
- **验证类型**: 单元测试 | 集成测试 | E2E测试 | 冒烟测试 | 回归测试 | 手动验证 | 编译检查 | Lint检查
|
|
117
127
|
- **验证说明**: 如何确认任务完成 (检查什么,如何确认)
|
|
118
128
|
- **估时**: 预估工时(如: 2h, 1d, 1w)
|
|
119
129
|
- **依赖**: T{X}.{Y}.{Z} (依赖的Task ID)
|
|
@@ -130,11 +140,39 @@ description: 使用WBS方法将系统设计文档分解为层次化任务。支
|
|
|
130
140
|
- [ ] `npm run dev` 正常启动
|
|
131
141
|
- [ ] 页面显示"Hello World"
|
|
132
142
|
- [ ] TypeScript类型检查通过
|
|
143
|
+
- **验证类型**: 编译检查
|
|
133
144
|
- **估时**: 2h
|
|
134
145
|
- **依赖**: 无
|
|
135
146
|
- **优先级**: P0
|
|
136
147
|
```
|
|
137
148
|
|
|
149
|
+
### 验证类型选择逻辑
|
|
150
|
+
|
|
151
|
+
> [!IMPORTANT]
|
|
152
|
+
> **如果 Workflow 未给出更具体约束,按以下默认顺序决策:**
|
|
153
|
+
|
|
154
|
+
1. **局部逻辑 / 纯算法 / 数据变换** → 单元测试
|
|
155
|
+
2. **跨模块 / 接口 / 数据库 / 多服务协作** → 集成测试
|
|
156
|
+
3. **直接面向终端用户的关键路径** → E2E测试 或 手动验证
|
|
157
|
+
4. **Sprint 退出标准 / 里程碑 gate** → 冒烟测试
|
|
158
|
+
5. **修改可能影响已完成关键能力** → 回归测试
|
|
159
|
+
6. **配置、脚手架、基础设施** → 编译检查 / Lint检查 / 手动验证
|
|
160
|
+
|
|
161
|
+
**选择细则**:
|
|
162
|
+
- 不要因为任务“看起来重要”就默认选择 E2E测试
|
|
163
|
+
- 如果集成测试足以证明任务完成,就不要升级为 E2E测试
|
|
164
|
+
- 如果只是里程碑 readiness 检查,优先使用少量冒烟测试,而不是新建大量 E2E任务
|
|
165
|
+
- 如果只是验证旧能力未被破坏,优先复用已有测试集合作为回归测试
|
|
166
|
+
|
|
167
|
+
### Sprint 与冒烟测试绑定规则
|
|
168
|
+
|
|
169
|
+
> [!IMPORTANT]
|
|
170
|
+
> **只有在 Workflow 已提供 Sprint 路线图 / INT 任务语义时,才应生成里程碑级冒烟测试。**
|
|
171
|
+
|
|
172
|
+
- 如果上游 Workflow 已定义 `INT-S{N}`,则将冒烟测试优先绑定到这些 INT 任务
|
|
173
|
+
- 不要为每个普通 Level 3 开发任务单独生成冒烟测试
|
|
174
|
+
- 若没有明确 Sprint / 里程碑边界,则优先退回单元测试、集成测试、手动验证,而不是滥造冒烟任务
|
|
175
|
+
|
|
138
176
|
### 接口追溯规则
|
|
139
177
|
|
|
140
178
|
> [!IMPORTANT]
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
## 📋 任务清单
|
|
10
10
|
|
|
11
11
|
### 图例说明
|
|
12
|
-
- **ID**: 唯一任务标识符(
|
|
12
|
+
- **ID**: 唯一任务标识符(T{System}.{Phase}.{Seq})
|
|
13
13
|
- **[P]**: 可并行(可独立执行)
|
|
14
|
-
- **[
|
|
14
|
+
- **[MILESTONE]**: 里程碑 / Sprint 关卡任务(如 `INT-S{N}`)
|
|
15
15
|
- **用户故事**: 映射到 PRD(US01, US02...)
|
|
16
|
-
-
|
|
16
|
+
- **验收标准**: Given / When / Then 或 Done When 形式的完成条件
|
|
17
|
+
- **验证类型**: 单元测试 / 集成测试 / E2E测试 / 冒烟测试 / 回归测试 / 手动验证 / 编译检查 / Lint检查
|
|
18
|
+
- **验证说明**: 如何验证任务完成、需要什么证据
|
|
17
19
|
- **📎 ADR**: 关联的架构决策记录
|
|
18
20
|
- **📎 System**: 关联的系统设计文档
|
|
19
21
|
|
|
@@ -21,44 +23,63 @@
|
|
|
21
23
|
|
|
22
24
|
### 阶段 1:基础阶段
|
|
23
25
|
|
|
24
|
-
####
|
|
26
|
+
#### T3.1.1 - 数据库 Schema 初始化
|
|
25
27
|
- **用户故事**: US01
|
|
26
28
|
- **描述**: 创建 `users` 表,包含 `id`、`email`、`password_hash`、`created_at` 字段。
|
|
27
29
|
- **输入**: `04_SYSTEM_DESIGN/database.md` §用户表设计
|
|
28
30
|
- **输出**: `migrations/001_create_users.sql`
|
|
29
31
|
- **依赖**: 无
|
|
30
|
-
-
|
|
32
|
+
- **验收标准**:
|
|
33
|
+
- Given 数据库已启动
|
|
34
|
+
- When 执行迁移并查看 `users` 表结构
|
|
35
|
+
- Then 表字段与系统设计一致
|
|
36
|
+
- **验证类型**: 集成测试
|
|
37
|
+
- **验证说明**: 运行迁移并执行 `psql -c "\d users"`,保留终端输出作为证据
|
|
31
38
|
- **📎 ADR**: ADR-003 (密码存储方案)
|
|
32
|
-
|
|
33
|
-
####
|
|
39
|
+
|
|
40
|
+
#### T1.1.1 - [P] 环境配置
|
|
34
41
|
- **用户故事**: US01
|
|
35
42
|
- **描述**: 添加包含 `DATABASE_URL`、`JWT_SECRET` 的 `.env` 文件。
|
|
36
43
|
- **输入**: `02_ARCHITECTURE_OVERVIEW.md` §环境配置
|
|
37
44
|
- **输出**: `.env.example`, `docker-compose.yml`
|
|
38
45
|
- **依赖**: 无
|
|
39
|
-
-
|
|
40
|
-
|
|
46
|
+
- **验收标准**:
|
|
47
|
+
- Given 环境变量模板与容器配置已写入
|
|
48
|
+
- When 执行 `docker-compose up`
|
|
49
|
+
- Then 数据库可无报错启动
|
|
50
|
+
- **验证类型**: 编译检查
|
|
51
|
+
- **验证说明**: 启动依赖服务并确认终端输出无报错
|
|
41
52
|
|
|
42
53
|
---
|
|
43
54
|
|
|
44
55
|
### 阶段 2:核心逻辑
|
|
45
56
|
|
|
46
|
-
####
|
|
57
|
+
#### T2.1.1 - 用户注册接口
|
|
47
58
|
- **用户故事**: US01
|
|
48
59
|
- **描述**: 实现 `POST /api/register`,对密码做哈希并保存用户。
|
|
49
|
-
- **输入**: `04_SYSTEM_DESIGN/auth.md` §注册流程,
|
|
60
|
+
- **输入**: `04_SYSTEM_DESIGN/auth.md` §注册流程, T3.1.1 产出的 `users` 表
|
|
50
61
|
- **输出**: `src/routes/auth.js`, `src/services/user.service.js`
|
|
51
|
-
- **依赖**:
|
|
52
|
-
-
|
|
62
|
+
- **依赖**: T3.1.1
|
|
63
|
+
- **验收标准**:
|
|
64
|
+
- Given 注册接口已实现
|
|
65
|
+
- When 发送合法注册请求
|
|
66
|
+
- Then 返回 201 且用户被写入数据库
|
|
67
|
+
- **验证类型**: 集成测试
|
|
68
|
+
- **验证说明**: 调用 `POST /api/register` 并检查响应与数据库写入结果
|
|
53
69
|
- **📎 ADR**: ADR-003 (密码存储方案)
|
|
54
70
|
|
|
55
|
-
####
|
|
71
|
+
#### T2.1.2 - [P] JWT Token 生成
|
|
56
72
|
- **用户故事**: US01
|
|
57
73
|
- **描述**: 创建 `generate_token(user_id)` 辅助函数。
|
|
58
|
-
- **输入**: `04_SYSTEM_DESIGN/auth.md` §JWT 签发,
|
|
74
|
+
- **输入**: `04_SYSTEM_DESIGN/auth.md` §JWT 签发, T1.1.1 产出的 `JWT_SECRET` 配置
|
|
59
75
|
- **输出**: `src/utils/jwt.js`
|
|
60
|
-
- **依赖**:
|
|
61
|
-
-
|
|
76
|
+
- **依赖**: T1.1.1
|
|
77
|
+
- **验收标准**:
|
|
78
|
+
- Given JWT 辅助函数已实现
|
|
79
|
+
- When 运行 `test_generate_token()`
|
|
80
|
+
- Then 所有断言通过
|
|
81
|
+
- **验证类型**: 单元测试
|
|
82
|
+
- **验证说明**: 执行 JWT 相关测试并确认测试通过
|
|
62
83
|
- **📎 ADR**: ADR-004 (JWT 认证方案)
|
|
63
84
|
|
|
64
85
|
---
|
|
@@ -67,51 +88,58 @@
|
|
|
67
88
|
|
|
68
89
|
| 迭代 | 代号 | 核心任务 | 退出标准 | 预估 |
|
|
69
90
|
|------|------|---------|---------|------|
|
|
70
|
-
| S1 | 基础阶段 |
|
|
71
|
-
| S2 | 核心逻辑 |
|
|
91
|
+
| S1 | 基础阶段 | T1.1.1, T3.1.1 | DB 可连接 + 环境变量生效 | 1d |
|
|
92
|
+
| S2 | 核心逻辑 | T2.1.1-T2.2.1 | 完整认证流程可运行 | 2d |
|
|
72
93
|
|
|
73
94
|
---
|
|
74
95
|
|
|
75
96
|
### 阶段 3:集成阶段
|
|
76
97
|
|
|
77
|
-
####
|
|
98
|
+
#### T2.2.1 - 登录接口
|
|
78
99
|
- **用户故事**: US01
|
|
79
100
|
- **描述**: 实现 `POST /api/login`,校验凭证并返回 JWT。
|
|
80
|
-
- **输入**: `04_SYSTEM_DESIGN/auth.md` §登录流程,
|
|
101
|
+
- **输入**: `04_SYSTEM_DESIGN/auth.md` §登录流程, T2.1.1 产出的 `users` 表, T2.1.2 产出的 `generate_token()` 函数
|
|
81
102
|
- **输出**: `/api/login` 端点 (`src/routes/auth.js`)
|
|
82
|
-
- **依赖**:
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
- **依赖**: T2.1.1, T2.1.2
|
|
104
|
+
- **验收标准**:
|
|
105
|
+
- Given 登录接口已实现
|
|
106
|
+
- When 使用合法凭证请求登录
|
|
107
|
+
- Then 返回 JWT
|
|
108
|
+
- Given 非法凭证
|
|
109
|
+
- When 请求登录
|
|
110
|
+
- Then 返回 401
|
|
111
|
+
- **验证类型**: 集成测试
|
|
112
|
+
- **验证说明**: 调用 `/api/login` 并分别检查成功与失败路径
|
|
86
113
|
- **📎 ADR**: ADR-004 (JWT 认证方案)
|
|
87
114
|
|
|
88
115
|
#### INT-S2 - [MILESTONE] S2 集成验证 — 核心逻辑
|
|
89
116
|
- **用户故事**: US01
|
|
90
|
-
- **类型**: 集成验证(迭代关卡)
|
|
91
117
|
- **描述**: 验证 S2 退出标准:完整认证流程可运行
|
|
92
118
|
- **输入**: `02_ARCHITECTURE_OVERVIEW.md` §认证流程, S2 所有任务的产出
|
|
93
119
|
- **输出**: 集成验证报告
|
|
94
|
-
- **依赖**:
|
|
95
|
-
-
|
|
120
|
+
- **依赖**: T2.1.1, T2.1.2, T2.2.1
|
|
121
|
+
- **验收标准**:
|
|
96
122
|
1. 运行 `npm run dev` 或等价命令
|
|
97
123
|
2. 通过 `/api/register` 注册新用户
|
|
98
124
|
3. 使用合法凭证登录 → 收到 JWT 令牌
|
|
99
125
|
4. 使用非法凭证登录 → 收到 401 错误
|
|
100
126
|
5. 所有单元测试通过(`npm test`)
|
|
101
127
|
6. 无 Linter 错误(`npm run lint`)
|
|
128
|
+
- **验证类型**: 集成测试 / 冒烟测试
|
|
129
|
+
- **验证说明**: 按退出标准逐条执行;使用真实注册与登录链路作为最小冒烟检查,并保留日志或截图
|
|
102
130
|
|
|
103
131
|
---
|
|
104
132
|
|
|
105
133
|
## 🔗 依赖图
|
|
106
134
|
|
|
107
135
|
```
|
|
108
|
-
|
|
109
|
-
→
|
|
110
|
-
→
|
|
136
|
+
T3.1.1 (数据库 Schema)
|
|
137
|
+
→ T2.1.1 (注册)
|
|
138
|
+
→ T2.2.1 (登录)
|
|
111
139
|
|
|
112
|
-
|
|
113
|
-
→
|
|
114
|
-
→
|
|
140
|
+
T1.1.1 (环境配置) [P]
|
|
141
|
+
→ T2.1.2 (JWT 辅助函数) [P]
|
|
142
|
+
→ T2.2.1 (登录)
|
|
115
143
|
```
|
|
116
144
|
|
|
117
145
|
---
|
|
@@ -132,7 +160,8 @@ T002 (环境配置) [P]
|
|
|
132
160
|
在将蓝图标记为完成前:
|
|
133
161
|
- [ ] 所有任务都有唯一 ID
|
|
134
162
|
- [ ] 依赖关系明确(使用 `→` 表示)
|
|
135
|
-
- [ ] 每个任务都有
|
|
163
|
+
- [ ] 每个任务都有 `验收标准`
|
|
164
|
+
- [ ] 每个任务都有 `验证类型` 与 `验证说明`
|
|
136
165
|
- [ ] **每个任务的「输入」都引用了设计文档**(ADR/System Design/PRD/Architecture)
|
|
137
166
|
- [ ] 任务中不包含实际代码(仅保留 <10 行描述)
|
|
138
167
|
- [ ] 总体估时合理
|
|
@@ -151,13 +180,14 @@ T001 - 构建认证系统
|
|
|
151
180
|
|
|
152
181
|
✅ **好任务示例**:
|
|
153
182
|
```
|
|
154
|
-
|
|
183
|
+
T3.1.1 - 数据库 Schema 初始化
|
|
155
184
|
- 输入: `04_SYSTEM_DESIGN/database.md` §用户表设计
|
|
156
185
|
- 描述: 创建包含 `id`、`email`、`password_hash` 的 `users` 表。
|
|
157
|
-
-
|
|
186
|
+
- 验收标准: Given 迁移完成, When 查看表结构, Then 字段与设计一致。
|
|
187
|
+
- 验证类型: 集成测试
|
|
158
188
|
- 📎 ADR: ADR-003 (密码存储方案)
|
|
159
189
|
```
|
|
160
190
|
|
|
161
191
|
---
|
|
162
192
|
|
|
163
|
-
**下一步**:进入 `/
|
|
193
|
+
**下一步**:进入 `/forge` workflow,按顺序实现这些任务。
|
|
@@ -58,7 +58,10 @@ description: "将架构设计拆解为可执行的 WBS 任务清单。适用于
|
|
|
58
58
|
1. **读取 Architecture**: 读取 `{TARGET_DIR}/02_ARCHITECTURE_OVERVIEW.md`
|
|
59
59
|
2. **读取 PRD**: 读取 `{TARGET_DIR}/01_PRD.md`
|
|
60
60
|
3. **读取 ADRs**: 扫描 `{TARGET_DIR}/03_ADR/` 目录
|
|
61
|
-
4.
|
|
61
|
+
4. **加载测试策略约束**:
|
|
62
|
+
- 如 `{TARGET_DIR}/03_ADR/` 中存在测试策略、质量门禁、验证分层相关 ADR,必须一并读取
|
|
63
|
+
- 将其中关于单元/集成/E2E/冒烟/回归测试的约束视为 Task 生成输入,而不是事后参考
|
|
64
|
+
5. **调用技能**: `task-planner`
|
|
62
65
|
|
|
63
66
|
---
|
|
64
67
|
|
|
@@ -70,6 +73,14 @@ description: "将架构设计拆解为可执行的 WBS 任务清单。适用于
|
|
|
70
73
|
> **任务格式要求** (CRITICAL):
|
|
71
74
|
> 每个 Level 3 任务必须包含以下字段。
|
|
72
75
|
|
|
76
|
+
> [!IMPORTANT]
|
|
77
|
+
> **调用 `task-planner` 时必须显式传递以下约束**:
|
|
78
|
+
> - 当前版本的 PRD、Architecture、ADRs、System Design 是唯一事实来源
|
|
79
|
+
> - 如 ADR 中存在测试策略与质量门禁,`task-planner` 必须优先遵循
|
|
80
|
+
> - 默认按“最轻但足够”的原则选择验证类型
|
|
81
|
+
> - **冒烟测试默认仅放在 `INT-S{N}` 或极少数里程碑任务**
|
|
82
|
+
> - 不得因为“更保险”就把大量任务默认升级成 E2E测试
|
|
83
|
+
|
|
73
84
|
### 任务格式模板
|
|
74
85
|
|
|
75
86
|
```markdown
|
|
@@ -78,71 +89,47 @@ description: "将架构设计拆解为可执行的 WBS 任务清单。适用于
|
|
|
78
89
|
- **输入**: 设计文档引用 + 前置任务产出(必须包含至少一个文档引用)
|
|
79
90
|
- **输出**: 产出的文件/组件/接口
|
|
80
91
|
- **📎 参考**: ADR_XXX_*.md 或 System Design 章节(如有)
|
|
81
|
-
- **验收标准**:
|
|
92
|
+
- **验收标准**:
|
|
82
93
|
- Given [前置条件]
|
|
83
94
|
- When [执行动作]
|
|
84
95
|
- Then [预期结果]
|
|
85
|
-
- **验证类型**: [单元测试 | 集成测试 | E2E测试 | 手动验证 | 编译检查 | Lint检查]
|
|
96
|
+
- **验证类型**: [单元测试 | 集成测试 | E2E测试 | 冒烟测试 | 回归测试 | 手动验证 | 编译检查 | Lint检查]
|
|
86
97
|
- **验证说明**: [如何检查完成,检查什么,具体命令或步骤]
|
|
87
98
|
- **估时**: Xh
|
|
88
99
|
- **依赖**: T{A}.{B}.{C} (如有)
|
|
89
100
|
```
|
|
90
101
|
|
|
91
|
-
|
|
92
|
-
> **输入字段强制要求**:
|
|
93
|
-
> - 每个任务的「输入」必须引用至少一个设计文档
|
|
94
|
-
> - 可引用:`02_ARCHITECTURE_OVERVIEW.md`、`01_PRD.md`、`03_ADR/ADR_XXX_*.md`、`04_SYSTEM_DESIGN/*.md`
|
|
95
|
-
> - 禁止模糊描述如"相关设计"、"需求文档"——必须具体到文件和章节
|
|
96
|
-
> - ADR 引用格式统一为 `ADR_XXX_*.md`(与 genesis 保持一致)
|
|
97
|
-
|
|
98
|
-
### 验证类型说明
|
|
102
|
+
### 测试分层标准
|
|
99
103
|
|
|
100
104
|
> [!IMPORTANT]
|
|
101
|
-
>
|
|
105
|
+
> **Blueprint 必须按测试分层生成任务,而不是把所有验证都塞成 E2E。**
|
|
102
106
|
>
|
|
103
|
-
>
|
|
104
|
-
>
|
|
105
|
-
>
|
|
106
|
-
>
|
|
107
|
-
>
|
|
108
|
-
>
|
|
109
|
-
> | **编译检查** | 构建命令 | 终端输出:`Build succeeded` |
|
|
110
|
-
> | **Lint检查** | Lint 命令 | 终端输出:`0 problems` |
|
|
111
|
-
|
|
112
|
-
**验证类型选择指南**:
|
|
113
|
-
- 纯逻辑/算法任务 → 单元测试
|
|
114
|
-
- 跨模块/跨系统任务 → 集成测试
|
|
115
|
-
- 用户交互/前端任务 → E2E测试 或 手动验证
|
|
116
|
-
- 配置/基础设施任务 → 编译检查 或 手动验证
|
|
117
|
-
- 代码质量任务 → Lint检查
|
|
107
|
+
> 默认采用以下层次:
|
|
108
|
+
> - **单元测试**: 验证局部逻辑
|
|
109
|
+
> - **集成测试**: 验证模块/系统协作
|
|
110
|
+
> - **冒烟测试**: 验证里程碑关口的少量关键路径是否可运行
|
|
111
|
+
> - **E2E测试**: 验证关键用户故事或主业务链路
|
|
112
|
+
> - **回归测试**: 验证新变更未破坏已完成的关键能力
|
|
118
113
|
|
|
119
|
-
###
|
|
114
|
+
### 冒烟测试使用原则
|
|
120
115
|
|
|
121
116
|
> [!IMPORTANT]
|
|
122
|
-
>
|
|
117
|
+
> **冒烟测试应当少而真实,主要用于里程碑门控,不应泛滥到每个任务。**
|
|
123
118
|
>
|
|
124
|
-
>
|
|
125
|
-
>
|
|
126
|
-
> - ✅ 好: B 输入 = “T2.1.2 产出的 `MapGenerator` 类(`src/core/map_gen.py`)的 `generate()` 方法返回的 `World` 对象”
|
|
127
|
-
> - ❌ 差: B 输入 = “地图数据”
|
|
119
|
+
> Blueprint 生成任务时,应优先把冒烟测试放在**大进展、大功能完成、准备进入下一阶段**的关口。
|
|
120
|
+
> 它的目标是验证“系统是否基本可用 / 可演示 / 可继续推进”,而不是替代全量回归测试。
|
|
128
121
|
|
|
129
|
-
###
|
|
122
|
+
### 回归测试使用原则
|
|
130
123
|
|
|
131
124
|
> [!IMPORTANT]
|
|
132
|
-
>
|
|
133
|
-
> AI 执行任务时根据说明自行确定检查方式。
|
|
125
|
+
> **回归测试不是每次小改都跑全量,而是对“已有能力是否被破坏”的有针对性复验。**
|
|
134
126
|
|
|
135
|
-
|
|
136
|
-
| 任务类型 | 验证说明示例 |
|
|
137
|
-
|---------|-------------|
|
|
138
|
-
| 前端组件 | 检查组件是否正确渲染;确认交互逻辑符合预期 |
|
|
139
|
-
| API 端点 | 调用接口确认返回正确格式;检查错误处理 |
|
|
140
|
-
| 数据库 Schema | 确认 Migration 成功执行;验证数据类型正确 |
|
|
141
|
-
| 配置文件 | 启动服务确认配置生效;检查环境变量读取 |
|
|
142
|
-
| 单元测试 | 运行测试套件确认全部通过 |
|
|
143
|
-
| 文档 | 阅读确认内容完整准确 |
|
|
127
|
+
### 接口追溯规则
|
|
144
128
|
|
|
145
|
-
|
|
129
|
+
> [!IMPORTANT]
|
|
130
|
+
> **任务间的输入/输出必须对齐。**
|
|
131
|
+
>
|
|
132
|
+
> 如果任务 B 依赖任务 A,则 B 的「输入」必须明确引用 A 的「输出」的具体产物(文件路径、接口名、数据格式)。
|
|
146
133
|
|
|
147
134
|
---
|
|
148
135
|
|
|
@@ -151,7 +138,7 @@ description: "将架构设计拆解为可执行的 WBS 任务清单。适用于
|
|
|
151
138
|
**目标**: 将任务分组为 Sprint/里程碑,每个 Sprint 必须有明确的退出标准和集成验证任务。
|
|
152
139
|
|
|
153
140
|
> [!IMPORTANT]
|
|
154
|
-
> **每个 Sprint
|
|
141
|
+
> **每个 Sprint 必须有退出标准和 INT 集成验证任务。**
|
|
155
142
|
>
|
|
156
143
|
> Sprint 不只是“一堆任务”,而是一个有明确入口和出口的工作单元。
|
|
157
144
|
> 退出标准定义“什么算做完”,集成验证任务负责“证明做完”。
|
|
@@ -180,12 +167,15 @@ description: "将架构设计拆解为可执行的 WBS 任务清单。适用于
|
|
|
180
167
|
- Given S{N} 所有任务已完成
|
|
181
168
|
- When 执行退出标准中的每一项检查
|
|
182
169
|
- Then 全部通过 → Sprint 完成; 有失败 → 记录 Bug 并触发修复波次
|
|
183
|
-
-
|
|
170
|
+
- **验证类型**: 集成测试 / 冒烟测试 / E2E测试(按退出标准选择其一或组合)
|
|
171
|
+
- **验证说明**: 按退出标准逐条执行;如适用,增加少量真实冒烟检查验证关键路径是否可运行;若本 Sprint 改动触及已完成关键能力,可追加最小回归检查,使用截图/录屏/日志确认
|
|
184
172
|
- **估时**: 2-4h
|
|
185
173
|
- **依赖**: S{N} 所有任务
|
|
186
174
|
```
|
|
187
175
|
|
|
188
176
|
> INT 任务是该 Sprint 的“关门任务”。未通过 INT 任务的 Sprint 不得标记为完成。
|
|
177
|
+
> 默认优先将“真实冒烟测试”收敛在 INT 任务中,而不是扩散到所有开发任务。
|
|
178
|
+
> 调用 `task-planner` 时,应把 **Sprint 边界 + INT 任务 + 冒烟测试绑定规则** 一并传入,禁止 skill 自行把冒烟测试扩散到普通开发任务。
|
|
189
179
|
|
|
190
180
|
---
|
|
191
181
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "处理当前版本内的局部修订请求,允许修改已有任务的细节和补充必要的承接项。适用于任务执行过程中发现描述不准确、验收标准需调整等场景。禁止创建新功能或添加无关新任务,超出范围时引导用户运行 /genesis。"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# /change
|
|
@@ -8,19 +8,20 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
8
8
|
你是 **CHANGE MANAGER (变更管理师)**。
|
|
9
9
|
|
|
10
10
|
**核心使命**:
|
|
11
|
-
|
|
11
|
+
- 处理当前版本内的**局部修订与 task 调整**。只要变更不偏离 ADR 与架构基线,就应优先在 `/change` 内完成,而不是动辄升级到新版本。
|
|
12
12
|
|
|
13
13
|
**核心原则**:
|
|
14
|
-
-
|
|
14
|
+
- **局部修订优先** - 普通文件、设计、任务定义修订默认优先走 `/change`
|
|
15
|
+
- **不偏离 ADR 的 task 调整优先** - 验收标准、估时、优先级、任务编排、少量承接任务补充默认由 `/change` 处理
|
|
16
|
+
- **只改不乱增** - 允许在当前版本内补足必要承接项,但禁止无明确请求的功能蔓延
|
|
15
17
|
- **忠于 Blueprint** - 所有修改必须在 `01_PRD.md` 已定义的需求范围内
|
|
16
18
|
- **人类审批** - 所有写操作必须先展示计划,经人类确认后才能执行
|
|
17
19
|
- **可追溯** - 所有变更都记录在 CHANGELOG
|
|
18
20
|
- **不维护完成状态** - `/change` 只修改任务定义,不负责回填 `05_TASKS.md` checkbox
|
|
19
21
|
|
|
20
22
|
**Output Goal**:
|
|
21
|
-
- 更新 `.anws/v{N}/05_TASKS.md`
|
|
23
|
+
- 更新 `.anws/v{N}/05_TASKS.md`
|
|
22
24
|
- 更新 `.anws/v{N}/06_CHANGELOG.md`
|
|
23
|
-
- (可选) 微调 `.anws/v{N}/04_SYSTEM_DESIGN/` 中已有文件的细节
|
|
24
25
|
|
|
25
26
|
---
|
|
26
27
|
|
|
@@ -36,15 +37,18 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
36
37
|
> | 调整已有任务的估时 | ✅ | |
|
|
37
38
|
> | 标记任务阻塞/重分优先级 | ✅ | |
|
|
38
39
|
> | 微调 `04_SYSTEM_DESIGN/` 中已有文件的细节 | ✅ | |
|
|
40
|
+
> | 修改当前版本中的普通文档/设计文件细节 | ✅ | |
|
|
41
|
+
> | 为承接已明确请求的局部修订而补充少量必要任务 | ✅ | |
|
|
39
42
|
> | 更新任务说明字段,但不改变完成状态 | ✅ | |
|
|
43
|
+
> | 调整任务编排、Sprint/Wave 内排序(不改变 ADR 前提) | ✅ | |
|
|
40
44
|
> | **回填 `05_TASKS.md` checkbox** | | ❌ |
|
|
41
|
-
> | **创建新任务 (T{X}.{Y}.{Z})** | | ❌ |
|
|
42
45
|
> | **创建新文件** | | ❌ |
|
|
43
46
|
> | **添加 AI 自认为好的功能** | | ❌ |
|
|
44
47
|
> | **修改 [REQ-XXX] 需求引用** | | ❌ |
|
|
45
48
|
> | **修改 `01_PRD.md`** | | ❌ |
|
|
46
49
|
> | **修改 `02_ARCHITECTURE_OVERVIEW.md`** | | ❌ |
|
|
47
50
|
> | **修改 `03_ADR/` 中的任何文件** | | ❌ |
|
|
51
|
+
> | **修改系统边界或跨系统架构基线** | | ❌ |
|
|
48
52
|
>
|
|
49
53
|
> **违反以上任何一条 → 变更无效,引导用户运行 `/genesis`。**
|
|
50
54
|
|
|
@@ -63,6 +67,7 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
63
67
|
>
|
|
64
68
|
> **你的职责是忠实执行用户要求的微调,而非自作主张改善系统。**
|
|
65
69
|
> **如果你发现了值得改进的地方,请在报告中以"建议"形式告知用户,由用户决定是否通过 `/genesis` 处理。**
|
|
70
|
+
|
|
66
71
|
</phase_context>
|
|
67
72
|
|
|
68
73
|
---
|
|
@@ -71,8 +76,13 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
71
76
|
|
|
72
77
|
> [!IMPORTANT]
|
|
73
78
|
> **变更分类决定处理方式**:
|
|
74
|
-
> -
|
|
75
|
-
> -
|
|
79
|
+
> - **局部修订 (Local Refinement)** → 本工作流处理
|
|
80
|
+
> - **受控扩展 (Controlled Expansion)** → 本工作流处理,但必须显式展示影响范围
|
|
81
|
+
> - **架构演进 (Architectural Evolution)** → 引导用户运行 `/genesis`
|
|
82
|
+
|
|
83
|
+
> [!NOTE]
|
|
84
|
+
> **默认判断原则**:
|
|
85
|
+
> 只要变更仍然遵守现有 ADR、系统边界与版本基线,即使需要调整多个 task,也应优先留在 `/change`。
|
|
76
86
|
|
|
77
87
|
---
|
|
78
88
|
|
|
@@ -93,33 +103,34 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
93
103
|
|
|
94
104
|
---
|
|
95
105
|
|
|
96
|
-
## Step 1: 变更影响评估 (
|
|
106
|
+
## Step 1: 变更影响评估 (分级判定)
|
|
97
107
|
|
|
98
|
-
**目标**:
|
|
108
|
+
**目标**: 判断变更属于局部修订、受控扩展,还是必须升级到 `/genesis` 的架构演进。
|
|
99
109
|
|
|
100
110
|
> [!IMPORTANT]
|
|
101
|
-
> **你必须逐一回答以下 7
|
|
102
|
-
> **全部为"否"才是微调,任意一个"是"就必须走 `/genesis`。**
|
|
111
|
+
> **你必须逐一回答以下 7 个问题**,并据此给出分级。
|
|
103
112
|
|
|
104
|
-
| # | 评估问题 |
|
|
113
|
+
| # | 评估问题 | Local / Controlled 条件 |
|
|
105
114
|
|---|---------|---------|
|
|
106
115
|
| 1 | 是否改变系统边界或新增系统? | 否 |
|
|
107
|
-
| 2 |
|
|
108
|
-
| 3 | 是否影响多个系统的接口? |
|
|
109
|
-
| 4 |
|
|
116
|
+
| 2 | 是否修改 ADR、Architecture Overview 或版本基线? | 否 |
|
|
117
|
+
| 3 | 是否影响多个系统的接口? | 否或影响可控且不改基线 |
|
|
118
|
+
| 4 | 是否需要新增外部依赖 (npm包/API/服务)? | 否或仅限当前版本内小范围可控引入 |
|
|
110
119
|
| 5 | 用户是否明确要求新版本? | 否 |
|
|
111
|
-
| 6 |
|
|
120
|
+
| 6 | **是否需要在 `05_TASKS.md` 中新增承接当前变更的少量任务?** | **允许,但必须与用户原话直接对应** |
|
|
112
121
|
| 7 | **变更是否超出 `01_PRD.md` 中已定义的需求范围?** | **否** |
|
|
113
122
|
|
|
114
123
|
> [!IMPORTANT]
|
|
115
124
|
> **Q6 和 Q7 是核心防线**:
|
|
116
|
-
> - Q6
|
|
125
|
+
> - Q6 允许必要的最小承接,但不允许借机注入无关新功能
|
|
117
126
|
> - Q7 阻止了超出 PRD 范围的"功能蔓延"
|
|
118
127
|
> - 当你不确定 Q7 时,**必须读取 `01_PRD.md` 进行验证**,不允许凭印象判断
|
|
128
|
+
> - **如果变更只是为了更好地兑现现有 ADR 与 PRD,应优先判为 `/change` 可处理**
|
|
119
129
|
|
|
120
130
|
**判定逻辑**:
|
|
121
|
-
-
|
|
122
|
-
-
|
|
131
|
+
- 不改变系统边界 / ADR / 版本基线,且影响半径局部 → **局部修订 (Local Refinement)**
|
|
132
|
+
- 不改变系统边界 / ADR / 版本基线,但需要少量任务、任务重排或设计同步调整以兑现当前版本目标 → **受控扩展 (Controlled Expansion)**
|
|
133
|
+
- 只要触及系统边界、ADR、版本基线,或已经无法在当前 ADR 前提下继续收敛 → **架构演进 (Architectural Evolution)**,跳转 Step 4
|
|
123
134
|
|
|
124
135
|
**输出示例**:
|
|
125
136
|
```markdown
|
|
@@ -131,25 +142,25 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
131
142
|
| 问题 | 答案 | 理由 |
|
|
132
143
|
|------|:----:|------|
|
|
133
144
|
| 改变系统边界? | 否 | 仅修改文案 |
|
|
134
|
-
|
|
|
145
|
+
| 修改 ADR/架构基线? | 否 | 无 |
|
|
135
146
|
| 影响多系统接口? | 否 | 纯前端文案修改 |
|
|
136
|
-
|
|
|
147
|
+
| 新增外部依赖? | 否 | 无 |
|
|
137
148
|
| 用户要求新版本? | 否 | 未提及 |
|
|
138
|
-
|
|
|
149
|
+
| 需要新增承接任务? | 否 | 对应 T2.1.3 的验收标准修改 |
|
|
139
150
|
| 超出 PRD 范围? | 否 | [REQ-005] 已定义登录功能 |
|
|
140
151
|
|
|
141
|
-
**结论**: ✅
|
|
152
|
+
**结论**: ✅ 局部修订 — 修改 T2.1.3 的验收标准
|
|
142
153
|
```
|
|
143
154
|
|
|
144
155
|
---
|
|
145
156
|
|
|
146
157
|
## Step 2: 定位受影响的已有任务
|
|
147
158
|
|
|
148
|
-
**目标**:
|
|
159
|
+
**目标**: 找到受影响的现有任务与文档,并判断是否需要补充最小承接项。
|
|
149
160
|
|
|
150
161
|
> [!IMPORTANT]
|
|
151
|
-
>
|
|
152
|
-
>
|
|
162
|
+
> **优先复用已有任务。**
|
|
163
|
+
> 只有当用户请求的局部修订无法被现有任务承接时,才允许补充少量直接相关的新任务;只要仍不偏离 ADR 与当前版本目标,就不应轻易跳转 `/genesis`。
|
|
153
164
|
|
|
154
165
|
1. **读取当前任务清单**:
|
|
155
166
|
读取 `{TARGET_DIR}/05_TASKS.md`
|
|
@@ -160,7 +171,9 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
160
171
|
3. **定位任务**:
|
|
161
172
|
- 找到与变更相关的已有任务 (如 `T2.1.3`)
|
|
162
173
|
- 记录所有实际受影响的已有任务
|
|
163
|
-
-
|
|
174
|
+
- 如现有任务无法承接,但变更仍属当前版本内局部修订,可补充少量新任务并在 Step 3 明确展示
|
|
175
|
+
- 如仅需在当前 ADR 前提下重排任务、调整 Sprint/Wave 归属或补充少量承接项,仍由 `/change` 处理
|
|
176
|
+
- 如需要重做任务结构的根因是 ADR 已不成立或系统边界已变化 → 跳转 Step 4
|
|
164
177
|
|
|
165
178
|
4. **定位相关设计文件** (如需要):
|
|
166
179
|
- 检查 `{TARGET_DIR}/04_SYSTEM_DESIGN/` 中是否有对应的系统设计文件
|
|
@@ -203,7 +216,7 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
203
216
|
```markdown
|
|
204
217
|
⚠️ 人类检查点 — 变更确认
|
|
205
218
|
|
|
206
|
-
**变更级别**:
|
|
219
|
+
**变更级别**: 局部修订 / 受控扩展
|
|
207
220
|
**用户原始请求**: "{用户原话}"
|
|
208
221
|
**受影响任务**: {N} 个
|
|
209
222
|
|
|
@@ -233,12 +246,13 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
233
246
|
1. **修改任务清单**:
|
|
234
247
|
使用 `replace_file_content` 修改 `{TARGET_DIR}/05_TASKS.md` 中的对应任务定义
|
|
235
248
|
- 仅允许修改任务描述、验收标准、估时、优先级、阻塞说明等定义字段
|
|
249
|
+
- 如 Step 1 判定为受控扩展,可补充少量与用户原话直接对应的新任务
|
|
236
250
|
- **禁止**在 `/change` 中将 `- [ ]` 改为 `- [x]` 或反向修改 checkbox
|
|
237
251
|
|
|
238
252
|
2. **记录变更日志**:
|
|
239
253
|
读取并追加到 `{TARGET_DIR}/06_CHANGELOG.md`:
|
|
240
254
|
```markdown
|
|
241
|
-
## {YYYY-MM-DD} -
|
|
255
|
+
## {YYYY-MM-DD} - 局部修订变更
|
|
242
256
|
- [CHANGE] T{X}.{Y}.{Z}: {修改描述}
|
|
243
257
|
- 用户原话: "{用户的原始请求}"
|
|
244
258
|
- 修改内容: {具体修改了什么}
|
|
@@ -248,7 +262,7 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
248
262
|
|
|
249
263
|
3. **更新 AGENTS.md**:
|
|
250
264
|
- 更新 `最近一次更新` 日期。
|
|
251
|
-
- (注意:
|
|
265
|
+
- (注意: 局部修订不改变待办任务数)
|
|
252
266
|
|
|
253
267
|
4. **报告**: 告知用户变更已完成。
|
|
254
268
|
|
|
@@ -259,8 +273,8 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
259
273
|
**目标**: 告知用户需要运行 `/genesis` 创建新版本。
|
|
260
274
|
|
|
261
275
|
> [!IMPORTANT]
|
|
262
|
-
>
|
|
263
|
-
>
|
|
276
|
+
> **只有触及系统边界、ADR、版本基线或明确的新版本诉求时,才升级到 `/genesis`。**
|
|
277
|
+
> 不要把普通局部修订过度升级为架构演进,也不要把架构演进伪装成 `/change`。
|
|
264
278
|
|
|
265
279
|
```markdown
|
|
266
280
|
🚫 此变更**超出 /change 的权限范围**。
|
|
@@ -269,8 +283,8 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
269
283
|
- [问题 X]: 是 — {理由}
|
|
270
284
|
|
|
271
285
|
**为什么 /change 不能处理?**
|
|
272
|
-
/change
|
|
273
|
-
|
|
286
|
+
/change 的职责是处理当前版本内的局部修订与受控扩展,
|
|
287
|
+
但不能改写架构基线、系统边界或版本级决策。
|
|
274
288
|
|
|
275
289
|
**这能防止什么?**
|
|
276
290
|
- ❌ AI 自行添加"觉得好"的功能
|
|
@@ -304,11 +318,10 @@ description: "处理微调级变更请求,仅允许修改已有任务的细节
|
|
|
304
318
|
---
|
|
305
319
|
|
|
306
320
|
<completion_criteria>
|
|
307
|
-
- ✅ 完成 7 问题评估 (含 Q6
|
|
308
|
-
- ✅
|
|
321
|
+
- ✅ 完成 7 问题评估 (含 Q6 承接任务检查 + Q7 PRD 范围检查)
|
|
322
|
+
- ✅ 局部修订 / 受控扩展: 定位受影响内容 + 展示计划 + 人类确认 + 执行修改 + 记录 CHANGELOG
|
|
309
323
|
- ✅ 超出范围: 明确告知用户 /change 无权处理,引导 /genesis
|
|
310
324
|
- ✅ 所有写操作前通过了人类检查点
|
|
311
|
-
- ✅
|
|
325
|
+
- ✅ 如有新增任务,必须与用户原话直接对应且影响范围已显式展示
|
|
312
326
|
- ✅ 未添加任何 AI 自认为好的功能
|
|
313
327
|
</completion_criteria>
|
|
314
|
-
|
|
@@ -137,6 +137,13 @@ description: "深度探索复杂问题,产出结构化洞察。适用于技术
|
|
|
137
137
|
|
|
138
138
|
使用搜索工具搜索相关关键词
|
|
139
139
|
|
|
140
|
+
> [!IMPORTANT]
|
|
141
|
+
> **可选 Skill 可用性检测**:
|
|
142
|
+
> - `find-skills` 是**可选增强**,不是默认依赖
|
|
143
|
+
> - 如果当前环境支持 `find-skills`,可将其作为方法论与能力发现的额外来源
|
|
144
|
+
> - 如果当前环境**不支持** `find-skills`,直接继续使用 `search_web`、`read_url_content` 等标准搜索路径
|
|
145
|
+
> - **不得因 `find-skills` 不可用而中断 workflow**
|
|
146
|
+
|
|
140
147
|
**搜索技巧**:
|
|
141
148
|
| 目标 | 技巧 | 示例 |
|
|
142
149
|
|------|------|------|
|
|
@@ -146,6 +153,27 @@ description: "深度探索复杂问题,产出结构化洞察。适用于技术
|
|
|
146
153
|
| 对比分析 | `vs`, `comparison`, `benchmark` | "Rust vs Go benchmark" |
|
|
147
154
|
| 实战经验 | `best practices`, `production` | "K8s production best practices" |
|
|
148
155
|
| 问题解决 | `how to`, `fix`, `solution` | "Python asyncio memory leak fix" |
|
|
156
|
+
| **find-skills** | `find-skills` | "find-skills Rust async" |
|
|
157
|
+
|
|
158
|
+
> [!IMPORTANT]
|
|
159
|
+
> **`find-skills` 是可选探索源,不是默认必用步骤。**
|
|
160
|
+
>
|
|
161
|
+
> 当问题需要吸收成熟方法论、检查框架、设计启发或测试策略时,可以额外调用 `find-skills`。
|
|
162
|
+
> 适用场景包括:
|
|
163
|
+
> - 想了解某类专业能力是否已有现成 skill 可复用
|
|
164
|
+
> - 希望借鉴 UI/UX、架构评审、测试、性能优化等领域的成熟框架
|
|
165
|
+
> - 需要把外部 skill 中的结构化经验转译进 ADR、SYSTEM_DESIGN、TASKS 或 Workflow
|
|
166
|
+
|
|
167
|
+
**Skill Harvesting 原则**:
|
|
168
|
+
1. **先发现**: 用 `find-skills` 查找相关能力或方法源
|
|
169
|
+
2. **再提炼**: 提取有价值的检查维度、输出结构、启发式原则、验收方式
|
|
170
|
+
3. **后转译**: 将这些内容写入当前探索报告与后续文档,而不是整段搬运 skill 本体
|
|
171
|
+
4. **保持可选**: 如果普通搜索和内部推理已足够,不必强行调用 `find-skills`
|
|
172
|
+
|
|
173
|
+
**备用搜索路径**(当 `find-skills` 不可用时):
|
|
174
|
+
1. 使用 `search_web` 搜索方法论关键词、最佳实践、对标对象和测试策略关键词
|
|
175
|
+
2. 使用 `read_url_content` 读取高质量文档、官方文档或代表性深度文章
|
|
176
|
+
3. 在最终报告中标注:本次结论来自 Web / 文档搜索,**未使用 skill harvesting 增强**
|
|
149
177
|
|
|
150
178
|
### 2.2 向内发散 (Inward Divergence) 🧠
|
|
151
179
|
|
|
@@ -248,6 +276,12 @@ description: "深度探索复杂问题,产出结构化洞察。适用于技术
|
|
|
248
276
|
|
|
249
277
|
将内容保存到报告文件。
|
|
250
278
|
|
|
279
|
+
> [!NOTE]
|
|
280
|
+
> 如果本次探索使用了 `find-skills`,请在报告中明确区分:
|
|
281
|
+
> - 哪些结论来自 Web / 文档搜索
|
|
282
|
+
> - 哪些结论来自 skill harvesting
|
|
283
|
+
> - 哪些内容被建议沉淀到 ADR、SYSTEM_DESIGN、TASKS 或 Workflow
|
|
284
|
+
|
|
251
285
|
**报告模板**:
|
|
252
286
|
|
|
253
287
|
```markdown
|
|
@@ -146,6 +146,38 @@ description: "从 0 到代码的项目启动全流程。适用于新项目立项
|
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
149
|
+
## Step 2.5: 研究闸门 (Explore Gate)
|
|
150
|
+
|
|
151
|
+
**目标**: 在高不确定性决策进入技术评估与 ADR 前,按需补充外部调研。
|
|
152
|
+
|
|
153
|
+
> [!IMPORTANT]
|
|
154
|
+
> **此步骤是条件触发,不是默认必跑。**
|
|
155
|
+
>
|
|
156
|
+
> **满足任一条件时,应插入 `/explore`**:
|
|
157
|
+
> - 技术方案存在明显不确定性,需要先调研再比较
|
|
158
|
+
> - 决策涉及 UI 风格、交互模式、工作台信息架构等高专业度问题
|
|
159
|
+
> - 用户明确要求对标某个产品、行业实践或最佳实践
|
|
160
|
+
> - 该 ADR 需要外部证据支撑,而非仅靠内部推导
|
|
161
|
+
> - 需要检索可复用的方法论、检查框架或技能资产
|
|
162
|
+
> - 需要先明确测试策略、质量门禁或验证分层,再决定架构和任务模板
|
|
163
|
+
|
|
164
|
+
**执行方式**:
|
|
165
|
+
1. **判断是否触发**: 基于 PRD、用户原话和预期 ADR 类型判断是否需要研究前置
|
|
166
|
+
2. **如需触发**: 调用 `/explore`,产出结构化研究结论
|
|
167
|
+
* 如问题涉及方法论、专业框架、测试策略或设计启发,可在 `/explore` 中按需使用 `find-skills`
|
|
168
|
+
* 如果运行环境中没有可用的 `find-skills`,则直接退化为普通搜索与结构化调研,不得阻塞 workflow
|
|
169
|
+
3. **使用研究结果**:
|
|
170
|
+
* 为 Step 3 的技术评估补充候选方案、对比维度和外部证据
|
|
171
|
+
* 为 Step 5 的 ADR 提供决策理由、Trade-off 和影响分析输入
|
|
172
|
+
* 如研究结果涉及测试金字塔、冒烟/回归策略、质量门禁,应在 Step 5 或后续设计文档中明确沉淀
|
|
173
|
+
4. **如不触发**: 直接进入 Step 3
|
|
174
|
+
|
|
175
|
+
> [!NOTE]
|
|
176
|
+
> `/explore` 提供的是**研究证据和方法论增量**,不是 ADR 的替代品。
|
|
177
|
+
> 正式决策仍在 Step 5 写入 ADR 文件。
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
149
181
|
## Step 3: 技术选型 (Tech Stack Selection)
|
|
150
182
|
|
|
151
183
|
> [!TIP]
|
|
@@ -156,18 +188,29 @@ description: "从 0 到代码的项目启动全流程。适用于新项目立项
|
|
|
156
188
|
>
|
|
157
189
|
> 每个 Skill 的追问都是必要的交互,应当执行而非绕过。
|
|
158
190
|
|
|
159
|
-
**目标**: 评估技术栈候选方案,为 Step 5 的 ADR 决策提供依据。
|
|
191
|
+
**目标**: 评估技术栈候选方案,为 Step 5 的 ADR 决策提供依据。
|
|
160
192
|
|
|
161
|
-
> [!IMPORTANT]
|
|
162
|
-
>
|
|
193
|
+
> [!IMPORTANT]
|
|
194
|
+
> **技术选型不仅包括运行时和框架,还应审视验证策略。**
|
|
195
|
+
>
|
|
196
|
+
> 至少需要明确以下问题是否要进入 ADR 或后续设计文档:
|
|
197
|
+
> - 本项目主要依赖单元测试、集成测试、E2E测试中的哪些层
|
|
198
|
+
> - 是否需要里程碑级冒烟测试
|
|
199
|
+
> - 是否需要发布前或高风险改动后的回归测试
|
|
200
|
+
> - 测试运行的主要门禁放在 PR、INT、预发布还是发布前
|
|
201
|
+
|
|
202
|
+
> [!IMPORTANT]
|
|
203
|
+
> 你**必须**只输出评估结果,**不要提前写入 ADR 文件**。
|
|
163
204
|
>
|
|
164
205
|
> **为什么**: ADR 是正式决策记录,需要在 Step 5 经过完整审视后才能写入。Step 3 只负责技术评估,不做最终决策。
|
|
165
206
|
|
|
166
207
|
1. **调用技能**: `tech-evaluator`
|
|
167
|
-
2. **执行评估**:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
208
|
+
2. **执行评估**:
|
|
209
|
+
* 基于 PRD 约束
|
|
210
|
+
* 如 Step 2.5 已触发,则吸收研究结论中的候选方案、评估维度和约束
|
|
211
|
+
* 评估与该项目类型匹配的测试策略与质量门禁
|
|
212
|
+
* 12 维度评估
|
|
213
|
+
3. **输出**: 候选方案对比表 (Markdown 格式,暂存在内存中,不写入文件)
|
|
171
214
|
|
|
172
215
|
---
|
|
173
216
|
|
|
@@ -194,16 +237,18 @@ description: "从 0 到代码的项目启动全流程。适用于新项目立项
|
|
|
194
237
|
|
|
195
238
|
**目标**: 基于 Step 3 的技术评估,正式记录架构决策 (ADR)。
|
|
196
239
|
|
|
197
|
-
> [!IMPORTANT]
|
|
198
|
-
> 你**必须**基于 Step 3 的候选方案对比表,正式写入 ADR 文件。
|
|
240
|
+
> [!IMPORTANT]
|
|
241
|
+
> 你**必须**基于 Step 3 的候选方案对比表,正式写入 ADR 文件。
|
|
199
242
|
>
|
|
200
243
|
> **为什么**: ADR 是跨系统决策的唯一记录源,后续 SYSTEM_DESIGN 会引用它。
|
|
201
244
|
|
|
202
|
-
1. **基于 Step 3 评估**: 将 Step 3 的候选方案对比表转化为正式 ADR
|
|
203
|
-
2.
|
|
204
|
-
3.
|
|
205
|
-
4.
|
|
206
|
-
5.
|
|
245
|
+
1. **基于 Step 3 评估**: 将 Step 3 的候选方案对比表转化为正式 ADR
|
|
246
|
+
2. **吸收 Step 2.5 研究结论** (如有): 将外部调研、对标发现和方法论证据纳入决策理由与 Trade-off
|
|
247
|
+
3. **使用 ADR 模板**: 参考 `tech-evaluator` skill 的 ADR_TEMPLATE.md
|
|
248
|
+
4. **如测试策略属于跨系统约束**: 记录测试分层、冒烟/回归门禁、关键验证时机等决策
|
|
249
|
+
5. **输出**: 保存到 `.anws/v{N}/03_ADR/ADR_001_TECH_STACK.md`
|
|
250
|
+
6. **识别其他决策**: 认证方式、通讯协议、测试门禁等跨系统决策
|
|
251
|
+
7. **输出其他 ADR**: 保存到 `.anws/v{N}/03_ADR/ADR_00X_*.md`
|
|
207
252
|
|
|
208
253
|
**检查清单**:
|
|
209
254
|
- [ ] ADR 包含"影响范围"章节
|