@alenfitz/spec-copilot 1.0.0 → 1.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/commands/spec:apply.md +36 -7
- package/commands/spec:fix.md +18 -10
- package/commands/spec:test.md +19 -1
- package/framework/AGENTS.md.template +5 -0
- package/framework/CHANGELOG.md +24 -0
- package/framework/VERSION +1 -1
- package/package.json +1 -1
package/commands/spec:apply.md
CHANGED
|
@@ -12,16 +12,45 @@ description: 执行编码(逐 task 推进,每个 task 停顿等确认)
|
|
|
12
12
|
2. Gate 通过后:`git checkout -b feature/<变更名>`(如已在分支则跳过)
|
|
13
13
|
3. 告知用户当前分支名
|
|
14
14
|
|
|
15
|
-
## 逐 task
|
|
15
|
+
## 逐 task 执行规则(铁律:一个 task 一停)
|
|
16
|
+
|
|
17
|
+
> **🛑 这是最重要的规则:完成一个 task 后必须完全停止,等用户说"继续"才执行下一个 task。**
|
|
18
|
+
> **禁止连续执行多个 task。禁止在一次回复中完成两个或更多 task。**
|
|
19
|
+
> **即使用户说"全部执行"或"一口气做完",仍必须逐 task 停顿。**
|
|
20
|
+
|
|
21
|
+
每个 task 的执行流程:
|
|
22
|
+
1. 编码实现
|
|
23
|
+
2. 验证(编译/构建/运行)
|
|
24
|
+
3. 展示验证证据(截取关键输出)
|
|
25
|
+
4. 立即 `git commit`
|
|
26
|
+
5. 更新 tasks.md 该 task 状态为 ✅
|
|
27
|
+
6. **🛑 停止。输出以下提示后结束回复:**
|
|
28
|
+
```
|
|
29
|
+
✅ T<n> 完成(<简述>)
|
|
30
|
+
验证:<编译/测试结果>
|
|
31
|
+
Commit: <hash> <message>
|
|
32
|
+
|
|
33
|
+
→ 下一步:T<n+1>: <描述>
|
|
34
|
+
→ 说"继续"执行下一个 task
|
|
35
|
+
```
|
|
36
|
+
7. **等用户回复后才开始下一个 task**
|
|
16
37
|
|
|
17
|
-
- 每完成一个 task:展示验证证据 → 立即 commit → **停下来等用户说"继续"**
|
|
18
38
|
- 用户反馈后修改完 → 再次停下确认,不得自动进入下一 task
|
|
19
39
|
- Spec-Code 偏差当场记录到 log.md(log.md 已在 /spec:propose 时从 `spec_copilot/changes/templates/log.md` 模板创建,直接编辑已有文件,不得重建)
|
|
20
40
|
|
|
21
|
-
##
|
|
41
|
+
## 全部 task 完成后
|
|
22
42
|
|
|
23
43
|
1. 填写 tasks.md "变更摘要"
|
|
24
|
-
2.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
44
|
+
2. 输出完成报告:
|
|
45
|
+
```
|
|
46
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
47
|
+
/spec:apply 全部完成 ✓
|
|
48
|
+
总 Task:<N> 个
|
|
49
|
+
总 Commit:<N> 个
|
|
50
|
+
|
|
51
|
+
→ 下一步:/spec:smoke <变更名>
|
|
52
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
53
|
+
```
|
|
54
|
+
3. **停止。等用户触发 /spec:smoke。**
|
|
55
|
+
|
|
56
|
+
核心原则:**AI 负责执行,用户负责推进节奏。** 任何阶段跳转都需要用户显式触发。
|
package/commands/spec:fix.md
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Review
|
|
2
|
+
description: Review 后修正迭代(修复→重新验证闭环)
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
请按 AGENTS.md 中定义的 /fix 流程执行:
|
|
6
6
|
|
|
7
7
|
**变更名 + 描述**:$ARGUMENTS
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
2. 每个修复同步更新文档(spec.md / tasks.md / log.md)
|
|
11
|
-
3. 修复完成 commit:`[变更名] fix: <简述>`
|
|
9
|
+
## 修复流程
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
1. 读取 spec.md §12 审查结论和 log.md 中的问题列表
|
|
12
|
+
2. 逐项修复:
|
|
13
|
+
- 每修一个问题,在 log.md 记录:`| 时间 | fix | 修复 <问题描述> |`
|
|
14
|
+
- 修改涉及的文档同步更新(spec.md / tasks.md)
|
|
15
|
+
3. 全部修复后一次 commit:`[变更名] fix: <修复概述>`
|
|
16
|
+
4. 更新 tasks.md 变更摘要中的"遗留问题"
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
## 修复后自动重新验证(必须执行)
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
|
20
|
-
|
|
20
|
+
修复完成后**必须自动回到触发源重新验证**,不等用户确认:
|
|
21
|
+
|
|
22
|
+
| 触发源 | 自动执行 | 说明 |
|
|
23
|
+
|--------|---------|------|
|
|
24
|
+
| /spec:smoke 失败 | → 自动执行 `/spec:smoke <变更名>` | 验证编译/构建修复 |
|
|
25
|
+
| /spec:review Critical>0 | → 自动执行 `/spec:review <变更名>` | 重新两阶段审查 |
|
|
26
|
+
|
|
27
|
+
> **铁律**:fix → re-verify 是一个原子闭环。修了不验证等于没修。
|
|
28
|
+
> 如果重新验证仍然失败,再次停下来报告问题,不要无限循环。
|
package/commands/spec:test.md
CHANGED
|
@@ -16,7 +16,25 @@ description: 补充自动化测试
|
|
|
16
16
|
- 异常路径(非法参数、依赖服务失败)
|
|
17
17
|
|
|
18
18
|
文件位置和命名遵循对应 stack adapter §8。
|
|
19
|
-
|
|
19
|
+
文件位置和命名遵循对应 stack adapter §8。
|
|
20
|
+
|
|
21
|
+
## 执行与报告
|
|
22
|
+
|
|
23
|
+
1. 生成测试代码
|
|
24
|
+
2. 运行全部测试
|
|
25
|
+
3. **输出详细报告**(不能只说"全部通过"):
|
|
26
|
+
```
|
|
27
|
+
## 测试报告:<变更名>
|
|
28
|
+
|
|
29
|
+
| 测试类 | 用例数 | 通过 | 失败 | 覆盖范围 |
|
|
30
|
+
|--------|-------|------|------|---------|
|
|
31
|
+
| XxxTest | N | N | 0 | 说明测试了什么 |
|
|
32
|
+
|
|
33
|
+
总计:<N> 个用例,<N> 通过,<N> 失败
|
|
34
|
+
覆盖率:核心 Service > 80%(如工具支持)
|
|
35
|
+
```
|
|
36
|
+
4. 全部通过后 commit:`[变更名] test: 补充自动化测试(<N> 用例)`
|
|
37
|
+
5. 记录到 log.md
|
|
20
38
|
|
|
21
39
|
## 结束后
|
|
22
40
|
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
- 涉及外部 API 密钥/敏感信息 → 必须通过配置文件管理,禁止硬编码
|
|
25
25
|
- 有价值的发现 → 主动建议沉淀到 knowledge/
|
|
26
26
|
|
|
27
|
+
### 节奏控制(铁律)
|
|
28
|
+
- **逐 task 停顿**:/spec:apply 期间,完成一个 task 就停下来,展示验证证据,等用户说"继续"才执行下一个。**禁止连续执行多个 task。**
|
|
29
|
+
- **阶段跳转等确认**:每个阶段(propose/apply/smoke/review/fix/test/archive)完成后停下来,告知下一步是什么,等用户显式触发。
|
|
30
|
+
- **唯一例外**:/spec:flow 全自动模式下,阶段间自动推进(但仅限 🟢/🟡 需求)。
|
|
31
|
+
|
|
27
32
|
## 启动检查(每次会话开始时执行)
|
|
28
33
|
|
|
29
34
|
**执行 `/spec:init`** — 该命令自动完成规范加载、项目扫描、栈适配、变更检测、状态报告。这是每次会话的唯一起点。
|
package/framework/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.5.0] - 2026-05-21
|
|
8
|
+
|
|
9
|
+
### 变更(基于真实项目端到端测试反馈)
|
|
10
|
+
|
|
11
|
+
**逐 Task 停顿强化(P0):**
|
|
12
|
+
- `spec:apply` 命令新增「铁律」区块,三重强调:完成一个 task 必须停下等用户确认
|
|
13
|
+
- 禁止连续执行多个 task,即使用户说"全部执行"
|
|
14
|
+
- 每个 task 完成后输出标准化停顿提示(含 commit hash、下一步 task 描述)
|
|
15
|
+
- AGENTS.md 新增「节奏控制」章节,全局声明逐 task 停顿规则
|
|
16
|
+
|
|
17
|
+
**Fix → Re-verify 闭环(P0):**
|
|
18
|
+
- `spec:fix` 命令重写,修复完成后必须自动重新验证(smoke/review),不等用户触发
|
|
19
|
+
- 明确 fix → re-verify 是原子闭环,增加无限循环保护
|
|
20
|
+
|
|
21
|
+
**阶段跳转等确认(P1):**
|
|
22
|
+
- `spec:apply` 结束时不再自动触发 smoke,改为输出完成报告后等待用户显式触发
|
|
23
|
+
- 核心原则调整为"AI 负责执行,用户负责推进节奏"
|
|
24
|
+
|
|
25
|
+
**测试报告详细化(P1):**
|
|
26
|
+
- `spec:test` 命令要求输出详细报告表格(测试类/用例数/通过数/覆盖范围)
|
|
27
|
+
- 不再接受"全部通过"的笼统报告
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
7
31
|
## [1.4.0] - 2026-05-21
|
|
8
32
|
|
|
9
33
|
### 新增
|
package/framework/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.5.0
|
package/package.json
CHANGED