kld-sdd 2.5.0 → 2.5.2
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/README.md +95 -8
- package/kld-sdd-guide.html +1109 -0
- package/lib/command-bridge.js +156 -0
- package/lib/deploy-codebuddy-hooks.js +99 -0
- package/lib/hook-gate-core.js +333 -0
- package/lib/init.js +137 -82
- package/lib/settings-merge.js +85 -0
- package/lib/skills-bundle.js +142 -5
- package/lib/tool-profiles.js +270 -0
- package/package.json +4 -2
- package/skywalk-sdd/index.cjs +329 -24
- package/skywalk-sdd/ontology/artifact-observer.cjs +91 -0
- package/skywalk-sdd/ontology/artifact-parser.cjs +621 -0
- package/skywalk-sdd/ontology/change-lock.cjs +126 -0
- package/skywalk-sdd/ontology/cli.cjs +146 -0
- package/skywalk-sdd/ontology/effective-graph.cjs +158 -0
- package/skywalk-sdd/ontology/id.cjs +126 -0
- package/skywalk-sdd/ontology/identity-index.cjs +262 -0
- package/skywalk-sdd/ontology/normalizer.cjs +107 -0
- package/skywalk-sdd/ontology/runtime.cjs +341 -0
- package/skywalk-sdd/ontology/schema.cjs +139 -0
- package/skywalk-sdd/ontology/structural-identity.cjs +77 -0
- package/skywalk-sdd/ontology/traceability-validator.cjs +610 -0
- package/templates/commands/kunlunzhima/skill-bridge.md +23 -0
- package/templates/hooks/codebuddy/hooks/sdd-apply-gate.cjs +16 -0
- package/templates/hooks/codebuddy/hooks/sdd-apply-test-gate.cjs +395 -0
- package/templates/hooks/codebuddy/hooks/sdd-post-tool.cjs +123 -0
- package/templates/hooks/codebuddy/hooks/sdd-pre-tool.cjs +16 -0
- package/templates/hooks/codebuddy/hooks/sdd-prompt.cjs +48 -0
- package/templates/hooks/codebuddy/hooks/sdd-skill-apply-gate.cjs +16 -0
- package/templates/hooks/codebuddy/hooks/sdd-stop.cjs +70 -0
- package/templates/hooks/codebuddy/settings.json +72 -0
- package/templates/openspec/design.md +18 -0
- package/templates/openspec/proposal.md +19 -6
- package/templates/openspec/spec.md +62 -8
- package/templates/openspec/tasks.md +28 -6
- package/templates/skills/kld-sdd/opsx-apply/SKILL.md +5 -5
- package/templates/skills/kld-sdd/opsx-archive/SKILL.md +9 -0
- package/templates/skills/kld-sdd/opsx-check/SKILL.md +17 -1
- package/templates/skills/kld-sdd/opsx-design/SKILL.md +10 -1
- package/templates/skills/kld-sdd/opsx-explore/SKILL.md +1 -1
- package/templates/skills/kld-sdd/opsx-propose/SKILL.md +11 -1
- package/templates/skills/kld-sdd/opsx-rules/SKILL.md +131 -0
- package/templates/skills/kld-sdd/opsx-rules/checklist.md +27 -0
- package/templates/skills/kld-sdd/opsx-rules/reference.md +124 -0
- package/templates/skills/kld-sdd/opsx-spec/SKILL.md +12 -1
- package/templates/skills/kld-sdd/opsx-task/SKILL.md +10 -1
- package/templates/skills/kld-sdd/opsx-test/SKILL.md +1 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# opsx-rules 参考 — 落位矩阵与格式模板
|
|
2
|
+
|
|
3
|
+
> **权威源说明**:本文件是 skill **运行时**的落位矩阵真相源(部署到目标项目后无法 `require` kld-sdd 的 `lib/`)。`lib/tool-profiles.js` 中的 `rulesDir` / `rulesFormat` / `rulesWiring` 为 **init 契约与测试断言**;变更时须与本表同步,以本表为准写入规则文件。
|
|
4
|
+
|
|
5
|
+
## 落位矩阵
|
|
6
|
+
|
|
7
|
+
| Agent | rulesDir | 格式 | frontmatter | 原生加载 | 接线 |
|
|
8
|
+
|-------|----------|------|-------------|----------|------|
|
|
9
|
+
| cursor | `.cursor/rules/` | `.mdc` | description / globs / alwaysApply | ✅ | 无 |
|
|
10
|
+
| claude | `.claude/rules/` | `.md` | 可选 paths(glob 列表) | ✅ | 无 |
|
|
11
|
+
| codebuddy | `.codebuddy/rules/` | `.md` | 无 | ✅ | 无 |
|
|
12
|
+
| qoder | `.qoder/rules/` | `.md` | 可选 trigger | ✅ | 无 |
|
|
13
|
+
| kunlunzhima | **`.kunlunzhima/.rules/`** | `.mdc` | description / alwaysApply / enabled / updatedAt / provider | ✅ | 无 |
|
|
14
|
+
| opencode | 无独立目录 | `.md` | 无 | ❌ | `opencode.json` instructions |
|
|
15
|
+
| codex | 无独立目录 | — | — | ✅(读 AGENTS.md) | AGENTS.md managed marker |
|
|
16
|
+
| workbuddy | `.workbuddy/rules/` | `.md` | 无 | ⚠️ 待验证 | 上下文文件索引行兜底 |
|
|
17
|
+
|
|
18
|
+
> **KunlunZhima 证据**:样例目录 `.kunlunzhima/.rules/*.mdc`,frontmatter 含 IDE 管理字段 `enabled`、`updatedAt`、`provider`(无 `globs`)。
|
|
19
|
+
|
|
20
|
+
## 格式模板
|
|
21
|
+
|
|
22
|
+
### mdc(Cursor)
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
---
|
|
26
|
+
description: <一句话描述>
|
|
27
|
+
globs:
|
|
28
|
+
alwaysApply: true
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
<正文>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### mdc-kunlun(KunlunZhima)
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
---
|
|
38
|
+
description: <一句话描述>
|
|
39
|
+
alwaysApply: true
|
|
40
|
+
enabled: true
|
|
41
|
+
updatedAt: <ISO8601 生成时间>
|
|
42
|
+
provider:
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
<正文>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### md + paths(Claude Code,可选按路径触发)
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
---
|
|
52
|
+
paths:
|
|
53
|
+
- "src/**/*.ts"
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
<正文>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
无 paths 时 Claude 会话启动即加载。
|
|
60
|
+
|
|
61
|
+
### md + trigger(Qoder,可选)
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
---
|
|
65
|
+
trigger: always_on
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
<正文>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 纯 md(CodeBuddy / WorkBuddy)
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
<正文>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 5 主题内容骨架
|
|
78
|
+
|
|
79
|
+
| 主题 | 文件名 | 扫描依据 | 生成要点 |
|
|
80
|
+
|------|--------|----------|----------|
|
|
81
|
+
| 架构规范 | `architecture` | 目录分层、模块边界、入口 | 分层约定、禁止循环依赖、新代码落位 |
|
|
82
|
+
| 编码规范 | `coding-style` | 语言、lint、缩进 | 命名、缩进、注释语言、CommonJS/ESM |
|
|
83
|
+
| 测试约定 | `testing` | test 目录、框架 | 测试命令、命名、TDD 期望 |
|
|
84
|
+
| 数据安全 | `database-safety` | ORM/迁移目录 | 无 DB 时降级为「禁止危险文件操作/敏感数据提交」 |
|
|
85
|
+
| Git 提交 | `git-commit` | git log 风格、CI | 提交前确认、message 风格、禁止 force push |
|
|
86
|
+
|
|
87
|
+
## OpenCode 接线
|
|
88
|
+
|
|
89
|
+
优先复用已有 `.claude/rules/`:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"$schema": "https://opencode.ai/config.json",
|
|
94
|
+
"instructions": [".claude/rules/*.md"]
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
无 Claude 规则时,写入 `.opencode/rules/*.md` 并 instructions 指向该路径。合并:已有 `instructions` 数组去重追加,其他键不动。
|
|
99
|
+
|
|
100
|
+
## Codex / AGENTS.md 接线
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
<!-- kld-sdd-rules:start -->
|
|
104
|
+
## 项目规则
|
|
105
|
+
|
|
106
|
+
### 架构
|
|
107
|
+
...
|
|
108
|
+
|
|
109
|
+
### 编码
|
|
110
|
+
...
|
|
111
|
+
<!-- kld-sdd-rules:end -->
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
存在 marker 则整块替换,幂等。
|
|
115
|
+
|
|
116
|
+
## WorkBuddy 兜底
|
|
117
|
+
|
|
118
|
+
写入 `.workbuddy/rules/*.md`,并在项目上下文文件(若存在)追加:
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
项目规则见 `.workbuddy/rules/` 目录。
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
验证:运行 CodeBuddy `/memory` 或查官方 docs。
|
|
@@ -31,7 +31,7 @@ allowed-tools:
|
|
|
31
31
|
> **🖥️ 跨平台执行规则**
|
|
32
32
|
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
33
33
|
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
34
|
-
> -
|
|
34
|
+
> - ${SHELL_GUIDANCE}
|
|
35
35
|
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
36
36
|
> **📊 Telemetry(必做,不得跳过)** — 阶段开始 / 阶段结束**命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
|
|
37
37
|
|
|
@@ -176,6 +176,17 @@ openspec list
|
|
|
176
176
|
|
|
177
177
|
---
|
|
178
178
|
|
|
179
|
+
## 本体语义生成契约
|
|
180
|
+
|
|
181
|
+
- 写入 `capability-id: CAP-<CAPABILITY>`,且必须引用 proposal 中真实存在的 CAP ID。
|
|
182
|
+
- 新需求、场景和约束分别使用 `STMT-*`、`AC-*`、`CON-*`;分配规则是同前缀同 Capability 当前最大序号 + 1。
|
|
183
|
+
- 修改已有实体必须复用原 ID;删除实体只写 removal 语义,不得把编号分配给新实体。
|
|
184
|
+
- `added` 必须调用 `semantic-identity --delta-state=added` 生成新的实体 UUID 和版本 UUID;禁止通过复制另一需求的 UUID 创建新实体。
|
|
185
|
+
- `modified/removed` 必须从 Archive 读取历史 `entity-id` 和直接前序 `version-id`,调用 `semantic-identity --delta-state=<modified|removed> --entity-id=<UUID> --predecessor-version=<UUID>`;实体 UUID 复用,版本 UUID 新建。
|
|
186
|
+
- AC 必须嵌套在所属 STMT 下;CON 必须通过 `**constrains**` 显式引用 STMT。
|
|
187
|
+
- unchanged 内容只写人工锚点、历史实体 UUID、历史版本 UUID 和来源引用,不复制历史原文;调用 `semantic-identity --delta-state=unchanged --entity-id=<UUID> --version-id=<UUID>` 校验复用参数,引用断链时保持 unresolved 并交由 check 阻断。
|
|
188
|
+
- 生成结束后必须运行 `node skywalk-sdd/log.cjs semantic-reconcile --project=. --change=<name>`,根据诊断修复缺号、重号和悬空引用。
|
|
189
|
+
|
|
179
190
|
## Guardrails
|
|
180
191
|
|
|
181
192
|
> 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
|
|
@@ -40,7 +40,7 @@ allowed-tools:
|
|
|
40
40
|
> **🖥️ 跨平台执行规则**
|
|
41
41
|
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
42
42
|
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
43
|
-
> -
|
|
43
|
+
> - ${SHELL_GUIDANCE}
|
|
44
44
|
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
45
45
|
> **📊 Telemetry(必做,不得跳过)** — 阶段开始 / 阶段结束**命令模板**见 `./reference.md`「📊 Telemetry 命令模板」。
|
|
46
46
|
|
|
@@ -193,6 +193,15 @@ Simple 模式或单文件能力域下,**不要拆成多个同文件任务**。
|
|
|
193
193
|
|
|
194
194
|
---
|
|
195
195
|
|
|
196
|
+
## 本体语义生成契约
|
|
197
|
+
|
|
198
|
+
- 写入与当前 spec/design 一致的 `capability-id`。
|
|
199
|
+
- 每个任务必须使用 `TASK-<CAPABILITY>-NNN`;新增前按当前最大序号 + 1 分配,已有任务不得改 ID。
|
|
200
|
+
- 每个 TASK 必须同时写 `entity-id`、`version-id` 和 `delta-state`;新增任务调用 `semantic-identity --delta-state=added`,不得复用其他任务 UUID。
|
|
201
|
+
- 每个 TASK 必须写 `**implements**: DES-*` 或 `**covers**: STMT-*`,不得生成无上游来源任务。
|
|
202
|
+
- 任务依赖必须写 `**dependsOn**: TASK-*`;无依赖显式写“无”,所有依赖必须构成 DAG。
|
|
203
|
+
- 生成结束后必须运行 `node skywalk-sdd/log.cjs semantic-reconcile --project=. --change=<name>`。
|
|
204
|
+
|
|
196
205
|
## Guardrails
|
|
197
206
|
|
|
198
207
|
> 完整 ⛔ 强制项勾选清单见 `./checklist.md`「Guardrails ⛔ 强制项」。核心红线:
|
|
@@ -26,7 +26,7 @@ allowed-tools:
|
|
|
26
26
|
> **🖥️ 跨平台执行规则**
|
|
27
27
|
> - 先确认当前终端工作目录是项目根目录;若不是,先 `cd` 到项目根目录。
|
|
28
28
|
> - Telemetry 命令默认使用 `--project=.`,兼容 Windows、macOS、Linux。
|
|
29
|
-
> -
|
|
29
|
+
> - ${SHELL_GUIDANCE}
|
|
30
30
|
> - 不要省略 `--source=opsx-command` 与 `--session-id=<会话ID>`。
|
|
31
31
|
> **📊 Telemetry(必做,不得跳过)**
|
|
32
32
|
> - 阶段开始:`node skywalk-sdd/log.cjs start --command=test --project=. --change=<变更名称> --agent=<Agent类型> --source=opsx-command --session-id=<会话ID>`(保存 event_id)
|