create-harness-vibe-coding 0.8.17 → 0.8.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 (150) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README-CN.md +2 -0
  3. package/README.md +3 -0
  4. package/package.json +5 -2
  5. package/src/generator.js +613 -97
  6. package/src/index.js +556 -309
  7. package/src/prompts.js +18 -0
  8. package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js +17 -0
  9. package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js.map +1 -0
  10. package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js +7 -0
  11. package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js.map +1 -0
  12. package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js +12 -0
  13. package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js.map +1 -0
  14. package/src/ui/dist/assets/TaskList-BN4r8s1i.js +50 -0
  15. package/src/ui/dist/assets/TaskList-BN4r8s1i.js.map +1 -0
  16. package/src/ui/dist/assets/TerminalDrawer-6GBZ9nXN.css +32 -0
  17. package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js +74 -0
  18. package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js.map +1 -0
  19. package/src/ui/dist/assets/WorkflowRoute-BnuhLJ6X.css +1 -0
  20. package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js +39 -0
  21. package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js.map +1 -0
  22. package/src/ui/dist/assets/index-BOVYWntB.js +117 -0
  23. package/src/ui/dist/assets/index-BOVYWntB.js.map +1 -0
  24. package/src/ui/dist/assets/index-DaUObq0H.css +1 -0
  25. package/src/ui/dist/assets/maximize-2-LNrr_rKr.js +7 -0
  26. package/src/ui/dist/assets/maximize-2-LNrr_rKr.js.map +1 -0
  27. package/src/ui/dist/assets/plus-QuTJyoT3.js +7 -0
  28. package/src/ui/dist/assets/plus-QuTJyoT3.js.map +1 -0
  29. package/src/ui/dist/assets/proxy-D0vUbds5.js +2 -0
  30. package/src/ui/dist/assets/proxy-D0vUbds5.js.map +1 -0
  31. package/src/ui/dist/assets/refresh-cw-JNmExijd.js +7 -0
  32. package/src/ui/dist/assets/refresh-cw-JNmExijd.js.map +1 -0
  33. package/src/ui/dist/assets/terminal-BBQvnOAK.js +7 -0
  34. package/src/ui/dist/assets/terminal-BBQvnOAK.js.map +1 -0
  35. package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js +7 -0
  36. package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js.map +1 -0
  37. package/src/ui/dist/assets/x-DoIOGAJz.js +7 -0
  38. package/src/ui/dist/assets/x-DoIOGAJz.js.map +1 -0
  39. package/src/ui/dist/index.html +18 -0
  40. package/src/ui/index.html +17 -0
  41. package/src/ui/package.json +33 -0
  42. package/src/ui/pnpm-lock.yaml +1582 -0
  43. package/src/ui/pnpm-workspace.yaml +2 -0
  44. package/src/ui/src/App.tsx +86 -0
  45. package/src/ui/src/api.ts +93 -0
  46. package/src/ui/src/components/AgentsRoute.tsx +503 -0
  47. package/src/ui/src/components/Footer.tsx +69 -0
  48. package/src/ui/src/components/Header.tsx +175 -0
  49. package/src/ui/src/components/LoadingView.tsx +22 -0
  50. package/src/ui/src/components/RolesRoute.tsx +169 -0
  51. package/src/ui/src/components/SettingsRoute.tsx +166 -0
  52. package/src/ui/src/components/TaskList.tsx +388 -0
  53. package/src/ui/src/components/TerminalDrawer.tsx +611 -0
  54. package/src/ui/src/components/WorkflowRoute.tsx +670 -0
  55. package/src/ui/src/hooks/useReducedMotion.ts +17 -0
  56. package/src/ui/src/hooks/useServerConnection.ts +114 -0
  57. package/src/ui/src/index.css +281 -0
  58. package/src/ui/src/main.tsx +11 -0
  59. package/src/ui/src/types.ts +108 -0
  60. package/src/ui/tsconfig.json +21 -0
  61. package/src/ui/vite.config.ts +19 -0
  62. package/src/wf-ui-server/__tests__/a2a-store.test.mjs +79 -0
  63. package/src/wf-ui-server/__tests__/peer-capsule.test.mjs +268 -0
  64. package/src/wf-ui-server/__tests__/pty-adapter.test.mjs +70 -0
  65. package/src/wf-ui-server/__tests__/runtime-config.test.mjs +43 -0
  66. package/src/wf-ui-server/__tests__/runtime-detector.test.mjs +90 -0
  67. package/src/wf-ui-server/__tests__/security.test.mjs +59 -0
  68. package/src/wf-ui-server/__tests__/server.integration.test.mjs +150 -0
  69. package/src/wf-ui-server/__tests__/session-registry.test.mjs +238 -0
  70. package/src/wf-ui-server/__tests__/settings.test.mjs +135 -0
  71. package/src/wf-ui-server/__tests__/task-parser.test.mjs +200 -0
  72. package/src/wf-ui-server/__tests__/terminal-store.test.mjs +138 -0
  73. package/src/wf-ui-server/__tests__/token.test.mjs +48 -0
  74. package/src/wf-ui-server/__tests__/ws-events.integration.test.mjs +419 -0
  75. package/src/wf-ui-server/__tests__/ws-terminal.integration.test.mjs +383 -0
  76. package/src/wf-ui-server/a2a-store.mjs +296 -0
  77. package/src/wf-ui-server/peer-capsule.mjs +213 -0
  78. package/src/wf-ui-server/pty-adapter.mjs +155 -0
  79. package/src/wf-ui-server/runtime-config.mjs +153 -0
  80. package/src/wf-ui-server/runtime-detector.mjs +374 -0
  81. package/src/wf-ui-server/security.mjs +67 -0
  82. package/src/wf-ui-server/server.mjs +849 -0
  83. package/src/wf-ui-server/session-registry.mjs +204 -0
  84. package/src/wf-ui-server/settings.mjs +100 -0
  85. package/src/wf-ui-server/task-parser.mjs +133 -0
  86. package/src/wf-ui-server/terminal-store.mjs +225 -0
  87. package/src/wf-ui-server/token.mjs +41 -0
  88. package/src/wf-ui-server/ws-events.mjs +354 -0
  89. package/src/wf-ui-server/ws-terminal.mjs +473 -0
  90. package/templates/common/.claude/commands/wf-command-create.md +58 -0
  91. package/templates/common/.claude/commands/wf-help.md +5 -0
  92. package/templates/common/.claude/commands/wf-task-archive.md +26 -0
  93. package/templates/common/.claude/commands/wf-task-list.md +26 -0
  94. package/templates/common/.claude/commands/wf-task-record.md +24 -0
  95. package/templates/common/.claude/commands/wf-ui.md +26 -0
  96. package/templates/common/.claude/commands/wf-update.md +54 -9
  97. package/templates/common/.claude/rules/ecc/common.md +1 -1
  98. package/templates/common/.claude/skills/wf-agents-docs/SKILL.md +15 -30
  99. package/templates/common/.claude/skills/wf-auto/SKILL.md +3 -3
  100. package/templates/common/.claude/skills/wf-auto-spark/SKILL.md +2 -2
  101. package/templates/common/.claude/skills/wf-command-create/SKILL.md +37 -0
  102. package/templates/common/.claude/skills/wf-max/SKILL.md +1 -1
  103. package/templates/common/.claude/skills/wf-review/SKILL.md +29 -2
  104. package/templates/common/.claude/skills/wf-task-archive/SKILL.md +28 -0
  105. package/templates/common/.claude/skills/wf-task-list/SKILL.md +28 -0
  106. package/templates/common/.claude/skills/wf-task-record/SKILL.md +28 -0
  107. package/templates/common/.claude/skills/wf-ui/SKILL.md +78 -0
  108. package/templates/common/.claude/skills/wf-update/SKILL.md +55 -58
  109. package/templates/common/.harness-version +105 -47
  110. package/templates/common/.opencode/commands/wf-command-create.md +61 -0
  111. package/templates/common/.opencode/commands/wf-help.md +5 -0
  112. package/templates/common/.opencode/commands/wf-task-archive.md +29 -0
  113. package/templates/common/.opencode/commands/wf-task-list.md +29 -0
  114. package/templates/common/.opencode/commands/wf-task-record.md +27 -0
  115. package/templates/common/.opencode/commands/wf-ui.md +26 -0
  116. package/templates/common/.opencode/commands/wf-update.md +54 -9
  117. package/templates/common/CLAUDE.md +8 -6
  118. package/templates/common/Harness/MEMORY.md +11 -0
  119. package/templates/common/Harness/README.md +21 -38
  120. package/templates/common/Harness/a2a/role-graph.json +79 -0
  121. package/templates/common/Harness/a2a/runtime-registry.json +5 -0
  122. package/templates/common/Harness/a2a/skills/terminal-control.json +15 -0
  123. package/templates/common/Harness/ownership.manifest.json +142 -2
  124. package/templates/common/Harness/scripts/README.md +134 -0
  125. package/templates/common/Harness/scripts/a2a-terminal.mjs +191 -0
  126. package/templates/common/Harness/scripts/context-budget.mjs +1 -1
  127. package/templates/common/Harness/scripts/sync-host-global.mjs +278 -0
  128. package/templates/common/Harness/scripts/task-state.mjs +949 -26
  129. package/templates/common/Harness/scripts/validate-harness.mjs +637 -62
  130. package/templates/common/Harness/scripts/wf-remove.mjs +42 -5
  131. package/templates/common/Harness/scripts/wf-update-check.mjs +37 -9
  132. package/templates/common/Harness/scripts/wf-update-runner.mjs +325 -0
  133. package/templates/common/Harness/settings.json +35 -0
  134. package/templates/common/Harness/specs/guides/SETUP.md +8 -0
  135. package/templates/common/Harness/specs/protocols/MEMORY_PROTOCOL.md +15 -0
  136. package/templates/common/Harness/specs/protocols/TASK_ARCHIVE.md +16 -5
  137. package/templates/common/Harness/specs/runtime/command-surface.json +229 -0
  138. package/templates/common/Harness/specs/runtime/subagents.md +6 -0
  139. package/templates/common/Harness/specs/workflows/WF-AUTO-SPARK.md +8 -8
  140. package/templates/common/Harness/specs/workflows/WF-AUTO.md +12 -12
  141. package/templates/common/Harness/specs/workflows/WF-MAX.md +5 -0
  142. package/templates/common/Harness/specs/workflows/WF-STATE.md +66 -0
  143. package/templates/common/Harness/tasks/_template/NAMING.md +16 -16
  144. package/templates/common/Harness/tasks/_template/PLAN.md +17 -60
  145. package/templates/common/Harness/tasks/_template/PROBLEM.md +18 -0
  146. package/templates/common/Harness/tasks/_template/PROGRESS.md +9 -14
  147. package/templates/common/Harness/tasks/_template/REFERENCES.md +26 -0
  148. package/templates/common/Harness/tasks/_template/STATE.json +6 -0
  149. package/templates/common/Harness/tasks/_template/ARTIFACTS.md +0 -3
  150. package/templates/common/Harness/tasks/_template/NOTES.md +0 -3
@@ -1,19 +1,21 @@
1
1
  {
2
- "generator": "0.8.17",
3
- "generated": "2026-07-26T09:26:35.146Z",
2
+ "generator": "0.8.19",
3
+ "generated": "2026-07-30T14:31:29.365Z",
4
4
  "options": [],
5
5
  "autoCheck": true,
6
6
  "source": "https://raw.githubusercontent.com/LiWeny16/create-harness-vibe-coding/main/templates/common/",
7
7
  "releaseNotes": {
8
- "version": "0.8.17",
9
- "date": "2026-07-26",
8
+ "version": "0.8.19",
9
+ "date": "2026-07-30",
10
10
  "highlights": [
11
- "Add HarnessBench v0.2 as an external-only lifecycle proof: 15 runs per mode, direct file writes safe in 3/15 runs, Harness safe path safe in 15/15 runs.",
12
- "Keep benchmark fixtures, raw results, and scorer scripts out of generated installs and npm package files while publishing the summary in README and README-CN.",
13
- "Make `wf-browser` the built-in browser automation entry and retire `browser-e2e` as a warning no-op optional id.",
14
- "Add `wf-help` compatibility surfaces for Claude, Codex, and OpenCode with guards against nonexistent OpenCode skill paths.",
15
- "Harden WF-MAX fan-out docs and OpenCode manager allowlists while preserving the Codex config guard against unsupported scalar subagent caps.",
16
- "Add deterministic task-state/archive reconciliation tooling and validators for active task consistency."
11
+ "Publish `$wf-ui` as the Harness control panel with task capsule observability, agent workflow hierarchy, runtime detection, real PTY-backed detected CLI launches, and multi-terminal peer sessions.",
12
+ "Bundle built `wf-ui` assets in the npm package and guard them with pack smoke coverage so installed `wf-ui` can serve the browser UI without a local frontend build.",
13
+ "Harden OTA updates with `--repair` mode so an already-version-bumped install can still diff and restore missing framework files such as `/wf-task-list`, `/wf-help`, and platform mirrors.",
14
+ "Add post-update manifest validation: `/wf-update` now requires `validate-harness.mjs --manifest-audit` after apply/finalize to catch missing framework files, stale Harness-owned files, and manifest coverage gaps.",
15
+ "Add multi-scope `/wf-update` routing: project installs update project + discovered global runtime, while uninstalled projects using global command surfaces update only the global runtime and host copies.",
16
+ "Add `sync-host-global.mjs` so global Claude/Codex/OpenCode command and skill copies are audited and repaired after runtime updates.",
17
+ "Keep `--repair` safe by refusing older remote sources and prerelease sources by default; repair can restore missing files but cannot silently downgrade a newer install.",
18
+ "Regenerate ownership manifests from the template source so `.claude`, `.codex`, `.agents`, `.opencode`, and Harness script/spec files are tracked as updateable framework files while tasks, memory, progress, and project user files remain preserved."
17
19
  ]
18
20
  },
19
21
  "moves": [
@@ -159,17 +161,22 @@
159
161
  "checksums": {
160
162
  ".agents/skills/subagent-orchestrator/SKILL.md": "sha256-6354018aaafd3d9f546eeecc90f943ef9a94d05747673369586a4a2f45a9464d",
161
163
  ".agents/skills/tdd/SKILL.md": "sha256-d6738eca127e0632474db67c25708c9db3feab3b55499c489518502ec8951e3a",
162
- ".agents/skills/wf-agents-docs/SKILL.md": "sha256-e0fe333aebae12a3e2cc6355e69237186a410f5d7a650ff5948ec132d9c630c4",
163
- ".agents/skills/wf-auto-spark/SKILL.md": "sha256-0afd699c52a45a4071bcecf09ee487adb6002be6c608fdf653fba1c0a00e4ec4",
164
- ".agents/skills/wf-auto/SKILL.md": "sha256-e62077d3c54d946f549c781fdf3f765c9a0ced41d0bedc96915b7167c3332987",
164
+ ".agents/skills/wf-agents-docs/SKILL.md": "sha256-20cd0d52d600ba9a61cbeb7fefea3beed213f77a87f23a1b534e6229949d5b01",
165
+ ".agents/skills/wf-auto-spark/SKILL.md": "sha256-4693db5b5a62d9385ede824c2ecfa84efbfa1d59a120377e216e4e920ccfc9db",
166
+ ".agents/skills/wf-auto/SKILL.md": "sha256-e148c86fba7873543afa1963808bf4f3dceab5864bba65665aae075ab8f2f838",
165
167
  ".agents/skills/wf-browser/SKILL.md": "sha256-0914538f7ae624b66cede82593f8063716c96c0f7b36adebbcf413c9e2a1d836",
168
+ ".agents/skills/wf-command-create/SKILL.md": "sha256-b8df91106d4ea161d659d1099a2ae509b8c81e9954946c2f53629ccbc5ffe70a",
166
169
  ".agents/skills/wf-help/SKILL.md": "sha256-418564cbe5e2df1e63fccdc9cd1cc12b05df9589836c6ff39ff43610eddf4e56",
167
170
  ".agents/skills/wf-learn/SKILL.md": "sha256-39e4bbe2da1261c02e37aa03ade0f9faaf6bc1f89568af1bb70f1af45d5f5bda",
168
- ".agents/skills/wf-max/SKILL.md": "sha256-7db71b3356cc442540e96b7931a6cf5c23d71fedfc53eabde8e99dbe4afe2c50",
171
+ ".agents/skills/wf-max/SKILL.md": "sha256-b3e2fe922c7d7d5effee6a2d51324ff54049e2d419dba2f74dda025ed529c561",
169
172
  ".agents/skills/wf-readme/SKILL.md": "sha256-32256ab8e87fc1c2606fd102d85b59fa0b406d88d5639c2f9ff2f02e83f7d81f",
170
173
  ".agents/skills/wf-remove/SKILL.md": "sha256-2de3d7b5cba2456a83aaa86487492a627d836526dbd2da1225cec9d7634b625c",
171
- ".agents/skills/wf-review/SKILL.md": "sha256-513ac34d7c6025f40f5457ffacf24df95ec248158660f1cd21225e00eda1800c",
172
- ".agents/skills/wf-update/SKILL.md": "sha256-98a762d8d13b2ad36331b97c94b0b28b3103ee091814cc2c3710861895611e14",
174
+ ".agents/skills/wf-review/SKILL.md": "sha256-11117d7de4cd3cfd1616538233487420fff5a5d2a91754a68dc3a3134d06d29e",
175
+ ".agents/skills/wf-task-archive/SKILL.md": "sha256-f1637ee8c56b1385aed5db9c93f74889c2542a85273fdc68c6a4975a906f1cd5",
176
+ ".agents/skills/wf-task-list/SKILL.md": "sha256-04bcae617ef70e6b46c267ed726f6e8352d2f0b72aaaa8a486e3a760a8144b48",
177
+ ".agents/skills/wf-task-record/SKILL.md": "sha256-7afb4a9f04da96e45b9159f596d00c563184a27aff538385519187f2868811f8",
178
+ ".agents/skills/wf-ui/SKILL.md": "sha256-13c95b09624e93cec1ef4a6ef05dcc6f909edeb13590b28b8acb145233c6eae9",
179
+ ".agents/skills/wf-update/SKILL.md": "sha256-2efdd15cd8a4a9ec6b239cd5880c19c89c2be5016123342040d178b59b36778f",
173
180
  ".agents/skills/wf/SKILL.md": "sha256-78cc8b5be329649508b9fa6856b50c709ae74fbc31a4c7b77a69c6552723e29b",
174
181
  ".claude/agents/architect-manager.md": "sha256-21f16d8d5e9d0a88d9663dbe798421501e0de89ccad5f8f3c1ef9db5b79edaf7",
175
182
  ".claude/agents/architect.md": "sha256-8a57c6a85ec21d49deaa37a73a81367dabfdb22efd781f58e66b6628e14b218c",
@@ -193,29 +200,39 @@
193
200
  ".claude/commands/wf-auto-spark.md": "sha256-503c88eba452f20ca04c32db734eed1c666a381bd6948c3ffe18f5c4a4255729",
194
201
  ".claude/commands/wf-auto.md": "sha256-06196a633eb0464ff152e7bfffabd76c09ab32a2aef9d84b82bbb4c204503226",
195
202
  ".claude/commands/wf-browser.md": "sha256-1cd46b259cb509af2d0bb1d105912889068611875c008e002598d0e7ed42cf52",
196
- ".claude/commands/wf-help.md": "sha256-282aa6162b736466847b82996b2c754afee5a3eaa827d234674315e4acbe6f1c",
203
+ ".claude/commands/wf-command-create.md": "sha256-b6027172e5d98c44f1ac22747a9ad52b27de15271018a60b10ac5b7c3d96f4a0",
204
+ ".claude/commands/wf-help.md": "sha256-3b15f9799da469e58a62b3360a7c0c29d15e578be364693e351afef66f6a5800",
197
205
  ".claude/commands/wf-learn.md": "sha256-02606f2a91e03056676aa022a060cd4a05a4d3123f8cb6f5e27bc50d90c6448a",
198
206
  ".claude/commands/wf-max.md": "sha256-88cdfb4ef8a205483045302b56dec268bdf010debd9c4473b665f5720e4c5697",
199
207
  ".claude/commands/wf-readme.md": "sha256-3eee1a6b3f62c22ed46440ed38ecb02999c9a3128d7660e91e7f0a94c59fa463",
200
208
  ".claude/commands/wf-remove.md": "sha256-80fe1849412028c9a91120143eeb10e153e6d7c32ec502c0d7ef3599d13fa337",
201
209
  ".claude/commands/wf-review.md": "sha256-bb031ffc8e392af2c1b2bb97b2f7605af1dcfa70514c6068312eca01f170e6d9",
202
- ".claude/commands/wf-update.md": "sha256-f6aa497209ad6c430771b5621720bca50bb06cf5ae3f40dfe1086f0372c232d7",
210
+ ".claude/commands/wf-task-archive.md": "sha256-95b7c0a7bb2946b8c6c57506726358e7cc57cc2d9b1b48bd43b102a9a77ca3da",
211
+ ".claude/commands/wf-task-list.md": "sha256-6d90efb0832a3a3e478c74101458026341f4966f01236c076859c8e562d13951",
212
+ ".claude/commands/wf-task-record.md": "sha256-e9fa479274bdece66afa631642a87c7e2500f1dc1e58b930660cebeef4eae748",
213
+ ".claude/commands/wf-ui.md": "sha256-faaef8c2ea6565be36582ce03a7dc9d4238a38b8d776a49e588f8a6df430b2d8",
214
+ ".claude/commands/wf-update.md": "sha256-48b82e5300cd5422396b8fc06dfaa2dd243e95a0891100e58715274da674e4b9",
203
215
  ".claude/commands/wf.md": "sha256-bef81f0404230ff0de64727d46aa947d7434d06fde8ad03c55db9ccf54870cca",
204
- ".claude/rules/ecc/common.md": "sha256-c1229d6b3aa34551bfbb3919a5c4cbfaab4c1e9db3d913c75e3a27a2d8d345fa",
216
+ ".claude/rules/ecc/common.md": "sha256-930bb10a68d38b59b91b2e7cded67e4e99a0bcc3f3c6c928ab033c5670dfd827",
205
217
  ".claude/settings.json": "sha256-99e8552584b8e71e3e11b4b760c3bfbf8c1b18dadda7ec3f6e3c46f88d9ea513",
206
218
  ".claude/skills/subagent-orchestrator/SKILL.md": "sha256-6354018aaafd3d9f546eeecc90f943ef9a94d05747673369586a4a2f45a9464d",
207
219
  ".claude/skills/tdd/SKILL.md": "sha256-d6738eca127e0632474db67c25708c9db3feab3b55499c489518502ec8951e3a",
208
- ".claude/skills/wf-agents-docs/SKILL.md": "sha256-e0fe333aebae12a3e2cc6355e69237186a410f5d7a650ff5948ec132d9c630c4",
209
- ".claude/skills/wf-auto-spark/SKILL.md": "sha256-0afd699c52a45a4071bcecf09ee487adb6002be6c608fdf653fba1c0a00e4ec4",
210
- ".claude/skills/wf-auto/SKILL.md": "sha256-e62077d3c54d946f549c781fdf3f765c9a0ced41d0bedc96915b7167c3332987",
220
+ ".claude/skills/wf-agents-docs/SKILL.md": "sha256-20cd0d52d600ba9a61cbeb7fefea3beed213f77a87f23a1b534e6229949d5b01",
221
+ ".claude/skills/wf-auto-spark/SKILL.md": "sha256-4693db5b5a62d9385ede824c2ecfa84efbfa1d59a120377e216e4e920ccfc9db",
222
+ ".claude/skills/wf-auto/SKILL.md": "sha256-e148c86fba7873543afa1963808bf4f3dceab5864bba65665aae075ab8f2f838",
211
223
  ".claude/skills/wf-browser/SKILL.md": "sha256-0914538f7ae624b66cede82593f8063716c96c0f7b36adebbcf413c9e2a1d836",
224
+ ".claude/skills/wf-command-create/SKILL.md": "sha256-b8df91106d4ea161d659d1099a2ae509b8c81e9954946c2f53629ccbc5ffe70a",
212
225
  ".claude/skills/wf-help/SKILL.md": "sha256-418564cbe5e2df1e63fccdc9cd1cc12b05df9589836c6ff39ff43610eddf4e56",
213
226
  ".claude/skills/wf-learn/SKILL.md": "sha256-39e4bbe2da1261c02e37aa03ade0f9faaf6bc1f89568af1bb70f1af45d5f5bda",
214
- ".claude/skills/wf-max/SKILL.md": "sha256-7db71b3356cc442540e96b7931a6cf5c23d71fedfc53eabde8e99dbe4afe2c50",
227
+ ".claude/skills/wf-max/SKILL.md": "sha256-b3e2fe922c7d7d5effee6a2d51324ff54049e2d419dba2f74dda025ed529c561",
215
228
  ".claude/skills/wf-readme/SKILL.md": "sha256-32256ab8e87fc1c2606fd102d85b59fa0b406d88d5639c2f9ff2f02e83f7d81f",
216
229
  ".claude/skills/wf-remove/SKILL.md": "sha256-2de3d7b5cba2456a83aaa86487492a627d836526dbd2da1225cec9d7634b625c",
217
- ".claude/skills/wf-review/SKILL.md": "sha256-513ac34d7c6025f40f5457ffacf24df95ec248158660f1cd21225e00eda1800c",
218
- ".claude/skills/wf-update/SKILL.md": "sha256-98a762d8d13b2ad36331b97c94b0b28b3103ee091814cc2c3710861895611e14",
230
+ ".claude/skills/wf-review/SKILL.md": "sha256-11117d7de4cd3cfd1616538233487420fff5a5d2a91754a68dc3a3134d06d29e",
231
+ ".claude/skills/wf-task-archive/SKILL.md": "sha256-f1637ee8c56b1385aed5db9c93f74889c2542a85273fdc68c6a4975a906f1cd5",
232
+ ".claude/skills/wf-task-list/SKILL.md": "sha256-04bcae617ef70e6b46c267ed726f6e8352d2f0b72aaaa8a486e3a760a8144b48",
233
+ ".claude/skills/wf-task-record/SKILL.md": "sha256-7afb4a9f04da96e45b9159f596d00c563184a27aff538385519187f2868811f8",
234
+ ".claude/skills/wf-ui/SKILL.md": "sha256-13c95b09624e93cec1ef4a6ef05dcc6f909edeb13590b28b8acb145233c6eae9",
235
+ ".claude/skills/wf-update/SKILL.md": "sha256-2efdd15cd8a4a9ec6b239cd5880c19c89c2be5016123342040d178b59b36778f",
219
236
  ".claude/skills/wf/SKILL.md": "sha256-78cc8b5be329649508b9fa6856b50c709ae74fbc31a4c7b77a69c6552723e29b",
220
237
  ".codex/config.toml": "sha256-b561d07aaba9bb32df0c48713f6a00be95462af9fa9383efb7cee89f9b24f9ba",
221
238
  ".codex/hooks.json": "sha256-3200c42c2da434c07cd6ab1ce86f8845ab46a1ed9a25b65117b2b2b42056c725",
@@ -241,53 +258,66 @@
241
258
  ".opencode/commands/wf-auto-spark.md": "sha256-503c88eba452f20ca04c32db734eed1c666a381bd6948c3ffe18f5c4a4255729",
242
259
  ".opencode/commands/wf-auto.md": "sha256-06196a633eb0464ff152e7bfffabd76c09ab32a2aef9d84b82bbb4c204503226",
243
260
  ".opencode/commands/wf-browser.md": "sha256-1cd46b259cb509af2d0bb1d105912889068611875c008e002598d0e7ed42cf52",
244
- ".opencode/commands/wf-help.md": "sha256-2d8c841555ae64ec5be2ad4cf2e126cc8db04ece71cb05948ef029f2e704308e",
261
+ ".opencode/commands/wf-command-create.md": "sha256-29b597b7c2c3b8a7e131365e1704855bbd2774511ed30cf99e398f77123e2981",
262
+ ".opencode/commands/wf-help.md": "sha256-05d4d2feca75b1f03eba3b28084504b5314a7fdc131db3f9f8c46c4b1bf7d0fe",
245
263
  ".opencode/commands/wf-learn.md": "sha256-02606f2a91e03056676aa022a060cd4a05a4d3123f8cb6f5e27bc50d90c6448a",
246
264
  ".opencode/commands/wf-max.md": "sha256-21ddf8d4eff7ce91948a41eb68cbc9d184349ca3a422c72950fc83a5039eb663",
247
265
  ".opencode/commands/wf-readme.md": "sha256-3eee1a6b3f62c22ed46440ed38ecb02999c9a3128d7660e91e7f0a94c59fa463",
248
266
  ".opencode/commands/wf-remove.md": "sha256-80fe1849412028c9a91120143eeb10e153e6d7c32ec502c0d7ef3599d13fa337",
249
267
  ".opencode/commands/wf-review.md": "sha256-bb031ffc8e392af2c1b2bb97b2f7605af1dcfa70514c6068312eca01f170e6d9",
250
- ".opencode/commands/wf-update.md": "sha256-f6aa497209ad6c430771b5621720bca50bb06cf5ae3f40dfe1086f0372c232d7",
268
+ ".opencode/commands/wf-task-archive.md": "sha256-eed9b41bd4fc9c4ca6d0b4aa2cc0492e7695173b6b5487a7a07683dec66de162",
269
+ ".opencode/commands/wf-task-list.md": "sha256-53e25781b9c9f9b12927f3291613a07029c2dfdef636350b0b779b4f7cca0a7f",
270
+ ".opencode/commands/wf-task-record.md": "sha256-c71c49e54f568eff816f5eea505d34a139e91f4f18aed504391ab6fa6afd539e",
271
+ ".opencode/commands/wf-ui.md": "sha256-faaef8c2ea6565be36582ce03a7dc9d4238a38b8d776a49e588f8a6df430b2d8",
272
+ ".opencode/commands/wf-update.md": "sha256-48b82e5300cd5422396b8fc06dfaa2dd243e95a0891100e58715274da674e4b9",
251
273
  ".opencode/commands/wf.md": "sha256-bef81f0404230ff0de64727d46aa947d7434d06fde8ad03c55db9ccf54870cca",
252
274
  ".opencode/plugins/harness-wf-status.mjs": "sha256-ee0987cec5530c34784c619a803562d7085ae26fe5d199fde7ce42c2bed4724e",
253
275
  "AGENTS.md": "sha256-fad176931742a5080e073d1ddba99a3eabb67e8c42bebb132df99a51ca6a184d",
254
- "CLAUDE.md": "sha256-cd6b736bf14b4f526223bf15dc7ec625eb4b3a868a4d5961f26484d6bbfb4dca",
255
- "Harness/MEMORY.md": "sha256-3acc3e8a9361765d226c8cd6967f48e3a71137aa6fdd48f20fdd4cdb8e32df68",
256
- "Harness/README.md": "sha256-9df70490126ba229c4eb5dee6a59becbd16fb7bce8dc5a1c818a868c40908cd8",
257
- "Harness/ownership.manifest.json": "sha256-4d7fa59b87768cd23bf2ca3c9b140cbd936da57586988bc557b0fad31d74794e",
276
+ "CLAUDE.md": "sha256-d5c527cc412054cbce6edc1c4e9476c001156117562108f5bdaf6f7f8a8827e9",
277
+ "Harness/MEMORY.md": "sha256-d998ab26fe1932b8bb6b55a4fcb4ba1c54ed4d2a633057ee0442d435c2add376",
278
+ "Harness/README.md": "sha256-59ea5524eee4a40586d3ebb79e35e1f0e53e8c3fa31a45c7c0d5e66aa339991f",
279
+ "Harness/a2a/role-graph.json": "sha256-bf4701253b5bfb3f6578eee0777cc10b250130acca2438fac6a5be31e38da34c",
280
+ "Harness/a2a/runtime-registry.json": "sha256-37b1fa4820ba3a4001b8ec9ec9a03dfdeb132379046792c21d5e1de0794fee90",
281
+ "Harness/a2a/skills/terminal-control.json": "sha256-07c66989c8a25344ddeabdbfaf1fc86f14750beb48ee8f99a970714ebcd5efb3",
282
+ "Harness/ownership.manifest.json": "sha256-b6808f7009294aa6a446c1b24f3669659060979148dfd6c30a9caea3b6e6efe7",
258
283
  "Harness/project/architecture.md": "sha256-27462306667539d71aecc4a90a778222f61585ef99e8131fb38f866913cac1c4",
259
284
  "Harness/research/README.md": "sha256-b7a542c0d919cabc185b6e7a1e6ef265dc5160978d0c1dd804f2c6547d0202a4",
285
+ "Harness/scripts/README.md": "sha256-b97601aca4c042f09aa387cdf8764a242a3e67d40888fd5eb27c1ff2c86926f6",
286
+ "Harness/scripts/a2a-terminal.mjs": "sha256-d99864265bf90bef86538b7f5ca10b9debf4fad343aac832d32cc6957605d247",
260
287
  "Harness/scripts/archive-tasks.mjs": "sha256-c5891c32d23f0b1bc863753d11116ab593928aa9ebedf2768b68b77e88c9909c",
261
- "Harness/scripts/context-budget.mjs": "sha256-079228fa11046c5e4ca7323ac09091b05a78efae03ce655fee0c608c6833c33f",
288
+ "Harness/scripts/context-budget.mjs": "sha256-7cf88703e55eaaf6abdd1b2bf314e15a94ec41da2d370ce560b60655988b102e",
262
289
  "Harness/scripts/l2-cache-telemetry.mjs": "sha256-139b5317eb3917f2ca0acd3cb1164170cc8c1dd60e0dee35f8d1596aed28c22c",
263
290
  "Harness/scripts/scan-clean.mjs": "sha256-6c4b2a4d15a8cd758214a360f8d3be11a835368d409c95719242c75ccf466c8a",
264
- "Harness/scripts/task-state.mjs": "sha256-409dfac45fb153ed648081bf1a3993c070b05473344fafe524ba2a96b9576934",
265
- "Harness/scripts/validate-harness.mjs": "sha256-7d12fcb23aeb70211f4086c6aa5c327ae48c81d4c4fd26c20dc2f16482c6e966",
291
+ "Harness/scripts/sync-host-global.mjs": "sha256-16bf56a1c348d0225e4093b364166f51b2148a6d75020e49431d9b31d4800518",
292
+ "Harness/scripts/task-state.mjs": "sha256-e911615ca8a0edea676b840ccf8164eb70cfb14a08871f3121c5ad10692aa657",
293
+ "Harness/scripts/validate-harness.mjs": "sha256-f511f92d73a78c21de7b6c8de8be8641605e51131f5b2e4e5accb127aa5dfffb",
266
294
  "Harness/scripts/wf-auto-update-prompt.mjs": "sha256-14210304dbd8e648b8939fc4c5d3664f943052153e689264c16b05b7b81bd39e",
267
- "Harness/scripts/wf-remove.mjs": "sha256-b043f84a69da54d0f137ce0c91ae7b55c0d76711680ee7bc8762a802be1ee8c8",
268
- "Harness/scripts/wf-update-check.mjs": "sha256-32e9ed19046ac9b4910a661dae8fc13c03a605912430009cc8f830c1fdab3984",
269
- "Harness/settings.json": "sha256-db6a14fcaaba3d2ac9c0c11bd11273bd016bcc16c154895d4c0b2a03ef51786e",
295
+ "Harness/scripts/wf-remove.mjs": "sha256-ba8711a74b88def50c4f94171d43ff01d6e3d67cd89644f19b701675362afb73",
296
+ "Harness/scripts/wf-update-check.mjs": "sha256-cfdccaeb8045a772a80f468f8b23fdb753b99bd89d3af72688c4abd241bd85a9",
297
+ "Harness/scripts/wf-update-runner.mjs": "sha256-2a197a6cd0ab5abbc2ad9359b78cc44db41b5789aabbb503f357ca1135c62444",
298
+ "Harness/settings.json": "sha256-5455b66125fd67969a6e490d3093ce238f7c16348f69a980a65ce22d99c0c728",
270
299
  "Harness/specs/guides/ECC-GUIDE.md": "sha256-eba123cad02dde928317b9347efac45daf33698221d2d91768559a1f0456cc97",
271
- "Harness/specs/guides/SETUP.md": "sha256-7747cd6ef3ef81ff15a893d3d4c428dbab9ba0ec8193aedb00d992fd268d7afb",
300
+ "Harness/specs/guides/SETUP.md": "sha256-2f33b14eec035c9603ad6355cecc109879e9320a7a29aa9e9be6bbc743362b38",
272
301
  "Harness/specs/guides/extension.md": "sha256-5bf5895f849b972e5bdd1afd1a6914cd743b88b05668bb72dca7cd835262e8c9",
273
302
  "Harness/specs/guides/lifecycle.md": "sha256-3bb2107af2ee569c905ca615d662ba9adfd606a595e45880cfc292779c5f1844",
274
303
  "Harness/specs/protocols/ACCEPTANCE_PROTOCOL.md": "sha256-0f7a21a1fbfdca6e5f28f3297b61c3446e3bdd552a2143c7032d6271a4e26103",
275
304
  "Harness/specs/protocols/AGENT_ISOLATION.md": "sha256-54abcd4fdaf8810ab42da8a7f2ab5b5f5305f105f93e8764081b10edce053506",
276
305
  "Harness/specs/protocols/DEBUG_PROTOCOL.md": "sha256-ed80de0e3e1a40dbb9fd0bdead9174f1650e1833027f3d7fb4bb5884142e03f7",
277
306
  "Harness/specs/protocols/HARNESS_BRIDGE.md": "sha256-681dbeca9a590bbeb3a0c01b044e40e642e6d640632d8611064eb897ada8a48d",
278
- "Harness/specs/protocols/MEMORY_PROTOCOL.md": "sha256-c8cda68bf25fbf7152c6049959a8bd6d39453976a651a1c4a9d3f7e349f823c4",
279
- "Harness/specs/protocols/TASK_ARCHIVE.md": "sha256-6ed563dfd2fea754373fea3905c5cfa9534a650c104783b9bf704d81b44864ba",
307
+ "Harness/specs/protocols/MEMORY_PROTOCOL.md": "sha256-5542c5007f278e0d83627d831beff4eaa58e2bc256f7962f562050de124e24d9",
308
+ "Harness/specs/protocols/TASK_ARCHIVE.md": "sha256-93f926df3fdea1510535ac5ab8efeba347c67c1d289afc0e46d4d2175a2e3699",
280
309
  "Harness/specs/protocols/TDD-GUIDE.md": "sha256-602084530fd0dea7499a023ce75738351e5d97a0c222b64d405f36da6b59a162",
281
310
  "Harness/specs/runtime/agent-workflow.md": "sha256-9e6390715a9c2e404923d17e12369fe5af22c9a615ab14a010a8d6da0974c987",
311
+ "Harness/specs/runtime/command-surface.json": "sha256-70da5001e2a05a636050f0df9e129ea67c06953b649d2c0b9d2001ccc484c265",
282
312
  "Harness/specs/runtime/context-loading.md": "sha256-323e9476486ebf60cfd9fd78834701817f882648749cd548dd7a47670fce0bd6",
283
313
  "Harness/specs/runtime/dispatch.md": "sha256-1b1c2681c2722b8d708f8cca48ec1991ee922602c4c7333704f0156f6ffa498f",
284
- "Harness/specs/runtime/subagents.md": "sha256-6db97dd3a72c28f4ec24a56ea031de9f6ecb0eb4c72427e6409731cf45dab323",
314
+ "Harness/specs/runtime/subagents.md": "sha256-bb71ae927dd5f4656f97a78797b1d776618a39b26a7364a256cbcf38db427e71",
285
315
  "Harness/specs/workflows/WF-AUTO-ANGLES.md": "sha256-b9641d871f728e8112ad0d8c7f87bcbec0a06aa572c5f3060efdd26496abdf9b",
286
- "Harness/specs/workflows/WF-AUTO-SPARK.md": "sha256-dfe7e31373ccc9dea2d552649ec21dff91bca723316655788e82ab37cf0d33e5",
287
- "Harness/specs/workflows/WF-AUTO.md": "sha256-742e949bf77259997d662447f5b7c5627d8459f0b7aed96748cdb2de9c3bcfa9",
316
+ "Harness/specs/workflows/WF-AUTO-SPARK.md": "sha256-49a6272f9c40d9bd0ae22ae39d576bf3c6479bb9cbc56a24e8b62b31cdabf72c",
317
+ "Harness/specs/workflows/WF-AUTO.md": "sha256-78d1be4bfbc6618acc75d09f1f19016d741552924958ca2739ba9f3fd05c4d19",
288
318
  "Harness/specs/workflows/WF-KERNEL.md": "sha256-70d608b12ab977c5dfb7038fb7677123bd39f29fb645b3046abbde7fa28d69a7",
289
- "Harness/specs/workflows/WF-MAX.md": "sha256-199756c87024e62f54bc97fbcba255de18f7e2bb45eaa85b7f8658ebea0df6d7",
290
- "Harness/specs/workflows/WF-STATE.md": "sha256-d787e61be1a708b46bd5c6dab5ecaf3a668835a1273b1ac4475a3ccc4339f62e",
319
+ "Harness/specs/workflows/WF-MAX.md": "sha256-4584a0870138db80d507dcfcebb32f34dfb6c9a4a3b154faad15f621b66536e7",
320
+ "Harness/specs/workflows/WF-STATE.md": "sha256-7108775358b44229302d3271083b349648d44b1c61de89167e4e99346821bf2a",
291
321
  "Harness/specs/workflows/WF.md": "sha256-d33e9ff55e67a34a862a896693cb55aeae8f73dd7d0ede561943674dd3e6d212",
292
322
  "Harness/templates/ACCEPTANCE.template.md": "sha256-394a6c08b155b1d121f1d51da774f7988bdb891224c6d5f2ca2c131e8c95ffb3",
293
323
  "Harness/templates/API_CONTRACT.template.md": "sha256-e11ec9866576624982f35e77359e3f4ef3aea3e3f6b5895f6cc5419d29699fc5",
@@ -305,12 +335,17 @@
305
335
  ".agents/skills/wf-auto-spark/SKILL.md": ".claude/skills/wf-auto-spark/SKILL.md",
306
336
  ".agents/skills/wf-auto/SKILL.md": ".claude/skills/wf-auto/SKILL.md",
307
337
  ".agents/skills/wf-browser/SKILL.md": ".claude/skills/wf-browser/SKILL.md",
338
+ ".agents/skills/wf-command-create/SKILL.md": ".claude/skills/wf-command-create/SKILL.md",
308
339
  ".agents/skills/wf-help/SKILL.md": ".claude/skills/wf-help/SKILL.md",
309
340
  ".agents/skills/wf-learn/SKILL.md": ".claude/skills/wf-learn/SKILL.md",
310
341
  ".agents/skills/wf-max/SKILL.md": ".claude/skills/wf-max/SKILL.md",
311
342
  ".agents/skills/wf-readme/SKILL.md": ".claude/skills/wf-readme/SKILL.md",
312
343
  ".agents/skills/wf-remove/SKILL.md": ".claude/skills/wf-remove/SKILL.md",
313
344
  ".agents/skills/wf-review/SKILL.md": ".claude/skills/wf-review/SKILL.md",
345
+ ".agents/skills/wf-task-archive/SKILL.md": ".claude/skills/wf-task-archive/SKILL.md",
346
+ ".agents/skills/wf-task-list/SKILL.md": ".claude/skills/wf-task-list/SKILL.md",
347
+ ".agents/skills/wf-task-record/SKILL.md": ".claude/skills/wf-task-record/SKILL.md",
348
+ ".agents/skills/wf-ui/SKILL.md": ".claude/skills/wf-ui/SKILL.md",
314
349
  ".agents/skills/wf-update/SKILL.md": ".claude/skills/wf-update/SKILL.md",
315
350
  ".agents/skills/wf/SKILL.md": ".claude/skills/wf/SKILL.md",
316
351
  ".claude/agents/architect-manager.md": ".claude/agents/architect-manager.md",
@@ -335,12 +370,17 @@
335
370
  ".claude/commands/wf-auto-spark.md": ".claude/commands/wf-auto-spark.md",
336
371
  ".claude/commands/wf-auto.md": ".claude/commands/wf-auto.md",
337
372
  ".claude/commands/wf-browser.md": ".claude/commands/wf-browser.md",
373
+ ".claude/commands/wf-command-create.md": ".claude/commands/wf-command-create.md",
338
374
  ".claude/commands/wf-help.md": ".claude/commands/wf-help.md",
339
375
  ".claude/commands/wf-learn.md": ".claude/commands/wf-learn.md",
340
376
  ".claude/commands/wf-max.md": ".claude/commands/wf-max.md",
341
377
  ".claude/commands/wf-readme.md": ".claude/commands/wf-readme.md",
342
378
  ".claude/commands/wf-remove.md": ".claude/commands/wf-remove.md",
343
379
  ".claude/commands/wf-review.md": ".claude/commands/wf-review.md",
380
+ ".claude/commands/wf-task-archive.md": ".claude/commands/wf-task-archive.md",
381
+ ".claude/commands/wf-task-list.md": ".claude/commands/wf-task-list.md",
382
+ ".claude/commands/wf-task-record.md": ".claude/commands/wf-task-record.md",
383
+ ".claude/commands/wf-ui.md": ".claude/commands/wf-ui.md",
344
384
  ".claude/commands/wf-update.md": ".claude/commands/wf-update.md",
345
385
  ".claude/commands/wf.md": ".claude/commands/wf.md",
346
386
  ".claude/rules/ecc/common.md": ".claude/rules/ecc/common.md",
@@ -351,12 +391,17 @@
351
391
  ".claude/skills/wf-auto-spark/SKILL.md": ".claude/skills/wf-auto-spark/SKILL.md",
352
392
  ".claude/skills/wf-auto/SKILL.md": ".claude/skills/wf-auto/SKILL.md",
353
393
  ".claude/skills/wf-browser/SKILL.md": ".claude/skills/wf-browser/SKILL.md",
394
+ ".claude/skills/wf-command-create/SKILL.md": ".claude/skills/wf-command-create/SKILL.md",
354
395
  ".claude/skills/wf-help/SKILL.md": ".claude/skills/wf-help/SKILL.md",
355
396
  ".claude/skills/wf-learn/SKILL.md": ".claude/skills/wf-learn/SKILL.md",
356
397
  ".claude/skills/wf-max/SKILL.md": ".claude/skills/wf-max/SKILL.md",
357
398
  ".claude/skills/wf-readme/SKILL.md": ".claude/skills/wf-readme/SKILL.md",
358
399
  ".claude/skills/wf-remove/SKILL.md": ".claude/skills/wf-remove/SKILL.md",
359
400
  ".claude/skills/wf-review/SKILL.md": ".claude/skills/wf-review/SKILL.md",
401
+ ".claude/skills/wf-task-archive/SKILL.md": ".claude/skills/wf-task-archive/SKILL.md",
402
+ ".claude/skills/wf-task-list/SKILL.md": ".claude/skills/wf-task-list/SKILL.md",
403
+ ".claude/skills/wf-task-record/SKILL.md": ".claude/skills/wf-task-record/SKILL.md",
404
+ ".claude/skills/wf-ui/SKILL.md": ".claude/skills/wf-ui/SKILL.md",
360
405
  ".claude/skills/wf-update/SKILL.md": ".claude/skills/wf-update/SKILL.md",
361
406
  ".claude/skills/wf/SKILL.md": ".claude/skills/wf/SKILL.md",
362
407
  ".codex/config.toml": ".codex/config.toml",
@@ -384,12 +429,17 @@
384
429
  ".opencode/commands/wf-auto-spark.md": ".opencode/commands/wf-auto-spark.md",
385
430
  ".opencode/commands/wf-auto.md": ".opencode/commands/wf-auto.md",
386
431
  ".opencode/commands/wf-browser.md": ".opencode/commands/wf-browser.md",
432
+ ".opencode/commands/wf-command-create.md": ".opencode/commands/wf-command-create.md",
387
433
  ".opencode/commands/wf-help.md": ".opencode/commands/wf-help.md",
388
434
  ".opencode/commands/wf-learn.md": ".opencode/commands/wf-learn.md",
389
435
  ".opencode/commands/wf-max.md": ".opencode/commands/wf-max.md",
390
436
  ".opencode/commands/wf-readme.md": ".opencode/commands/wf-readme.md",
391
437
  ".opencode/commands/wf-remove.md": ".opencode/commands/wf-remove.md",
392
438
  ".opencode/commands/wf-review.md": ".opencode/commands/wf-review.md",
439
+ ".opencode/commands/wf-task-archive.md": ".opencode/commands/wf-task-archive.md",
440
+ ".opencode/commands/wf-task-list.md": ".opencode/commands/wf-task-list.md",
441
+ ".opencode/commands/wf-task-record.md": ".opencode/commands/wf-task-record.md",
442
+ ".opencode/commands/wf-ui.md": ".opencode/commands/wf-ui.md",
393
443
  ".opencode/commands/wf-update.md": ".opencode/commands/wf-update.md",
394
444
  ".opencode/commands/wf.md": ".opencode/commands/wf.md",
395
445
  ".opencode/plugins/harness-wf-status.mjs": ".opencode/plugins/harness-wf-status.mjs",
@@ -399,6 +449,9 @@
399
449
  "Harness/MEMORY.md": "Harness/MEMORY.md",
400
450
  "Harness/PROGRESS.md": "Harness/PROGRESS.md",
401
451
  "Harness/README.md": "Harness/README.md",
452
+ "Harness/a2a/role-graph.json": "Harness/a2a/role-graph.json",
453
+ "Harness/a2a/runtime-registry.json": "Harness/a2a/runtime-registry.json",
454
+ "Harness/a2a/skills/terminal-control.json": "Harness/a2a/skills/terminal-control.json",
402
455
  "Harness/memory/agent-lessons-patterns.md": "memory/agent-lessons-patterns.md",
403
456
  "Harness/memory/routes.md": "memory/routes.md",
404
457
  "Harness/memory/startup-hints.md": "memory/startup-hints.md",
@@ -409,15 +462,19 @@
409
462
  "Harness/research/PRD.md": "Harness/research/PRD.md",
410
463
  "Harness/research/README.md": "Harness/research/README.md",
411
464
  "Harness/research/research-results.md": "Harness/research/research-results.md",
465
+ "Harness/scripts/README.md": "Harness/scripts/README.md",
466
+ "Harness/scripts/a2a-terminal.mjs": "Harness/scripts/a2a-terminal.mjs",
412
467
  "Harness/scripts/archive-tasks.mjs": "Harness/scripts/archive-tasks.mjs",
413
468
  "Harness/scripts/context-budget.mjs": "Harness/scripts/context-budget.mjs",
414
469
  "Harness/scripts/l2-cache-telemetry.mjs": "Harness/scripts/l2-cache-telemetry.mjs",
415
470
  "Harness/scripts/scan-clean.mjs": "Harness/scripts/scan-clean.mjs",
471
+ "Harness/scripts/sync-host-global.mjs": "Harness/scripts/sync-host-global.mjs",
416
472
  "Harness/scripts/task-state.mjs": "Harness/scripts/task-state.mjs",
417
473
  "Harness/scripts/validate-harness.mjs": "Harness/scripts/validate-harness.mjs",
418
474
  "Harness/scripts/wf-auto-update-prompt.mjs": "Harness/scripts/wf-auto-update-prompt.mjs",
419
475
  "Harness/scripts/wf-remove.mjs": "Harness/scripts/wf-remove.mjs",
420
476
  "Harness/scripts/wf-update-check.mjs": "Harness/scripts/wf-update-check.mjs",
477
+ "Harness/scripts/wf-update-runner.mjs": "Harness/scripts/wf-update-runner.mjs",
421
478
  "Harness/settings.json": "Harness/settings.json",
422
479
  "Harness/specs/guides/ECC-GUIDE.md": "Harness/specs/guides/ECC-GUIDE.md",
423
480
  "Harness/specs/guides/SETUP.md": "Harness/specs/guides/SETUP.md",
@@ -431,6 +488,7 @@
431
488
  "Harness/specs/protocols/TASK_ARCHIVE.md": "Harness/specs/protocols/TASK_ARCHIVE.md",
432
489
  "Harness/specs/protocols/TDD-GUIDE.md": "Harness/specs/protocols/TDD-GUIDE.md",
433
490
  "Harness/specs/runtime/agent-workflow.md": "Harness/specs/runtime/agent-workflow.md",
491
+ "Harness/specs/runtime/command-surface.json": "Harness/specs/runtime/command-surface.json",
434
492
  "Harness/specs/runtime/context-loading.md": "Harness/specs/runtime/context-loading.md",
435
493
  "Harness/specs/runtime/dispatch.md": "Harness/specs/runtime/dispatch.md",
436
494
  "Harness/specs/runtime/subagents.md": "Harness/specs/runtime/subagents.md",
@@ -441,11 +499,11 @@
441
499
  "Harness/specs/workflows/WF-MAX.md": "Harness/specs/workflows/WF-MAX.md",
442
500
  "Harness/specs/workflows/WF-STATE.md": "Harness/specs/workflows/WF-STATE.md",
443
501
  "Harness/specs/workflows/WF.md": "Harness/specs/workflows/WF.md",
444
- "Harness/tasks/_template/ARTIFACTS.md": "Harness/tasks/_template/ARTIFACTS.md",
445
502
  "Harness/tasks/_template/NAMING.md": "Harness/tasks/_template/NAMING.md",
446
- "Harness/tasks/_template/NOTES.md": "Harness/tasks/_template/NOTES.md",
447
503
  "Harness/tasks/_template/PLAN.md": "Harness/tasks/_template/PLAN.md",
504
+ "Harness/tasks/_template/PROBLEM.md": "Harness/tasks/_template/PROBLEM.md",
448
505
  "Harness/tasks/_template/PROGRESS.md": "Harness/tasks/_template/PROGRESS.md",
506
+ "Harness/tasks/_template/REFERENCES.md": "Harness/tasks/_template/REFERENCES.md",
449
507
  "Harness/tasks/_template/STATE.json": "Harness/tasks/_template/STATE.json",
450
508
  "Harness/templates/ACCEPTANCE.template.md": "Harness/templates/ACCEPTANCE.template.md",
451
509
  "Harness/templates/API_CONTRACT.template.md": "Harness/templates/API_CONTRACT.template.md",
@@ -0,0 +1,61 @@
1
+ ---
2
+ description: Create or modify a Harness wf-* command surface atomically
3
+ ---
4
+ # /wf-command-create
5
+
6
+ Create or modify a Harness wf-* command surface atomically. Do not invoke a skill or start WF mode.
7
+
8
+ ## Classification
9
+
10
+ DIRECT command. It is a Harness maintenance command: it must create or resume a task capsule, then update every command surface declared by `Harness/specs/runtime/command-surface.json`. Never loads `Harness/MEMORY.md` as part of command routing.
11
+
12
+ ## Usage
13
+
14
+ /wf-command-create <wf-command-id> [--direct|--workflow] [--task <task-id>]
15
+
16
+ - Command id must be `wf` or `wf-*` kebab-case.
17
+ - Use an existing task capsule when `--task` is supplied or when the active task clearly matches.
18
+ - Otherwise create a `task-<verb>-<noun>[-detail]` capsule with `node Harness/scripts/task-state.mjs record <task-id> --create --apply --json`.
19
+ - Record the command id, classification, and validation evidence in the task capsule.
20
+
21
+ ## Required Surface Checklist
22
+
23
+ Update all applicable files before returning:
24
+
25
+ - `Harness/specs/runtime/command-surface.json`
26
+ - `.claude/commands/<id>.md`
27
+ - `.opencode/commands/<id>.md`
28
+ - `.claude/skills/<id>/SKILL.md` when Codex compatibility or workflow routing is needed
29
+ - `.agents/skills/<id>/SKILL.md` mirror when a Claude skill exists
30
+ - Matching `templates/common/...` files
31
+ - `CLAUDE.md` and `templates/common/CLAUDE.md`
32
+ - `.claude/rules/ecc/common.md` and template mirror
33
+ - `.claude/commands/wf-help.md`, `.opencode/commands/wf-help.md`, and template mirrors
34
+ - `Harness/README.md`, `Harness/MEMORY.md`, and template mirrors
35
+ - `Harness/scripts/validate-harness.mjs` and template mirror
36
+ - `Harness/scripts/wf-remove.mjs` and template mirror
37
+ - `tests/generator.test.js`, `tests/anti-drift.test.js`, and `tests/validate-harness.test.js`
38
+ - `Harness/.harness-version`, `templates/common/.harness-version`, and ownership manifests via `node scripts/build-version.mjs`
39
+
40
+ ## Validation
41
+
42
+ Run, at minimum:
43
+
44
+ ```bash
45
+ npm test
46
+ node Harness/scripts/validate-harness.mjs
47
+ node templates/common/Harness/scripts/validate-harness.mjs
48
+ node Harness/scripts/context-budget.mjs --json
49
+ node scripts/build-version.mjs --check
50
+ npm run check:mirrors
51
+ git diff --check
52
+ ```
53
+
54
+ If a check is blocked by an existing unrelated repository issue, record the command, failure, and reason in the task capsule.
55
+
56
+ ## Return
57
+
58
+ - Command id and classification.
59
+ - Task capsule path.
60
+ - Files changed by surface category.
61
+ - Verification results.
@@ -22,6 +22,11 @@ which returns this same table without loading `Harness/MEMORY.md` or entering WF
22
22
  | `/wf-readme <task>` | workflow skill | `/wf-readme polish quickstart` | Preserve, merge, or improve README docs without trampling existing project documentation. |
23
23
  | `/wf-update` | direct command | `/wf-update` | Check/apply Harness scaffold updates with safe file classification and conflict handling. |
24
24
  | `/wf-remove` | workflow skill | `/wf-remove` | Safely remove Harness files while preserving project/user data unless explicitly purged. |
25
+ | `/wf-task-record <task-id>` | direct command | `/wf-task-record my-feature --create` | Record user intent into a task capsule (wraps task-state.mjs). |
26
+ | `/wf-task-list` | direct command | `/wf-task-list` | List all task capsules with status, phase, and dependencies. |
27
+ | `/wf-task-archive [--apply]` | direct command | `/wf-task-archive --apply` | Archive completed task capsules (dry-run by default). |
28
+ | `/wf-command-create <wf-command-id>` | direct command | `/wf-command-create wf-report --direct` | Create or modify wf-* command surfaces atomically from the command registry. |
29
+ | `/wf-ui` | direct command | `/wf-ui` | Start the local Harness backend and browser control panel. |
25
30
 
26
31
  Source of truth: `Harness/README.md#Skill Commands` plus installed skills under
27
32
  `.claude/skills/` (Claude Code and OpenCode adapters) or `.agents/skills/`
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Archive completed/obsolete task capsules to _archive
3
+ ---
4
+ # /wf-task-archive
5
+
6
+ Archive completed/obsolete task capsules to `Harness/tasks/_archive/`. Do not invoke a skill or start WF mode.
7
+
8
+ ## Classification
9
+
10
+ DIRECT command. Wraps `node Harness/scripts/task-state.mjs archive`. Never loads Harness/MEMORY.md.
11
+
12
+ ## Usage
13
+
14
+ /wf-task-archive [--dry-run] [--apply] [--task <id>] [--keep <n>]
15
+
16
+ - Defaults to dry-run (`--dry-run`) without `--apply`.
17
+ - With `--apply`: moves eligible task directories into yearly subdirectories under `_archive/`.
18
+ - With `--task <id>`: targets a specific task for archive eligibility check.
19
+ - With `--keep <n>`: keeps N most recent non-archived task capsules (default 5).
20
+ - Tasks with active, blocked, in_progress, running, pending, or needs-user-decision status are never auto-archived.
21
+
22
+ ## Execution
23
+
24
+ Run: `node Harness/scripts/task-state.mjs archive [--dry-run] [--apply] [--task <id>] [--keep <n>] [--json]`
25
+
26
+ ## Return
27
+
28
+ - JSON output with archive plan: scanned, archiveable, toArchive, kept, skipped counts and per-task results.
29
+ - If the command fails, report the error and do not retry.
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: List Harness task capsules with state, phase, status, and dependency info
3
+ ---
4
+ # /wf-task-list
5
+
6
+ List Harness task capsules with state, phase, status, and dependency info. Do not invoke a skill or start WF mode.
7
+
8
+ ## Classification
9
+
10
+ DIRECT command. Wraps `node Harness/scripts/task-state.mjs list --json`. Never loads Harness/MEMORY.md.
11
+
12
+ ## Usage
13
+
14
+ /wf-task-list [--json]
15
+
16
+ - By default, returns a human-readable listing of all task capsules.
17
+ - With --json, returns structured JSON output.
18
+ - Shows active, open, blocked, verified tasks with dependency info.
19
+
20
+ ## Execution
21
+
22
+ Run: `node Harness/scripts/task-state.mjs list --json`
23
+
24
+ ## Return
25
+
26
+ - JSON output of all task capsules with status, phase, dependencies, and archive eligibility.
27
+ - Includes a `graph` section: roots, dependency edges, block edges, and orphaned dependency warnings.
28
+ - Human-readable mode renders the graph with ASCII arrows: `from ──▶ to` (depends) and `from ▸▸ to` (blocks).
29
+ - If the command fails, report the error and do not retry.
@@ -0,0 +1,27 @@
1
+ ---
2
+ description: Record a task into a Harness task capsule
3
+ ---
4
+ # /wf-task-record
5
+
6
+ Record a task into a Harness task capsule. Do not invoke a skill or start WF mode.
7
+
8
+ ## Classification
9
+
10
+ DIRECT command. Wraps `node Harness/scripts/task-state.mjs record`. Never loads Harness/MEMORY.md.
11
+
12
+ ## Usage
13
+
14
+ /wf-task-record [<task-id>] [--title <slug>] [--note <text>] [--context <text>] [--new] [--create] [--status <status>] [--mode <mode>] [--text "description"]
15
+
16
+ - With <task-id>: record to that task (existing semantics).
17
+ - Without <task-id>: --title/--note/--context required. Deterministically matches open tasks; updates if unique match found; creates new if no match; fails if ambiguous unless --new.
18
+ - Never uses LLM or embeddings — slug + keyword overlap only.
19
+
20
+ ## Execution
21
+
22
+ Run: `node Harness/scripts/task-state.mjs record [<task-id>] [--title <slug>] [--note <text>] [--context <text>] [--new] [--create] [--apply] [--text "..."] [--status <status>] [--mode <mode>] [--json]`
23
+
24
+ ## Return
25
+
26
+ - Output of `node Harness/scripts/task-state.mjs record ... --json`
27
+ - If the command fails, report the error and do not retry.
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: Open the Harness browser control panel for task capsules, workflow graphs, agent peers, settings, and terminal observability
3
+ ---
4
+
5
+ # /wf-ui
6
+
7
+ Start the Harness browser control panel directly. This is a direct command.
8
+ Do not invoke a skill, do not start WF mode, and do not dispatch agents.
9
+
10
+ Run from the project root:
11
+
12
+ ```bash
13
+ create-harness-vibe-coding wf-ui --project . --host 127.0.0.1 --port 0 --open
14
+ ```
15
+
16
+ If the global binary is not available, use the package fallback:
17
+
18
+ ```bash
19
+ npx create-harness-vibe-coding@0.8.19 wf-ui --project . --host 127.0.0.1 --port 0 --open
20
+ ```
21
+
22
+ Rules:
23
+ - Bind only to `127.0.0.1`.
24
+ - Use port `0` unless the user asks for a fixed port.
25
+ - Leave the server running until the user stops it.
26
+ - Return the local URL printed by the command.
@@ -22,7 +22,23 @@ targeted inspection.
22
22
 
23
23
  ## Flow
24
24
 
25
- 1. Run `node Harness/scripts/wf-update-check.mjs --json` first and use the
25
+ Scope resolution is deterministic:
26
+
27
+ - Current project has `Harness/scripts/wf-update-check.mjs`: update the project
28
+ install from that script.
29
+ - A global runtime is discoverable from `Harness/.harness-version.globalDir`,
30
+ `HARNESS_GLOBAL_HOME`, or the default `~/.harness/create-harness-vibe-coding`:
31
+ update that runtime too, then sync its Claude/Codex/OpenCode host-global
32
+ copies.
33
+ - Current project has no Harness install: update only the global runtime and
34
+ host-global copies. Do not scaffold or modify the project unless the user
35
+ explicitly asks to install Harness there.
36
+ `Harness/scripts/wf-update-runner.mjs` implements this multi-scope routing.
37
+ Older installs that do not have the runner fall back to
38
+ `Harness/scripts/wf-update-check.mjs`.
39
+
40
+ 1. Run `node Harness/scripts/wf-update-runner.mjs --json` first when present;
41
+ otherwise run `node Harness/scripts/wf-update-check.mjs --json`. Use the
26
42
  `agent` block as the action plan. Preserve `agent.releaseHighlights` for the
27
43
  user-facing update summary. Current updaters try npm
28
44
  `create-harness-vibe-coding@latest` first, then the canonical GitHub source
@@ -33,9 +49,11 @@ targeted inspection.
33
49
  starter files may be created, and checksum-matching legacy architecture can
34
50
  move to `Harness/project/architecture.md`. Harness/README.md is merge-tier,
35
51
  not PRESERVE.
36
- 3. If `agent.safeApplyCommand` is present, run it to apply SAFE, NEW, and
37
- adopted metadata-only files before spending AI time on conflicts. Default
38
- command: `node Harness/scripts/wf-update-check.mjs --apply-safe`.
52
+ 3. If `agent.safeApplyCommand` is present, run the runner apply path to apply
53
+ SAFE, NEW, and adopted metadata-only files across every discovered scope
54
+ before spending AI time on conflicts. Default multi-scope command:
55
+ `node Harness/scripts/wf-update-runner.mjs --apply-safe --json`. Single-scope
56
+ fallback command: `node Harness/scripts/wf-update-check.mjs --apply-safe`.
39
57
  Framework-owned templates, commands, skills, agents, and scripts are
40
58
  script-owned and should be overwritten by the updater after checksum
41
59
  validation.
@@ -53,11 +71,38 @@ targeted inspection.
53
71
  `--accept-local <file>`, `--accept-merged <file>`, or
54
72
  `--accept-template <file>`; do not hand-edit `Harness/.harness-version`.
55
73
  Ask the user only when the intent is ambiguous.
56
- 7. Run `node Harness/scripts/wf-update-check.mjs --finalize` after all
57
- conflicts have script-recorded decisions. Use strict `--apply` only when the
58
- JSON plan has zero conflicts.
59
- 8. After update, run `node Harness/scripts/validate-harness.mjs` and then
60
- `node Harness/scripts/scan-clean.mjs`.
74
+ 7. Run `node Harness/scripts/wf-update-runner.mjs --finalize --json` after all
75
+ conflicts have script-recorded decisions. Single-scope fallback:
76
+ `node Harness/scripts/wf-update-check.mjs --finalize`. Use strict `--apply` only when
77
+ the JSON plan has zero conflicts.
78
+ 8. After update, sync and validate all machine surfaces:
79
+ ```
80
+ node Harness/scripts/sync-host-global.mjs --json
81
+ node Harness/scripts/sync-host-global.mjs --apply --json
82
+ node Harness/scripts/validate-harness.mjs
83
+ node Harness/scripts/validate-harness.mjs --manifest-audit
84
+ node Harness/scripts/scan-clean.mjs --json
85
+ ```
86
+ `sync-host-global.mjs` is a no-op for project-only installs. For global
87
+ installs it compares host-global files against the runtime sources listed in
88
+ `.harness-version.hostGlobal.targets`; missing or Harness-marked stale copies
89
+ are repaired by script, while user-looking files stay conflicts.
90
+ 9. If the update reports "Already up to date" but files are missing (e.g.,
91
+ new commands not showing up on a platform), run:
92
+ ```
93
+ node Harness/scripts/wf-update-runner.mjs --repair --json
94
+ node Harness/scripts/wf-update-runner.mjs --repair --apply-safe --json
95
+ node Harness/scripts/wf-update-runner.mjs --repair --finalize --json
96
+ node Harness/scripts/wf-update-check.mjs --repair --json
97
+ node Harness/scripts/wf-update-check.mjs --repair --apply-safe
98
+ node Harness/scripts/wf-update-check.mjs --repair --finalize
99
+ node Harness/scripts/sync-host-global.mjs --apply --json
100
+ node Harness/scripts/validate-harness.mjs --manifest-audit
101
+ ```
102
+ `--repair` bypasses the version check and forces a full file diff against
103
+ the latest remote template. This catches files that were missed during a
104
+ previous partial update where the version was bumped but not all files
105
+ were written.
61
106
 
62
107
  Codex users without a direct command surface: use `$wf-update` (skill path) or
63
108
  `node Harness/scripts/wf-update-check.mjs`.