6aspec 3.0.0-dev.22 → 3.0.0-dev.23

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.
Files changed (23) hide show
  1. package/.6aspec/rules/brown/subagents/implementer.md +5 -3
  2. package/.6aspec/rules/brown/subagents/spec-compliance-reviewer.md +4 -2
  3. package/.agents/skills/6aspec-brown-analyze/agents/openai.yaml +2 -0
  4. package/.agents/skills/6aspec-brown-archive/agents/openai.yaml +2 -0
  5. package/.agents/skills/6aspec-brown-continue/agents/openai.yaml +2 -0
  6. package/.agents/skills/6aspec-brown-design/agents/openai.yaml +2 -0
  7. package/.agents/skills/6aspec-brown-explore/agents/openai.yaml +2 -0
  8. package/.agents/skills/6aspec-brown-ff/agents/openai.yaml +2 -0
  9. package/.agents/skills/6aspec-brown-implement/agents/openai.yaml +2 -0
  10. package/.agents/skills/6aspec-brown-list/agents/openai.yaml +2 -0
  11. package/.agents/skills/6aspec-brown-new/agents/openai.yaml +2 -0
  12. package/.agents/skills/6aspec-brown-proposal/agents/openai.yaml +2 -0
  13. package/.agents/skills/6aspec-brown-quick/agents/openai.yaml +2 -0
  14. package/.agents/skills/6aspec-brown-review/agents/openai.yaml +2 -0
  15. package/.agents/skills/6aspec-brown-rollback/agents/openai.yaml +2 -0
  16. package/.agents/skills/6aspec-brown-specs/agents/openai.yaml +2 -0
  17. package/.agents/skills/6aspec-brown-status/agents/openai.yaml +2 -0
  18. package/.agents/skills/6aspec-brown-tasks/agents/openai.yaml +2 -0
  19. package/.agents/skills/6aspec-brown-update/agents/openai.yaml +2 -0
  20. package/.agents/skills/6aspec-brown-verify/agents/openai.yaml +2 -0
  21. package/.agents/skills/6aspec-review/SKILL.md +54 -24
  22. package/.agents/skills/6aspec-review/agents/openai.yaml +7 -0
  23. package/package.json +1 -1
@@ -20,7 +20,7 @@
20
20
  主 agent 应在派发本 subagent 时明确一行:`skipTest:true` 或 `skipTest:false`(与用户命令中的 `--skipTest=true` / `--skipTest=false` 一致)。**文档与实现只认带 `=true` / `=false` 的写法**;裸写 `--skipTest` 无赋值视为未规范输入,主 agent 应让用户改用 `=true` 或 `=false`。
21
21
 
22
22
  - **`skipTest:false` 或未传 `skipTest` 参数**:视为 **false**(标准测试模式),见下方职责第 6 条「`skipTest=false`」分支。
23
- - **`skipTest:true`**:**不编写**单元测试,**不执行**任何测试类命令(含 `test`、`mvn test`、`gradle test`、`pytest`、`go test` 等);仍须在报告中写清**手动/静态验证方式、回归点与残余风险**。若 TASK/specs **明文要求**必须交付测试,而用户仍指定 `--skipTest=true`,实现前应先向主 agent **说明冲突并等待取舍**,不要擅自忽略 specs。
23
+ - **`skipTest:true`**:**最高优先级**。**不编写**单元测试,**不执行**任何测试类命令(含 `test`、`mvn test`、`gradle test`、`pytest`、`go test` 等);即使 TASK/specs 写有测试要求,仍以本次参数为准。仍须在报告中写清**手动/静态验证方式、回归点与残余风险**,并明确说明哪些自动化测试未执行。
24
24
 
25
25
  ## 你的职责
26
26
 
@@ -44,7 +44,8 @@
44
44
  - **禁止**:把「本任务动到了 Repository/Mapper」**单独**当成必须写单测的理由;是否写单测取决于是否出现**非平凡逻辑**(分支、规则、补偿、复杂 SQL 行为),以及 TASK/specs 是否点名要自动化测试
45
45
 
46
46
  **🚨 测试红线(绝对禁止)**:
47
- - **禁止在测试代码中重新实现被测逻辑**:不得在测试方法里自己写 stream filter、循环、条件判断等来"模拟"业务行为后再断言结果——这类测试无论业务代码是否正确都会通过,没有任何验证价值。
47
+ - **禁止在测试中复制/重写被测业务逻辑来推导 expected**:不得使用与生产代码同构的筛选、聚合、分支或计算逻辑,在测试里先算出"期望结果"再断言;这类测试会与缺陷同源,缺乏验证价值。
48
+ - **允许参数化/表驱动/循环遍历用例,但 expected 必须外部给定**:期望值应来自固定测试夹具、明确枚举值或规则表,不得在断言前临时计算出与被测逻辑同构的结果。
48
49
  - **测试必须调用被测类的真实方法**:通过断言其返回值,或通过 mock verify 断言其对依赖的调用行为来验证。合法结构示例:`given(mock).thenReturn(x)` → 调用 `service.realMethod(...)` → `assertEquals(expected, result)` 或 `verify(mock).someMethod(...)`。
49
50
  7. 完成后自我审查,报告结果
50
51
 
@@ -64,8 +65,9 @@
64
65
  - 合法的入口方法结构:解析入参 → 日志 → 调一次 Service → 返回结果。不符合此结构须重构后再报告。
65
66
 
66
67
  **测试/验证**:
67
- - 若 **`skipTest=true`**:是否已说明验证方式、回归点与残余风险?若 TASK/specs 强制要求测试而与参数冲突,是否已上报或已按主 agent 取舍执行?
68
+ - 若 **`skipTest=true`**:是否已说明验证方式、回归点与残余风险?若 TASK/specs 写有测试要求,是否已在报告中明确标注“本次按 skipTest=true 未编写/未执行自动化测试”及其影响?
68
69
  - 若 **`skipTest=false`(含默认)** 且 TASK/specs **明确要求**补自动化测试:是否已补齐并覆盖关联 AC/Scenario?
70
+ - 若已补自动化测试:是否调用了被测类真实方法,且 expected 来自夹具/枚举/规则表,而非在测试内重写业务逻辑后再断言?
69
71
  - 若为纯 Entity/DTO/SQL/脚本/**薄持久化**类交付且 **`skipTest=false`**:是否按 TASK 选定的方式(清单/预发 SQL/冒烟)完成验证说明,**避免**仅为 Repository 动过手就额外造单测?
70
72
 
71
73
  发现问题立即修复,再报告。
@@ -92,11 +92,13 @@ Implementer 的报告可能不完整或过于乐观。你**必须独立验证**
92
92
  > - 若你发现“必须明确但 specs/TASK 没写清”的边界规则:记录为 **规格缺口风险**,不要仅因此判定不通过(不得在实现阶段临时发明规则)。
93
93
 
94
94
  **5. 测试覆盖关键场景(Testing Adequacy,默认仅风险提示)**
95
+ - **优先级规则**:若主 agent 传入 **`skipTest:true`**,该参数在测试判定中**最高优先级**;无论 TASK/specs 是否写有补测试要求,都**不得**因缺少测试或测试无效而判定 ❌,仅记录测试覆盖风险与补充建议。
95
96
  - 评估测试是否覆盖该任务涉及的关键 AC/Scenario。
96
97
  - 评估是否覆盖关键边界场景(幂等/空值/并发)对应的用例或回归点。
98
+ - 若存在自动化测试:检查测试是否调用了被测类/方法(SUT)真实入口,且 expected 不是通过测试内同构业务逻辑临时推导;若通过"在测试里重写业务逻辑"获得 expected,则该测试视为无效测试。
97
99
  - 如果 implementer 报告明确无测试,且你也未发现相关测试文件:仅记录为**风险提示**,不要仅因无测试而判定不通过。
98
- - 若主 agent 传入上下文标明 **`skipTest:true`**(对应用户 `--skipTest=true`):不因缺少单元测试或测试文件而判定不通过,仅记录**测试覆盖风险**与补充建议。
99
- - 只有当 TASK/specs.md **明确要求必须补测试**时,缺失测试才属于 Missing 并必须判定 ❌。
100
+ - 仅当 **`skipTest:false`(含默认)** 且 TASK/specs.md **明确要求必须补测试**时,缺失测试才属于 Missing 并必须判定 ❌。
101
+ - 仅当 **`skipTest:false`(含默认)** 且 TASK/specs.md **明确要求必须补测试**时,若仅发现无效测试(如测试内重写业务逻辑)也按 Missing 判定 ❌;若未强制要求补测,则记录为测试覆盖风险并给出整改建议。
100
102
 
101
103
  **任务类型与 4~5 的深度**:若 TASK 主要为 DDL、迁移、Entity/薄 Repository、配置类变更,4~5 **只做一眼扫过**;无异常则一句话带过,**不要**按业务服务级任务的标准穷举。
102
104
 
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -0,0 +1,2 @@
1
+ policy:
2
+ allow_implicit_invocation: false
@@ -1,36 +1,66 @@
1
1
  ---
2
2
  name: "6aspec-review"
3
- description: "独立代码审查(优先 DIFF,其次 git diff),不绑定任何流程,随时可用"
3
+ description: "独立代码审查。用于审查指定 diff 文件或 git 提交范围内的代码变更,并输出完整审查报告。"
4
4
  ---
5
5
 
6
6
  # 操作流程
7
7
 
8
- 1. Immediate response upon activation: independent code review workflow - **6aspec-review** has been activated
8
+ 对当前代码变更进行独立审查。好的
9
9
 
10
- 2. 解析输入参数(均可选):
11
- - `<description>`:变更描述(默认:"最近一次提交的变更")
12
- - `--diff <file>`:unified diff 文件路径(优先)
13
- - `--base <SHA>`:起始 commit(默认:HEAD~1)
14
- - `--head <SHA>`:结束 commit(默认:HEAD)
15
- - `--plan <file>`:需求/计划文件路径(可选)
10
+ ## 步骤
16
11
 
17
- 3. 确定变更来源:
18
- - 若提供 `--diff`:读取该文件内容作为 `DIFF`
19
- - 否则:使用 git 范围(`BASE_SHA`/`HEAD_SHA`)
20
- - 若用户未指定:`BASE_SHA=HEAD~1`,`HEAD_SHA=HEAD`
21
- - 可运行 `git log --oneline -10` 展示最近提交,便于用户确认范围
12
+ ### 1. 解析输入
22
13
 
23
- 4. 派发 `6aspec-code-reviewer` agent,并传入以下信息(按实际可得填写;无 DIFF 时不要伪造 DIFF):
14
+ 用户可以提供以下参数(均可选):
15
+ - `<description>` — 变更描述
16
+ - `--diff <file>` — 本次变更的 unified diff 文件路径(优先)
17
+ - `--base <SHA>` — 起始 commit(默认:HEAD~1)
18
+ - `--head <SHA>` — 结束 commit(默认:HEAD)
19
+ - `--plan <file>` — 需求/计划文件路径
24
20
 
25
- ```
26
- 变更描述:<description>
27
- 需求/计划:<--plan 文件路径 或 "无">
28
- DIFF:<--diff 文件内容(如提供)>
29
- BASE_SHA:<--base 或 HEAD~1>
30
- HEAD_SHA:<--head 或 HEAD>
31
- ```
21
+ 如果未提供 `--diff/--base/--head`,使用默认值(HEAD~1..HEAD)。
32
22
 
33
- 5. 展示审查结果:直接输出 `6aspec-code-reviewer` 返回的完整审查报告。
23
+ ### 2. 确定变更来源
34
24
 
35
- 6. 无法获取变更集时的处理:
36
- - 若既未提供 `--diff`,又无法使用 git 获取 diff:停止并提示用户提供 `--diff <file>`(unified diff)。
25
+ - 如果提供了 `--diff`:读取 diff 文件内容作为 `DIFF`,并直接进入步骤 3。
26
+ - 否则:使用 git 范围。
27
+
28
+ ### 3. (可选)展示 git 范围
29
+
30
+ 当使用 git 范围时:
31
+
32
+ ```bash
33
+ git log --oneline -10
34
+ ```
35
+
36
+ 显示最近 10 条 commit,帮助用户确认审查范围。
37
+
38
+ 如果用户未指定 SHA,使用:
39
+ - BASE_SHA = HEAD~1
40
+ - HEAD_SHA = HEAD
41
+
42
+ ### 4. 派发 6aspec-code-reviewer agent
43
+
44
+ 调用 `6aspec-code-reviewer` agent,传入:
45
+
46
+ ```
47
+ 变更描述:[用户提供的描述,或"最近一次提交的变更"]
48
+ 需求/计划:[--plan 指定的文件路径,或"无"]
49
+ DIFF:[--diff 指定文件内容(如提供)]
50
+ BASE_SHA:[base SHA(如使用 git)]
51
+ HEAD_SHA:[head SHA(如使用 git)]
52
+ ```
53
+
54
+ ### 5. 展示审查结果
55
+
56
+ 直接展示 agent 返回的完整审查报告。
57
+
58
+ ## 使用示例
59
+
60
+ ```
61
+ /6aspec:review
62
+ /6aspec:review 实现了用户认证功能
63
+ /6aspec:review --diff /tmp/change.patch
64
+ /6aspec:review --base abc1234 --head def5678
65
+ /6aspec:review --plan 6aspecdoc/brown/add-user-auth/artifacts/specs.md
66
+ ```
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "6ASpec 独立代码审查"
3
+ short_description: "仅在显式调用时审查 diff 文件或指定 git 范围变更"
4
+ default_prompt: "使用 $6aspec-review 审查一个 diff 文件或 git 提交范围,并输出完整审查报告。"
5
+
6
+ policy:
7
+ allow_implicit_invocation: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "6aspec",
3
- "version": "3.0.0-dev.22",
3
+ "version": "3.0.0-dev.23",
4
4
  "description": "6Aspec - 轻量级 spec 驱动开发框架,支持 Cursor 和 Claude Code",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {