kld-sdd 2.4.7 → 2.4.9
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/lib/init.js +201 -12
- package/package.json +1 -1
- package/skywalk-sdd/index.js +2241 -127
- package/templates/ci/github-actions-sdd.yml +67 -0
- package/templates/ci/gitlab-ci-sdd.yml +44 -0
- package/templates/git-hooks/pre-commit-sdd-check.js +155 -0
- package/templates/git-hooks/pre-push-sdd-check.js +41 -0
- package/templates/hooks/claude/hooks/sdd-post-tool.js +120 -0
- package/templates/hooks/claude/hooks/sdd-pre-tool.js +38 -0
- package/templates/hooks/claude/hooks/sdd-prompt.js +66 -0
- package/templates/hooks/claude/hooks/sdd-stop.js +82 -0
- package/templates/hooks/claude/settings.json +46 -0
- package/templates/opsx-commands/apply.md +75 -7
- package/templates/opsx-commands/archive.md +116 -55
- package/templates/opsx-commands/check.md +123 -4
- package/templates/opsx-commands/design.md +14 -4
- package/templates/opsx-commands/explore.md +14 -4
- package/templates/opsx-commands/propose.md +10 -4
- package/templates/opsx-commands/spec.md +14 -4
- package/templates/opsx-commands/task.md +15 -5
- package/templates/opsx-commands/test.md +41 -4
- package/templates/skills/opsx-apply/SKILL.md +63 -5
- package/templates/skills/opsx-archive/SKILL.md +94 -47
- package/templates/skills/opsx-check/SKILL.md +47 -3
- package/templates/skills/opsx-design/SKILL.md +8 -3
- package/templates/skills/opsx-explore/SKILL.md +8 -3
- package/templates/skills/opsx-propose/SKILL.md +8 -3
- package/templates/skills/opsx-spec/SKILL.md +8 -3
- package/templates/skills/opsx-task/SKILL.md +8 -3
- package/templates/skills/opsx-test/SKILL.md +8 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: OPSX: Propose
|
|
3
3
|
description: "创建业务意图文档 - 定义变更的 Why 和上下文总览"
|
|
4
4
|
argument-hint: "[change-name] [上下文文件...]"
|
|
@@ -6,8 +6,14 @@ argument-hint: "[change-name] [上下文文件...]"
|
|
|
6
6
|
|
|
7
7
|
创建 **proposal.md** - 业务意图与上下文总览文档(聚焦 Why)。
|
|
8
8
|
|
|
9
|
+
> **🖥️ 跨平台执行规则**
|
|
10
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
11
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
12
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
13
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
14
|
+
|
|
9
15
|
> **📊 Telemetry(必做,不得跳过)**
|
|
10
|
-
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=propose --project
|
|
16
|
+
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=propose --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`,记录返回的 event_id。
|
|
11
17
|
|
|
12
18
|
> **⚠️ 阶段边界提示**
|
|
13
19
|
>
|
|
@@ -28,7 +34,7 @@ argument-hint: "[change-name] [上下文文件...]"
|
|
|
28
34
|
|
|
29
35
|
在终端执行(若命令失败必须中止本阶段,不得跳过):
|
|
30
36
|
```bash
|
|
31
|
-
node skywalk-sdd/log.js start --command=propose --project
|
|
37
|
+
node skywalk-sdd/log.js start --command=propose --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
|
|
32
38
|
```
|
|
33
39
|
保存输出 JSON 中的 `event_id`,供阶段结束使用。
|
|
34
40
|
|
|
@@ -396,4 +402,4 @@ argument-hint: "[change-name] [上下文文件...]"
|
|
|
396
402
|
- **⛔ 单阶段原则:完成 proposal.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx:spec`,**绝对禁止自动执行 spec/design/task 等后续阶段**。每个阶段必须由用户主动触发。
|
|
397
403
|
|
|
398
404
|
> **📊 Telemetry(必做,不得跳过)**
|
|
399
|
-
> 在终端执行(必须成功):`node skywalk-sdd/log.js end --event-id=<开头记录的event_id> --result=success/failure --summary="一句话摘要"
|
|
405
|
+
> 在终端执行(必须成功):`node skywalk-sdd/log.js end --event-id=<开头记录的event_id> --command=propose --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="一句话摘要"`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: OPSX: Spec
|
|
3
3
|
description: "创建技术契约文档 - 为每个能力定义业务场景与技术规范"
|
|
4
4
|
argument-hint: "[change-name] [上下文文件...]"
|
|
@@ -6,8 +6,13 @@ argument-hint: "[change-name] [上下文文件...]"
|
|
|
6
6
|
|
|
7
7
|
创建 **specs/<capability>/spec.md** - 业务场景与技术契约文档(代码生成的唯一真理,聚焦 What)。
|
|
8
8
|
|
|
9
|
+
> **🖥️ 跨平台执行规则**
|
|
10
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
11
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
12
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
13
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
9
14
|
> **📊 Telemetry(必做,不得跳过)**
|
|
10
|
-
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=spec --project
|
|
15
|
+
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=spec --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`,记录返回的 event_id。
|
|
11
16
|
|
|
12
17
|
> **⚠️ 阶段边界提示**
|
|
13
18
|
>
|
|
@@ -44,7 +49,7 @@ openspec/changes/<name>/
|
|
|
44
49
|
|
|
45
50
|
在终端执行(若命令失败必须中止本阶段,不得跳过):
|
|
46
51
|
```bash
|
|
47
|
-
node skywalk-sdd/log.js start --command=spec --project
|
|
52
|
+
node skywalk-sdd/log.js start --command=spec --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
|
|
48
53
|
```
|
|
49
54
|
保存输出 JSON 中的 `event_id`,供阶段结束使用。
|
|
50
55
|
|
|
@@ -512,5 +517,10 @@ openspec/changes/<name>/
|
|
|
512
517
|
- **⛔ 阶段边界**:本阶段禁止执行任何代码创建/修改操作。若用户要求处理代码,回复:「当前处于 Spec 阶段,代码操作请在完成文档后使用 `/opsx:apply` 执行。」
|
|
513
518
|
- **⛔ 单阶段原则:完成 spec.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx:design`,**绝对禁止自动执行 design/task 等后续阶段**。每个阶段必须由用户主动触发。
|
|
514
519
|
|
|
520
|
+
> **🖥️ 跨平台执行规则**
|
|
521
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
522
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
523
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
524
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
515
525
|
> **📊 Telemetry(必做,不得跳过)**
|
|
516
|
-
> 在终端执行(必须成功):`node skywalk-sdd/log.js end --event-id=<开头记录的event_id> --result=success/failure --summary="一句话摘要"
|
|
526
|
+
> 在终端执行(必须成功):`node skywalk-sdd/log.js end --event-id=<开头记录的event_id> --command=spec --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="一句话摘要"`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: OPSX: Task
|
|
3
3
|
description: "创建任务拆解文档 - 针对单一 Capability 的 DAG 任务清单"
|
|
4
4
|
argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
@@ -6,8 +6,13 @@ argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
|
6
6
|
|
|
7
7
|
创建 **tasks.md** - 针对单一 Capability 的 AI 编码引擎执行单元(支持拓扑依赖管理)。
|
|
8
8
|
|
|
9
|
+
> **🖥️ 跨平台执行规则**
|
|
10
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
11
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
12
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
13
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
9
14
|
> **📊 Telemetry(必做,不得跳过)**
|
|
10
|
-
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=task --project
|
|
15
|
+
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=task --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`,记录返回的 event_id。
|
|
11
16
|
|
|
12
17
|
> **⚠️ 阶段边界提示**
|
|
13
18
|
>
|
|
@@ -37,7 +42,7 @@ argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
|
37
42
|
|
|
38
43
|
在终端执行(若命令失败必须中止本阶段,不得跳过):
|
|
39
44
|
```bash
|
|
40
|
-
node skywalk-sdd/log.js start --command=task --project
|
|
45
|
+
node skywalk-sdd/log.js start --command=task --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
|
|
41
46
|
```
|
|
42
47
|
保存输出 JSON 中的 `event_id`,供阶段结束使用。
|
|
43
48
|
|
|
@@ -286,7 +291,7 @@ argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
|
286
291
|
### [TASK-XXX-01] 任务名称
|
|
287
292
|
- **类型**: 数据层 / 接口层 / UI层 / 测试
|
|
288
293
|
- **依赖**: 无
|
|
289
|
-
- **状态**: [ ]
|
|
294
|
+
- **状态**: [ ] 未完成(勾选格式统一使用 GitHub 标准的 `- [ ]` / `- [x]`)
|
|
290
295
|
|
|
291
296
|
#### 任务描述
|
|
292
297
|
<!-- 一句话描述本任务要做什么 -->
|
|
@@ -419,5 +424,10 @@ argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
|
419
424
|
- **⛔ 阶段边界**:本阶段只创建任务清单,禁止直接执行代码操作
|
|
420
425
|
- **⛔ 单阶段原则:完成 tasks.md 后必须立即停止**。仅提示用户下一步可运行 `/opsx:check` 或 `/opsx:apply`,**绝对禁止自动执行 apply/check 等后续阶段**。每个阶段必须由用户主动触发。
|
|
421
426
|
|
|
427
|
+
> **🖥️ 跨平台执行规则**
|
|
428
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
429
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
430
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
431
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
422
432
|
> **📊 Telemetry(必做,不得跳过)**
|
|
423
|
-
> 在终端执行(必须成功):`node skywalk-sdd/log.js end --event-id=<开头记录的event_id> --result=success/failure --summary="一句话摘要"
|
|
433
|
+
> 在终端执行(必须成功):`node skywalk-sdd/log.js end --event-id=<开头记录的event_id> --command=task --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="一句话摘要"`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: OPSX: Test
|
|
3
3
|
description: "执行单元测试 - 自动检测并运行测试用例,输出测试报告"
|
|
4
4
|
argument-hint: "[test-scope] [options]"
|
|
@@ -6,8 +6,13 @@ argument-hint: "[test-scope] [options]"
|
|
|
6
6
|
|
|
7
7
|
执行单元测试 - 自动检测项目中的测试用例并运行,输出结构化测试报告。
|
|
8
8
|
|
|
9
|
+
> **🖥️ 跨平台执行规则**
|
|
10
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
11
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
12
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
13
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
9
14
|
> **📊 Telemetry(必做,不得跳过)**
|
|
10
|
-
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=test --project
|
|
15
|
+
> 在终端执行(必须成功):`node skywalk-sdd/log.js start --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`,记录返回的 event_id。
|
|
11
16
|
|
|
12
17
|
> **⚠️ 命令定位**
|
|
13
18
|
>
|
|
@@ -23,7 +28,7 @@ argument-hint: "[test-scope] [options]"
|
|
|
23
28
|
|
|
24
29
|
在终端执行(若命令失败必须中止本阶段,不得跳过):
|
|
25
30
|
```bash
|
|
26
|
-
node skywalk-sdd/log.js start --command=test --project
|
|
31
|
+
node skywalk-sdd/log.js start --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
|
|
27
32
|
```
|
|
28
33
|
保存输出 JSON 中的 `event_id`,供阶段结束使用。
|
|
29
34
|
|
|
@@ -168,6 +173,31 @@ argument-hint: "[test-scope] [options]"
|
|
|
168
173
|
> - B. **创建测试用例** - 为当前实现生成测试
|
|
169
174
|
> - C. **跳过测试** - 本次不执行测试"
|
|
170
175
|
|
|
176
|
+
5. **【Telemetry 必做】整理结构化测试结果**
|
|
177
|
+
|
|
178
|
+
测试运行后,必须将结果整理为以下标准 schema:
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"test_results": {
|
|
183
|
+
"command": "npm test",
|
|
184
|
+
"passed": 12,
|
|
185
|
+
"failed": 0,
|
|
186
|
+
"skipped": 1,
|
|
187
|
+
"coverage": 85.5,
|
|
188
|
+
"duration_ms": 40000
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**字段口径**:
|
|
194
|
+
- `command`: 实际执行的测试命令。
|
|
195
|
+
- `passed`: 通过用例数。
|
|
196
|
+
- `failed`: 失败用例数。
|
|
197
|
+
- `skipped`: 跳过用例数,没有则填 `0`。
|
|
198
|
+
- `coverage`: 覆盖率百分比,无法获取时填 `null`。
|
|
199
|
+
- `duration_ms`: 测试耗时,无法获取时填 `null`。
|
|
200
|
+
|
|
171
201
|
---
|
|
172
202
|
|
|
173
203
|
**使用示例**
|
|
@@ -203,5 +233,12 @@ argument-hint: "[test-scope] [options]"
|
|
|
203
233
|
- **不阻塞流程**:测试结果作为参考,由用户决定是否继续
|
|
204
234
|
- **支持增量测试**:支持仅运行变更相关的测试,提升效率
|
|
205
235
|
|
|
236
|
+
> **🖥️ 跨平台执行规则**
|
|
237
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
238
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
239
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
240
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
206
241
|
> **📊 Telemetry(必做,不得跳过)**
|
|
207
|
-
>
|
|
242
|
+
> 测试运行后,必须记录结构化测试结果:`node skywalk-sdd/log.js record --type=test_result --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="测试结果摘要" --details-json="{\"test_results\":{\"command\":\"<实际测试命令>\",\"passed\":0,\"failed\":0,\"skipped\":0,\"coverage\":null,\"duration_ms\":0}}"`
|
|
243
|
+
> 若 spec.md 中有可识别场景 ID,且测试能映射到这些场景,建议记录 Q4 规约驱动测试覆盖率(可选,不阻塞测试流程):`node skywalk-sdd/log.js record --type=coverage_result --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/partial/failure --summary="规约场景测试覆盖率" --details-json="{\"spec_test_coverage\":{\"mappings\":[{\"scenario_id\":\"SCN-001\",\"description\":\"规约场景摘要\",\"test_ids\":[\"<测试文件或用例ID>\"],\"status\":\"covered\",\"notes\":\"\"}]}}"`
|
|
244
|
+
> 阶段结束时执行(必须成功):`node skywalk-sdd/log.js end --event-id=<开头记录的event_id> --command=test --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/failure --summary="测试结果摘要" --details-json="{\"test_results\":{\"command\":\"<实际测试命令>\",\"passed\":0,\"failed\":0,\"skipped\":0,\"coverage\":null,\"duration_ms\":0}}"`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: opsx-apply
|
|
3
3
|
description: "变更实施技能 - 针对单一 Capability 按 DAG 依赖顺序实现代码"
|
|
4
4
|
argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
@@ -23,9 +23,21 @@ allowed-tools:
|
|
|
23
23
|
> - **上下文**:overview.md → proposal.md → 当前 capability 的 spec/design/tasks
|
|
24
24
|
> - ⛔ **隔离红线**:绝对禁止加载同级其他 Capability 的文档
|
|
25
25
|
|
|
26
|
+
> **🖥️ 跨平台执行规则**
|
|
27
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
28
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
29
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
30
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
26
31
|
> **📊 Telemetry(必做,不得跳过)**
|
|
27
|
-
> - 阶段开始:`node skywalk-sdd/log.js start --command=apply --project
|
|
28
|
-
> - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --result=success|failure --summary="摘要"
|
|
32
|
+
> - 阶段开始:`node skywalk-sdd/log.js start --command=apply --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --git-sha=<base_git_sha_or_none>`(保存 event_id)
|
|
33
|
+
> - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --command=apply --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
|
|
34
|
+
|
|
35
|
+
> **🔒 Git 策略(只读增强,不改变开发流)**
|
|
36
|
+
> - Git 只作为可选度量数据源,不是 apply 前置条件。
|
|
37
|
+
> - 禁止自动执行 `git init`、`git add`、`git commit`、`git checkout -b`、`git switch -c`。
|
|
38
|
+
> - 若项目已有 Git,仅允许读取 `git rev-parse HEAD`、`git diff --numstat` 等只读信息。
|
|
39
|
+
> - 若项目不是 Git 仓库,进入 `vcs_mode=no-git`,`base_git_sha=none`,继续实施,不得中断。
|
|
40
|
+
> - 只有用户明确要求时,才允许提交或创建分支;SDD 度量本身不得主动提交。
|
|
29
41
|
|
|
30
42
|
---
|
|
31
43
|
|
|
@@ -42,6 +54,36 @@ allowed-tools:
|
|
|
42
54
|
|
|
43
55
|
## 启动流程
|
|
44
56
|
|
|
57
|
+
### 0. 【Telemetry 必做】只读探测 Git 基线
|
|
58
|
+
|
|
59
|
+
先以只读方式探测版本控制状态。Git 只是增强数据源,失败不得中断 apply。
|
|
60
|
+
|
|
61
|
+
禁止事项:
|
|
62
|
+
- 禁止自动执行 `git init`
|
|
63
|
+
- 禁止自动执行 `git add`
|
|
64
|
+
- 禁止自动执行 `git commit`
|
|
65
|
+
- 禁止自动创建或切换分支
|
|
66
|
+
|
|
67
|
+
探测流程:
|
|
68
|
+
```bash
|
|
69
|
+
git rev-parse --is-inside-work-tree
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
若命令成功,设置:
|
|
73
|
+
- `vcs_mode=readonly`
|
|
74
|
+
- `base_git_sha=<git rev-parse HEAD 的输出>`
|
|
75
|
+
|
|
76
|
+
只读读取基线 SHA:
|
|
77
|
+
```bash
|
|
78
|
+
git rev-parse HEAD
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
若命令失败,设置:
|
|
82
|
+
- `vcs_mode=no-git`
|
|
83
|
+
- `base_git_sha=none`
|
|
84
|
+
|
|
85
|
+
非 Git 项目必须继续实施,不得为了度量自动创建仓库或提交快照。
|
|
86
|
+
|
|
45
87
|
### 1. 【交互引导】确认变更名称和 Capability
|
|
46
88
|
|
|
47
89
|
**步骤 1a - 确认变更名称**:
|
|
@@ -138,12 +180,27 @@ e. **⛔ 测试执行门禁**
|
|
|
138
180
|
| `none` | **跳过**:不执行测试门禁 |
|
|
139
181
|
|
|
140
182
|
f. **⛔ 立即更新任务状态**
|
|
141
|
-
- 修改 tasks.md
|
|
183
|
+
- 修改 tasks.md:将 `- [ ]` 替换为 `- [x]`(包括拓扑图和任务详情中的复选框)
|
|
184
|
+
- 同时修改:`- **状态**: [ ] 未完成` → `- **状态**: [x] 已完成`
|
|
185
|
+
- **两种格式必须同步更新**,不可遗漏
|
|
142
186
|
- 验证修改成功
|
|
143
187
|
- 显示进度:`✅ [TASK-ID] 已完成 [N/M]`
|
|
188
|
+
- 记录任务级 Telemetry:
|
|
189
|
+
```bash
|
|
190
|
+
node skywalk-sdd/log.js record --type=task_update --command=apply --project=. --change=<变更名称> --capability=<capability-name> --task-id=<TASK-ID> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=completed --result=success --summary="<TASK-ID> 完成" --details-json="{\"files_changed\":[],\"build_results\":{\"command\":\"<实际编译命令>\",\"success\":true,\"duration_ms\":0,\"error_count\":0},\"test_results\":{\"command\":\"<实际测试命令>\",\"passed\":0,\"failed\":0,\"skipped\":0,\"coverage\":null,\"duration_ms\":0}}"
|
|
191
|
+
```
|
|
144
192
|
|
|
145
193
|
g. **继续下一个可执行任务**
|
|
146
194
|
|
|
195
|
+
### 5.1 【Telemetry 必做】记录 AI 产出快照
|
|
196
|
+
|
|
197
|
+
当前 Capability 的 AI 代码产出完成后,必须记录 `ai_adoption_review`,但不得为了采集快照自动提交 commit。
|
|
198
|
+
|
|
199
|
+
Git 可用时只读统计 SHA/diff;Git 不可用时使用 `vcs_mode=no-git` 和 `base_git_sha=null`:
|
|
200
|
+
```bash
|
|
201
|
+
node skywalk-sdd/log.js record --type=ai_adoption_review --command=apply --project=. --change=<变更名称> --capability=<capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --status=ai_snapshot --result=success --summary="AI 代码产出快照" --details-json="{\"ai_adoption\":{\"review_status\":\"ai_snapshot\",\"vcs_mode\":\"<readonly|no-git>\",\"base_git_sha\":\"<base_git_sha_or_null>\",\"ai_git_sha\":\"<ai_git_sha_or_null>\",\"ai_diff\":{\"files_changed\":0,\"added_lines\":null,\"deleted_lines\":null},\"notes\":\"未自动创建 Git 仓库,未自动提交 commit;仅记录可用统计\"}}"
|
|
202
|
+
```
|
|
203
|
+
|
|
147
204
|
### 6. 完成或暂停时显示状态
|
|
148
205
|
|
|
149
206
|
展示 DAG 执行摘要,引导下一步:
|
|
@@ -161,7 +218,8 @@ g. **继续下一个可执行任务**
|
|
|
161
218
|
- **⛔ DAG 依赖拦截**:执行任务前必须检查依赖,前置未完成必须拦截
|
|
162
219
|
- **⛔ 编译检查门禁**:每完成一个任务后,**必须运行编译检查**,编译失败禁止标记已完成
|
|
163
220
|
- **⛔ 测试执行门禁**:根据 `test-strategy` 决定测试门禁行为(tdd=强制, impl-first=警告, none=跳过)
|
|
164
|
-
- **⛔ 必须实时更新任务状态**:每完成一个任务,**立即**修改 tasks.md
|
|
221
|
+
- **⛔ 必须实时更新任务状态**:每完成一个任务,**立即**修改 tasks.md 中的 `- [ ]` 为 `- [x]`,**同时修改** `**状态**: [ ] 未完成` 为 `**状态**: [x] 已完成`,两种格式不可遗漏
|
|
222
|
+
- **Git 只读策略**:禁止为了度量自动初始化 Git、创建分支或提交 commit;非 Git 项目使用 `vcs_mode=no-git` 继续执行
|
|
165
223
|
- **显示进度反馈**:每完成一个任务,显示「✅ [TASK-ID] 已完成 [N/M]」
|
|
166
224
|
- **保持任务聚焦**:每次只处理一个任务
|
|
167
225
|
- **遇到问题时暂停**:任务描述模糊、编译失败、测试失败或发现设计问题时暂停询问
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: opsx-archive
|
|
3
|
-
description: "归档变更技能 -
|
|
3
|
+
description: "归档变更技能 - 将已结束的 SDD 变更真实移入 archive,并生成最终中文度量报告"
|
|
4
4
|
argument-hint: "[change-name]"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: Requires
|
|
6
|
+
compatibility: Requires skywalk-sdd/log.js.
|
|
7
7
|
metadata:
|
|
8
8
|
author: sdd-team
|
|
9
|
-
version: "3.
|
|
9
|
+
version: "3.2"
|
|
10
10
|
allowed-tools:
|
|
11
11
|
- Bash
|
|
12
12
|
- Read
|
|
@@ -14,84 +14,131 @@ allowed-tools:
|
|
|
14
14
|
- Edit
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
你是一个 SDD(Specification-Driven Development
|
|
17
|
+
你是一个 SDD(Specification-Driven Development)变更归档专家。激活本技能后,你要安全地结束变更生命周期:真实归档文档、同步正式 specs、记录 archive telemetry,并生成最终中文度量报告。
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
>
|
|
21
|
-
> -
|
|
22
|
-
> -
|
|
19
|
+
> **跨平台执行规则**
|
|
20
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
21
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
22
|
+
> - 不要裸写 Windows 反斜杠绝对路径;如必须使用绝对路径,请加引号或改成正斜杠。
|
|
23
|
+
> - 不要省略 `--source=opsx-command` 和 `--session-id=<会话ID>`。
|
|
24
|
+
> - 本技能不调用 OpenSpec 自带归档命令;统一使用 SkyWalk-SDD 的 `archive-docs`。
|
|
23
25
|
|
|
24
26
|
---
|
|
25
27
|
|
|
26
28
|
## 技能定位
|
|
27
29
|
|
|
28
30
|
| 维度 | 内容 |
|
|
29
|
-
|
|
30
|
-
| 核心问题 |
|
|
31
|
-
| 关键输出 |
|
|
32
|
-
| 触发时机 |
|
|
31
|
+
|---|---|
|
|
32
|
+
| 核心问题 | 变更生命周期结束与度量收口 |
|
|
33
|
+
| 关键输出 | `openspec/changes/archive/<日期>-<change>/`、`openspec/specs/`、`skywalk-sdd/reports/<change>-report.md` |
|
|
34
|
+
| 触发时机 | 任务完成、变更取消、变更搁置、或用户要求归档 |
|
|
33
35
|
|
|
34
36
|
---
|
|
35
37
|
|
|
36
38
|
## 启动流程
|
|
37
39
|
|
|
38
|
-
### 1.
|
|
40
|
+
### 1. 确认变更名称并记录阶段开始
|
|
41
|
+
|
|
42
|
+
如果未提供变更名,运行:
|
|
39
43
|
|
|
40
|
-
若未提供,列出当前所有变更供用户选择:
|
|
41
44
|
```bash
|
|
42
45
|
openspec list
|
|
43
46
|
```
|
|
44
|
-
展示每个变更的状态(PENDING / IMPLEMENTING / ARCHIVED),引导用户选择。
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
让用户选择现有变更。确认后记录阶段开始:
|
|
47
49
|
|
|
48
50
|
```bash
|
|
49
|
-
|
|
51
|
+
node skywalk-sdd/log.js start --command=archive --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
|
|
50
52
|
```
|
|
51
53
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
保存 `event_id`。
|
|
55
|
+
|
|
56
|
+
### 2. 询问归档原因
|
|
57
|
+
|
|
58
|
+
使用交互问题让用户选择:
|
|
59
|
+
|
|
60
|
+
> 请选择归档原因:
|
|
61
|
+
> - A. 变更已完成实施
|
|
62
|
+
> - B. 变更已取消
|
|
63
|
+
> - C. 变更已搁置
|
|
64
|
+
> - D. 其他原因
|
|
65
|
+
|
|
66
|
+
记录为 `<归档原因>`,它会进入 `archive-manifest.json`、archive telemetry 和最终报告。
|
|
67
|
+
|
|
68
|
+
### 3. 运行 telemetry doctor
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
node skywalk-sdd/log.js doctor --project=. --change=<变更名称>
|
|
72
|
+
```
|
|
56
73
|
|
|
57
|
-
|
|
74
|
+
如果存在 `severe_issues`,暂停归档并说明必须先修复。`superseded_open_stages` 和 `rework_summary` 只作为返工/重复执行展示,不要求用户人工区分测试回滚或真实研发返工。
|
|
58
75
|
|
|
59
|
-
|
|
60
|
-
> "变更 `<name>` 尚未申请实施,确定要直接归档?
|
|
61
|
-
> - A. 确认归档(变更已取消/搁置)
|
|
62
|
-
> - B. 先申请实施(运行 `/opsx:apply <name>`)"
|
|
76
|
+
### 4. 扫描 tasks 完成状态
|
|
63
77
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
> - B. 取消(继续实施中状态)"
|
|
78
|
+
```bash
|
|
79
|
+
node skywalk-sdd/log.js tasks-status --project=. --change=<变更名称>
|
|
80
|
+
```
|
|
68
81
|
|
|
69
|
-
|
|
82
|
+
即使用户选择“变更已完成实施”,未勾选项也不阻断归档。它可能代表任务真实未完成,也可能代表代码已完成但文档未同步;不要猜测,也不要静默忽略。最终必须让 `archive-docs` 将其写入 `archive_result.task_completion` 和报告。
|
|
70
83
|
|
|
71
|
-
|
|
72
|
-
> "请确认归档原因(将记录在归档日志中):
|
|
73
|
-
> - A. 变更已完成实施 ✅(所有任务已完成并验收)
|
|
74
|
-
> - B. 变更已取消 ❌(业务原因取消)
|
|
75
|
-
> - C. 变更已搁置 ⏸(暂缓实施,保留文档)
|
|
76
|
-
> - D. 其他(请输入原因)"
|
|
84
|
+
### 5. 一步执行真实归档
|
|
77
85
|
|
|
78
|
-
|
|
86
|
+
执行唯一归档命令:
|
|
79
87
|
|
|
80
88
|
```bash
|
|
81
|
-
|
|
89
|
+
node skywalk-sdd/log.js archive-docs --project=. --change=<变更名称> --reason="<归档原因>" --event-id=<event_id> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --report-output=skywalk-sdd/reports/<变更名称>-report.md
|
|
82
90
|
```
|
|
83
91
|
|
|
84
|
-
|
|
92
|
+
该命令成功后必须已经完成:
|
|
93
|
+
- 活动目录 `openspec/changes/<name>/` 被移入 `openspec/changes/archive/<日期>-<name>/`。
|
|
94
|
+
- 归档目录写入 `archive-manifest.json`。
|
|
95
|
+
- Full Spec 的 `specs/<capability>/spec.md` 同步到 `openspec/specs/<capability>/spec.md`。
|
|
96
|
+
- archive 阶段写入 `stage_end`。
|
|
97
|
+
- 未勾选 tasks 被写入 `archive_result.task_completion`。
|
|
98
|
+
- 最终中文报告生成到 `skywalk-sdd/reports/<name>-report.md`。
|
|
99
|
+
|
|
100
|
+
如果该命令失败,以失败状态结束 telemetry:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
node skywalk-sdd/log.js end --event-id=<event_id> --command=archive --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=failure --summary="归档失败:<失败原因>"
|
|
104
|
+
```
|
|
85
105
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
106
|
+
失败时不要输出“归档完成”。
|
|
107
|
+
|
|
108
|
+
### 6. 输出给用户
|
|
109
|
+
|
|
110
|
+
成功时只输出真实产物路径:
|
|
111
|
+
|
|
112
|
+
> 变更 `<name>` 已真实归档。
|
|
113
|
+
> - 归档目录:`openspec/changes/archive/<日期>-<name>/`
|
|
114
|
+
> - 最终报告:`skywalk-sdd/reports/<name>-report.md`
|
|
115
|
+
> - 未勾选任务:X 项,已记录到报告,不阻断归档
|
|
116
|
+
> - 正式 specs:`openspec/specs/`
|
|
117
|
+
|
|
118
|
+
被 doctor 阻断、真实归档失败或报告生成失败时,不要说“归档完成”。
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 可选补录
|
|
123
|
+
|
|
124
|
+
如用户愿意提供反馈,可补录问卷结果:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
node skywalk-sdd/log.js record --type=survey_result --command=archive --project=. --change=<变更名称> --agent=<Agent类型> --source=manual --session-id=<会话ID> --result=success --summary="SDD 人工反馈" --details-json="{\"survey_result\":{\"nps\":9,\"cognitive_load\":3,\"spec_fatigue_index\":2,\"satisfaction\":8,\"respondent_role\":\"developer\",\"collected_at\":\"<ISO时间>\",\"notes\":\"\"}}"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
如团队有传统方式工时基线,可补录 baseline:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
node skywalk-sdd/log.js record --type=baseline_record --command=archive --project=. --change=<变更名称> --agent=<Agent类型> --source=manual --session-id=<会话ID> --result=success --summary="传统工时基线" --details-json="{\"baseline_record\":{\"traditional_hours\":10,\"sdd_hours\":6,\"task_type\":\"feature\",\"baseline_source\":\"manual-estimate\",\"collected_at\":\"<ISO时间>\",\"notes\":\"\"}}"
|
|
134
|
+
```
|
|
90
135
|
|
|
91
136
|
---
|
|
92
137
|
|
|
93
138
|
## Guardrails
|
|
94
139
|
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
140
|
+
- 归档操作执行前必须让用户确认归档原因。
|
|
141
|
+
- 不要调用 OpenSpec 自带归档命令;统一由 `archive-docs` 负责真实归档、阶段结束和报告生成。
|
|
142
|
+
- “完成实施”归档允许 tasks 未全部勾选;未勾选项必须进入 archive details 和最终报告。
|
|
143
|
+
- 最终报告必须由 `archive-docs --report-output=...` 自动生成。
|
|
144
|
+
- 已归档变更不要重复移动;展示已有 archive 目录和 report 路径。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: opsx-check
|
|
3
3
|
description: "质量检查技能 - 验证文档完整性、一致性、算法正确性及可执行性"
|
|
4
4
|
argument-hint: "[change-name] [上下文文件...]"
|
|
@@ -26,9 +26,15 @@ allowed-tools:
|
|
|
26
26
|
> 代码修复将在 `/opsx:apply` 阶段进行。
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
> **🖥️ 跨平台执行规则**
|
|
30
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
31
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
32
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
33
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
29
34
|
> **📊 Telemetry(必做,不得跳过)**
|
|
30
|
-
> - 阶段开始:`node skywalk-sdd/log.js start --command=check --project
|
|
31
|
-
> -
|
|
35
|
+
> - 阶段开始:`node skywalk-sdd/log.js start --command=check --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
|
|
36
|
+
> - 检查报告生成后,必须先记录结构化检查结果:`node skywalk-sdd/log.js record --type=check_result --command=check --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/partial/failure --summary="检查结果摘要" --details-json="{\"check_results\":{\"total\":0,\"errors\":0,\"warnings\":0,\"suggestions\":0,\"fixed_before_apply\":0,\"consistency_score\":null,\"categories\":{\"completeness\":{\"passed\":0,\"total\":0},\"consistency\":{\"passed\":0,\"total\":0},\"executability\":{\"passed\":0,\"total\":0}},\"task_completion\":{\"completed\":0,\"incomplete\":0,\"total\":0,\"has_incomplete\":false,\"checked_for_archive_readiness\":false}}}"`
|
|
37
|
+
> - `check_result` 记录成功后,才允许阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --command=check --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/partial/failure --summary="摘要"`
|
|
32
38
|
|
|
33
39
|
---
|
|
34
40
|
|
|
@@ -104,6 +110,20 @@ openspec list
|
|
|
104
110
|
- [ ] 所有外部依赖已明确状态
|
|
105
111
|
- [ ] 代码锚点存在且可访问
|
|
106
112
|
|
|
113
|
+
#### 4.5 任务完成状态检查(实现后 / 归档前)
|
|
114
|
+
|
|
115
|
+
`task` 阶段允许 `tasks.md` 出现未完成项;这只是计划状态。但如果当前变更已经进入 apply 之后,或本次 check 发现实现代码、测试报告、`build_result/test_result/task_update/conformance_review` 等实施证据,必须检查任务勾选状态:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
node skywalk-sdd/log.js tasks-status --project=. --change=<变更名称>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
判定规则:
|
|
122
|
+
- 尚未进入 apply:未勾选任务只作为计划状态展示,不计入错误。
|
|
123
|
+
- 已进入 apply/test/archive readiness:未勾选项至少记为 warning。
|
|
124
|
+
- 若用户准备归档“变更已完成实施”:未勾选项仍只作为 warning/待确认事实展示,不阻断归档。
|
|
125
|
+
- Check 阶段只读,不自动勾选;报告中必须说明这是“任务可能已执行但文档未同步”或“任务真实未完成”的待确认项。
|
|
126
|
+
|
|
107
127
|
### 5. 输出检查报告
|
|
108
128
|
|
|
109
129
|
> "📋 **质量检查报告**
|
|
@@ -120,6 +140,30 @@ openspec list
|
|
|
120
140
|
> **建议操作**:
|
|
121
141
|
> - [具体修复建议及对应命令]"
|
|
122
142
|
|
|
143
|
+
### 5.1 【Telemetry 必做】记录结构化检查结果
|
|
144
|
+
|
|
145
|
+
输出检查报告后,必须把检查结果转换为 `check_result` 事件,并在 `stage_end` 之前执行成功。禁止只记录阶段结束。
|
|
146
|
+
|
|
147
|
+
字段口径:
|
|
148
|
+
- `total`: 本次检查项总数。
|
|
149
|
+
- `errors`: 必须修复的问题数。
|
|
150
|
+
- `warnings`: 建议修复的问题数。
|
|
151
|
+
- `suggestions`: 可选优化建议数。
|
|
152
|
+
- `fixed_before_apply`: 进入 apply 前已通过或已确认满足质量门禁的检查项数。
|
|
153
|
+
- `consistency_score`: 跨文档一致性评分,取值 0-1;无法评分时填 `null`。
|
|
154
|
+
- `categories`: 至少包含 `completeness`、`consistency`、`executability`。
|
|
155
|
+
- `task_completion`: 从 `tasks-status` 输出整理而来;未进入 apply 时 `checked_for_archive_readiness=false`。
|
|
156
|
+
|
|
157
|
+
在终端执行(必须成功):
|
|
158
|
+
```bash
|
|
159
|
+
node skywalk-sdd/log.js record --type=check_result --command=check --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success/partial/failure --summary="检查结果摘要" --details-json="{\"check_results\":{\"total\":0,\"errors\":0,\"warnings\":0,\"suggestions\":0,\"fixed_before_apply\":0,\"consistency_score\":null,\"categories\":{\"completeness\":{\"passed\":0,\"total\":0},\"consistency\":{\"passed\":0,\"total\":0},\"executability\":{\"passed\":0,\"total\":0}},\"task_completion\":{\"completed\":0,\"incomplete\":0,\"total\":0,\"has_incomplete\":false,\"checked_for_archive_readiness\":false}}}"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
若当前已有实现代码,并且能够验证 spec 断言,还应记录 `conformance_review`(用于 Q1 规约符合度):
|
|
163
|
+
```bash
|
|
164
|
+
node skywalk-sdd/log.js record --type=conformance_review --command=check --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=manual --session-id=<会话ID> --result=success --summary="规约符合度人工确认" --details-json="{\"conformance_review\":{\"method\":\"llm-as-judge+manual\",\"manual_confirmed\":true,\"assertions\":[{\"id\":\"ASSERT-001\",\"description\":\"规约中的可验证断言\",\"judge_status\":\"matched\",\"human_status\":\"matched\",\"evidence\":\"代码、测试或文档证据摘要\",\"files\":[],\"notes\":\"\"}]}}"
|
|
165
|
+
```
|
|
166
|
+
|
|
123
167
|
### 6. 【交互引导】根据结果引导下一步
|
|
124
168
|
|
|
125
169
|
**全部通过**:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: opsx-design
|
|
3
3
|
description: "技术设计文档技能 - 针对单一 Capability 创建局部技术实现方案"
|
|
4
4
|
argument-hint: "[change-name] [capability-name] [上下文文件...]"
|
|
@@ -34,9 +34,14 @@ allowed-tools:
|
|
|
34
34
|
> - ⛔ **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的 spec 或 design
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
> **🖥️ 跨平台执行规则**
|
|
38
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
39
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
40
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
41
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
37
42
|
> **📊 Telemetry(必做,不得跳过)**
|
|
38
|
-
> - 阶段开始:`node skywalk-sdd/log.js start --command=design --project
|
|
39
|
-
> - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --result=success|failure --summary="摘要"
|
|
43
|
+
> - 阶段开始:`node skywalk-sdd/log.js start --command=design --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
|
|
44
|
+
> - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --command=design --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
|
|
40
45
|
|
|
41
46
|
---
|
|
42
47
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: opsx-explore
|
|
3
3
|
description: "浏览变更技能 - 查看所有变更状态和 SDD 文档完整性概览"
|
|
4
4
|
argument-hint: "[change-name]"
|
|
@@ -17,9 +17,14 @@ allowed-tools:
|
|
|
17
17
|
你是一个 SDD(Specification-Driven Development)变更浏览专家。激活本技能后,你将展示项目中所有变更的状态概览,并引导用户执行下一步操作。
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
> **🖥️ 跨平台执行规则**
|
|
21
|
+
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
22
|
+
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
23
|
+
> - 在 Windows Bash / Git Bash / Claude Bash 中,禁止裸写 Windows 反斜杠绝对路径(如 `D:\project\demo`);如必须使用绝对路径,请写成正斜杠路径或加引号。
|
|
24
|
+
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
20
25
|
> **📊 Telemetry(必做,不得跳过)**
|
|
21
|
-
> - 阶段开始:`node skywalk-sdd/log.js start --command=explore --project
|
|
22
|
-
> - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --result=success|failure --summary="摘要"
|
|
26
|
+
> - 阶段开始:`node skywalk-sdd/log.js start --command=explore --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
|
|
27
|
+
> - 阶段结束:`node skywalk-sdd/log.js end --event-id=<event_id> --command=explore --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=success|failure --summary="摘要"`
|
|
23
28
|
|
|
24
29
|
---
|
|
25
30
|
|