specline 2.0.2 → 2.0.3
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/core/bootstrap/using-specline.md +8 -0
- package/core/skills/specline-apply-change/SKILL.md +64 -64
- package/core/skills/specline-archive-change/SKILL.md +128 -63
- package/core/skills/specline-explore/SKILL.md +100 -100
- package/core/skills/specline-knowledge/SKILL.md +28 -16
- package/core/skills/specline-pipeline/SKILL.md +49 -45
- package/core/skills/specline-pipeline/references/event-log-spec.md +1 -1
- package/core/skills/specline-pipeline/templates/subagent-prompts.md +3 -3
- package/core/skills/specline-propose/SKILL.md +13 -13
- package/core/skills/specline-quickfix/SKILL.md +16 -16
- package/package.json +1 -1
|
@@ -12,3 +12,11 @@ description: >-
|
|
|
12
12
|
3. 1-3 文件小改 → specline-quickfix
|
|
13
13
|
4. 思考探索 → specline-explore
|
|
14
14
|
5. 读 specline/config.yaml 了解 human_gate_policy
|
|
15
|
+
|
|
16
|
+
## Skill 语言风格
|
|
17
|
+
|
|
18
|
+
1. Skill 面向 Agent/用户的说明采用中文主导;系统契约、CLI、配置字段、文件字段和固定术语保留英文原文。
|
|
19
|
+
2. 标题骨架使用中文,如 `第 1 层:速览与定位`、`主流程`、`步骤 1:创建 Change`、`约束`、`验证清单`。
|
|
20
|
+
3. 不使用 `Layer`、`Happy Path`、`Steps`、`Guardrails`、`Verification Checklist` 等说明性英文作为主标题。
|
|
21
|
+
4. `Pipeline`、`Quickfix`、`Gate`、`Human Gate`、`Artifact`、`Spec`、`Change`、`Agent`、`Hook`、`Type`、`Depends`、`Covers`、`Files`、`WHEN`、`THEN`、CLI 命令、路径和配置键保持英文。
|
|
22
|
+
5. 首次出现的核心术语可使用“中文说明(English Term)”,同一文件内保持一致。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: specline-apply-change
|
|
3
|
-
description:
|
|
3
|
+
description: 实现 Specline change 中的任务。用于用户想开始实现、继续实现或逐项推进 tasks。
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Compatible with specline.
|
|
6
6
|
metadata:
|
|
@@ -9,11 +9,11 @@ metadata:
|
|
|
9
9
|
generatedBy: "1.3.1"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
实现 Specline change 中的任务。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
**输入**:可选传入 change name。若未传入,先判断能否从对话上下文推断;若模糊或有歧义,必须展示可用 change 让用户选择。
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## 第 1 层:速览
|
|
17
17
|
|
|
18
18
|
> **一句话**:实现 Specline change 中的编码任务。
|
|
19
19
|
> **入口**:`/specline-apply-change [change-name]` 或直接说「继续实现」
|
|
@@ -23,11 +23,11 @@ Implement tasks from a Specline change.
|
|
|
23
23
|
> - change 选择 → 若上下文中已有 change name,直接使用;否则取第一个活跃 change
|
|
24
24
|
> - 其他 {{CONFIRM}} 交互 → 自动采用默认安全选项继续,不暂停等待人工输入
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
**流动式工作流集成**
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
28
|
+
本 Skill 支持围绕单个 change 持续执行 action 的模型:
|
|
29
|
+
- **可随时调用**:Artifact 尚未全部完成但已有 tasks 时、部分实现后、或与其他 action 交错时都可调用
|
|
30
|
+
- **允许更新 Artifact**:如果实现暴露设计问题,建议更新 Artifact;不被阶段锁死,按实际情况流动推进
|
|
31
31
|
|
|
32
32
|
**开始前请确认:**
|
|
33
33
|
- [ ] Change 已选中(`/specline-pipeline --change <name>`)
|
|
@@ -36,71 +36,71 @@ This skill supports the "actions on a change" model:
|
|
|
36
36
|
- [ ] 已读取 design.md(知道技术决策)
|
|
37
37
|
- [ ] 已读取 tasks.md(知道实现清单)
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## 第 2 层:主流程
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
**步骤**
|
|
42
42
|
|
|
43
|
-
1.
|
|
43
|
+
1. **选择 change**
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
45
|
+
如果提供了 name,直接使用。否则:
|
|
46
|
+
- 如果用户在对话中提到 change,则从上下文推断
|
|
47
|
+
- 如果只有一个活跃 change,自动选择
|
|
48
|
+
- 如果有歧义,运行 `specline gate list --json` 获取可用 change,并使用 {{CONFIRM}} 让用户选择
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
始终告知:"Using change: <name>",并说明如何覆盖选择(如 `/specline-pipeline --change <other>`)。
|
|
51
51
|
|
|
52
|
-
2.
|
|
52
|
+
2. **检查状态以识别 schema**
|
|
53
53
|
```bash
|
|
54
54
|
specline gate artifacts --change "<name>" --json
|
|
55
55
|
```
|
|
56
|
-
|
|
57
|
-
- `schemaName
|
|
58
|
-
-
|
|
56
|
+
解析 JSON,确认:
|
|
57
|
+
- `schemaName`:当前使用的工作流(如 "spec-driven")
|
|
58
|
+
- 哪个 Artifact 包含 tasks(spec-driven 通常是 "tasks",其他 schema 以状态为准)
|
|
59
59
|
|
|
60
|
-
3.
|
|
60
|
+
3. **读取上下文文件**
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
- `proposal.md` —
|
|
64
|
-
- `specs/<capability>/spec.md` —
|
|
65
|
-
- `design.md` —
|
|
66
|
-
- `tasks.md` —
|
|
62
|
+
读取 `specline/changes/<name>/` 下的规划文件:
|
|
63
|
+
- `proposal.md` — 做什么与为什么
|
|
64
|
+
- `specs/<capability>/spec.md` — Requirements 与 Scenarios
|
|
65
|
+
- `design.md` — 架构与决策
|
|
66
|
+
- `tasks.md` — 实现清单
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
检查 task 完成度:统计 `- [ ]`(未完成)与 `- [x]`(已完成)。
|
|
69
69
|
|
|
70
|
-
4.
|
|
70
|
+
4. **展示当前进度**
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
72
|
+
展示:
|
|
73
|
+
- 进度:"N/M tasks complete"
|
|
74
|
+
- 剩余任务概览
|
|
75
75
|
|
|
76
|
-
5.
|
|
76
|
+
5. **实现 tasks(循环直到完成或阻塞)**
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
78
|
+
对每个待完成 task:
|
|
79
|
+
- 展示当前正在处理的 task
|
|
80
|
+
- 完成所需代码修改
|
|
81
|
+
- 保持修改最小且聚焦
|
|
82
|
+
- 在 tasks 文件中标记完成:`- [ ]` → `- [x]`
|
|
83
|
+
- 继续下一个 task
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
- Task
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
85
|
+
**出现以下情况时暂停:**
|
|
86
|
+
- Task 不清晰 → 请求澄清
|
|
87
|
+
- 实现暴露设计问题 → 建议更新 Artifact
|
|
88
|
+
- 遇到错误或阻塞 → 报告并等待指引
|
|
89
|
+
- 用户中断
|
|
90
90
|
|
|
91
|
-
6.
|
|
91
|
+
6. **完成或暂停时展示状态**
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
93
|
+
展示:
|
|
94
|
+
- 本 session 完成的 tasks
|
|
95
|
+
- 总体进度:"N/M tasks complete"
|
|
96
|
+
- 如果全部完成:建议归档
|
|
97
|
+
- 如果暂停:解释原因并等待指引
|
|
98
98
|
|
|
99
|
-
##
|
|
99
|
+
## 第 3 层:输出模板与高级话题
|
|
100
100
|
|
|
101
101
|
### 输出模板
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
**实现过程输出**
|
|
104
104
|
|
|
105
105
|
```
|
|
106
106
|
## Implementing: <change-name> (schema: <schema-name>)
|
|
@@ -114,7 +114,7 @@ Working on task 4/7: <task description>
|
|
|
114
114
|
✓ Task complete
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
**完成时输出**
|
|
118
118
|
|
|
119
119
|
```
|
|
120
120
|
## Implementation Complete
|
|
@@ -131,7 +131,7 @@ Working on task 4/7: <task description>
|
|
|
131
131
|
All tasks complete! Ready to archive this change.
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
**暂停时输出(遇到问题)**
|
|
135
135
|
|
|
136
136
|
```
|
|
137
137
|
## Implementation Paused
|
|
@@ -151,16 +151,16 @@ All tasks complete! Ready to archive this change.
|
|
|
151
151
|
What would you like to do?
|
|
152
152
|
```
|
|
153
153
|
|
|
154
|
-
###
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
- **Hook blocked → no silent fallback
|
|
154
|
+
### 约束
|
|
155
|
+
- 持续推进 tasks,直到完成或阻塞
|
|
156
|
+
- 开始前始终读取上下文文件(来自 apply 指令输出)
|
|
157
|
+
- task 有歧义时,先暂停询问,再实现
|
|
158
|
+
- 实现暴露问题时,暂停并建议更新 Artifact
|
|
159
|
+
- 保持代码修改最小化,并限定在当前 task 范围内
|
|
160
|
+
- 每完成一个 task,立即更新 checkbox
|
|
161
|
+
- 遇到错误、阻塞或需求不清时暂停,不要猜测
|
|
162
|
+
- 使用 CLI 输出中的 contextFiles,不要假设固定文件名
|
|
163
|
+
- **Hook blocked → no silent fallback**:如果本 Skill 是因为 coding subagent(specline-frontend-dev / specline-backend-dev)被 hook 阻断而被调用,必须先告知用户阻断原因并尝试诊断。不要静默执行本应由被阻断 subagent 处理的任务。参考 specline-pipeline Skill 中的 Hook Blocking Resolution Protocol。
|
|
164
164
|
|
|
165
165
|
---
|
|
166
166
|
|
|
@@ -176,7 +176,7 @@ What would you like to do?
|
|
|
176
176
|
| "这个任务没有测试也没关系,下一个任务会补" | 每个 Testable=true 的任务必须产出测试。推迟 = 不写。 |
|
|
177
177
|
| "tasks.md 的 Covers 追溯链我不用管,代码写对就行" | Covers 链是 Spec → Code 的可追溯纽带。不维护它,Code Review 和测试失败定位都失去锚点。 |
|
|
178
178
|
|
|
179
|
-
##
|
|
179
|
+
## 验证清单
|
|
180
180
|
|
|
181
181
|
每完成一个任务后自查,全部完成后终查:
|
|
182
182
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: specline-archive-change
|
|
3
|
-
description:
|
|
3
|
+
description: 归档已完成的 Specline change。用于实现完成后 finalize 并 archive change。
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Compatible with specline.
|
|
6
6
|
metadata:
|
|
@@ -9,11 +9,11 @@ metadata:
|
|
|
9
9
|
generatedBy: "1.3.1"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 第 1 层:速览
|
|
13
13
|
|
|
14
14
|
> **一句话**:归档已完成的 Specline change。
|
|
15
15
|
> **入口**:`/specline-archive-change [change-name]`
|
|
16
|
-
> **流程**:选 change → 检查完成度 → Delta spec sync 决策 → 移动目录 → 完成
|
|
16
|
+
> **流程**:选 change → 检查完成度 → Delta spec sync 决策 → 移动目录 → 归档后可选知识库更新建议 → 完成
|
|
17
17
|
|
|
18
18
|
### 归档前后目录结构变化
|
|
19
19
|
|
|
@@ -29,48 +29,48 @@ specline/changes/ specline/changes/
|
|
|
29
29
|
│ └── specs/
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
**输入**:可选传入 change name。若未传入,先判断能否从对话上下文推断;若模糊或有歧义,必须展示可用 change 让用户选择。
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
36
|
-
##
|
|
36
|
+
## 第 2 层:主流程
|
|
37
37
|
|
|
38
|
-
1.
|
|
38
|
+
1. **未提供 change name 时,请用户选择**
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
运行 `specline gate list --json` 获取可用 change。使用 {{CONFIRM}} 让用户选择。
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
只展示活跃 change(不展示已归档项)。
|
|
43
|
+
如果可用,展示每个 change 使用的 schema。
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
**重要**:不要猜测或自动选择 change。始终让用户选择。
|
|
46
46
|
|
|
47
|
-
2.
|
|
47
|
+
2. **检查 Artifact 完成状态**
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
运行 `specline gate artifacts --change "<name>" --json` 检查 Artifact 完成状态。
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
- `schemaName
|
|
53
|
-
- `artifacts
|
|
51
|
+
解析 JSON,确认:
|
|
52
|
+
- `schemaName`:当前使用的工作流
|
|
53
|
+
- `artifacts`:Artifact 列表及状态(`done` 或其他)
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
55
|
+
**如果存在未 `done` 的 Artifact:**
|
|
56
|
+
- 展示警告,列出未完成的 Artifact
|
|
57
|
+
- 使用 {{CONFIRM}} 确认用户是否继续
|
|
58
|
+
- 用户确认后继续
|
|
59
59
|
|
|
60
|
-
3.
|
|
60
|
+
3. **检查 task 完成状态**
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
读取 tasks 文件(通常是 `tasks.md`),检查未完成任务。
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
统计 `- [ ]`(未完成)和 `- [x]`(已完成)的任务数量。
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
66
|
+
**如果发现未完成任务:**
|
|
67
|
+
- 展示警告,说明未完成任务数量
|
|
68
|
+
- 使用 {{CONFIRM}} 确认用户是否继续
|
|
69
|
+
- 用户确认后继续
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
**如果不存在 tasks 文件:** 不展示 task 相关警告,继续执行。
|
|
72
72
|
|
|
73
|
-
4.
|
|
73
|
+
4. **评估 delta spec sync 状态**
|
|
74
74
|
|
|
75
75
|
**决策流程:**
|
|
76
76
|
|
|
@@ -84,69 +84,130 @@ specline/changes/ specline/changes/
|
|
|
84
84
|
└── 跳过 → 归档
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
检查 `specline/changes/<name>/specs/` 下是否存在 delta specs。若不存在,不提示 sync,直接继续。
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
89
|
+
**如果存在 delta specs:**
|
|
90
|
+
- 将每个 delta spec 与 `specline/specs/<capability>/spec.md` 中对应的 main spec 比较
|
|
91
|
+
- 判断将应用哪些变化(新增、修改、删除、重命名)
|
|
92
|
+
- 提示用户前先展示合并摘要
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
94
|
+
**提示选项:**
|
|
95
|
+
- 需要同步时:"Sync now (recommended)", "Archive without syncing"
|
|
96
|
+
- 已同步时:"Archive now", "Sync anyway", "Cancel"
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
如果用户选择 sync,{{DISPATCH}},role="general-purpose",prompt: "Use Skill tool to invoke specline-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"。无论用户是否选择 sync,之后都继续归档。
|
|
99
99
|
|
|
100
|
-
5.
|
|
100
|
+
5. **执行归档**
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
如果归档目录不存在,先创建:
|
|
103
103
|
```bash
|
|
104
104
|
mkdir -p specline/changes/archive
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
使用当前日期生成目标名称:`YYYY-MM-DD-<change-name>`
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
109
|
+
**检查目标目录是否已存在:**
|
|
110
|
+
- 如果存在:失败并报错,建议重命名已有归档或使用不同日期
|
|
111
|
+
- 如果不存在:将 change 目录移动到 archive
|
|
112
112
|
|
|
113
113
|
```bash
|
|
114
114
|
specline gate archive --execute --change <name>
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
-
6.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- Change
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
|
|
117
|
+
6. **展示摘要**
|
|
118
|
+
|
|
119
|
+
展示归档完成摘要,包括:
|
|
120
|
+
- Change 名称
|
|
121
|
+
- 使用的 schema
|
|
122
|
+
- 归档位置
|
|
123
|
+
- specs 是否已同步(如适用)
|
|
124
|
+
- 任何警告说明(Artifact/task 未完成)
|
|
125
|
+
|
|
126
|
+
7. **归档后知识库更新建议**
|
|
127
|
+
|
|
128
|
+
归档成功后,评估该 change 是否包含值得为未来 AI Agent 或维护者沉淀的知识。
|
|
129
|
+
|
|
130
|
+
**重要边界:**
|
|
131
|
+
- 该步骤发生在归档之后且是可选动作,绝不能阻塞归档成功。
|
|
132
|
+
- 更新任何知识文件前都必须先询问用户。
|
|
133
|
+
- 如果用户跳过更新,正常完成,不视为警告。
|
|
134
|
+
- 不要假设项目一定使用 `specline-knowledge`;它只是可能的知识落点之一。
|
|
135
|
+
|
|
136
|
+
**可检查输入:**
|
|
137
|
+
- `proposal.md` — 目的与范围
|
|
138
|
+
- `design.md` — 架构决策与替代方案
|
|
139
|
+
- `tasks.md` — 实际工作拆解与触达范围
|
|
140
|
+
- `specs/` — 用户可见能力变化
|
|
141
|
+
- `summary.md` — 最终归档摘要(如存在)
|
|
142
|
+
|
|
143
|
+
**当 change 包含以下内容时,建议更新知识库:**
|
|
144
|
+
- 新增或改变核心架构、pipeline 阶段行为、Agent 职责或 Skill 职责
|
|
145
|
+
- 新增或改变 CLI 命令、配置字段、公开接口、Hook 行为或用户可见工作流
|
|
146
|
+
- 新的长期项目概念或术语
|
|
147
|
+
- 有意义的设计决策、权衡或被拒绝的替代方案
|
|
148
|
+
- 未来维护者或 Agent 应知道的可复用操作指南
|
|
149
|
+
- 跨模块核心变更,且 `proposal.md`、`design.md` 或 `summary.md` 解释了长期有效的 why
|
|
150
|
+
|
|
151
|
+
**以下情况不建议更新知识库:**
|
|
152
|
+
- 没有长期设计变化的纯 bug 修复
|
|
153
|
+
- 仅 copy、注释、格式或 typo 修改
|
|
154
|
+
- 小范围本地测试更新
|
|
155
|
+
- 不应沉淀为长期项目知识的临时兼容修复
|
|
156
|
+
|
|
157
|
+
**如果不建议更新:**
|
|
158
|
+
- 在归档摘要中简短说明:`Knowledge: no update suggested`。
|
|
159
|
+
|
|
160
|
+
**如果建议更新:**
|
|
161
|
+
- 用简短列表展示可沉淀的知识。
|
|
162
|
+
- 询问用户是否现在更新知识库。
|
|
163
|
+
- 至少提供 `Update knowledge base` 和 `Skip` 两个选项。
|
|
164
|
+
|
|
165
|
+
**如果用户确认:**
|
|
166
|
+
1. 先查找 `specline-knowledge` 风格结构:
|
|
167
|
+
- `AGENTS.md` 存在并链接到 `docs/knowledge/*`,或
|
|
168
|
+
- `docs/knowledge/` 存在。
|
|
169
|
+
2. 如果找到,以 archive Artifact 为增量输入更新最相关的知识文件。优先选择:
|
|
170
|
+
- 架构或 pipeline 流程变化 → `docs/knowledge/architecture.md`
|
|
171
|
+
- 长期编码/工作流约定 → `docs/knowledge/conventions.md`
|
|
172
|
+
- CLI/config/API/Hook 参考 → `docs/knowledge/reference.md`
|
|
173
|
+
- 可复用操作流程 → `docs/knowledge/howtos/`
|
|
174
|
+
- 重大决策和权衡 → `docs/knowledge/decisions/`
|
|
175
|
+
- 长期概念 → `docs/knowledge/glossary.md`
|
|
176
|
+
3. 如果不存在 `specline-knowledge` 结构,查找项目自有的可能知识落点:
|
|
177
|
+
- `AGENTS.md`, `CLAUDE.md`, `CURSOR.md`, `.cursor/rules/`
|
|
178
|
+
- `docs/adr/`, `docs/decisions/`, `docs/architecture/`
|
|
179
|
+
- 仅当 change 影响用户可见行为或安装配置时,才考虑 `README.md`
|
|
180
|
+
4. 如果合适落点很明显,告知用户计划更新的位置,并在编辑前确认。
|
|
181
|
+
5. 如果没有明显落点,询问用户知识应写到哪里。
|
|
182
|
+
|
|
183
|
+
### 成功输出
|
|
127
184
|
|
|
128
185
|
```
|
|
129
|
-
##
|
|
186
|
+
## 归档完成
|
|
130
187
|
|
|
131
188
|
**Change:** <change-name>
|
|
132
189
|
**Schema:** <schema-name>
|
|
133
190
|
**Archived to:** specline/changes/archive/YYYY-MM-DD-<name>/
|
|
134
191
|
**Specs:** ✓ Synced to main specs (or "No delta specs" or "Sync skipped")
|
|
192
|
+
**Knowledge:** No update suggested / Suggested and skipped / Updated <path>
|
|
135
193
|
|
|
136
194
|
All artifacts complete. All tasks complete.
|
|
137
195
|
```
|
|
138
196
|
|
|
139
197
|
---
|
|
140
198
|
|
|
141
|
-
##
|
|
199
|
+
## 第 3 层:约束与高级话题
|
|
142
200
|
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
201
|
+
- 未提供 change 时,始终提示用户选择
|
|
202
|
+
- 使用 Artifact 图(`specline gate artifacts --json`)检查完成度
|
|
203
|
+
- 警告不阻塞归档,只需告知并确认
|
|
204
|
+
- 移动到 archive 时保留 `.specline.yaml`(随目录一起移动)
|
|
205
|
+
- 清晰展示发生了什么
|
|
206
|
+
- 如果请求 sync,使用 specline-sync-specs 方案(Agent 驱动)
|
|
207
|
+
- 如果存在 delta specs,始终执行 sync 评估,并在提示用户前展示合并摘要
|
|
208
|
+
- 仅在归档成功后运行知识库更新建议,绝不把它变成 Gate
|
|
209
|
+
- 没有用户明确确认时,绝不更新知识文件
|
|
210
|
+
- 不要假设项目使用 `specline-knowledge`;探测可能的知识落点,歧义时询问用户
|
|
150
211
|
|
|
151
212
|
---
|
|
152
213
|
|
|
@@ -160,8 +221,10 @@ All artifacts complete. All tasks complete.
|
|
|
160
221
|
| "Delta spec 不用同步,下次再说" | 未同步的 Delta spec 意味着 spec 与代码脱节。归档后几乎不会再有人回来补。 |
|
|
161
222
|
| "归档就是移动目录,不需要通知用户" | 归档改变了 change 的可见性和可修改性。用户需要知道发生了什么。 |
|
|
162
223
|
| "警告不用管,自动继续就行" | 警告(artifact 不完整、task 未完成)是信号。归档时应确认而非忽略。 |
|
|
224
|
+
| "知识库更新也算归档完成条件" | 知识沉淀是归档后的可选收尾动作。用户跳过时 pipeline 仍然成功完成。 |
|
|
225
|
+
| "项目一定用 specline-knowledge" | 用户项目可能有自己的 AGENTS.md、CLAUDE.md、ADR 或 README 维护方式。先探测,再确认,找不到就问。 |
|
|
163
226
|
|
|
164
|
-
##
|
|
227
|
+
## 验证清单
|
|
165
228
|
|
|
166
229
|
归档前自查:
|
|
167
230
|
|
|
@@ -171,3 +234,5 @@ All artifacts complete. All tasks complete.
|
|
|
171
234
|
- [ ] Delta spec sync 决策已完成(存在则展示摘要→询问;不存在则跳过)
|
|
172
235
|
- [ ] 归档目录已创建(`specline/changes/archive/YYYY-MM-DD-<name>/`)
|
|
173
236
|
- [ ] 归档摘要已展示给用户
|
|
237
|
+
- [ ] 归档成功后已判断是否需要知识库更新建议
|
|
238
|
+
- [ ] 若建议更新知识库,已由用户确认后才写入;跳过不视为失败
|