kld-sdd 2.6.12 → 2.6.13
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 +20 -0
- package/kld-sdd-guide.html +429 -159
- package/lib/init.js +40 -7
- package/package.json +5 -2
- package/skywalk-sdd/index.cjs +2668 -415
- package/skywalk-sdd/metrics-v3.cjs +1153 -0
- package/skywalk-sdd/ontology/archive-package.cjs +114 -3
- package/skywalk-sdd/ontology/resolve-spec-root.cjs +20 -80
- package/skywalk-sdd/ontology/working-artifacts.cjs +2 -1
- package/templates/hooks/claude/hooks/sdd-apply-test-gate.cjs +39 -9
- package/templates/hooks/claude/hooks/sdd-post-tool.cjs +87 -8
- package/templates/hooks/claude/hooks/sdd-prompt.cjs +3 -1
- package/templates/hooks/codebuddy/hooks/sdd-apply-test-gate.cjs +39 -9
- package/templates/hooks/codebuddy/hooks/sdd-post-tool.cjs +87 -9
- package/templates/hooks/codebuddy/hooks/sdd-prompt.cjs +3 -1
- package/templates/skills/kld-sdd/opsx-apply/SKILL.md +14 -13
- package/templates/skills/kld-sdd/opsx-apply/checklist.md +20 -20
- package/templates/skills/kld-sdd/opsx-apply/implementer-prompt.md +12 -12
- package/templates/skills/kld-sdd/opsx-apply/reference.md +32 -31
- package/templates/skills/kld-sdd/opsx-archive/SKILL.md +44 -6
- package/templates/skills/kld-sdd/opsx-archive/checklist.md +4 -1
- package/templates/skills/kld-sdd/opsx-check/SKILL.md +19 -11
- package/templates/skills/kld-sdd/opsx-check/checklist.md +7 -6
- package/templates/skills/kld-sdd/opsx-design/SKILL.md +1 -1
- package/templates/skills/kld-sdd/opsx-design/checklist.md +1 -1
- package/templates/skills/kld-sdd/opsx-propose/SKILL.md +9 -1
- package/templates/skills/kld-sdd/opsx-propose/reference.md +29 -3
- package/templates/skills/kld-sdd/opsx-rules/reference.md +3 -1
- package/templates/skills/kld-sdd/opsx-spec/SKILL.md +1 -1
- package/templates/skills/kld-sdd/opsx-spec/checklist.md +1 -1
- package/templates/skills/kld-sdd/opsx-task/SKILL.md +10 -10
- package/templates/skills/kld-sdd/opsx-task/checklist.md +3 -3
- package/templates/skills/kld-sdd/opsx-task/reference.md +3 -3
- package/templates/skills/kld-sdd/opsx-test/SKILL.md +7 -5
- package/templates/skills/kld-sdd/{opsx-tdd-anti-patterns → tdd-anti-patterns}/SKILL.md +4 -4
- package/templates/skills/kld-sdd/{opsx-tdd-anti-patterns → tdd-anti-patterns}/reference.md +4 -4
- package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/SKILL.md +13 -13
- package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/checklist.md +5 -5
- package/templates/skills/kld-sdd/{opsx-tdd-core → tdd-core}/reference.md +12 -12
- package/templates/skills/kld-sdd/{opsx-tdd-metrics → tdd-metrics}/SKILL.md +3 -3
- package/templates/skills/kld-sdd/{opsx-tdd-metrics → tdd-metrics}/checklist.md +2 -2
- package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/SKILL.md +2 -2
- package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/parameterized-testing.md +1 -1
- package/templates/skills/kld-sdd/{opsx-tdd-review → tdd-review}/SKILL.md +5 -5
- package/templates/skills/kld-sdd/{opsx-tdd-review → tdd-review}/checklist.md +5 -5
- package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/SKILL.md +3 -3
- package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/non-tdd-modules.md +1 -1
- package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/refactor-checklist.md +1 -1
- package/templates/skills/kld-sdd/tdd-rules/rules/test-skeleton-telemetry.md +19 -0
- package/templates/skills/kld-sdd/opsx-tdd-rules/rules/test-skeleton-telemetry.md +0 -19
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/cause-effect-clarity.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/clean-test-data.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/existing-test-awareness.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/given-when-then.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/good-test-qualities.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/mock-boundary.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/naming-conventions.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/no-logic-in-tests.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/one-test-one-scenario.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/prefer-public-apis.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/general/test-behaviors-not-methods.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/argument-matching.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/controller-test-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/domain-service-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/java-test-template.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/json-serialization.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/java/logging-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/post-generation/compilation-verification.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/post-generation/execution-verification.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/python/py-test-template.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-quality → tdd-quality}/rules/typescript/ts-test-template.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/controller-strategy.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/dag-generation-rules.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/des-step-annotation.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/exception-path-coverage.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/green-scope-declaration.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/green-yagni-fence.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/multi-validation-split.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/task-type-definitions.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/tdd-strategy-selection.md +0 -0
- /package/templates/skills/kld-sdd/{opsx-tdd-rules → tdd-rules}/rules/test-execution-gate.md +0 -0
package/lib/init.js
CHANGED
|
@@ -822,6 +822,35 @@ function deployTelemetryDataDir(targetCwd = process.cwd()) {
|
|
|
822
822
|
console.log(` ⚠️ Telemetry CLI 源文件缺失: ${telemetrySrc}`);
|
|
823
823
|
}
|
|
824
824
|
|
|
825
|
+
const metricsV3Src = path.join(pkgPath, 'skywalk-sdd', 'metrics-v3.cjs');
|
|
826
|
+
const metricsV3Dst = path.join(dataDir, 'metrics-v3.cjs');
|
|
827
|
+
if (fs.existsSync(metricsV3Src)) {
|
|
828
|
+
fs.copyFileSync(metricsV3Src, metricsV3Dst);
|
|
829
|
+
console.log(' ✓ 部署 skywalk-sdd/metrics-v3.cjs(V3 指标运行时)');
|
|
830
|
+
} else {
|
|
831
|
+
console.log(` ⚠️ V3 指标模块源文件缺失: ${metricsV3Src}(report/metrics 可能无法加载 metrics-v3)`);
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
const runtimeMetadataSrc = path.join(pkgPath, 'skywalk-sdd', 'runtime-metadata.cjs');
|
|
835
|
+
const runtimeMetadataDst = path.join(dataDir, 'runtime-metadata.cjs');
|
|
836
|
+
if (fs.existsSync(runtimeMetadataSrc)) {
|
|
837
|
+
fs.copyFileSync(runtimeMetadataSrc, runtimeMetadataDst);
|
|
838
|
+
const packageVersion = require(path.join(pkgPath, 'package.json')).version;
|
|
839
|
+
fs.writeFileSync(path.join(dataDir, 'runtime-metadata.json'), `${JSON.stringify({
|
|
840
|
+
schema_version: 'kld-sdd-runtime-metadata/v1',
|
|
841
|
+
package_name: '@hunterzheng/kld-sdd',
|
|
842
|
+
version: packageVersion,
|
|
843
|
+
}, null, 2)}\n`, 'utf8');
|
|
844
|
+
console.log(` ✓ 部署 kld-sdd 运行时身份(${packageVersion})`);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
const reportingSrc = path.join(pkgPath, 'skywalk-sdd', 'reporting');
|
|
848
|
+
const reportingDst = path.join(dataDir, 'reporting');
|
|
849
|
+
if (fs.existsSync(reportingSrc)) {
|
|
850
|
+
copyDir(reportingSrc, reportingDst);
|
|
851
|
+
console.log(' ✓ 部署 skywalk-sdd/reporting/(V3 单次变更报告)');
|
|
852
|
+
}
|
|
853
|
+
|
|
825
854
|
const contextClientSrc = path.join(pkgPath, 'skywalk-sdd', 'context-client.cjs');
|
|
826
855
|
const contextClientDst = path.join(dataDir, 'context-client.cjs');
|
|
827
856
|
if (fs.existsSync(contextClientSrc)) {
|
|
@@ -873,16 +902,20 @@ function installGitHookShim(cwd, hookName, scriptPath, options = {}) {
|
|
|
873
902
|
// Git 把 commit-msg 文件路径放在 $1;--project 等额外参数必须跟在 "$@" 后面,
|
|
874
903
|
// 否则 trailer 脚本会把 --project=… 误当成 message 文件(argv[2])。
|
|
875
904
|
const extraArgs = options.extraArgs || '';
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
905
|
+
// Windows 反斜杠路径在 #!/bin/sh(Git for Windows MSYS2)中不被 [ -f ] 和 node 识别,
|
|
906
|
+
// 统一转为正斜杠,确保 hook shim 跨平台可执行。
|
|
907
|
+
const shScriptPath = scriptPath.replace(/\\/g, '/');
|
|
908
|
+
const shExtraArgs = extraArgs.replace(/\\/g, '/');
|
|
909
|
+
const nodeLine = shExtraArgs
|
|
910
|
+
? ` node "${shScriptPath}" "$@" ${shExtraArgs}`
|
|
911
|
+
: ` node "${shScriptPath}" "$@"`;
|
|
879
912
|
const shim = [
|
|
880
913
|
'#!/bin/sh',
|
|
881
914
|
`# ${marker}`,
|
|
882
|
-
`if [ -f "${
|
|
915
|
+
`if [ -f "${shScriptPath}" ]; then`,
|
|
883
916
|
nodeLine,
|
|
884
917
|
'else',
|
|
885
|
-
` echo "[kld-sdd] Hook 脚本不存在: ${
|
|
918
|
+
` echo "[kld-sdd] Hook 脚本不存在: ${shScriptPath}" >&2`,
|
|
886
919
|
' exit 1',
|
|
887
920
|
'fi',
|
|
888
921
|
'',
|
|
@@ -892,7 +925,7 @@ function installGitHookShim(cwd, hookName, scriptPath, options = {}) {
|
|
|
892
925
|
const existing = fs.readFileSync(hookPath, 'utf8');
|
|
893
926
|
if (existing.includes(marker)) {
|
|
894
927
|
// 已是 SDD shim:若指向路径变化(如改为引用 spec 仓),允许覆盖升级
|
|
895
|
-
if (existing.includes(
|
|
928
|
+
if (existing.includes(shScriptPath) && (!shExtraArgs || existing.includes(shExtraArgs.trim()))) {
|
|
896
929
|
console.log(` ✓ .git/hooks/${hookName} 已包含 SDD 质量门禁`);
|
|
897
930
|
return;
|
|
898
931
|
}
|
|
@@ -951,7 +984,7 @@ function installCodeRepoCommitMsgHook(codeRepoRoot, specRepoRoot, options = {})
|
|
|
951
984
|
return false;
|
|
952
985
|
}
|
|
953
986
|
installGitHookShim(cwd, 'commit-msg', ensured.scriptPath, {
|
|
954
|
-
extraArgs:
|
|
987
|
+
extraArgs: `"--project=${cwd}"`,
|
|
955
988
|
});
|
|
956
989
|
return true;
|
|
957
990
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kld-sdd",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.13",
|
|
4
4
|
"description": "KLD SDD OpenSpec 项目初始化工具 - 一键部署 SDD skills",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"kld-sdd-init": "bin/kld-sdd-init.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"test": "node test/external-key.cjs && node test/change-key.cjs && node test/modules-and-sdd-config.cjs && node test/active-changes.cjs && node test/hook-layouts.cjs && node test/spec-package-init.cjs && node test/workspace-layout.cjs && node test/ontology-release-blockers.cjs && node test/ontology-semantic-core.cjs && node test/ontology-identity-versioning.cjs && node test/ontology-identity-continuity.cjs && node test/ontology-state-transaction.cjs && node test/ontology-process-concurrency.cjs && node test/ontology-observer-convergence.cjs && node test/ontology-working-runtime.cjs && node test/ontology-stage-materialization.cjs && node test/ontology-template-contract.cjs && node test/ontology-cli-archive.cjs && node test/archive-package-producer.cjs && node test/validate-skills-bundle.cjs && node test/tool-profiles.cjs && node test/settings-merge.cjs && node test/command-bridge.cjs && node test/codebuddy-hooks.cjs && node test/skill-content-contract.cjs && node test/init-agent-profiles.cjs"
|
|
11
|
+
"test": "node test/external-key.cjs && node test/change-key.cjs && node test/modules-and-sdd-config.cjs && node test/active-changes.cjs && node test/hook-layouts.cjs && node test/spec-package-init.cjs && node test/workspace-layout.cjs && node test/ontology-release-blockers.cjs && node test/ontology-semantic-core.cjs && node test/ontology-identity-versioning.cjs && node test/ontology-identity-continuity.cjs && node test/ontology-state-transaction.cjs && node test/ontology-process-concurrency.cjs && node test/ontology-observer-convergence.cjs && node test/ontology-working-runtime.cjs && node test/ontology-stage-materialization.cjs && node test/ontology-template-contract.cjs && node test/ontology-cli-archive.cjs && node test/archive-package-producer.cjs && node --test test/change-report-correctness.cjs test/report-metrics-correctness.cjs test/change-report-model-ui.cjs && node test/validate-skills-bundle.cjs && node test/tool-profiles.cjs && node test/settings-merge.cjs && node test/command-bridge.cjs && node test/codebuddy-hooks.cjs && node test/skill-content-contract.cjs && node test/init-agent-profiles.cjs && node test/init-report-runtime.cjs"
|
|
12
12
|
},
|
|
13
13
|
"keywords": [
|
|
14
14
|
"kld",
|
|
@@ -32,6 +32,9 @@
|
|
|
32
32
|
"templates/",
|
|
33
33
|
"kld-sdd-guide.html",
|
|
34
34
|
"skywalk-sdd/index.cjs",
|
|
35
|
+
"skywalk-sdd/metrics-v3.cjs",
|
|
36
|
+
"skywalk-sdd/runtime-metadata.cjs",
|
|
37
|
+
"skywalk-sdd/reporting/",
|
|
35
38
|
"skywalk-sdd/context-client.cjs",
|
|
36
39
|
"skywalk-sdd/ontology/",
|
|
37
40
|
"skywalk-sdd/apply-worktree-finish.cjs",
|