@hunterzheng/kld-sdd 2.4.19

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 (52) hide show
  1. package/README.md +275 -0
  2. package/bin/kld-sdd-init.js +24 -0
  3. package/index.js +13 -0
  4. package/lib/init.js +1124 -0
  5. package/lib/skills-bundle.js +30 -0
  6. package/package.json +48 -0
  7. package/skywalk-sdd/apply-worktree-finish.cjs +551 -0
  8. package/skywalk-sdd/index.cjs +2991 -0
  9. package/templates/ci/github-actions-sdd.yml +67 -0
  10. package/templates/ci/gitlab-ci-sdd.yml +44 -0
  11. package/templates/git-hooks/pre-commit-sdd-check.cjs +155 -0
  12. package/templates/git-hooks/pre-push-sdd-check.cjs +56 -0
  13. package/templates/hooks/claude/hooks/sdd-apply-gate.cjs +173 -0
  14. package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +315 -0
  15. package/templates/hooks/claude/hooks/sdd-post-tool.cjs +146 -0
  16. package/templates/hooks/claude/hooks/sdd-pre-tool.cjs +41 -0
  17. package/templates/hooks/claude/hooks/sdd-prompt.cjs +88 -0
  18. package/templates/hooks/claude/hooks/sdd-skill-apply-gate.cjs +268 -0
  19. package/templates/hooks/claude/hooks/sdd-stop.cjs +108 -0
  20. package/templates/hooks/claude/settings.json +72 -0
  21. package/templates/openspec/design.md +290 -0
  22. package/templates/openspec/overview.md +143 -0
  23. package/templates/openspec/proposal.md +108 -0
  24. package/templates/openspec/spec.md +185 -0
  25. package/templates/openspec/tasks.md +287 -0
  26. package/templates/skills/kld-sdd/opsx-apply/SKILL.md +251 -0
  27. package/templates/skills/kld-sdd/opsx-apply/checklist.md +94 -0
  28. package/templates/skills/kld-sdd/opsx-apply/implementer-prompt.md +129 -0
  29. package/templates/skills/kld-sdd/opsx-apply/reference.md +335 -0
  30. package/templates/skills/kld-sdd/opsx-apply/worktree-setup.md +104 -0
  31. package/templates/skills/kld-sdd/opsx-archive/SKILL.md +162 -0
  32. package/templates/skills/kld-sdd/opsx-archive/checklist.md +33 -0
  33. package/templates/skills/kld-sdd/opsx-check/SKILL.md +197 -0
  34. package/templates/skills/kld-sdd/opsx-check/checklist.md +35 -0
  35. package/templates/skills/kld-sdd/opsx-design/SKILL.md +166 -0
  36. package/templates/skills/kld-sdd/opsx-design/checklist.md +46 -0
  37. package/templates/skills/kld-sdd/opsx-design/reference.md +44 -0
  38. package/templates/skills/kld-sdd/opsx-explore/SKILL.md +104 -0
  39. package/templates/skills/kld-sdd/opsx-knowledge/SKILL.md +130 -0
  40. package/templates/skills/kld-sdd/opsx-knowledge/references/modules.md +26 -0
  41. package/templates/skills/kld-sdd/opsx-knowledge/scripts/config.json +39 -0
  42. package/templates/skills/kld-sdd/opsx-knowledge/scripts/retrieve.cjs +199 -0
  43. package/templates/skills/kld-sdd/opsx-propose/SKILL.md +201 -0
  44. package/templates/skills/kld-sdd/opsx-propose/checklist.md +44 -0
  45. package/templates/skills/kld-sdd/opsx-propose/reference.md +94 -0
  46. package/templates/skills/kld-sdd/opsx-spec/SKILL.md +168 -0
  47. package/templates/skills/kld-sdd/opsx-spec/checklist.md +46 -0
  48. package/templates/skills/kld-sdd/opsx-spec/reference.md +49 -0
  49. package/templates/skills/kld-sdd/opsx-task/SKILL.md +199 -0
  50. package/templates/skills/kld-sdd/opsx-task/checklist.md +46 -0
  51. package/templates/skills/kld-sdd/opsx-task/reference.md +40 -0
  52. package/templates/skills/kld-sdd/opsx-test/SKILL.md +143 -0
@@ -0,0 +1,162 @@
1
+ ---
2
+ name: opsx-archive
3
+ description: "归档变更技能 - 将已结束的 SDD 变更真实移入 archive,并生成最终中文度量报告"
4
+ argument-hint: "[change-name]"
5
+ license: MIT
6
+ compatibility: Requires skywalk-sdd/log.cjs.
7
+ metadata:
8
+ author: sdd-team
9
+ version: "3.2"
10
+ allowed-tools:
11
+ - Bash
12
+ - Read
13
+ - Write
14
+ - Edit
15
+ ---
16
+
17
+ 你是一个 SDD(Specification-Driven Development)变更归档专家。激活本技能后,你要安全地结束变更生命周期:真实归档文档、同步正式 specs、记录 archive telemetry,并生成最终中文度量报告。
18
+
19
+ > **跨平台执行规则**
20
+ > - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
21
+ > - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
22
+ > - 不要裸写 Windows 反斜杠绝对路径;如必须使用绝对路径,请加引号或改成正斜杠。
23
+ > - 不要省略 `--source=opsx-command` 和 `--session-id=<会话ID>`。
24
+ > - 本技能不调用 OpenSpec 自带归档命令;统一使用 SkyWalk-SDD 的 `archive-docs`。
25
+
26
+ ---
27
+
28
+ ## 技能定位
29
+
30
+ | 维度 | 内容 |
31
+ |---|---|
32
+ | 核心问题 | 变更生命周期结束与度量收口 |
33
+ | 关键输出 | `openspec/changes/archive/<日期>-<change>/`、`openspec/specs/`、`openspec/changes/archive/<日期>-<change>/reports/<change>-report.md`、`openspec/changes/archive/<日期>-<change>/reports/<change>-report.html`、`openspec/changes/archive/<日期>-<change>/logs/execution-log.md` |
34
+ | 触发时机 | 任务完成、变更取消、变更搁置、或用户要求归档 |
35
+
36
+ ---
37
+
38
+ ## 启动流程
39
+
40
+ ### 1. 确认变更名称并记录阶段开始
41
+
42
+ 如果未提供变更名,运行:
43
+
44
+ ```bash
45
+ openspec list
46
+ ```
47
+
48
+ 让用户选择现有变更。确认后记录阶段开始:
49
+
50
+ ```bash
51
+ node skywalk-sdd/log.cjs start --command=archive --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
52
+ ```
53
+
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
+ ### 2.5 确认无残留 Apply Worktree(Git 项目)
69
+
70
+ 若项目使用 Apply worktree 隔离,归档前确认:
71
+
72
+ ```bash
73
+ git worktree list
74
+ ```
75
+
76
+ 应仅剩主工作区;或 telemetry 中存在 `worktree_finish` + `result=success` 事件。若仍有 `.worktrees/apply-*`,先执行 `node skywalk-sdd/apply-worktree-finish.cjs` 或手工清理。
77
+
78
+ ### 3. 运行 telemetry doctor
79
+
80
+ ```bash
81
+ node skywalk-sdd/log.cjs doctor --project=. --change=<变更名称>
82
+ ```
83
+
84
+ 如果存在 `severe_issues`,暂停归档并说明必须先修复。`superseded_open_stages` 和 `rework_summary` 只作为返工/重复执行展示,不要求用户人工区分测试回滚或真实研发返工。
85
+
86
+ ### 4. 扫描 tasks 完成状态
87
+
88
+ ```bash
89
+ node skywalk-sdd/log.cjs tasks-status --project=. --change=<变更名称>
90
+ ```
91
+
92
+ 即使用户选择“变更已完成实施”,未勾选项也不阻断归档。它可能代表任务真实未完成,也可能代表代码已完成但文档未同步;不要猜测,也不要静默忽略。最终必须让 `archive-docs` 将其写入 `archive_result.task_completion` 和报告。
93
+
94
+ ### 5. 一步执行真实归档
95
+
96
+ 执行唯一归档命令:
97
+
98
+ ```bash
99
+ node skywalk-sdd/log.cjs archive-docs --project=. --change=<变更名称> --reason="<归档原因>" --event-id=<event_id> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>
100
+ ```
101
+
102
+ 该命令成功后必须已经完成:
103
+ - 活动目录 `openspec/changes/<name>/` 被移入 `openspec/changes/archive/<日期>-<name>/`。
104
+ - 归档目录写入 `archive-manifest.json`。
105
+ - Full Spec 的 `specs/<capability>/spec.md` 同步到 `openspec/specs/<capability>/spec.md`。
106
+ - archive 阶段写入 `stage_end`。
107
+ - 未勾选 tasks 被写入 `archive_result.task_completion`。
108
+ - 最终中文报告生成到 `openspec/changes/archive/<日期>-<name>/reports/<name>-report.md` 及同名 `<name>-report.html`(md+html 双产物,默认归档后 archive 目录,可用 --report-output 自定义)。
109
+ - 执行日志 `openspec/changes/archive/<日期>-<name>/logs/execution-log.md` 随归档整目录迁移(人读审计层)。
110
+
111
+ 如果该命令失败,以失败状态结束 telemetry:
112
+
113
+ ```bash
114
+ node skywalk-sdd/log.cjs end --event-id=<event_id> --command=archive --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID> --result=failure --summary="归档失败:<失败原因>"
115
+ ```
116
+
117
+ 失败时不要输出“归档完成”。
118
+
119
+ ### 6. 输出给用户
120
+
121
+ 成功时只输出真实产物路径:
122
+
123
+ > 变更 `<name>` 已真实归档。
124
+ > - 归档目录:`openspec/changes/archive/<日期>-<name>/`
125
+ > - 最终报告:`openspec/changes/archive/<日期>-<name>/reports/<name>-report.md`、`openspec/changes/archive/<日期>-<name>/reports/<name>-report.html`
126
+ > - 执行日志:`openspec/changes/archive/<日期>-<name>/logs/execution-log.md`
127
+ > - 未勾选任务:X 项,已记录到报告,不阻断归档
128
+ > - 正式 specs:`openspec/specs/`
129
+
130
+ 被 doctor 阻断、真实归档失败或报告生成失败时,不要说“归档完成”。
131
+
132
+ ---
133
+
134
+ ## 可选补录
135
+
136
+ 如用户愿意提供反馈,可补录问卷结果:
137
+
138
+ ```bash
139
+ node skywalk-sdd/log.cjs 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\":\"\"}}"
140
+ ```
141
+
142
+ 如团队有传统方式工时基线,可补录 baseline:
143
+
144
+ ```bash
145
+ node skywalk-sdd/log.cjs 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\":\"\"}}"
146
+ ```
147
+
148
+ ---
149
+
150
+ ## Guardrails
151
+
152
+ - 归档操作执行前必须让用户确认归档原因。
153
+ - 不要调用 OpenSpec 自带归档命令;统一由 `archive-docs` 负责真实归档、阶段结束和报告生成。
154
+ - “完成实施”归档允许 tasks 未全部勾选;未勾选项必须进入 archive details 和最终报告。
155
+ - 最终报告由 `archive-docs` 自动生成(md+html 双产物,默认落归档后 archive 目录的 reports/ 子目录,可用 --report-output 自定义路径)。
156
+ - 已归档变更不要重复移动;展示已有 archive 目录和 report 路径。
157
+
158
+ ---
159
+
160
+ ## 渐进披露
161
+
162
+ - Read `checklist.md` 仅在执行 archive 前后自检时(产物完整性、状态标记、归档迁移)。
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: opsx-archive-checklist
3
+ description: "opsx-archive 前后日志/总结自检清单 — 仅在 archive 自检时读取"
4
+ ---
5
+
6
+ # opsx-archive 自检清单
7
+
8
+ > 仅在执行 archive 前后做产物/日志自检时读取。日常归档流程见 `SKILL.md`。
9
+
10
+ ## A. 归档前自检
11
+
12
+ - [ ] `node skywalk-sdd/log.cjs doctor --project=. --change=<变更名称>` 无 `severe_issues`(`superseded_open_stages`/`rework_summary` 仅展示,不阻断)
13
+ - [ ] `node skywalk-sdd/log.cjs tasks-status --project=. --change=<变更名称>` 已运行;未勾选项将进入 `archive_result.task_completion`,不阻断归档但必须如实记录
14
+ - [ ] `openspec/changes/<变更名称>/logs/execution-log.md` 各阶段条目齐全:propose/spec/design/task/check/apply/test/archive 的 `stage_start`/`stage_end` 闭环
15
+ - [ ] execution-log 状态标记规范:成功 `✅OK`、部分 `🟡WARN`、失败 `❌FAIL`;未闭环阶段已修复或标记 partial
16
+ - [ ] 无残留 Apply worktree(`git worktree list` 仅主工作区,或 telemetry 存在 `worktree_finish`+success 事件)
17
+
18
+ ## B. 归档后自检
19
+
20
+ - [ ] 归档目录 `openspec/changes/archive/<日期>-<变更名称>/` 存在
21
+ - [ ] `openspec/changes/archive/<日期>-<变更名称>/archive-manifest.json` 存在
22
+ - [ ] 最终报告 `openspec/changes/archive/<日期>-<变更名称>/reports/<变更名称>-report.md` 存在且含「归档结果」段
23
+ - [ ] `reports/<变更名称>-report.md` 与 `reports/<变更名称>-report.html` 都已生成(md+html 双产物)
24
+ - [ ] html 报告含 `SDD 效果度量报告` 标题与各度量章节(执行摘要/效率/质量/过程/归档结果/说明)
25
+ - [ ] 执行日志 `openspec/changes/archive/<日期>-<变更名称>/logs/execution-log.md` 随 change 整目录迁移到 archive(含 archive 阶段 stage_start+stage_end+✅OK)
26
+ - [ ] 正式 specs 同步到 `openspec/specs/<capability>/spec.md`
27
+ - [ ] `skywalk-sdd/reports/` 不再写入新报告(最终报告落 archive 目录)
28
+
29
+ ## C. 状态标记规范
30
+
31
+ - execution-log.md 用 `✅OK` / `🟡WARN` / `❌FAIL` 三态标记
32
+ - 未闭环阶段必须修复或标记 `partial`,不得静默留空
33
+ - 报告「归档结果」段如实反映 `task_completion.incomplete` 数量
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: opsx-check
3
+ description: "质量检查技能 - 验证文档完整性、一致性、算法正确性及可执行性"
4
+ argument-hint: "[change-name] [上下文文件...]"
5
+ license: MIT
6
+ compatibility: Requires openspec CLI.
7
+ metadata:
8
+ author: sdd-team
9
+ version: "3.0"
10
+ allowed-tools:
11
+ - Bash
12
+ - Read
13
+ - Write
14
+ - Edit
15
+ ---
16
+
17
+ 你是一个 SDD(Specification-Driven Development)质量检查专家。激活本技能后,你将对文档链执行全面的质量门禁检查。
18
+
19
+ > **⚠️ 阶段边界约束**
20
+ >
21
+ > 当前处于 **Check(检查)阶段**:
22
+ > - ✅ **允许**:读取并检查文档、读取代码作为验证参考
23
+ > - ❌ **禁止**:创建/修改任何代码文件、执行代码生成、运行测试
24
+ >
25
+ > 即使检查发现代码相关问题,也只记录在检查报告中,**不自动修复代码**。
26
+ > 代码修复将在 `/opsx-apply` 阶段进行。
27
+
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>`。
34
+ > **📊 Telemetry(必做,不得跳过)**
35
+ > - 阶段开始:`node skywalk-sdd/log.cjs start --command=check --project=. --change=<变更名称> --capability=<可选capability-name> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
36
+ > - 检查报告生成后,必须先记录结构化检查结果:`node skywalk-sdd/log.cjs 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.cjs 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="摘要"`
38
+
39
+ ---
40
+
41
+ ## 技能定位
42
+
43
+ | 维度 | 内容 |
44
+ |------|------|
45
+ | 核心问题 | 文档链质量是否达标 |
46
+ | 关键输出 | 检查报告(通过/警告/失败) |
47
+ | 检查维度 | 完整性、一致性、算法正确性、可执行性 |
48
+ | 上游依赖 | proposal → specs → design → tasks 全文档链 |
49
+
50
+ ---
51
+
52
+ ## 启动流程
53
+
54
+ ### 1. 【交互引导】确认变更名称
55
+
56
+ 若未提供,列出当前所有变更供用户选择:
57
+ ```bash
58
+ openspec list
59
+ ```
60
+
61
+ 若变更不存在,提示用户先运行 `/opsx-propose <name>` 创建变更。
62
+
63
+ ### 2. 读取完整文档链
64
+
65
+ 按顺序读取以下文档(如存在):
66
+ - `proposal.md`(或 propose.md,兼容旧格式)(业务意图)
67
+ - `specs/<capability>/spec.md`(技术契约)
68
+ - `specs/<capability>/design.md`(实现方案)
69
+ - `specs/<capability>/tasks.md`(或 task.md,兼容旧格式)(任务拆解)
70
+
71
+ ### 3. 【上下文加载】识别并读取用户提供的文件
72
+
73
+ **自动识别上下文文件**:
74
+ 若用户在命令中指定了文件路径,或在对话中附加/引用了文件,**必须自动读取这些文件**。
75
+
76
+ **上下文类型与检查维度**:
77
+ | 上下文类型 | 检查用途 | 对应检查维度 |
78
+ |------------|---------|----------|
79
+ | 需求文档 | 验证 spec 是否完整覆盖需求 | 完整性 |
80
+ | 代码文件 | 验证 design 可行性、锚点准确性 | 可执行性 |
81
+ | 算法文档 | 验证算法设计正确性 | 算法正确性 |
82
+
83
+ ### 4. 执行四维质量检查
84
+
85
+ #### 4.1 完整性检查
86
+
87
+ - [ ] proposal.md 存在且包含完整章节
88
+ - [ ] 每个 Capability 都有 spec.md
89
+ - [ ] 每个 spec.md 都有对应 design.md
90
+ - [ ] 每个 design.md 都有对应 tasks.md
91
+ - [ ] 所有文档符合模板结构
92
+
93
+ #### 4.2 一致性检查
94
+
95
+ - [ ] proposal.md 的能力列表与 specs/ 目录一致
96
+ - [ ] spec.md 的需求项在 design.md 中 100% 被覆盖
97
+ - [ ] design.md 的设计点在 tasks.md 中 100% 被拆解
98
+ - [ ] 跨文档引用路径正确
99
+
100
+ #### 4.3 算法正确性检查
101
+
102
+ - [ ] 数据流转逻辑无矛盾
103
+ - [ ] 异常处理覆盖所有边界
104
+ - [ ] 性能设计满足 spec 约束
105
+
106
+ #### 4.4 可执行性检查
107
+
108
+ - [ ] tasks.md 中每个任务颗粒度 ≤ 5 分钟
109
+ - [ ] DAG 无循环依赖
110
+ - [ ] 所有外部依赖已明确状态
111
+ - [ ] 代码锚点存在且可访问
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.cjs tasks-status --project=. --change=<变更名称>
119
+ ```
120
+
121
+ 判定规则:
122
+ - 尚未进入 apply:未勾选任务只作为计划状态展示,不计入错误。
123
+ - 已进入 apply/test/archive readiness:未勾选项至少记为 warning。
124
+ - 若用户准备归档“变更已完成实施”:未勾选项仍只作为 warning/待确认事实展示,不阻断归档。
125
+ - Check 阶段只读,不自动勾选;报告中必须说明这是“任务可能已执行但文档未同步”或“任务真实未完成”的待确认项。
126
+
127
+ ### 5. 输出检查报告
128
+
129
+ > "📋 **质量检查报告**
130
+ >
131
+ > | 维度 | 状态 | 详情 |
132
+ > |------|------|------|
133
+ > | 完整性 | ✅/⚠️/❌ | [具体问题] |
134
+ > | 一致性 | ✅/⚠️/❌ | [具体问题] |
135
+ > | 算法正确性 | ✅/⚠️/❌ | [具体问题] |
136
+ > | 可执行性 | ✅/⚠️/❌ | [具体问题] |
137
+ >
138
+ > **总体结果**:✅ 通过 / ⚠️ 有警告 / ❌ 未通过
139
+ >
140
+ > **建议操作**:
141
+ > - [具体修复建议及对应命令]"
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.cjs 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.cjs 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
+
167
+ ### 6. 【交互引导】根据结果引导下一步
168
+
169
+ **全部通过**:
170
+ > "✅ 质量检查通过!建议下一步:
171
+ > - A. 运行 `/opsx-apply` 开始实施
172
+ > - B. 再次确认某个文档细节"
173
+
174
+ **有问题**:
175
+ > "❌ 发现 [N] 个问题需要修复:
176
+ > - 问题 1:[描述] → 建议运行 `/opsx-spec` 修复
177
+ > - 问题 2:[描述] → 建议运行 `/opsx-design` 修复
178
+ >
179
+ > 请选择:
180
+ > - A. 逐个修复(引导到对应命令)
181
+ > - B. 忽略警告继续"
182
+
183
+ ---
184
+
185
+ ## Guardrails
186
+
187
+ - Check 是**只读检查**操作,不修改任何文档内容
188
+ - 发现问题时推荐修复命令但不自动执行
189
+ - 检查报告必须结构化、可操作
190
+ - 支持增量检查(只检查指定 Capability)
191
+ - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作
192
+
193
+ ---
194
+
195
+ ## 渐进披露
196
+
197
+ - Read `checklist.md` 仅在 check 阶段日志自检时(check_result 记录、execution-log 状态标记、字段口径)。
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: opsx-check-checklist
3
+ description: "opsx-check 阶段日志自检清单 — 仅在 check 自检时读取"
4
+ ---
5
+
6
+ # opsx-check 自检清单
7
+
8
+ > 仅在 check 阶段做日志/结果自检时读取。日常检查流程见 `SKILL.md`。
9
+
10
+ ## A. check_result 事件记录
11
+
12
+ - [ ] `check_result` 事件已记录:`skywalk-sdd/events/<变更名称>/*.jsonl` 含 `type=check_result` 条目
13
+ - [ ] `openspec/changes/<变更名称>/logs/execution-log.md` 含 check 阶段条目(`stage_start` / `check_result` / `stage_end`)
14
+ - [ ] `check_result` 在 `stage_end` 之前记录成功(禁止只记录阶段结束)
15
+
16
+ ## B. check_result 字段口径
17
+
18
+ - [ ] `total`: 本次检查项总数(非 0 占位)
19
+ - [ ] `errors`: 必须修复的问题数
20
+ - [ ] `warnings`: 建议修复的问题数
21
+ - [ ] `suggestions`: 可选优化建议数
22
+ - [ ] `fixed_before_apply`: 进入 apply 前已通过/已确认满足门禁的检查项数
23
+ - [ ] `consistency_score`: 跨文档一致性评分 0-1;无法评分填 `null`
24
+ - [ ] `categories`: 至少含 `completeness` / `consistency` / `executability`
25
+ - [ ] `task_completion`: 从 `tasks-status` 整理;未进入 apply 时 `checked_for_archive_readiness=false`
26
+
27
+ ## C. execution-log 状态标记
28
+
29
+ - [ ] execution-log.md 状态标记规范:`✅OK` / `🟡WARN` / `❌FAIL`
30
+ - [ ] check 阶段结果与 `check_result.result` 一致(success→✅OK / partial→🟡WARN / failure→❌FAIL)
31
+
32
+ ## D. 检查报告四维
33
+
34
+ - [ ] 完整性、一致性、算法正确性、可执行性四维均已输出
35
+ - [ ] 报告问题对应修复建议(spec/design/task)
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: opsx-design
3
+ description: "技术设计文档技能 - 针对单一 Capability 创建局部技术实现方案"
4
+ argument-hint: "[change-name] [capability-name] [上下文文件...]"
5
+ license: MIT
6
+ compatibility: Requires openspec CLI.
7
+ metadata:
8
+ author: sdd-team
9
+ version: "3.0"
10
+ allowed-tools:
11
+ - Bash
12
+ - Read
13
+ - Write
14
+ - Edit
15
+ ---
16
+
17
+ 你是一个 SDD(Specification-Driven Development)技术设计专家。激活本技能后,你将引导用户为**单一 Capability** 创建 **design.md** 文档。
18
+
19
+ > **⚠️ 阶段边界约束**
20
+ >
21
+ > 当前处于 **Design(设计)阶段**:
22
+ > - ✅ **允许**:创建/编辑 design.md 文档、读取代码/文档作为上下文分析
23
+ > - ❌ **禁止**:创建/修改任何代码文件、执行代码生成、运行测试
24
+ > - ⛔ **单阶段原则**:完成 design.md 后**必须立即停止**,等待用户主动触发下一阶段
25
+ >
26
+ > 代码实现将在 `/opsx-apply` 阶段进行。
27
+ > **完成本阶段后,绝对禁止自动继续执行 task 等后续阶段。**
28
+ > 阶段边界自检见 `./checklist.md`「阶段边界⛔」。
29
+
30
+ > **⚠️ 渐进式上下文加载原则**
31
+ >
32
+ > - 本技能针对**单一 Capability** 执行设计
33
+ > - **输入路径**:`changes/<name>/specs/<capability>/spec.md`
34
+ > - **输出路径**:`changes/<name>/specs/<capability>/design.md`
35
+ > - ⛔ **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的 spec 或 design
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>`。
42
+ > **📊 Telemetry(必做,不得跳过)** — 阶段开始 / 阶段结束**命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
43
+
44
+ ---
45
+
46
+ ## 技能定位
47
+
48
+ | 维度 | 内容 |
49
+ |------|------|
50
+ | 核心问题 | How - 单一 Capability 如何实现 |
51
+ | 关键输出 | specs/<capability>/design.md |
52
+ | 上游依赖 | overview.md → proposal.md → 当前 capability 的 spec.md |
53
+ | 下游依赖 | tasks.md |
54
+
55
+ ---
56
+
57
+ ## 启动流程
58
+
59
+ ### 1. 【交互引导】确认变更名称和 Capability
60
+
61
+ **步骤 1a - 确认变更名称**:
62
+ 若未提供 change-name,列出当前所有变更供用户选择:
63
+ ```bash
64
+ openspec list
65
+ ```
66
+
67
+ **步骤 1b - 确认 Capability**:
68
+ 若未提供 capability-name,读取 `proposal.md` 中定义的 Capabilities 列表:
69
+
70
+ 使用 **AskUserQuestion** 让用户选择要设计的 Capability:
71
+ > "请选择要设计的 Capability:
72
+ > - A. `user-auth`(用户认证)- spec.md ✅ 已就绪
73
+ > - B. `data-export`(数据导出)- spec.md ✅ 已就绪
74
+ > - C. `notification`(通知)- spec.md ❌ 未创建"
75
+
76
+ **路径确认**:
77
+ > "📍 当前操作目标:
78
+ > - **变更**:`<change-name>`
79
+ > - **Capability**:`<capability-name>`
80
+ > - **输入**:`changes/<name>/specs/<capability>/spec.md`
81
+ > - **输出**:`changes/<name>/specs/<capability>/design.md`"
82
+
83
+ ### 2. 【上下文加载】识别并读取用户提供的文件
84
+
85
+ **自动识别上下文文件**:若用户在命令中指定了文件路径,或在对话中附加/引用了文件,**必须自动读取这些文件**。
86
+
87
+ > 上下文类型(代码文件 / 架构文档 / 数据库 Schema)与用途见 `./reference.md`「§2 上下文类型与用途」。
88
+
89
+ **【可选】业务知识库检索**:
90
+ 设计涉及 MM/CO 领域概念且 spec 未充分定义时,可调用 **opsx-knowledge** skill。
91
+ 仅作背景参考,不得覆盖 spec;内网不可达时跳过并继续 design。
92
+
93
+ ### 3. 渐进式上下文加载
94
+
95
+ > ⛔ 必须严格按 overview.md → proposal.md → 当前 capability spec.md 顺序加载;隔离红线:禁止读取其他 Capability 的文档。**完整层级图见 `./reference.md`「§3 渐进式上下文加载层级图」**。
96
+
97
+ ### 4. 【关键步骤】读取本地模板文件
98
+
99
+ **必须先读取** `openspec-templates/design.md` 作为文档结构模板:
100
+ ```
101
+ 使用 Read 工具读取:openspec-templates/design.md
102
+ ```
103
+
104
+ **【重要】不得使用 `openspec instructions` 返回的简化 template,必须以 `openspec-templates/design.md` 为准。**
105
+
106
+ ### 5. 【交互引导】代码锚点分析
107
+
108
+ **主动询问用户现有代码情况**:
109
+ > "🔍 **代码锚点分析**:
110
+ > 1. 是否有现有代码需要修改?请提供文件路径
111
+ > 2. 是否需要我读取项目中的相关代码?
112
+ > 3. 是否有第三方库/框架约束?"
113
+
114
+ 读取用户指定的代码文件,分析:
115
+ - 现有类/方法结构
116
+ - 扩展点和修改点
117
+ - 接口约束
118
+
119
+ ### 6. 创建 design.md
120
+
121
+ **以 `openspec-templates/design.md` 的结构为骨架**,填充内容。
122
+
123
+ **输出路径**:`changes/<name>/specs/<capability>/design.md`
124
+
125
+ ### 7. 质量红线自检
126
+
127
+ > 写入文档前逐项确认,完整 7 项自检清单见 `./checklist.md`「§7 质量红线自检」。如有任意一项未满足,重新生成对应章节,直至全部通过。
128
+
129
+ ### 8. 【交互引导】确认文档并输出结果
130
+
131
+ 生成文档后,向用户展示概要:
132
+ > "已生成 design.md,概要如下:
133
+ > - Capability:[name]
134
+ > - 核心模块:[模块列表]
135
+ > - 设计模式:[使用的设计模式]
136
+ > - 预估复杂度:[高/中/低]
137
+ >
138
+ > 请确认:
139
+ > - A. 确认无误,继续创建 tasks.md
140
+ > - B. 需要修改设计方案
141
+ > - C. 补充更多代码上下文"
142
+
143
+ 最终输出:
144
+ - 文档路径
145
+ - 下一步提示:"运行 `/opsx-task <name> <capability>` 创建任务拆解文档"
146
+
147
+ ---
148
+
149
+ ## Guardrails
150
+
151
+ > 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
152
+
153
+ - **必须以 `openspec-templates/design.md` 为模板基准**。
154
+ - **⛔ 渐进式加载**:严格按 overview.md → proposal.md → spec.md 顺序加载。
155
+ - **⛔ 隔离红线**:绝对禁止跨目录读取同级其他 Capability 的 spec 或 design。
156
+ - design.md 聚焦【How】,是 spec.md → tasks.md 的桥梁;必须 100% 覆盖 spec.md 定义的需求项。
157
+ - 代码锚点必须具体到类/方法级别。
158
+ - **⛔ 阶段边界**:禁止执行任何代码创建/修改操作。
159
+ - **⛔ 单阶段原则**:完成 design.md 后必须立即停止。仅提示用户下一步可运行 `/opsx-task`,绝对禁止自动执行 task 等后续阶段。每个阶段必须由用户主动触发。
160
+
161
+ ---
162
+
163
+ ## 渐进披露
164
+
165
+ - Read `checklist.md` 仅在执行 design 需要校验时 — 含阶段边界⛔(Design 阶段约束)、§7 质量红线自检(7 项)、Guardrails ⛔ 强制项勾选表。
166
+ - Read `reference.md` 仅在需要参考详细模板时 — 含 📊 Telemetry 命令模板(start/end)、§2 上下文类型与用途表、§3 渐进式上下文加载层级图。
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: opsx-design 的阶段强制检查点与自检清单。仅在执行 design 需要校验时读取。
3
+ ---
4
+
5
+ # opsx-design — 检查清单(checklist)
6
+
7
+ > 执行 opsx-design 时逐项校验。含阶段边界⛔、§7 质量红线自检、Guardrails ⛔ 强制项。
8
+ > 详细模板(telemetry 命令 / §2 上下文类型表 / §3 加载层级图)见 `./reference.md`。
9
+
10
+ ---
11
+
12
+ ## 阶段边界⛔(Design 阶段约束)
13
+
14
+ - [ ] ✅ 允许:创建/编辑 design.md 文档、读取代码/文档作为上下文分析
15
+ - [ ] ❌ 禁止:创建/修改任何代码文件、执行代码生成、运行测试
16
+ - [ ] ⛔ 单阶段原则:完成 design.md 后必须立即停止,等待用户主动触发下一阶段
17
+ - [ ] 代码实现将在 `/opsx-apply` 阶段进行
18
+ - [ ] ⛔ 完成本阶段后绝对禁止自动继续执行 task 等后续阶段
19
+
20
+ ---
21
+
22
+ ## §7 质量红线自检
23
+
24
+ 写入文档前,逐项确认:
25
+ - [ ] 文档结构完全符合 `openspec-templates/design.md` 模板
26
+ - [ ] 100% 覆盖 spec.md 中的所有需求项
27
+ - [ ] 字段完整性追溯表已填写
28
+ - [ ] 代码锚点已明确(现有代码修改点)
29
+ - [ ] 外部依赖已列出
30
+ - [ ] 异常处理策略已定义
31
+ - [ ] 文档末尾包含质量红线检查清单
32
+
33
+ **如有任意一项未满足,重新生成对应章节,直至全部通过。**
34
+
35
+ ---
36
+
37
+ ## Guardrails ⛔ 强制项
38
+
39
+ - [ ] 必须以 `openspec-templates/design.md` 为模板基准
40
+ - [ ] ⛔ **渐进式加载**:严格按 overview.md → proposal.md → spec.md 顺序加载(层级图见 `./reference.md`「§3」)
41
+ - [ ] ⛔ **隔离红线**:绝对禁止跨目录读取同级其他 Capability 的 spec 或 design
42
+ - [ ] design.md 聚焦【How】,是 spec.md → tasks.md 的桥梁
43
+ - [ ] 必须 100% 覆盖 spec.md 定义的需求项
44
+ - [ ] 代码锚点必须具体到类/方法级别
45
+ - [ ] ⛔ **阶段边界**:禁止执行任何代码创建/修改操作
46
+ - [ ] ⛔ **单阶段原则**:完成 design.md 后必须立即停止;仅提示用户下一步可运行 `/opsx-task`,绝对禁止自动执行 task 等后续阶段。每个阶段必须由用户主动触发。