spec-wave 2.1.1

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +327 -0
  3. package/README.zh-CN.md +327 -0
  4. package/RELEASING.md +52 -0
  5. package/assets/README.md +30 -0
  6. package/assets/ci/samples/README.md +76 -0
  7. package/assets/ci/samples/hgm-ingest.yml.example +42 -0
  8. package/assets/ci/samples/lint-wiki-delta.pin.yml.example +47 -0
  9. package/assets/ci/samples/lint-wiki-delta.yml.example +49 -0
  10. package/assets/ci/samples/pytest.yml.example +49 -0
  11. package/assets/ci/samples/quality.yml.example +56 -0
  12. package/assets/ci/samples/skills-validate.yml.example +38 -0
  13. package/assets/ci/samples/tech-graph.yml.example +55 -0
  14. package/assets/coding_wiki/templates/README.md +115 -0
  15. package/assets/coding_wiki/templates/_index.md +19 -0
  16. package/assets/coding_wiki/templates/context.md +18 -0
  17. package/assets/coding_wiki/templates/stable.md +26 -0
  18. package/assets/coding_wiki/templates/topics/wiki_layout.md +13 -0
  19. package/assets/coding_wiki/templates/topics/wikilinks_export.md +13 -0
  20. package/assets/coding_wiki/templates/volatile.md +25 -0
  21. package/assets/docs/POINTER_ONBOARDING.md +9 -0
  22. package/assets/docs/POINTER_RUNBOOK_wiki_delta.md +18 -0
  23. package/assets/docs/POINTER_SDD_HAT_FLOW.md +8 -0
  24. package/assets/docs/POINTER_USER_GUIDE.md +8 -0
  25. package/assets/graph/stubs/README.md +6 -0
  26. package/assets/graph/templates/00_main.graph.yaml +72 -0
  27. package/assets/graph/templates/00_main.md +85 -0
  28. package/assets/graph/templates/01_struct.md +38 -0
  29. package/assets/graph/templates/02_version.md +7 -0
  30. package/assets/graph/templates/10_flow_MAIN.graph.yaml +105 -0
  31. package/assets/graph/templates/10_flow_MAIN.md +103 -0
  32. package/assets/graph/templates/99_mermaid_protocol.md +156 -0
  33. package/assets/graph/templates/README.md +66 -0
  34. package/assets/harness/README.md +18 -0
  35. package/assets/harness/discipline-coverage.yaml +320 -0
  36. package/assets/harness/invokes/README.md +22 -0
  37. package/assets/harness/invokes/TEMPLATE_invoke.md +61 -0
  38. package/assets/harness/lifecycle.yaml +127 -0
  39. package/assets/harness/prompts/00-orchestrator.md +91 -0
  40. package/assets/harness/prompts/10-spec-requirements.md +63 -0
  41. package/assets/harness/prompts/10-task-requirements.md +70 -0
  42. package/assets/harness/prompts/20-spec-audit.md +50 -0
  43. package/assets/harness/prompts/20-task-audit.md +90 -0
  44. package/assets/harness/prompts/30-execute-code.md +64 -0
  45. package/assets/harness/prompts/40-self-check.md +65 -0
  46. package/assets/harness/prompts/FRAGMENT_00_delegate_only_v1_zh.md +19 -0
  47. package/assets/harness/prompts/FRAGMENT_30_gate_verify_v1_zh.md +34 -0
  48. package/assets/harness/prompts/FRAGMENT_30_invoke_block_v1_zh.md +28 -0
  49. package/assets/harness/prompts/FRAGMENT_hat_reanchor_v1_zh.md +19 -0
  50. package/assets/harness/prompts/README.md +67 -0
  51. package/assets/harness/prompts/TEMPLATE_30_gate_stop.md +36 -0
  52. package/assets/harness/templates/FRAGMENT_task_domain_infer_v1_zh.md +16 -0
  53. package/assets/harness/templates/ONTOLOGY_consumer_slice_v1.md +41 -0
  54. package/assets/harness/templates/QUICKREF_v1_zh.md +35 -0
  55. package/assets/harness/templates/README.md +50 -0
  56. package/assets/harness/templates/TASK_TEMPLATE.md +133 -0
  57. package/assets/harness/templates/TASK_done_README.md +76 -0
  58. package/assets/harness/templates/TASK_epic.md +103 -0
  59. package/assets/harness/templates/TASK_graph_bootstrap.md +115 -0
  60. package/assets/harness/templates/VIEW_done_by_domain.md +66 -0
  61. package/assets/harness/templates/VIEW_done_thin_pointer.md +16 -0
  62. package/assets/ide/adapters/AGENTS.md.fragment.example +33 -0
  63. package/assets/ide/adapters/CLAUDE.md.fragment.example +32 -0
  64. package/assets/ide/adapters/README.md +57 -0
  65. package/assets/ide/adapters/cursor-harness-starter.mdc.example +39 -0
  66. package/assets/ide/commands/claude/kit/apply-standards.md +10 -0
  67. package/assets/ide/commands/claude/kit/gate-status.md +10 -0
  68. package/assets/ide/commands/claude/kit/graph-check.md +8 -0
  69. package/assets/ide/commands/claude/kit/hat-00-delegate.md +9 -0
  70. package/assets/ide/commands/claude/kit/hat-10-spec.md +9 -0
  71. package/assets/ide/commands/claude/kit/hat-10-task.md +9 -0
  72. package/assets/ide/commands/claude/kit/hat-20-spec-audit.md +9 -0
  73. package/assets/ide/commands/claude/kit/hat-20-task-audit.md +9 -0
  74. package/assets/ide/commands/claude/kit/hat-reanchor.md +8 -0
  75. package/assets/ide/commands/claude/kit/init-guide.md +16 -0
  76. package/assets/ide/commands/claude/kit/sync-prompts-guide.md +9 -0
  77. package/assets/ide/commands/claude/kit/verify.md +16 -0
  78. package/assets/ide/commands/cursor/kit-apply-standards.md +12 -0
  79. package/assets/ide/commands/cursor/kit-gate-status.md +12 -0
  80. package/assets/ide/commands/cursor/kit-graph-check.md +10 -0
  81. package/assets/ide/commands/cursor/kit-hat-00-delegate.md +11 -0
  82. package/assets/ide/commands/cursor/kit-hat-10-spec.md +11 -0
  83. package/assets/ide/commands/cursor/kit-hat-10-task.md +11 -0
  84. package/assets/ide/commands/cursor/kit-hat-20-spec-audit.md +11 -0
  85. package/assets/ide/commands/cursor/kit-hat-20-task-audit.md +11 -0
  86. package/assets/ide/commands/cursor/kit-hat-reanchor.md +10 -0
  87. package/assets/ide/commands/cursor/kit-init-guide.md +18 -0
  88. package/assets/ide/commands/cursor/kit-sync-prompts-guide.md +11 -0
  89. package/assets/ide/commands/cursor/kit-verify.md +18 -0
  90. package/assets/ide/host-adapt/README.md +113 -0
  91. package/assets/ide/host-adapt/examples/mvp-hosts.yaml +78 -0
  92. package/assets/ide/host-adapt/host-adapt.schema.json +97 -0
  93. package/assets/ide/skills-orch/README.md +16 -0
  94. package/assets/ide/skills-orch/kit-apply-standards/SKILL.md +17 -0
  95. package/assets/ide/skills-orch/kit-gate-status/SKILL.md +17 -0
  96. package/assets/ide/skills-orch/kit-hat-reanchor/SKILL.md +15 -0
  97. package/assets/ide/skills-orch/kit-init-guide/SKILL.md +23 -0
  98. package/assets/ide/skills-orch/kit-verify/SKILL.md +23 -0
  99. package/assets/ontology.yaml +113 -0
  100. package/assets/skills/README.md +37 -0
  101. package/assets/skills/harness-00-delegate-only/SKILL.md +19 -0
  102. package/assets/skills/harness-10-spec/SKILL.md +63 -0
  103. package/assets/skills/harness-10-task/SKILL.md +70 -0
  104. package/assets/skills/harness-20-spec-audit/SKILL.md +50 -0
  105. package/assets/skills/harness-20-task-audit/SKILL.md +90 -0
  106. package/assets/skills/harness-20-task-audit/references/TEMPLATE_30_gate_stop.md +36 -0
  107. package/assets/skills/harness-hat-reanchor/SKILL.md +19 -0
  108. package/assets/standards/POINTER_workspace_truth_v1_zh.md +42 -0
  109. package/assets/standards/README.md +35 -0
  110. package/assets/standards/SOURCES_v1_zh.md +49 -0
  111. package/assets/standards/TEMPLATE_CODING_BASELINE_L1_v1_zh.md +88 -0
  112. package/assets/standards/TEMPLATE_CODING_BASELINE_L2_backend_v1_zh.md +75 -0
  113. package/assets/standards/TEMPLATE_CODING_BASELINE_L2_frontend_v1_zh.md +76 -0
  114. package/bin/dsh-coding-kit.js +7 -0
  115. package/bin/specgate.js +7 -0
  116. package/bin/validate_template_compliance.py +470 -0
  117. package/cordis.patch.yml +5 -0
  118. package/lib/cli-checks.d.ts +68 -0
  119. package/lib/cli-checks.js +812 -0
  120. package/lib/cli-checks.js.map +1 -0
  121. package/lib/cli-graph-hgm.d.ts +74 -0
  122. package/lib/cli-graph-hgm.js +416 -0
  123. package/lib/cli-graph-hgm.js.map +1 -0
  124. package/lib/cli-graph-yaml.d.ts +79 -0
  125. package/lib/cli-graph-yaml.js +602 -0
  126. package/lib/cli-graph-yaml.js.map +1 -0
  127. package/lib/cli-graph.d.ts +1 -0
  128. package/lib/cli-graph.js +199 -0
  129. package/lib/cli-graph.js.map +1 -0
  130. package/lib/cli-host.d.ts +24 -0
  131. package/lib/cli-host.js +1197 -0
  132. package/lib/cli-host.js.map +1 -0
  133. package/lib/cli-lifecycle.d.ts +2 -0
  134. package/lib/cli-lifecycle.js +401 -0
  135. package/lib/cli-lifecycle.js.map +1 -0
  136. package/lib/cli-refresh-ide-blocks.d.ts +66 -0
  137. package/lib/cli-refresh-ide-blocks.js +484 -0
  138. package/lib/cli-refresh-ide-blocks.js.map +1 -0
  139. package/lib/cli-shared.d.ts +74 -0
  140. package/lib/cli-shared.js +281 -0
  141. package/lib/cli-shared.js.map +1 -0
  142. package/lib/cli-skills.d.ts +52 -0
  143. package/lib/cli-skills.js +363 -0
  144. package/lib/cli-skills.js.map +1 -0
  145. package/lib/cli-status.d.ts +2 -0
  146. package/lib/cli-status.js +251 -0
  147. package/lib/cli-status.js.map +1 -0
  148. package/lib/cli-sync-prompts.d.ts +25 -0
  149. package/lib/cli-sync-prompts.js +158 -0
  150. package/lib/cli-sync-prompts.js.map +1 -0
  151. package/lib/cli-sync.d.ts +2 -0
  152. package/lib/cli-sync.js +124 -0
  153. package/lib/cli-sync.js.map +1 -0
  154. package/lib/cli-task-extra.d.ts +53 -0
  155. package/lib/cli-task-extra.js +408 -0
  156. package/lib/cli-task-extra.js.map +1 -0
  157. package/lib/cli-timeline.d.ts +28 -0
  158. package/lib/cli-timeline.js +68 -0
  159. package/lib/cli-timeline.js.map +1 -0
  160. package/lib/cli-wiki.d.ts +21 -0
  161. package/lib/cli-wiki.js +189 -0
  162. package/lib/cli-wiki.js.map +1 -0
  163. package/lib/cli.d.ts +22 -0
  164. package/lib/cli.js +1034 -0
  165. package/lib/cli.js.map +1 -0
  166. package/lib/host-contract.d.ts +23 -0
  167. package/lib/host-contract.js +143 -0
  168. package/lib/host-contract.js.map +1 -0
  169. package/lib/index.d.ts +18 -0
  170. package/lib/index.js +290 -0
  171. package/lib/index.js.map +1 -0
  172. package/lib/yaml.d.ts +4 -0
  173. package/lib/yaml.js +10 -0
  174. package/lib/yaml.js.map +1 -0
  175. package/package.json +87 -0
@@ -0,0 +1,32 @@
1
+ # Harness Starter(业务仓 · Claude Code)
2
+
3
+ > **单源真值**:`docs/coding_wiki/` 读序 + `docs/standards/` + `AGENTS.md`。
4
+ > **本片段**:摘要 + **POINTER**;条文真值在 `docs/harness/prompts/`。
5
+ > **仓内定制(v2.22+)**:写在本产品块 **外** 的 `<!-- cyning-harness-local:begin/end -->`;勿改本 begin/end 内文。
6
+
7
+ ## 执行 task 前
8
+
9
+ 1. Open Folder = **本仓根**
10
+ 2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
11
+ 3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非** invoke 字面 `approved`):
12
+ - 运行 `npx spec-wave verify --target . --task docs/tasks/active/task_*.md`
13
+ - 首输出闸扫描 · `FRAGMENT_30_gate_verify_v1_zh.md`
14
+ - **`HG-AUDIT-R1` pending** → **30 拒改码**
15
+ - 声称与 task 表冲突 → **STOP**
16
+ 4. 过程 invoke:`docs/harness/invokes/by-task/<task_slug>/`
17
+
18
+ ## Verify(合并前)
19
+
20
+ | 栈 | 命令(与 `.github/workflows/` 一致) |
21
+ |----|--------------------------------------|
22
+ | 前端 | `pnpm lint` → `pnpm test` → `pnpm build` |
23
+ | 后端 | `pytest tests`(按仓 marker 裁剪) |
24
+ | iOS | `xcodebuild`(见 task `test_strategy_note`) |
25
+
26
+ ## 关键词
27
+
28
+ `Harness`、`task`、`invoke`、`HG-AUDIT-R1`、`HG-GRAPH-MODULES`、`human_gate`、`拒开工`
29
+
30
+ ## 完整库 POINTER
31
+
32
+ 工作区:`docs/harness/prompts/`(22/30/TEMPLATE_30_gate_stop 等)
@@ -0,0 +1,57 @@
1
+ # ide/adapters
2
+
3
+ **单源 POINTER**:真值在 `docs/coding_wiki/` + `docs/standards/` + `AGENTS.md`;本目录仅 **IDE 入口片段**。
4
+
5
+ ## v0.2 已交付(D3 · M2 补完)
6
+
7
+ | 文件 | 状态 | 勾选 IDE | 嵌入路径 |
8
+ |------|------|----------|----------|
9
+ | [`cursor-harness-starter.mdc.example`](./cursor-harness-starter.mdc.example) | ✅ | **Cursor**(默认推荐) | `.cursor/rules/05-harness-starter.mdc` |
10
+ | [`CLAUDE.md.fragment.example`](./CLAUDE.md.fragment.example) | ✅ | **Claude Code** | 仓根 `CLAUDE.md`(marker merge) |
11
+ | [`AGENTS.md.fragment.example`](./AGENTS.md.fragment.example) | ✅ | **通用 Agent** | 仓根 `AGENTS.md`(marker merge) |
12
+
13
+ ## 现行安装入口
14
+
15
+ CLI 闸与模板以 **`npx spec-wave`** 为准(包内本目录 = npm `assets/ide/adapters/`):
16
+
17
+ ```bash
18
+ # 仓根:初始化 Harness 闸(不覆盖 S2 过程域)
19
+ npx spec-wave init --preset harness-only --yes
20
+
21
+ # 嵌入前建议先 verify(task 路径按仓调整)
22
+ npx spec-wave verify --target . --task docs/tasks/active/task_*.md
23
+ ```
24
+
25
+ IDE 片段默认需手工嵌入(见下);`init` / `upgrade` 不写消费者仓 IDE 文件(`upgrade` 仅改写 `.cyning-harness/manifest.json`)。存量仓已嵌入 begin/end 块内的旧 `npx @cyning/harness` 命令字面,用 **`npx spec-wave refresh-ide-blocks`** 刷写(默认 dry-run 只读,`--yes` 才写盘;local 块、块外内容与 S2 路径永不动——映射表与纪律见仓根 README「refresh-ide-blocks」节)。
26
+
27
+ profile 字段(历史):`tracks.ide_cursor` · `tracks.ide_claude` · `tracks.ide_agents`(缺省:cursor=true,其余 false)。旧包 `cyning-harness` 的 `wizard/install.sh` 勾选路径已废弃,勿再当作现行入口。
28
+
29
+ ## marker merge 纪律(D3)
30
+
31
+ - 块标记:`<!-- cyning-harness:begin -->` … `<!-- cyning-harness:end -->`(**marker 字符串**,不是 npx 包名;可保留)
32
+ - **不覆盖**用户仓已有 `CLAUDE.md` / `AGENTS.md` 全文;**产品块外**手写保持不变
33
+ - **仓内定制(v2.22+)**:使用 `<!-- cyning-harness-local:begin -->` … `<!-- cyning-harness-local:end -->`,且须在产品 begin/end **之外**。sync **永不**改写 local 块;若误写在产品块内,apply 会尝试 **salvage** 到产品块外。
34
+ - G-L / 图谱模块页路径:`.cyning-harness/profile.json` 的可选 `"graph_modules_path"` 字段(旧包默认 `01_struct`)与 FRAGMENT 占位替换链 **当前不支持**(旧包 cyning-harness 史实机制,本包未接线;sync 仅生成 `invoke_index.json`,不读 profile.json、不写任何 FRAGMENT)。
35
+ - **首次迁入操作序(推荐)**:先迁 profile/local 并 **git commit**,再 `npx spec-wave upgrade --yes`。`upgrade` 当前仅改写 `.cyning-harness/manifest.json`(src/cli.ts#155-178),**无 git-clean 前置检查**(脏树拦截本包未接线);git commit 为推荐操作纪律,非本包强制。
36
+
37
+ ## 手工嵌入(备查)
38
+
39
+ 从已安装的 npm 包复制(路径相对消费者仓根):
40
+
41
+ ```bash
42
+ mkdir -p .cursor/rules
43
+ cp node_modules/spec-wave/assets/ide/adapters/cursor-harness-starter.mdc.example \
44
+ .cursor/rules/05-harness-starter.mdc
45
+ ```
46
+
47
+ 或从本仓库源树:
48
+
49
+ ```bash
50
+ cp assets/ide/adapters/cursor-harness-starter.mdc.example .cursor/rules/05-harness-starter.mdc
51
+ ```
52
+
53
+ ## 纪律(D3)
54
+
55
+ - **多入口仅 POINTER** — 不在各 IDE 文件重复 L1/L2 全文
56
+ - 过程轨(task、invoke、CI)**与 IDE 无关**
57
+ - 向导 **默认不全选** IDE;按实际编辑器勾选
@@ -0,0 +1,39 @@
1
+ ---
2
+ description: Harness Starter — 读序、task、人工闸与 Verify 纪律(嵌入业务仓 · Cursor)
3
+ alwaysApply: true
4
+ globs:
5
+ - "**/*"
6
+ ---
7
+
8
+ # Harness Starter(业务仓 · Cursor)
9
+
10
+ > **单源真值**:`docs/coding_wiki/` 读序 + `docs/standards/` + `AGENTS.md`。
11
+ > **本规则**:摘要 + **POINTER**;条文真值在 `docs/harness/prompts/`。
12
+ > **仓内定制(v2.22+)**:勿改本文件作仓特异词(upgrade 全量 `cp`);关键词放 `AGENTS.md` 的 local 块或仓内非 sync 文档。
13
+
14
+ ## 执行 task 前
15
+
16
+ 1. Open Folder = **本仓根**
17
+ 2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
18
+ 3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非** invoke 字面 `approved`):
19
+ - 运行 `npx spec-wave verify --target . --task docs/tasks/active/task_*.md`
20
+ - 首输出闸扫描 · `FRAGMENT_30_gate_verify_v1_zh.md`
21
+ - **`HG-AUDIT-R1` pending** → **30 拒改码**
22
+ - 声称与 task 表冲突 → **STOP**
23
+ 4. 过程 invoke:`docs/harness/invokes/by-task/<task_slug>/`
24
+
25
+ ## Verify(合并前)
26
+
27
+ | 栈 | 命令(与 `.github/workflows/` 一致) |
28
+ |----|--------------------------------------|
29
+ | 前端 | `pnpm lint` → `pnpm test` → `pnpm build` |
30
+ | 后端 | `pytest tests`(按仓 marker 裁剪) |
31
+ | iOS | `xcodebuild`(见 task `test_strategy_note`) |
32
+
33
+ ## 关键词
34
+
35
+ `Harness`、`task`、`invoke`、`HG-AUDIT-R1`、`HG-GRAPH-MODULES`、`human_gate`、`拒开工`
36
+
37
+ ## 完整库 POINTER
38
+
39
+ 工作区:`docs/harness/prompts/`(22/30/TEMPLATE_30_gate_stop 等)
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: 指导应用 coding standards(POINTER;不静默改 S2)
3
+ kit_command_id: kit-apply-standards
4
+ ---
5
+
6
+ DSH 会话:请模型调用工具 apply_coding_standards(加载 ≠ 注入)。
7
+ 非 DSH:读 docs/standards/ 与 AGENTS.md(薄 POINTER,勿复制 L1/L2 全文)。
8
+
9
+ 禁止静默改写 S2 过程域:docs/tasks/、docs/harness/reviews/、docs/harness/invokes/by-task/。
10
+ 真值在包内 docs/standards/ 与仓内 AGENTS.md,本命令只编排、不替代闸。
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: 扫人工闸与 status(声称与闸表冲突则 STOP)
3
+ kit_command_id: kit-gate-status
4
+ ---
5
+
6
+ 1. 读现行 task 的人工闸表(真值在 task 文件,不在聊天声称)
7
+ 2. 必跑:npx spec-wave status --target . [--task <path>]
8
+ 3. 可选:npx spec-wave gate-check --task <path>
9
+ 4. 用户声称与闸表冲突 → STOP,以 task 表为准
10
+ 5. 勿复制 hat / L1 / L2 全文;POINTER:docs/harness/prompts/
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: 结构变更后编排 graph yaml check(CLI 真值)
3
+ kit_command_id: kit-graph-check
4
+ ---
5
+
6
+ 结构变更后:编排跑 `npx spec-wave graph yaml check`(按需 compile/export)。
7
+ 真值在 CLI;勿口头代过。POINTER:README graph 段 · 消费者仓 `docs/_tech_graph/`(若有)。
8
+ 禁止无闸 `kit-30` / `kit-publish`。
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: 00 只委派(POINTER → harness-00-delegate-only)
3
+ kit_command_id: kit-hat-00-delegate
4
+ ---
5
+
6
+ 你是 00 统筹时:读 skill `harness-00-delegate-only`(POINTER,勿贴 L1 全文)。
7
+ 已有 SPEC/task 初稿时禁止亲自实现,只委派子 Agent。
8
+ 本命令不授予 30 改码权;禁止无闸 `kit-30` / `kit-publish`。
9
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: 起草/修订 SPEC(POINTER → harness-10-spec)
3
+ kit_command_id: kit-hat-10-spec
4
+ ---
5
+
6
+ 你是 10-spec:读 skill `harness-10-spec`(POINTER,勿贴 L1 全文)。
7
+ 产出写消费者仓 `docs/spec/`;不代替闸签收。
8
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
9
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: 起草/修订 Harness task(POINTER → harness-10-task)
3
+ kit_command_id: kit-hat-10-task
4
+ ---
5
+
6
+ 你是 10-task:读 skill `harness-10-task`(POINTER,勿贴 L1 全文)。
7
+ 产出写 `docs/tasks/`;闸表字段以 task 真值为准。
8
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
9
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: 书面审查 SPEC(POINTER → harness-20-spec-audit)
3
+ kit_command_id: kit-hat-20-spec-audit
4
+ ---
5
+
6
+ 你是 20-spec-audit:读 skill `harness-20-spec-audit`(POINTER,勿贴 L1 全文)。
7
+ 审查落 `docs/harness/reviews/`;不代人改闸状态。
8
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
9
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: 书面审查 task(POINTER → harness-20-task-audit)
3
+ kit_command_id: kit-hat-20-task-audit
4
+ ---
5
+
6
+ 你是 20-task-audit:读 skill `harness-20-task-audit`(POINTER,勿贴 L1 全文)。
7
+ 审查落 `docs/harness/reviews/`;HG-AUDIT-R1 pending 时 30 仍拒改码。
8
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
9
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: 长对话丢帽时重锚(不替代 30 授权)
3
+ kit_command_id: kit-hat-reanchor
4
+ ---
5
+
6
+ 长对话丢失角色时:读 skill harness-hat-reanchor / FRAGMENT_hat_reanchor(POINTER,勿贴全文)。
7
+ 本命令不授予 30 改码权;HG-AUDIT-R1 pending 时仍拒改码。
8
+ 勿冒充 opsx 或其他产品的 slash 前缀。
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: 分清插件 init_coding_kit 与 CLI init(双入口不合并)
3
+ kit_command_id: kit-init-guide
4
+ ---
5
+
6
+ 双入口互不替代,禁止混成同一动词。
7
+
8
+ 插件面(DSH 会话):
9
+ - 工具名是 init_coding_kit(不是 CLI 子命令)
10
+ - 对话请模型调用该工具;不覆盖已有文件
11
+
12
+ CLI 面(Cursor / CI / 终端):
13
+ - npx spec-wave init --preset harness-only [--yes]
14
+ - 过程落盘根 .coding-kit/ ;不写 S2 过程域
15
+
16
+ 勿把 init_coding_kit 与 CLI init 写成同一步。POINTER:仓根 README「选哪条入口」。
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: sync prompts 纪律:默认 dry-run;conflict 不覆盖
3
+ kit_command_id: kit-sync-prompts-guide
4
+ ---
5
+
6
+ 先跑 `npx spec-wave sync prompts`(默认 dry-run)看清单;再按需 `--yes`。
7
+ 已存在且内容不同 → conflict,不覆盖,除非显式 `--force`。
8
+ 只写 Starter prompts 白名单;禁止写入 S2(tasks/reviews/invokes)。
9
+ 禁止无闸 `kit-30` / `kit-publish`。
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: 编排跑 dsh-coding-kit verify(failClosed;解释 exit 0/1/2)
3
+ kit_command_id: kit-verify
4
+ ---
5
+
6
+ 你是 ops 编排助手,不是门禁本身。Verify 真值在 CLI;禁止用本 markdown 假装闸过。
7
+
8
+ 1. Open Folder = 消费者仓根
9
+ 2. 确认 task 路径(默认 docs/tasks/active/ 下现行 task)
10
+ 3. 必跑:npx spec-wave verify --task <path>
11
+ 4. 按退出码汇报:
12
+ - 0 通过
13
+ - 1 用法错误或非阻断失败
14
+ - 2 门禁阻断(硬停,failClosed)
15
+ 5. CLI 未跑或 exit 不为 0 时,禁止宣称闸已通过
16
+ 6. 规范真值 POINTER:docs/standards/ · AGENTS.md · docs/harness/prompts/ ;勿粘贴 L1/L2/hat 全文
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "/kit-apply-standards"
3
+ id: "kit-apply-standards"
4
+ description: "指导应用 coding standards(POINTER;不静默改 S2)"
5
+ kit_command_id: kit-apply-standards
6
+ ---
7
+
8
+ DSH 会话:请模型调用工具 apply_coding_standards(加载 ≠ 注入)。
9
+ 非 DSH:读 docs/standards/ 与 AGENTS.md(薄 POINTER,勿复制 L1/L2 全文)。
10
+
11
+ 禁止静默改写 S2 过程域:docs/tasks/、docs/harness/reviews/、docs/harness/invokes/by-task/。
12
+ 真值在包内 docs/standards/ 与仓内 AGENTS.md,本命令只编排、不替代闸。
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "/kit-gate-status"
3
+ id: "kit-gate-status"
4
+ description: "扫人工闸与 status(声称与闸表冲突则 STOP)"
5
+ kit_command_id: kit-gate-status
6
+ ---
7
+
8
+ 1. 读现行 task 的人工闸表(真值在 task 文件,不在聊天声称)
9
+ 2. 必跑:npx spec-wave status --target . [--task <path>]
10
+ 3. 可选:npx spec-wave gate-check --task <path>
11
+ 4. 用户声称与闸表冲突 → STOP,以 task 表为准
12
+ 5. 勿复制 hat / L1 / L2 全文;POINTER:docs/harness/prompts/
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: "/kit-graph-check"
3
+ id: "kit-graph-check"
4
+ description: "结构变更后编排 graph yaml check(CLI 真值)"
5
+ kit_command_id: kit-graph-check
6
+ ---
7
+
8
+ 结构变更后:编排跑 `npx spec-wave graph yaml check`(按需 compile/export)。
9
+ 真值在 CLI;勿口头代过。POINTER:README graph 段 · 消费者仓 `docs/_tech_graph/`(若有)。
10
+ 禁止无闸 `kit-30` / `kit-publish`。
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: "/kit-hat-00-delegate"
3
+ id: "kit-hat-00-delegate"
4
+ description: "00 只委派(POINTER → harness-00-delegate-only)"
5
+ kit_command_id: kit-hat-00-delegate
6
+ ---
7
+
8
+ 你是 00 统筹时:读 skill `harness-00-delegate-only`(POINTER,勿贴 L1 全文)。
9
+ 已有 SPEC/task 初稿时禁止亲自实现,只委派子 Agent。
10
+ 本命令不授予 30 改码权;禁止无闸 `kit-30` / `kit-publish`。
11
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: "/kit-hat-10-spec"
3
+ id: "kit-hat-10-spec"
4
+ description: "起草/修订 SPEC(POINTER → harness-10-spec)"
5
+ kit_command_id: kit-hat-10-spec
6
+ ---
7
+
8
+ 你是 10-spec:读 skill `harness-10-spec`(POINTER,勿贴 L1 全文)。
9
+ 产出写消费者仓 `docs/spec/`;不代替闸签收。
10
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
11
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: "/kit-hat-10-task"
3
+ id: "kit-hat-10-task"
4
+ description: "起草/修订 Harness task(POINTER → harness-10-task)"
5
+ kit_command_id: kit-hat-10-task
6
+ ---
7
+
8
+ 你是 10-task:读 skill `harness-10-task`(POINTER,勿贴 L1 全文)。
9
+ 产出写 `docs/tasks/`;闸表字段以 task 真值为准。
10
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
11
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: "/kit-hat-20-spec-audit"
3
+ id: "kit-hat-20-spec-audit"
4
+ description: "书面审查 SPEC(POINTER → harness-20-spec-audit)"
5
+ kit_command_id: kit-hat-20-spec-audit
6
+ ---
7
+
8
+ 你是 20-spec-audit:读 skill `harness-20-spec-audit`(POINTER,勿贴 L1 全文)。
9
+ 审查落 `docs/harness/reviews/`;不代人改闸状态。
10
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
11
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: "/kit-hat-20-task-audit"
3
+ id: "kit-hat-20-task-audit"
4
+ description: "书面审查 task(POINTER → harness-20-task-audit)"
5
+ kit_command_id: kit-hat-20-task-audit
6
+ ---
7
+
8
+ 你是 20-task-audit:读 skill `harness-20-task-audit`(POINTER,勿贴 L1 全文)。
9
+ 审查落 `docs/harness/reviews/`;HG-AUDIT-R1 pending 时 30 仍拒改码。
10
+ 本命令不授予 30 改码权;禁止无闸 `kit-30`。
11
+ 勿冒充 opsx / speckit 前缀。
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: "/kit-hat-reanchor"
3
+ id: "kit-hat-reanchor"
4
+ description: "长对话丢帽时重锚(不替代 30 授权)"
5
+ kit_command_id: kit-hat-reanchor
6
+ ---
7
+
8
+ 长对话丢失角色时:读 skill harness-hat-reanchor / FRAGMENT_hat_reanchor(POINTER,勿贴全文)。
9
+ 本命令不授予 30 改码权;HG-AUDIT-R1 pending 时仍拒改码。
10
+ 勿冒充 opsx 或其他产品的 slash 前缀。
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: "/kit-init-guide"
3
+ id: "kit-init-guide"
4
+ description: "分清插件 init_coding_kit 与 CLI init(双入口不合并)"
5
+ kit_command_id: kit-init-guide
6
+ ---
7
+
8
+ 双入口互不替代,禁止混成同一动词。
9
+
10
+ 插件面(DSH 会话):
11
+ - 工具名是 init_coding_kit(不是 CLI 子命令)
12
+ - 对话请模型调用该工具;不覆盖已有文件
13
+
14
+ CLI 面(Cursor / CI / 终端):
15
+ - npx spec-wave init --preset harness-only [--yes]
16
+ - 过程落盘根 .coding-kit/ ;不写 S2 过程域
17
+
18
+ 勿把 init_coding_kit 与 CLI init 写成同一步。POINTER:仓根 README「选哪条入口」。
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: "/kit-sync-prompts-guide"
3
+ id: "kit-sync-prompts-guide"
4
+ description: "sync prompts 纪律:默认 dry-run;conflict 不覆盖"
5
+ kit_command_id: kit-sync-prompts-guide
6
+ ---
7
+
8
+ 先跑 `npx spec-wave sync prompts`(默认 dry-run)看清单;再按需 `--yes`。
9
+ 已存在且内容不同 → conflict,不覆盖,除非显式 `--force`。
10
+ 只写 Starter prompts 白名单;禁止写入 S2(tasks/reviews/invokes)。
11
+ 禁止无闸 `kit-30` / `kit-publish`。
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: "/kit-verify"
3
+ id: "kit-verify"
4
+ description: "编排跑 dsh-coding-kit verify(failClosed;解释 exit 0/1/2)"
5
+ kit_command_id: kit-verify
6
+ ---
7
+
8
+ 你是 ops 编排助手,不是门禁本身。Verify 真值在 CLI;禁止用本 markdown 假装闸过。
9
+
10
+ 1. Open Folder = 消费者仓根
11
+ 2. 确认 task 路径(默认 docs/tasks/active/ 下现行 task)
12
+ 3. 必跑:npx spec-wave verify --task <path>
13
+ 4. 按退出码汇报:
14
+ - 0 通过
15
+ - 1 用法错误或非阻断失败
16
+ - 2 门禁阻断(硬停,failClosed)
17
+ 5. CLI 未跑或 exit 不为 0 时,禁止宣称闸已通过
18
+ 6. 规范真值 POINTER:docs/standards/ · AGENTS.md · docs/harness/prompts/ ;勿粘贴 L1/L2/hat 全文
@@ -0,0 +1,113 @@
1
+ # Host-adapt · 落点矩阵与 CLI(2.1.1)
2
+
3
+ > 适配表示例:[`examples/mvp-hosts.yaml`](./examples/mvp-hosts.yaml)
4
+ > Schema:[`host-adapt.schema.json`](./host-adapt.schema.json)
5
+ > 仓根叙事:README「一包多宿主」· 录屏清单:[`../../../docs/guides/DOGFOOD_host_adapt_cursor_claude_录屏清单_v1_zh.md`](../../../docs/guides/DOGFOOD_host_adapt_cursor_claude_录屏清单_v1_zh.md)
6
+ > 规划:[`../../../docs/roadmap/PLAN_2_1_1_host_tools_ux_v1_zh.md`](../../../docs/roadmap/PLAN_2_1_1_host_tools_ux_v1_zh.md)
7
+
8
+ ## CLI
9
+
10
+ ```bash
11
+ npx spec-wave host validate [--file PATH] [--json]
12
+ npx spec-wave host apply --tools cursor,claude[,dsh,agents|all] --profile core|expanded [--dry-run|--yes]
13
+ npx spec-wave host update [--tools LIST|all] [--profile core|expanded] [--yes] [--force]
14
+ npx spec-wave init --preset harness-only [--tools all|none|LIST] [--profile core|expanded] [--host-adapt|--no-host-adapt] [--yes]
15
+ ```
16
+
17
+ - 默认 **dry-run**;`--yes` 才写盘(`host apply` / `host update`)。
18
+ - **U-01**:表 version / 可选 `dsh-tools` peer 不匹配 → exit **2**、零写入。
19
+ - 默认**跳过** `harness-30-execute` / `harness-40-self-check`(与 `skills install` 同口径)。
20
+ - **`expanded`**:在 core 之上物化 `kit-hat-*`(及 `kit-graph-check` / `kit-sync-prompts-guide`);禁 `kit-30` / `kit-publish`。
21
+ - **无 postinstall** 静默写盘;装包 ≠ 物化。
22
+
23
+ ### `--tools` 词表
24
+
25
+ | 值 | 含义 |
26
+ |----|------|
27
+ | `cursor,claude,dsh` | 逗号列表(`host apply` **须**显式传) |
28
+ | `all` | 适配表全部 `host_id` |
29
+ | `none` | **仅 `init`**:跳过 host 物化(只做过程根) |
30
+
31
+ ## 粘性 · `.coding-kit/host-tools.json`
32
+
33
+ `host apply` / `host update` / `init`(含物化)在 **`--yes` 成功写盘** 后写入或更新:
34
+
35
+ ```json
36
+ {
37
+ "version": 1,
38
+ "host_ids": ["cursor", "claude", "dsh", "agents"],
39
+ "profile": "core",
40
+ "updated_at": "2026-09-10T00:00:00.000Z",
41
+ "kit_semver": "2.1.1"
42
+ }
43
+ ```
44
+
45
+ - 属过程根 `.coding-kit/`;**可入库**,便于团队同选型。
46
+ - dry-run **不**写粘性。
47
+ - `init --no-host-adapt`:**不** apply **亦**不写粘性(避免「记住了却未物化」)。
48
+ - `init --tools none`:只做过程根,不写粘性。
49
+
50
+ ## `host update` 解析序(方案 A · 相对 2.1.0 BREAKING 小)
51
+
52
+ 1. CLI 给了 `--tools`(含 `all`)→ 用 CLI
53
+ 2. 否则若粘性存在且 `host_ids.length ≥ 1` → 用粘性
54
+ 3. 否则 → **exit 1**(提示先 `apply` / `init`,或传 `--tools LIST` / `--tools all`)
55
+
56
+ 相对 **2.1.0**「省略 `--tools` = 适配表全量」:有粘性时 `host update --yes` **只**刷已选宿主;无粘性且无 `--tools` **不再**默默全表。
57
+
58
+ 升包后推荐:
59
+
60
+ ```bash
61
+ npx spec-wave@2.1.1 host update --yes
62
+ ```
63
+
64
+ ## `init` 选型(对齐 OpenSpec)
65
+
66
+ | 环境 | 无 `--tools` |
67
+ |------|----------------|
68
+ | TTY | **默认询问**(多选 cursor / claude / dsh / agents / all / none) |
69
+ | 非 TTY / CI | **exit 1** · 须显式 `--tools all\|none\|LIST` |
70
+
71
+ ```bash
72
+ # 非交互:过程根 + 物化
73
+ npx spec-wave init --preset harness-only --tools cursor,claude,dsh --yes
74
+
75
+ # 非交互:仅过程根
76
+ npx spec-wave init --preset harness-only --tools none --yes
77
+ ```
78
+
79
+ `tools≠none` 且未 `--no-host-adapt` → 同进程 `host apply` + 写粘性。
80
+
81
+ ## 宿主 × 表面(MVP)
82
+
83
+ | host_id | always_on | commands (core) | skills |
84
+ |---------|-----------|-----------------|--------|
85
+ | `cursor` | `.cursor/rules/*.mdc` | `.cursor/commands/kit-*.md` | `.cursor/skills` |
86
+ | `claude` | `CLAUDE.md`(marker merge) | `.claude/commands/kit/<verb>.md`(`/kit:verb`) | `.claude/skills` |
87
+ | `dsh` | (可空) | **`[]`(禁止 `.dsh/commands`)** | `.dsh/skills`:帽子 `assets/skills/*` **+** 编排 `assets/ide/skills-orch/*`(`/kit-*`) |
88
+ | `agents` | `AGENTS.md`(产品 marker + **local** 定制) | 可空 | `.agents/skills` |
89
+
90
+ Core 五命令:`kit-apply-standards` · `kit-verify` · `kit-gate-status` · `kit-init-guide` · `kit-hat-reanchor`(前缀 **`kit-`**;禁止冒充 `opsx-*`)。
91
+ Expanded(`--profile expanded`):`kit-hat-00-delegate` · `kit-hat-10-spec` · `kit-hat-10-task` · `kit-hat-20-spec-audit` · `kit-hat-20-task-audit` · `kit-graph-check` · `kit-sync-prompts-guide`。
92
+
93
+ ## 纪律
94
+
95
+ - **S2**(`docs/tasks` / reviews / invokes)永不作为物化 target。
96
+ - **local** 块(`cyning-harness-local`)永不覆写。
97
+ - **update**:conflict 默认 skip;`--force` 显式覆盖并备份 `.coding-kit/backups/host-update/`。
98
+
99
+ ## 本仓 dogfood(最短路径)
100
+
101
+ `dsh-coding-kit` **源码仓也是消费者**。发版后或改 assets 后在仓根:
102
+
103
+ ```bash
104
+ # 首次 / 改选型
105
+ node ./lib/cli.js host apply --tools cursor,claude,dsh,agents --profile core --yes
106
+ # 或:npx spec-wave@2.1.1 host apply --tools cursor,claude,dsh,agents --profile core --yes
107
+
108
+ # 升包后只刷已选(读粘性;不必再抄 LIST)
109
+ npx spec-wave@2.1.1 host update --yes
110
+ ```
111
+
112
+ 落点(`.cursor/` · `.claude/` · `.dsh/` · `.agents/` · `CLAUDE.md` · `AGENTS.md`)**应入库**。
113
+ **`AGENTS.md`**:上方 harness 产品块 = 通用 Agent 入口;仓特定导航写在 `cyning-harness-local` 块(upgrade 不覆写)。真值源仍是 `assets/`。
@@ -0,0 +1,78 @@
1
+ # Host-adapt 声明式适配表 · MVP 宿主(dsh / cursor / claude / agents)
2
+ # 校验:npx spec-wave host validate [--file PATH]
3
+ # 物化:npx spec-wave host apply --tools cursor,claude --profile core|expanded [--dry-run|--yes]
4
+ # 刷新:npx spec-wave host update [--tools LIST] [--profile core|expanded] [--dry-run|--yes] [--force]
5
+ # schema:../host-adapt.schema.json
6
+ # skills 落点矩阵:../README.md
7
+ version: "1"
8
+ hosts:
9
+ - host_id: dsh
10
+ surfaces:
11
+ always_on: []
12
+ skills:
13
+ # 帽子六条(跳过 30/40)
14
+ - target_dir: .dsh/skills
15
+ from: assets/skills/*
16
+ # 编排五条(B-DSH-ORCH=B · /kit-* skill;上游无 .dsh/commands)
17
+ - target_dir: .dsh/skills
18
+ from: assets/ide/skills-orch/*
19
+ # DSH:slash 发现根 = .dsh/skills;commands 必须空
20
+ commands: []
21
+ verify:
22
+ kind: cli
23
+ bin: dsh-coding-kit
24
+ failClosed: true
25
+
26
+ - host_id: cursor
27
+ surfaces:
28
+ always_on:
29
+ - target: .cursor/rules/05-kit-starter.mdc
30
+ source: assets/ide/adapters/cursor-harness-starter.mdc.example
31
+ skills:
32
+ - target_dir: .cursor/skills
33
+ from: assets/skills/*
34
+ commands:
35
+ - target_dir: .cursor/commands
36
+ from: assets/ide/commands/cursor/*
37
+ profile: core
38
+ - target_dir: .cursor/commands
39
+ from: assets/ide/commands/cursor/*
40
+ profile: expanded
41
+ verify:
42
+ kind: cli
43
+ bin: dsh-coding-kit
44
+ failClosed: true
45
+
46
+ - host_id: claude
47
+ surfaces:
48
+ always_on:
49
+ - target: CLAUDE.md
50
+ source: assets/ide/adapters/CLAUDE.md.fragment.example
51
+ skills:
52
+ - target_dir: .claude/skills
53
+ from: assets/skills/*
54
+ commands:
55
+ - target_dir: .claude/commands/kit
56
+ from: assets/ide/commands/claude/kit/*
57
+ profile: core
58
+ - target_dir: .claude/commands/kit
59
+ from: assets/ide/commands/claude/kit/*
60
+ profile: expanded
61
+ verify:
62
+ kind: cli
63
+ bin: dsh-coding-kit
64
+ failClosed: true
65
+
66
+ - host_id: agents
67
+ surfaces:
68
+ always_on:
69
+ - target: AGENTS.md
70
+ source: assets/ide/adapters/AGENTS.md.fragment.example
71
+ skills:
72
+ - target_dir: .agents/skills
73
+ from: assets/skills/*
74
+ commands: []
75
+ verify:
76
+ kind: cli
77
+ bin: dsh-coding-kit
78
+ failClosed: true