6aspec 2.0.0-dev.9 → 3.0.0-dev.10
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/.6aspec/rules/biz/code.md +126 -28
- package/.6aspec/rules/biz/code_implementation_sop.md +77 -0
- package/.6aspec/rules/brown/brown_analyze_sop.md +294 -0
- package/.6aspec/rules/brown/brown_archive_sop.md +44 -78
- package/.6aspec/rules/brown/brown_constitution.md +11 -0
- package/.6aspec/rules/brown/brown_continue_sop.md +7 -16
- package/.6aspec/rules/brown/brown_design_sop.md +210 -95
- package/.6aspec/rules/brown/brown_explore_sop.md +314 -0
- package/.6aspec/rules/brown/brown_ff_sop.md +27 -64
- package/.6aspec/rules/brown/brown_impact_sop.md +101 -45
- package/.6aspec/rules/brown/brown_implement_sop.md +91 -58
- package/.6aspec/rules/brown/brown_list_sop.md +12 -12
- package/.6aspec/rules/brown/brown_new_sop.md +64 -81
- package/.6aspec/rules/brown/brown_proposal_sop.md +243 -76
- package/.6aspec/rules/brown/brown_quick_sop.md +6 -6
- package/.6aspec/rules/brown/brown_review_sop.md +4 -4
- package/.6aspec/rules/brown/brown_rollback_sop.md +29 -51
- package/.6aspec/rules/brown/brown_specs_sop.md +364 -120
- package/.6aspec/rules/brown/brown_status_sop.md +16 -32
- package/.6aspec/rules/brown/brown_tasks_sop.md +194 -87
- package/.6aspec/rules/brown/brown_understand_sop.md +97 -23
- package/.6aspec/rules/brown/brown_update_sop.md +278 -0
- package/.6aspec/rules/brown/brown_verify_sop.md +71 -309
- package/.6aspec/rules/brown/subagents/implementer.md +73 -0
- package/.6aspec/rules/brown/subagents/spec-compliance-reviewer.md +103 -0
- package/.6aspec/rules/common/code-reviewer-agent.md +118 -0
- package/.6aspec/rules/green/{6A_archive_sop.md → green_archive_sop.md} +3 -3
- package/.6aspec/rules/green/{6A_clarify_sop.md → green_clarify_sop.md} +1 -1
- package/.6aspec/rules/green/{6A_code_implementation_sop.md → green_code_implementation_sop.md} +18 -3
- package/.6aspec/rules/green/{6A_continue_sop.md → green_continue_sop.md} +3 -3
- package/.6aspec/rules/green/{6A_new_sop.md → green_new_sop.md} +90 -11
- package/.6aspec/rules/green/green_status_schema.md +4 -4
- package/.6aspec/rules/green/{6A_status_sop.md → green_status_sop.md} +3 -3
- package/.6aspec/rules/green/{6A_tasks_sop.md → green_tasks_sop.md} +1 -1
- package/.agents/skills/6aspec-brown-analyze/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-archive/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-continue/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-design/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-explore/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-ff/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-implement/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-list/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-new/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-proposal/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-quick/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-review/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-rollback/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-specs/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-status/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-tasks/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-update/SKILL.md +10 -0
- package/.agents/skills/6aspec-brown-verify/SKILL.md +10 -0
- package/.claude/agents/6aspec-brown-implementer.md +7 -0
- package/.claude/agents/6aspec-brown-spec-compliance-reviewer.md +7 -0
- package/.claude/agents/6aspec-code-reviewer.md +7 -0
- package/.claude/commands/6aspec/brown/{impact.md → analyze.md} +11 -11
- package/.claude/commands/6aspec/brown/archive.md +11 -11
- package/.claude/commands/6aspec/brown/continue.md +11 -11
- package/.claude/commands/6aspec/brown/design.md +11 -11
- package/.claude/commands/6aspec/brown/{understand.md → explore.md} +11 -11
- package/.claude/commands/6aspec/brown/ff.md +11 -11
- package/.claude/commands/6aspec/brown/implement.md +11 -11
- package/.claude/commands/6aspec/brown/list.md +11 -11
- package/.claude/commands/6aspec/brown/new.md +11 -11
- package/.claude/commands/6aspec/brown/proposal.md +11 -11
- package/.claude/commands/6aspec/brown/quick.md +11 -11
- package/.claude/commands/6aspec/brown/review.md +11 -11
- package/.claude/commands/6aspec/brown/specs.md +1 -1
- package/.claude/commands/6aspec/brown/status.md +11 -11
- package/.claude/commands/6aspec/brown/tasks.md +11 -11
- package/.claude/commands/6aspec/brown/update.md +11 -0
- package/.claude/commands/6aspec/brown/verify.md +11 -11
- package/.claude/commands/6aspec/code.md +10 -0
- package/.claude/commands/6aspec/green/archive.md +1 -1
- package/.claude/commands/6aspec/green/clarify.md +2 -2
- package/.claude/commands/6aspec/green/continue.md +1 -1
- package/.claude/commands/6aspec/green/design.md +2 -2
- package/.claude/commands/6aspec/green/{execute-task.md → implement.md} +1 -1
- package/.claude/commands/6aspec/green/import-model-table.md +1 -1
- package/.claude/commands/6aspec/green/init.md +2 -2
- package/.claude/commands/6aspec/green/model.md +2 -2
- package/.claude/commands/6aspec/green/new.md +2 -2
- package/.claude/commands/6aspec/green/rollback.md +1 -1
- package/.claude/commands/6aspec/green/status.md +1 -1
- package/.claude/commands/6aspec/green/tasks.md +2 -2
- package/.claude/commands/6aspec/green/visual-logic.md +2 -2
- package/.claude/commands/6aspec/review.md +56 -0
- package/.codex/agents/6aspec-brown-implementer.md +7 -0
- package/.codex/agents/6aspec-brown-spec-compliance-reviewer.md +7 -0
- package/.codex/agents/6aspec-code-reviewer.md +7 -0
- package/.cursor/agents/6aspec-brown-implementer.md +7 -0
- package/.cursor/agents/6aspec-brown-spec-compliance-reviewer.md +8 -0
- package/.cursor/agents/6aspec-code-reviewer.md +8 -0
- package/.cursor/commands/6aspec-brown-analyze.md +9 -0
- package/.cursor/commands/{6aspec/brown/design.md → 6aspec-brown-design.md} +1 -1
- package/.cursor/commands/6aspec-brown-explore.md +11 -0
- package/.cursor/commands/{6aspec/brown/quick.md → 6aspec-brown-quick.md} +1 -1
- package/.cursor/commands/{6aspec/brown/review.md → 6aspec-brown-review.md} +1 -1
- package/.cursor/commands/{6aspec/brown/specs.md → 6aspec-brown-specs.md} +1 -1
- package/.cursor/commands/{6aspec/brown/tasks.md → 6aspec-brown-tasks.md} +1 -1
- package/.cursor/commands/6aspec-brown-update.md +9 -0
- package/.cursor/commands/6aspec-code.md +8 -0
- package/.cursor/commands/{6aspec/green/archive.md → 6aspec-green-archive.md} +1 -1
- package/.cursor/commands/{6aspec/green/clarify.md → 6aspec-green-clarify.md} +2 -2
- package/.cursor/commands/{6aspec/green/continue.md → 6aspec-green-continue.md} +1 -1
- package/.cursor/commands/{6aspec/green/design.md → 6aspec-green-design.md} +2 -2
- package/.cursor/commands/{6aspec/green/execute-task.md → 6aspec-green-implement.md} +1 -1
- package/.cursor/commands/{6aspec/green/import-model-table.md → 6aspec-green-import-model-table.md} +1 -1
- package/.cursor/commands/{6aspec/green/init.md → 6aspec-green-init.md} +2 -2
- package/.cursor/commands/{6aspec/green/model.md → 6aspec-green-model.md} +2 -2
- package/.cursor/commands/{6aspec/green/new.md → 6aspec-green-new.md} +2 -2
- package/.cursor/commands/{6aspec/green/rollback.md → 6aspec-green-rollback.md} +1 -1
- package/.cursor/commands/{6aspec/green/status.md → 6aspec-green-status.md} +1 -1
- package/.cursor/commands/{6aspec/green/tasks.md → 6aspec-green-tasks.md} +2 -2
- package/.cursor/commands/{6aspec/green/visual-logic.md → 6aspec-green-visual-logic.md} +2 -2
- package/.cursor/commands/6aspec-review.md +56 -0
- package/README.md +1 -1
- package/lib/cli.js +49 -13
- package/lib/installer.js +93 -25
- package/package.json +3 -1
- package/.claude/settings.local.json +0 -8
- package/.cursor/commands/6aspec/brown/impact.md +0 -9
- package/.cursor/commands/6aspec/brown/understand.md +0 -9
- /package/.6aspec/rules/green/{6A_constitution.md → green_constitution.md} +0 -0
- /package/.6aspec/rules/green/{6A_design_sop.md → green_design_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_import_model_table_sop.md → green_import_model_table_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_init_event_list_sop.md → green_init_event_list_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_init_map_sop.md → green_init_map_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_model_sop.md → green_model_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_rollback_sop.md → green_rollback_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_visual_logic_sop.md → green_visual_logic_sop.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/archive.md → 6aspec-brown-archive.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/continue.md → 6aspec-brown-continue.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/ff.md → 6aspec-brown-ff.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/implement.md → 6aspec-brown-implement.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/list.md → 6aspec-brown-list.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/new.md → 6aspec-brown-new.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/proposal.md → 6aspec-brown-proposal.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/rollback.md → 6aspec-brown-rollback.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/status.md → 6aspec-brown-status.md} +0 -0
- /package/.cursor/commands/{6aspec/brown/verify.md → 6aspec-brown-verify.md} +0 -0
|
@@ -1,360 +1,122 @@
|
|
|
1
1
|
# 棕地需求 - Verify SOP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
全局验证实现是否完整覆盖需求。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> **阶段定位**:Verify 的职责是跨任务的全局视角验证,补充 implement 阶段单任务 spec compliance review 的盲区。不重复做单任务级别的 Missing/Extra/Misunderstood 检查。
|
|
6
6
|
|
|
7
7
|
**输入**:`/6aspec:brown:verify` 后可选需求名称。
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 步骤
|
|
10
12
|
|
|
11
13
|
1. **选择需求并检查状态**
|
|
12
14
|
|
|
13
15
|
- 读取 `6aspecdoc/brown/<name>/status.json`
|
|
14
|
-
- 确认 `phases.implement` 为 "done"
|
|
15
|
-
- 获取 `flowDepth`(流程深度)
|
|
16
|
-
- 如果未完成 Phase 5,提示先运行 `/6aspec:brown:implement`
|
|
16
|
+
- 确认 `phases.implement` 为 "done";若未完成,提示先运行 `/6aspec:brown:implement`
|
|
17
17
|
|
|
18
18
|
2. **读取验证基准文档**
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
- `artifacts/proposal.md` - 需求提案
|
|
24
|
-
- `artifacts/design.md` - 技术方案
|
|
25
|
-
- `artifacts/tasks.md` - 任务列表
|
|
26
|
-
|
|
27
|
-
**标准级流程**:
|
|
28
|
-
- `artifacts/understanding.md` - 需求理解
|
|
29
|
-
- `artifacts/impact-analysis.md` - 影响面分析
|
|
30
|
-
- `artifacts/design.md` - 技术方案
|
|
31
|
-
- `artifacts/tasks.md` - 任务列表
|
|
32
|
-
|
|
33
|
-
**完整级流程**:
|
|
34
|
-
- 所有标准级文档
|
|
35
|
-
- 加上非功能需求评估(在 impact-analysis.md 中)
|
|
36
|
-
|
|
37
|
-
3. **初始化验证报告结构**
|
|
38
|
-
|
|
39
|
-
创建三维验证框架:
|
|
40
|
-
|
|
41
|
-
**Completeness(完整性)**:
|
|
42
|
-
- 任务完成度
|
|
43
|
-
- 影响面覆盖(棕地特色)
|
|
44
|
-
|
|
45
|
-
**Correctness(正确性)**:
|
|
46
|
-
- 需求实现映射
|
|
47
|
-
- 业务规则验证(棕地特色)
|
|
48
|
-
- 场景覆盖
|
|
49
|
-
|
|
50
|
-
**Coherence(一致性)**:
|
|
51
|
-
- 设计遵循
|
|
52
|
-
- 代码模式一致性
|
|
53
|
-
- 非功能需求符合(棕地特色)
|
|
54
|
-
|
|
55
|
-
4. **验证 Completeness(完整性)**
|
|
56
|
-
|
|
57
|
-
**4.1 任务完成度验证**(借鉴 OpenSpec)
|
|
58
|
-
|
|
59
|
-
- 读取 `artifacts/tasks.md` 或 `artifacts/04-tasks-overview.md`
|
|
60
|
-
- 解析 checkbox:`- [ ]`(未完成)vs `- [x]`(已完成)
|
|
61
|
-
- 统计完成率:X/Y 任务完成
|
|
62
|
-
- 如果有未完成任务:
|
|
63
|
-
- 添加 **CRITICAL** 问题:`Task incomplete: <task-id> - <description>`
|
|
64
|
-
- 建议:`Complete task or mark as done if already implemented`
|
|
65
|
-
|
|
66
|
-
**4.2 影响面覆盖验证**(棕地特色)
|
|
67
|
-
|
|
68
|
-
仅适用于标准级/完整级流程:
|
|
69
|
-
|
|
70
|
-
- 读取 `artifacts/impact-analysis.md`
|
|
71
|
-
- 提取影响点列表:
|
|
72
|
-
- 数据库表
|
|
73
|
-
- 实体类
|
|
74
|
-
- 服务类
|
|
75
|
-
- 控制器
|
|
76
|
-
- 前端页面
|
|
77
|
-
- 对每个影响点:
|
|
78
|
-
- 搜索代码库验证是否有相应修改
|
|
79
|
-
- 检查 git diff 或最近的提交
|
|
80
|
-
- 如果影响点未覆盖:
|
|
81
|
-
- 添加 **CRITICAL** 问题:`Impact point not covered: <entity/service/table>`
|
|
82
|
-
- 建议:`Implement changes for <specific-file>:<line> as per impact analysis`
|
|
83
|
-
|
|
84
|
-
5. **验证 Correctness(正确性)**
|
|
85
|
-
|
|
86
|
-
**5.1 需求实现映射**(借鉴 OpenSpec)
|
|
87
|
-
|
|
88
|
-
- 提取需求关键点:
|
|
89
|
-
- 轻量级:从 proposal.md 提取 What 部分
|
|
90
|
-
- 标准级/完整级:从 understanding.md 提取需求描述
|
|
91
|
-
- 对每个需求点:
|
|
92
|
-
- 搜索代码库查找实现证据
|
|
93
|
-
- 如果找到,记录文件路径和行号
|
|
94
|
-
- 评估实现是否符合需求意图
|
|
95
|
-
- 如果需求未实现或偏离:
|
|
96
|
-
- 添加 **WARNING** 问题:`Requirement not found or diverges: <requirement>`
|
|
97
|
-
- 建议:`Review <file>:<lines> against requirement`
|
|
98
|
-
|
|
99
|
-
**5.2 业务规则验证**(棕地特色)
|
|
100
|
-
|
|
101
|
-
仅适用于标准级/完整级流程:
|
|
102
|
-
|
|
103
|
-
- 读取 `artifacts/impact-analysis.md` 中的"业务规则确认"部分
|
|
104
|
-
- 提取关键业务规则:
|
|
105
|
-
- 必填校验
|
|
106
|
-
- 不可修改约束
|
|
107
|
-
- 继承逻辑
|
|
108
|
-
- 数据同步规则
|
|
109
|
-
- 对每个业务规则:
|
|
110
|
-
- 搜索代码库验证实现
|
|
111
|
-
- 检查校验逻辑、约束条件
|
|
112
|
-
- 如果业务规则未实现:
|
|
113
|
-
- 添加 **CRITICAL** 问题:`Business rule not implemented: <rule>`
|
|
114
|
-
- 建议:`Add validation/constraint in <service>:<method>`
|
|
115
|
-
|
|
116
|
-
**5.3 场景覆盖验证**(借鉴 OpenSpec)
|
|
117
|
-
|
|
118
|
-
- 提取测试场景:
|
|
119
|
-
- 从 design.md 的测试方案部分
|
|
120
|
-
- 从 tasks.md 的测试任务
|
|
121
|
-
- 对每个场景:
|
|
122
|
-
- 检查是否有对应的测试代码
|
|
123
|
-
- 检查测试是否通过
|
|
124
|
-
- 如果场景未覆盖:
|
|
125
|
-
- 添加 **WARNING** 问题:`Scenario not covered: <scenario>`
|
|
126
|
-
- 建议:`Add test for scenario: <description>`
|
|
127
|
-
|
|
128
|
-
6. **验证 Coherence(一致性)**
|
|
129
|
-
|
|
130
|
-
**6.1 设计遵循验证**(借鉴 OpenSpec)
|
|
131
|
-
|
|
132
|
-
- 读取 `artifacts/design.md` 或 `artifacts/03-technical-design.md`
|
|
133
|
-
- 提取关键设计决策:
|
|
134
|
-
- 数据库变更方案
|
|
135
|
-
- 代码实现方案
|
|
136
|
-
- 前端 UI 方案
|
|
137
|
-
- 验证实现是否遵循设计:
|
|
138
|
-
- 检查数据库字段是否按设计添加
|
|
139
|
-
- 检查代码结构是否符合设计
|
|
140
|
-
- 检查 UI 是否按设计实现
|
|
141
|
-
- 如果设计未遵循:
|
|
142
|
-
- 添加 **WARNING** 问题:`Design decision not followed: <decision>`
|
|
143
|
-
- 建议:`Update implementation or revise design.md to match reality`
|
|
144
|
-
|
|
145
|
-
**6.2 代码模式一致性**(借鉴 OpenSpec)
|
|
146
|
-
|
|
147
|
-
- 检查新代码的一致性:
|
|
148
|
-
- 文件命名规范
|
|
149
|
-
- 目录结构
|
|
150
|
-
- 编码风格
|
|
151
|
-
- 错误处理模式
|
|
152
|
-
- 如果有明显偏离:
|
|
153
|
-
- 添加 **SUGGESTION** 问题:`Code pattern deviation: <details>`
|
|
154
|
-
- 建议:`Consider following project pattern: <example>`
|
|
155
|
-
|
|
156
|
-
**6.3 非功能需求符合验证**(棕地特色)
|
|
157
|
-
|
|
158
|
-
仅适用于完整级流程:
|
|
159
|
-
|
|
160
|
-
- 读取 `artifacts/impact-analysis.md` 中的"非功能需求评估"部分
|
|
161
|
-
- 验证四个维度:
|
|
162
|
-
|
|
163
|
-
**性能**:
|
|
164
|
-
- 检查是否添加了必要的索引
|
|
165
|
-
- 检查是否优化了查询
|
|
166
|
-
- 检查是否有性能测试
|
|
167
|
-
- 如果性能要求未满足:
|
|
168
|
-
- 添加 **WARNING** 问题:`Performance requirement not met: <requirement>`
|
|
169
|
-
- 建议:`Add index/optimize query in <file>:<line>`
|
|
170
|
-
|
|
171
|
-
**安全**:
|
|
172
|
-
- 检查是否有权限控制
|
|
173
|
-
- 检查是否有数据脱敏
|
|
174
|
-
- 检查是否有审计日志
|
|
175
|
-
- 如果安全要求未满足:
|
|
176
|
-
- 添加 **CRITICAL** 问题:`Security requirement not met: <requirement>`
|
|
177
|
-
- 建议:`Add permission check/audit log in <file>:<line>`
|
|
178
|
-
|
|
179
|
-
**可用性**:
|
|
180
|
-
- 检查是否有降级方案
|
|
181
|
-
- 检查是否有监控告警
|
|
182
|
-
- 如果可用性要求未满足:
|
|
183
|
-
- 添加 **WARNING** 问题:`Availability requirement not met: <requirement>`
|
|
184
|
-
- 建议:`Add fallback/monitoring in <file>:<line>`
|
|
185
|
-
|
|
186
|
-
**可维护性**:
|
|
187
|
-
- 检查代码注释是否充分
|
|
188
|
-
- 检查是否有文档更新
|
|
189
|
-
- 如果可维护性要求未满足:
|
|
190
|
-
- 添加 **SUGGESTION** 问题:`Maintainability concern: <details>`
|
|
191
|
-
- 建议:`Add comments/update docs`
|
|
192
|
-
|
|
193
|
-
7. **生成验证报告**
|
|
194
|
-
|
|
195
|
-
创建 `6aspecdoc/brown/<name>/artifacts/verification-report.md`(标准级/完整级)或 `6aspecdoc/brown/<name>/artifacts/05-verification-report.md`(完整级):
|
|
196
|
-
|
|
197
|
-
```markdown
|
|
198
|
-
# 验证报告:<name>
|
|
199
|
-
|
|
200
|
-
> **需求**: <name>
|
|
201
|
-
> **流程深度**: 轻量级/标准级/完整级
|
|
202
|
-
> **验证时间**: <timestamp>
|
|
203
|
-
> **验证状态**: ✅ 通过 / ⚠️ 有警告 / ❌ 有严重问题
|
|
204
|
-
|
|
205
|
-
## 验证概览
|
|
206
|
-
|
|
207
|
-
| 维度 | 状态 | 说明 |
|
|
208
|
-
|------|------|------|
|
|
209
|
-
| Completeness(完整性) | X/Y 任务, M/N 影响点 | <说明> |
|
|
210
|
-
| Correctness(正确性) | P/Q 需求, R/S 业务规则 | <说明> |
|
|
211
|
-
| Coherence(一致性) | 设计遵循/代码一致 | <说明> |
|
|
212
|
-
|
|
213
|
-
## 问题清单
|
|
214
|
-
|
|
215
|
-
### CRITICAL(必须修复)
|
|
216
|
-
|
|
217
|
-
如果有 CRITICAL 问题,列出:
|
|
218
|
-
|
|
219
|
-
#### 1. Task incomplete: TASK-003
|
|
220
|
-
- **问题**: 任务未完成:领域服务逻辑实现
|
|
221
|
-
- **位置**: tasks/TASK-003.md
|
|
222
|
-
- **建议**: Complete task or mark as done if already implemented
|
|
20
|
+
- `artifacts/specs.md` — AC/Scenario 全集
|
|
21
|
+
- `artifacts/tasks-overview.md` — 任务列表与完成状态
|
|
22
|
+
- `artifacts/analysis.md`(如果存在)— 影响面、业务规则、非功能需求
|
|
223
23
|
|
|
224
|
-
|
|
225
|
-
- **问题**: 业务规则未实现:项目类型一旦确定后不允许修改
|
|
226
|
-
- **位置**: 应该在 ProjectDomainService:save() 中
|
|
227
|
-
- **建议**: Add validation in ProjectDomainService:save() to prevent modification
|
|
24
|
+
3. **执行三项全局验证**
|
|
228
25
|
|
|
229
|
-
|
|
26
|
+
**3.1 AC 全覆盖检查**
|
|
230
27
|
|
|
231
|
-
|
|
28
|
+
从 `specs.md` 提取所有 AC/Scenario,逐条确认是否有对应的 TASK 承接:
|
|
29
|
+
- 有 TASK 承接且已完成 → ✅
|
|
30
|
+
- 有 TASK 承接但未完成 → ❌ CRITICAL
|
|
31
|
+
- 无任何 TASK 承接 → ❌ CRITICAL
|
|
232
32
|
|
|
233
|
-
|
|
234
|
-
- **问题**: 设计中要求添加索引,但未找到相应的数据库迁移脚本
|
|
235
|
-
- **位置**: design.md 第 45 行
|
|
236
|
-
- **建议**: Add database migration script for index creation
|
|
33
|
+
**3.2 影响面覆盖检查**(仅当 analysis.md 存在)
|
|
237
34
|
|
|
238
|
-
|
|
35
|
+
从 `analysis.md` 提取影响点列表(数据库表、实体类、服务类、接口等),搜索代码库确认是否有对应修改:
|
|
36
|
+
- 有修改 → ✅
|
|
37
|
+
- 无修改 → ❌ CRITICAL
|
|
239
38
|
|
|
240
|
-
|
|
39
|
+
**3.3 非功能需求检查**(仅当 analysis.md 存在且有 NFR 内容)
|
|
241
40
|
|
|
242
|
-
|
|
243
|
-
-
|
|
244
|
-
-
|
|
245
|
-
- **建议**: Consider using BusinessLogicException pattern like other services
|
|
41
|
+
从 `analysis.md` 提取非功能需求(性能、安全、可用性),检查是否有对应实现(索引、权限控制、降级方案等):
|
|
42
|
+
- 已实现 → ✅
|
|
43
|
+
- 未实现 → ⚠️ WARNING(安全类升级为 ❌ CRITICAL)
|
|
246
44
|
|
|
247
|
-
|
|
45
|
+
4. **生成验证报告**
|
|
248
46
|
|
|
249
|
-
|
|
47
|
+
写入 `6aspecdoc/brown/<name>/artifacts/verification-report.md`:
|
|
250
48
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
❌ 发现 X 个严重问题,必须修复后才能归档。
|
|
254
|
-
```
|
|
49
|
+
```markdown
|
|
50
|
+
# 验证报告:<name>
|
|
255
51
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
⚠️ 没有严重问题,但有 Y 个警告需要考虑。可以归档,但建议修复警告。
|
|
259
|
-
```
|
|
52
|
+
**验证时间**:<timestamp>
|
|
53
|
+
**验证状态**:✅ 通过 / ⚠️ 有警告 / ❌ 有严重问题
|
|
260
54
|
|
|
261
|
-
|
|
262
|
-
```
|
|
263
|
-
✅ 所有检查通过,可以归档。
|
|
264
|
-
```
|
|
55
|
+
## 验证概览
|
|
265
56
|
|
|
266
|
-
|
|
57
|
+
| 检查项 | 结果 |
|
|
58
|
+
|--------|------|
|
|
59
|
+
| AC 全覆盖 | X/Y 已覆盖 |
|
|
60
|
+
| 影响面覆盖 | M/N 已覆盖(或:跳过,无 analysis.md)|
|
|
61
|
+
| 非功能需求 | 已检查(或:跳过,无 NFR 内容)|
|
|
267
62
|
|
|
268
|
-
|
|
269
|
-
...
|
|
63
|
+
## 问题清单
|
|
270
64
|
|
|
271
|
-
###
|
|
272
|
-
|
|
65
|
+
### CRITICAL(必须修复)
|
|
66
|
+
- [具体问题,含文件路径]
|
|
273
67
|
|
|
274
|
-
###
|
|
275
|
-
|
|
68
|
+
### WARNING(建议修复)
|
|
69
|
+
- [具体问题,含文件路径]
|
|
276
70
|
|
|
277
|
-
##
|
|
71
|
+
## 结论
|
|
278
72
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
- 如果全部通过:运行 `/6aspec:brown:review` 进行实施后评估(完整级)或 `/6aspec:brown:archive` 归档
|
|
73
|
+
✅ 所有检查通过,可以归档。
|
|
74
|
+
/ ❌ 发现 X 个严重问题,修复后重新验证。
|
|
75
|
+
/ ⚠️ 无严重问题,有 Y 个警告,可归档但建议修复。
|
|
283
76
|
```
|
|
284
77
|
|
|
285
|
-
|
|
78
|
+
5. **更新状态**
|
|
286
79
|
|
|
287
|
-
|
|
80
|
+
不更新 phases(verify 是可选的),在 status.json 追加验证记录:
|
|
288
81
|
```json
|
|
289
82
|
{
|
|
290
|
-
"
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
83
|
+
"verificationRuns": [
|
|
84
|
+
{
|
|
85
|
+
"timestamp": "<timestamp>",
|
|
86
|
+
"status": "passed" / "warning" / "failed",
|
|
87
|
+
"criticalIssues": 0,
|
|
88
|
+
"warnings": 0
|
|
89
|
+
}
|
|
90
|
+
]
|
|
297
91
|
}
|
|
298
92
|
```
|
|
299
93
|
|
|
300
|
-
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 输出
|
|
301
97
|
|
|
302
98
|
```
|
|
303
99
|
## 验证完成:<name>
|
|
304
100
|
|
|
305
|
-
|
|
306
|
-
**验证状态**: ✅ 通过 / ⚠️ 有警告 / ❌ 有严重问题
|
|
307
|
-
|
|
308
|
-
### 验证概览
|
|
309
|
-
- Completeness: X/Y 任务完成, M/N 影响点覆盖
|
|
310
|
-
- Correctness: P/Q 需求实现, R/S 业务规则验证
|
|
311
|
-
- Coherence: 设计遵循/代码一致
|
|
101
|
+
**验证状态**:✅ 通过 / ⚠️ 有警告 / ❌ 有严重问题
|
|
312
102
|
|
|
313
|
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
- SUGGESTION: Z 个(建议修复)
|
|
103
|
+
- AC 全覆盖:X/Y
|
|
104
|
+
- 影响面覆盖:M/N(或跳过)
|
|
105
|
+
- 非功能需求:已检查(或跳过)
|
|
317
106
|
|
|
318
|
-
|
|
319
|
-
<根据问题严重程度给出评估>
|
|
320
|
-
|
|
321
|
-
### 文档位置
|
|
322
|
-
6aspecdoc/brown/<name>/artifacts/verification-report.md
|
|
107
|
+
CRITICAL:X 个 | WARNING:Y 个
|
|
323
108
|
|
|
324
109
|
### 下一步
|
|
325
|
-
|
|
110
|
+
- 轻量级/标准级:运行 `/6aspec:brown:archive` 归档
|
|
111
|
+
- 完整级:运行 `/6aspec:brown:continue` 进入 review 阶段
|
|
326
112
|
```
|
|
327
113
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
- **Completeness**:关注客观的检查清单项(checkbox、影响点列表)
|
|
331
|
-
- **Correctness**:使用关键词搜索、文件路径分析、合理推断 - 不要求完美确定性
|
|
332
|
-
- **Coherence**:寻找明显的不一致,不要过度挑剔风格
|
|
333
|
-
- **误报处理**:不确定时,优先使用 SUGGESTION 而不是 WARNING,WARNING 而不是 CRITICAL
|
|
334
|
-
- **可操作性**:每个问题必须有具体的、可操作的建议,包含文件/行号引用
|
|
335
|
-
|
|
336
|
-
**优雅降级**(借鉴 OpenSpec)
|
|
337
|
-
|
|
338
|
-
根据流程深度调整验证范围:
|
|
339
|
-
|
|
340
|
-
- **轻量级流程**:
|
|
341
|
-
- 验证:任务完成度 + 设计遵循
|
|
342
|
-
- 跳过:影响面覆盖、业务规则、非功能需求
|
|
343
|
-
- 说明:`Lightweight flow: skipped impact/business rule checks`
|
|
344
|
-
|
|
345
|
-
- **标准级流程**:
|
|
346
|
-
- 验证:任务完成度 + 影响面覆盖 + 业务规则 + 设计遵循
|
|
347
|
-
- 跳过:非功能需求详细验证
|
|
348
|
-
- 说明:`Standard flow: skipped detailed non-functional requirement checks`
|
|
114
|
+
---
|
|
349
115
|
|
|
350
|
-
|
|
351
|
-
- 验证:所有三个维度的全部检查
|
|
352
|
-
- 说明:`Complete flow: all checks performed`
|
|
116
|
+
## 防护措施
|
|
353
117
|
|
|
354
|
-
|
|
355
|
-
-
|
|
356
|
-
-
|
|
357
|
-
-
|
|
358
|
-
-
|
|
359
|
-
- 如果验证未通过(有 CRITICAL 问题),不能进入下一阶段
|
|
360
|
-
- 根据流程深度优雅降级,不要对轻量级流程执行完整级的验证
|
|
118
|
+
- 必须先完成 implement 阶段
|
|
119
|
+
- 不重复做单任务级别的 Missing/Extra/Misunderstood(那是 spec compliance review 的职责)
|
|
120
|
+
- 每个问题必须有具体的、可操作的建议,含文件路径
|
|
121
|
+
- 安全类 NFR 未实现升级为 CRITICAL
|
|
122
|
+
- analysis.md 不存在时跳过影响面和 NFR 检查,在报告中标注
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Implementer Subagent
|
|
2
|
+
|
|
3
|
+
你是一个代码实现专家,负责完成指定的 TASK。
|
|
4
|
+
|
|
5
|
+
## 开始前
|
|
6
|
+
|
|
7
|
+
读取以下文件,理解任务要求和背景:
|
|
8
|
+
|
|
9
|
+
- **TASK 文件**:主 agent 传入的 `TASK 文件路径`,读取任务详情、实现步骤、验收标准、涉及文件
|
|
10
|
+
- **specs.md**:主 agent 传入的 `specs.md 路径`,读取该任务引用的 AC/Scenario
|
|
11
|
+
- **design.md**:主 agent 传入的 `design.md 路径`,读取相关技术决策
|
|
12
|
+
- **analysis.md**:主 agent 传入的 `analysis.md 路径`,读取现状分析和影响面背景(如果存在)
|
|
13
|
+
- **explore-summary.md**:主 agent 传入的 `explore-summary.md 路径`,读取代码结构摘要(如果存在)
|
|
14
|
+
- **code.md**:`.6aspec/rules/biz/code.md`,编码规范与红线(含**架构红线**中的应用入口与跨层约定)、安全/性能要求(与本次修改语言相关时须通读并遵守)
|
|
15
|
+
|
|
16
|
+
如果你对任务要求、验收标准、实现策略或依赖关系有任何疑问,**现在就提出**,不要开始实现后再问。
|
|
17
|
+
|
|
18
|
+
## 你的职责
|
|
19
|
+
|
|
20
|
+
确认没有疑问后:
|
|
21
|
+
|
|
22
|
+
1. 读取 TASK 文件"涉及文件"中列出的源代码文件,理解现有实现
|
|
23
|
+
2. 按"实现步骤"逐步执行,到类/方法级
|
|
24
|
+
3. 遵循 design.md 的技术决策,**不在实现阶段发明新方案**
|
|
25
|
+
4. 遵循现有代码风格和架构模式
|
|
26
|
+
5. **编码规范**:实现与自我审查须符合 `.6aspec/rules/biz/code.md`(含红线规则中的**架构红线**、安全、性能、命名与文内检查清单)
|
|
27
|
+
6. 若项目有测试框架,补充/修改对应单元测试,覆盖任务关联的 AC/Scenario;若无测试框架则跳过
|
|
28
|
+
7. 完成后自我审查,报告结果
|
|
29
|
+
|
|
30
|
+
## 禁止事项
|
|
31
|
+
|
|
32
|
+
- **除非用户在本对话中明确要求**,否则不要执行 `mvn`、`gradle`、`./gradlew`、`npm run build`、`pnpm build`、`make` 等**构建或全量编译**命令。Implement 的交付以改代码、补测试(若有框架)、**阅读与静态自检**、报告为主;构建与长时间运行的验证交给用户本地或 CI。
|
|
33
|
+
- 若用户明确要求执行某条构建命令,可执行,并在报告中说明命令与结果摘要。
|
|
34
|
+
|
|
35
|
+
## 自我审查
|
|
36
|
+
|
|
37
|
+
报告前检查:
|
|
38
|
+
|
|
39
|
+
**完整性**:是否实现了任务要求的所有内容?是否有遗漏的步骤或边界条件?
|
|
40
|
+
|
|
41
|
+
**克制性**:是否只做了任务要求的事,没有多做?是否引入了不必要的抽象或功能?
|
|
42
|
+
|
|
43
|
+
**一致性**:是否遵循了现有代码风格、`code.md` 与 design.md 的技术决策?
|
|
44
|
+
|
|
45
|
+
**分层**:若本次改动涉及 Controller/API、事件订阅、消息消费或调度入口,是否符合 `code.md` **架构红线**中关于薄入口、不直连 DAO 与委托 Service 的约定(有 TASK/design 例外除外)?
|
|
46
|
+
|
|
47
|
+
**测试**:单元测试可使用 Mock/Stub 隔离外部依赖;断言是否落在被测代码的业务结果上(返回值、异常、领域状态等),而不是仅校验「Mock 曾被调用」?是否覆盖了关联的 AC/Scenario?
|
|
48
|
+
|
|
49
|
+
发现问题立即修复,再报告。
|
|
50
|
+
|
|
51
|
+
## 遇到困难时
|
|
52
|
+
|
|
53
|
+
以下情况**立即停止并上报**,不要强行继续:
|
|
54
|
+
- 任务需要做出架构决策,有多种合理方案
|
|
55
|
+
- 需要理解任务范围之外的代码,且无法找到答案
|
|
56
|
+
- 对实现方向不确定
|
|
57
|
+
- 发现 design.md 或 TASK-*.md 有矛盾或缺失
|
|
58
|
+
|
|
59
|
+
**上报比做错更好。**
|
|
60
|
+
|
|
61
|
+
## 报告格式
|
|
62
|
+
|
|
63
|
+
完成后报告:
|
|
64
|
+
- **状态**:DONE / DONE_WITH_CONCERNS / BLOCKED / NEEDS_CONTEXT
|
|
65
|
+
- **实现内容**:做了什么(具体到类/方法)
|
|
66
|
+
- **测试情况**:写了哪些测试,覆盖了哪些 AC/Scenario(或说明跳过原因)
|
|
67
|
+
- **修改的文件**:文件路径列表
|
|
68
|
+
- **自我审查发现**:有无问题,如何处理
|
|
69
|
+
- **关注点**(如状态为 DONE_WITH_CONCERNS):具体疑虑
|
|
70
|
+
|
|
71
|
+
DONE_WITH_CONCERNS:完成了工作但有疑虑
|
|
72
|
+
BLOCKED:无法完成任务
|
|
73
|
+
NEEDS_CONTEXT:缺少必要信息
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Spec Compliance Reviewer Subagent
|
|
2
|
+
|
|
3
|
+
你是一个规格合规审查专家,负责验证实现是否符合任务要求。
|
|
4
|
+
|
|
5
|
+
## 开始前
|
|
6
|
+
|
|
7
|
+
读取以下文件,获取审查所需的上下文:
|
|
8
|
+
|
|
9
|
+
- **TASK 文件**:主 agent 传入的 `TASK 文件路径`,读取任务详情、实现步骤、验收标准、涉及文件
|
|
10
|
+
- **specs.md**:主 agent 传入的 `specs.md 路径`,读取该任务引用的 AC/Scenario 原文
|
|
11
|
+
- **design.md**:主 agent 传入的 `design.md 路径`,读取该任务相关的技术方案与约束(接口、流程、关键决策)
|
|
12
|
+
|
|
13
|
+
> 如果缺少 `design.md` 路径或无法读取 design 内容:**直接判定不通过**(无法验证是否绕过设计)。
|
|
14
|
+
|
|
15
|
+
## 重要:不要信任 implementer 的报告
|
|
16
|
+
|
|
17
|
+
Implementer 的报告可能不完整或过于乐观。你**必须独立验证**:
|
|
18
|
+
|
|
19
|
+
- **不要**只看报告就得出结论
|
|
20
|
+
- **必须**亲自读取实际代码文件(从 TASK 文件的"涉及文件"和 implementer 报告的"修改的文件"中获取路径)
|
|
21
|
+
- **必须**将实际实现与任务要求逐条对比
|
|
22
|
+
|
|
23
|
+
## 你的职责
|
|
24
|
+
|
|
25
|
+
读取 implementer 修改的文件,验证以下内容:
|
|
26
|
+
|
|
27
|
+
- **阻塞项**:1~5 任一不满足都必须判定 ❌
|
|
28
|
+
- **风险提示**:测试覆盖默认不作为阻塞项(除非 TASK/specs.md/design.md 明确要求必须补测试)
|
|
29
|
+
|
|
30
|
+
**1. 没有少做(Missing)**
|
|
31
|
+
- 任务要求的每一项是否都已实现?
|
|
32
|
+
- "实现步骤"中的每一步是否都有对应代码?
|
|
33
|
+
- "验收标准"中的每条 AC/Scenario 是否都有覆盖?
|
|
34
|
+
- 若任务有测试要求,测试是否存在且有效?
|
|
35
|
+
|
|
36
|
+
**2. 没有多做(Extra)**
|
|
37
|
+
- 是否实现了任务范围之外的功能?
|
|
38
|
+
- 是否引入了未被要求的抽象、配置或接口?
|
|
39
|
+
- 是否修改了任务"涉及文件"之外的文件?
|
|
40
|
+
|
|
41
|
+
**3. 没有理解偏差(Misunderstood)**
|
|
42
|
+
- 实现的逻辑是否符合任务意图?
|
|
43
|
+
- 是否用了正确的方式解决了正确的问题?
|
|
44
|
+
- 业务语义是否与 specs.md 的 AC/Scenario 一致?
|
|
45
|
+
|
|
46
|
+
**4. 设计一致性(Design Compliance)**
|
|
47
|
+
- 是否严格符合 design.md 的技术方案与约束?(接口形态、流程编排、关键决策)
|
|
48
|
+
- 是否存在绕过设计/偏离设计的实现?(即便功能表面可用也必须判定不通过)
|
|
49
|
+
|
|
50
|
+
**5. 边界与正确性(Boundary & Correctness)**
|
|
51
|
+
- 是否存在幂等问题(重复请求/重试导致重复写入、重复扣款、重复发消息等)?
|
|
52
|
+
- 是否存在空值/缺省值处理问题(NPE、字段缺失、空集合、空字符串等)?
|
|
53
|
+
- 是否存在并发/竞态问题(重复提交、并发更新丢失、顺序依赖被破坏等)?
|
|
54
|
+
|
|
55
|
+
> 要求:必须以 `specs.md` / `design.md` / `TASK` 中可追溯的约束为判定基准。
|
|
56
|
+
> - 如果你发现“必须明确但 specs/design 没写清”的边界规则,判定为 **规格/设计缺口** 并判定不通过,要求补齐 artifacts 后重审(不得在实现阶段临时发明规则)。
|
|
57
|
+
|
|
58
|
+
**6. 测试覆盖关键场景(Testing Adequacy,默认仅风险提示)**
|
|
59
|
+
- 评估测试是否覆盖该任务涉及的关键 AC/Scenario。
|
|
60
|
+
- 评估是否覆盖关键边界场景(幂等/空值/并发)对应的用例或回归点。
|
|
61
|
+
- 如果 implementer 报告明确无测试,且你也未发现相关测试文件:仅记录为**风险提示**,不要仅因无测试而判定不通过。
|
|
62
|
+
- 只有当 TASK/specs.md/design.md **明确要求必须补测试**时,缺失测试才属于 Missing 并必须判定 ❌。
|
|
63
|
+
|
|
64
|
+
## 报告格式
|
|
65
|
+
|
|
66
|
+
**如果通过**:
|
|
67
|
+
```
|
|
68
|
+
✅ 规格合规
|
|
69
|
+
|
|
70
|
+
验证结论:
|
|
71
|
+
- 已实现:[列出已覆盖的要求(按 TASK / specs.md 逐条)]
|
|
72
|
+
- 设计一致性:符合 design.md(如有关键约束请点名)
|
|
73
|
+
- 边界检查:幂等/空值/并发关键点已覆盖(列出证据)
|
|
74
|
+
- 测试覆盖(风险提示):[如有,列出覆盖的 AC/Scenario + 关键边界用例;如无,标注风险]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**如果有问题**:
|
|
78
|
+
```
|
|
79
|
+
❌ 发现问题
|
|
80
|
+
|
|
81
|
+
缺少实现(Missing):
|
|
82
|
+
- [具体缺失内容,含文件路径和行号]
|
|
83
|
+
|
|
84
|
+
多余实现(Extra):
|
|
85
|
+
- [具体多余内容,含文件路径和行号]
|
|
86
|
+
|
|
87
|
+
理解偏差(Misunderstood):
|
|
88
|
+
- [具体偏差描述,含文件路径和行号]
|
|
89
|
+
|
|
90
|
+
设计偏离(Design Compliance):
|
|
91
|
+
- [具体偏离点,引用 design.md 条目/段落 + 对应代码文件路径和行号]
|
|
92
|
+
|
|
93
|
+
边界问题(Boundary & Correctness):
|
|
94
|
+
- [幂等/空值/并发问题的具体描述,含文件路径和行号]
|
|
95
|
+
|
|
96
|
+
规格/设计缺口(Spec/Design Gap):
|
|
97
|
+
- [需要补齐的 specs/design 条目,说明为什么这是必须的验收基准]
|
|
98
|
+
|
|
99
|
+
风险提示(Risks,非阻塞):
|
|
100
|
+
- 测试覆盖风险:implementer 报告无测试/未发现测试文件,建议补充覆盖关键场景与边界用例
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
问题描述必须具体、可操作,包含文件路径和行号,让 implementer 能直接定位并修复或推动补齐 artifacts。
|