create-harness-vibe-coding 0.8.17 → 0.8.18

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 (41) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README-CN.md +2 -0
  3. package/README.md +2 -0
  4. package/package.json +1 -1
  5. package/src/generator.js +613 -97
  6. package/src/index.js +173 -42
  7. package/src/prompts.js +18 -0
  8. package/templates/common/.claude/commands/wf-command-create.md +58 -0
  9. package/templates/common/.claude/commands/wf-help.md +4 -0
  10. package/templates/common/.claude/commands/wf-task-archive.md +26 -0
  11. package/templates/common/.claude/commands/wf-task-list.md +24 -0
  12. package/templates/common/.claude/commands/wf-task-record.md +24 -0
  13. package/templates/common/.claude/rules/ecc/common.md +1 -1
  14. package/templates/common/.claude/skills/wf-agents-docs/SKILL.md +15 -30
  15. package/templates/common/.claude/skills/wf-command-create/SKILL.md +37 -0
  16. package/templates/common/.claude/skills/wf-max/SKILL.md +1 -1
  17. package/templates/common/.claude/skills/wf-review/SKILL.md +29 -2
  18. package/templates/common/.claude/skills/wf-task-archive/SKILL.md +28 -0
  19. package/templates/common/.claude/skills/wf-task-list/SKILL.md +28 -0
  20. package/templates/common/.claude/skills/wf-task-record/SKILL.md +28 -0
  21. package/templates/common/.harness-version +66 -32
  22. package/templates/common/.opencode/commands/wf-command-create.md +61 -0
  23. package/templates/common/.opencode/commands/wf-help.md +4 -0
  24. package/templates/common/.opencode/commands/wf-task-archive.md +29 -0
  25. package/templates/common/.opencode/commands/wf-task-list.md +27 -0
  26. package/templates/common/.opencode/commands/wf-task-record.md +27 -0
  27. package/templates/common/CLAUDE.md +8 -6
  28. package/templates/common/Harness/MEMORY.md +9 -0
  29. package/templates/common/Harness/README.md +17 -36
  30. package/templates/common/Harness/ownership.manifest.json +87 -2
  31. package/templates/common/Harness/scripts/task-state.mjs +395 -5
  32. package/templates/common/Harness/scripts/validate-harness.mjs +411 -46
  33. package/templates/common/Harness/scripts/wf-remove.mjs +34 -2
  34. package/templates/common/Harness/specs/guides/SETUP.md +8 -0
  35. package/templates/common/Harness/specs/protocols/MEMORY_PROTOCOL.md +15 -0
  36. package/templates/common/Harness/specs/protocols/TASK_ARCHIVE.md +9 -3
  37. package/templates/common/Harness/specs/runtime/command-surface.json +215 -0
  38. package/templates/common/Harness/specs/runtime/subagents.md +6 -0
  39. package/templates/common/Harness/specs/workflows/WF-MAX.md +5 -0
  40. package/templates/common/Harness/specs/workflows/WF-STATE.md +66 -0
  41. package/templates/common/Harness/tasks/_template/STATE.json +6 -0
@@ -43,7 +43,7 @@ WF-MAX inherits the selected WF tier and the shared WF-KERNEL gates
43
43
  default; WF-Max-Strict only on explicit strict request. Execution expands
44
44
  through:
45
45
 
46
- - New task state directories MUST use task ids matching
46
+ - New task capsules / state directories MUST use task ids matching
47
47
  `task-<verb>-<noun>[-detail]` under `Harness/tasks/<task-id>/`; never
48
48
  create bare `fix-*` task ids.
49
49
  1. Global mode: `wf-max`
@@ -55,12 +55,39 @@ the review prompt.
55
55
 
56
56
  OpenCode note: `opencode run [message..]` is the non-interactive CLI path and
57
57
  `--agent reviewer` selects the installed `.opencode/agents/reviewer.md` role.
58
+ However, the installed agent is `mode: subagent`; OpenCode falls back to the
59
+ default agent. Prefer same-runtime reviewer subagent over `opencode run --agent reviewer`.
60
+
61
+ For `opencode run --format json`, parse JSONL events; the stream is not a single
62
+ review result.
63
+
64
+ ## Evidence-Packet Peer Review Contract
65
+
66
+ When invoking a peer CLI, use stdin prompt transport for PowerShell automation.
67
+ Return the raw evidence packet to the controller for formal acceptance.
68
+
69
+ ### JSON/JSONL Validation
70
+
71
+ For `claude -p` with `--output-format json`:
72
+ - Fail if stdout is empty, non-JSON, `is_error: true`, `subtype` starts with `error_`, or no final model `text`/`result` is present.
73
+ - Do NOT use tiny `--max-budget-usd` values in real reviews; if budget is set and exhausted, record BLOCKED rather than treating it as reviewer output.
74
+
75
+ For `opencode run --format json`:
76
+ - Parse JSONL events, extract final `text` parts.
77
+ - Do NOT treat the whole JSONL stream as the review result.
78
+ - Do NOT claim `opencode run --agent reviewer` used the reviewer role unless a probe confirms the agent is a primary runnable agent. Current evidence: `.opencode/agents/reviewer.md` is `mode: subagent` and OpenCode falls back to the default agent.
79
+ - Prefer native reviewer subagent fallback inside the current runtime when OpenCode cannot run reviewer as a primary CLI agent.
80
+
81
+ General parsing rules: parse JSON/JSONL and fail on empty output, non-JSON output, explicit error events, budget errors, fallback warnings, or missing final model text.
82
+
83
+ ### Controller Adjudication
84
+
85
+ The controller accepts, rejects, or escalates each finding after parsing the evidence packet. Do not pass raw output through as accepted findings without controller review.
58
86
 
59
87
  ## Review Dimensions
60
88
 
61
89
  Cover correctness, security, architecture, performance, and tests. Classify
62
- findings as Critical, High, Medium, or Low. Return raw peer or subagent output
63
- first, then the controller's severity-classified synthesis.
90
+ findings as Critical, High, Medium, or Low.
64
91
 
65
92
  ## Reviewer Role Fallback
66
93
 
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: wf-task-archive
3
+ description: Archive completed task capsules. Use for $wf-task-archive or /skills wf-task-archive in Codex. Direct/compat command wrapping task-state.mjs — does not enter WF mode.
4
+ ---
5
+
6
+ # WF Task Archive Adapter
7
+
8
+ This skill is a Codex compatibility shim. It does not start WF mode, dispatch agents, or edit files directly.
9
+
10
+ ## Invocation
11
+
12
+ - Codex: `$wf-task-archive` or `/skills` then choose `wf-task-archive`.
13
+ - Claude Code: `/wf-task-archive` direct command from `.claude/commands/wf-task-archive.md`.
14
+ - OpenCode: `/wf-task-archive` direct command from `.opencode/commands/wf-task-archive.md`.
15
+
16
+ ## Load
17
+
18
+ - `.claude/commands/wf-task-archive.md`
19
+
20
+ ## Rules
21
+
22
+ Execute the command instructions from `.claude/commands/wf-task-archive.md` directly.
23
+ Do not load `Harness/MEMORY.md`, do not enter WF.
24
+
25
+ ## Return
26
+
27
+ - Task archive result
28
+ - Note that Codex uses `$wf-task-archive` or `/skills wf-task-archive`
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: wf-task-list
3
+ description: List task capsules. Use for $wf-task-list or /skills wf-task-list in Codex. Direct/compat command wrapping task-state.mjs — does not enter WF mode.
4
+ ---
5
+
6
+ # WF Task List Adapter
7
+
8
+ This skill is a Codex compatibility shim. It does not start WF mode, dispatch agents, or edit files directly.
9
+
10
+ ## Invocation
11
+
12
+ - Codex: `$wf-task-list` or `/skills` then choose `wf-task-list`.
13
+ - Claude Code: `/wf-task-list` direct command from `.claude/commands/wf-task-list.md`.
14
+ - OpenCode: `/wf-task-list` direct command from `.opencode/commands/wf-task-list.md`.
15
+
16
+ ## Load
17
+
18
+ - `.claude/commands/wf-task-list.md`
19
+
20
+ ## Rules
21
+
22
+ Execute the command instructions from `.claude/commands/wf-task-list.md` directly.
23
+ Do not load `Harness/MEMORY.md`, do not enter WF.
24
+
25
+ ## Return
26
+
27
+ - Task listing result
28
+ - Note that Codex uses `$wf-task-list` or `/skills wf-task-list`
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: wf-task-record
3
+ description: Record user intent into a task capsule. Use for $wf-task-record or /skills wf-task-record in Codex. Direct/compat command wrapping task-state.mjs — does not enter WF mode.
4
+ ---
5
+
6
+ # WF Task Record Adapter
7
+
8
+ This skill is a Codex compatibility shim. It does not start WF mode, dispatch agents, or edit files directly.
9
+
10
+ ## Invocation
11
+
12
+ - Codex: `$wf-task-record` or `/skills` then choose `wf-task-record`.
13
+ - Claude Code: `/wf-task-record` direct command from `.claude/commands/wf-task-record.md`.
14
+ - OpenCode: `/wf-task-record` direct command from `.opencode/commands/wf-task-record.md`.
15
+
16
+ ## Load
17
+
18
+ - `.claude/commands/wf-task-record.md`
19
+
20
+ ## Rules
21
+
22
+ Execute the command instructions from `.claude/commands/wf-task-record.md` directly.
23
+ Do not load `Harness/MEMORY.md`, do not enter WF.
24
+
25
+ ## Return
26
+
27
+ - Task record result
28
+ - Note that Codex uses `$wf-task-record` or `/skills wf-task-record`
@@ -1,19 +1,19 @@
1
1
  {
2
- "generator": "0.8.17",
3
- "generated": "2026-07-26T09:26:35.146Z",
2
+ "generator": "0.8.18",
3
+ "generated": "2026-07-29T06:33:44.000Z",
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.18",
9
+ "date": "2026-07-29",
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
+ "Add explicit task capsule management with list, archive, record/open state recovery, create-or-resume matching, task dependency metadata, and validator coverage.",
12
+ "Add `wf-command-create` as the atomic command/skill creation workflow so new Harness commands update command files, skills, templates, mirrors, validators, and tests together.",
13
+ "Add global install metadata for Claude, Codex, and OpenCode while keeping Harness tasks and progress project-local.",
14
+ "Separate project/global memory and settings policy, with project settings taking precedence and task capsules remaining project-scoped.",
15
+ "Harden host-global ownership and validation rules so framework-owned global command/skill files can update safely while user-authored files remain protected.",
16
+ "Strengthen `wf-review`, `wf-agents-docs`, and WF-MAX guidance around explicit WF triggers, bounded peer output, and task capsule recording."
17
17
  ]
18
18
  },
19
19
  "moves": [
@@ -159,16 +159,20 @@
159
159
  "checksums": {
160
160
  ".agents/skills/subagent-orchestrator/SKILL.md": "sha256-6354018aaafd3d9f546eeecc90f943ef9a94d05747673369586a4a2f45a9464d",
161
161
  ".agents/skills/tdd/SKILL.md": "sha256-d6738eca127e0632474db67c25708c9db3feab3b55499c489518502ec8951e3a",
162
- ".agents/skills/wf-agents-docs/SKILL.md": "sha256-e0fe333aebae12a3e2cc6355e69237186a410f5d7a650ff5948ec132d9c630c4",
162
+ ".agents/skills/wf-agents-docs/SKILL.md": "sha256-20cd0d52d600ba9a61cbeb7fefea3beed213f77a87f23a1b534e6229949d5b01",
163
163
  ".agents/skills/wf-auto-spark/SKILL.md": "sha256-0afd699c52a45a4071bcecf09ee487adb6002be6c608fdf653fba1c0a00e4ec4",
164
164
  ".agents/skills/wf-auto/SKILL.md": "sha256-e62077d3c54d946f549c781fdf3f765c9a0ced41d0bedc96915b7167c3332987",
165
165
  ".agents/skills/wf-browser/SKILL.md": "sha256-0914538f7ae624b66cede82593f8063716c96c0f7b36adebbcf413c9e2a1d836",
166
+ ".agents/skills/wf-command-create/SKILL.md": "sha256-b8df91106d4ea161d659d1099a2ae509b8c81e9954946c2f53629ccbc5ffe70a",
166
167
  ".agents/skills/wf-help/SKILL.md": "sha256-418564cbe5e2df1e63fccdc9cd1cc12b05df9589836c6ff39ff43610eddf4e56",
167
168
  ".agents/skills/wf-learn/SKILL.md": "sha256-39e4bbe2da1261c02e37aa03ade0f9faaf6bc1f89568af1bb70f1af45d5f5bda",
168
- ".agents/skills/wf-max/SKILL.md": "sha256-7db71b3356cc442540e96b7931a6cf5c23d71fedfc53eabde8e99dbe4afe2c50",
169
+ ".agents/skills/wf-max/SKILL.md": "sha256-b3e2fe922c7d7d5effee6a2d51324ff54049e2d419dba2f74dda025ed529c561",
169
170
  ".agents/skills/wf-readme/SKILL.md": "sha256-32256ab8e87fc1c2606fd102d85b59fa0b406d88d5639c2f9ff2f02e83f7d81f",
170
171
  ".agents/skills/wf-remove/SKILL.md": "sha256-2de3d7b5cba2456a83aaa86487492a627d836526dbd2da1225cec9d7634b625c",
171
- ".agents/skills/wf-review/SKILL.md": "sha256-513ac34d7c6025f40f5457ffacf24df95ec248158660f1cd21225e00eda1800c",
172
+ ".agents/skills/wf-review/SKILL.md": "sha256-11117d7de4cd3cfd1616538233487420fff5a5d2a91754a68dc3a3134d06d29e",
173
+ ".agents/skills/wf-task-archive/SKILL.md": "sha256-f1637ee8c56b1385aed5db9c93f74889c2542a85273fdc68c6a4975a906f1cd5",
174
+ ".agents/skills/wf-task-list/SKILL.md": "sha256-04bcae617ef70e6b46c267ed726f6e8352d2f0b72aaaa8a486e3a760a8144b48",
175
+ ".agents/skills/wf-task-record/SKILL.md": "sha256-7afb4a9f04da96e45b9159f596d00c563184a27aff538385519187f2868811f8",
172
176
  ".agents/skills/wf-update/SKILL.md": "sha256-98a762d8d13b2ad36331b97c94b0b28b3103ee091814cc2c3710861895611e14",
173
177
  ".agents/skills/wf/SKILL.md": "sha256-78cc8b5be329649508b9fa6856b50c709ae74fbc31a4c7b77a69c6552723e29b",
174
178
  ".claude/agents/architect-manager.md": "sha256-21f16d8d5e9d0a88d9663dbe798421501e0de89ccad5f8f3c1ef9db5b79edaf7",
@@ -193,28 +197,36 @@
193
197
  ".claude/commands/wf-auto-spark.md": "sha256-503c88eba452f20ca04c32db734eed1c666a381bd6948c3ffe18f5c4a4255729",
194
198
  ".claude/commands/wf-auto.md": "sha256-06196a633eb0464ff152e7bfffabd76c09ab32a2aef9d84b82bbb4c204503226",
195
199
  ".claude/commands/wf-browser.md": "sha256-1cd46b259cb509af2d0bb1d105912889068611875c008e002598d0e7ed42cf52",
196
- ".claude/commands/wf-help.md": "sha256-282aa6162b736466847b82996b2c754afee5a3eaa827d234674315e4acbe6f1c",
200
+ ".claude/commands/wf-command-create.md": "sha256-b6027172e5d98c44f1ac22747a9ad52b27de15271018a60b10ac5b7c3d96f4a0",
201
+ ".claude/commands/wf-help.md": "sha256-db9dc794255eb865b947c1a00020d9a1511d4f90a590cab480730e9576949aa9",
197
202
  ".claude/commands/wf-learn.md": "sha256-02606f2a91e03056676aa022a060cd4a05a4d3123f8cb6f5e27bc50d90c6448a",
198
203
  ".claude/commands/wf-max.md": "sha256-88cdfb4ef8a205483045302b56dec268bdf010debd9c4473b665f5720e4c5697",
199
204
  ".claude/commands/wf-readme.md": "sha256-3eee1a6b3f62c22ed46440ed38ecb02999c9a3128d7660e91e7f0a94c59fa463",
200
205
  ".claude/commands/wf-remove.md": "sha256-80fe1849412028c9a91120143eeb10e153e6d7c32ec502c0d7ef3599d13fa337",
201
206
  ".claude/commands/wf-review.md": "sha256-bb031ffc8e392af2c1b2bb97b2f7605af1dcfa70514c6068312eca01f170e6d9",
207
+ ".claude/commands/wf-task-archive.md": "sha256-95b7c0a7bb2946b8c6c57506726358e7cc57cc2d9b1b48bd43b102a9a77ca3da",
208
+ ".claude/commands/wf-task-list.md": "sha256-daf36faca4ffa9904f4229d30c38c2cb3f986f2223cc80624f09b36e2f240266",
209
+ ".claude/commands/wf-task-record.md": "sha256-e9fa479274bdece66afa631642a87c7e2500f1dc1e58b930660cebeef4eae748",
202
210
  ".claude/commands/wf-update.md": "sha256-f6aa497209ad6c430771b5621720bca50bb06cf5ae3f40dfe1086f0372c232d7",
203
211
  ".claude/commands/wf.md": "sha256-bef81f0404230ff0de64727d46aa947d7434d06fde8ad03c55db9ccf54870cca",
204
- ".claude/rules/ecc/common.md": "sha256-c1229d6b3aa34551bfbb3919a5c4cbfaab4c1e9db3d913c75e3a27a2d8d345fa",
212
+ ".claude/rules/ecc/common.md": "sha256-e31150aec333867e688d36fbf26a9508d560bc51557c7ebb5717fa3484bf47f4",
205
213
  ".claude/settings.json": "sha256-99e8552584b8e71e3e11b4b760c3bfbf8c1b18dadda7ec3f6e3c46f88d9ea513",
206
214
  ".claude/skills/subagent-orchestrator/SKILL.md": "sha256-6354018aaafd3d9f546eeecc90f943ef9a94d05747673369586a4a2f45a9464d",
207
215
  ".claude/skills/tdd/SKILL.md": "sha256-d6738eca127e0632474db67c25708c9db3feab3b55499c489518502ec8951e3a",
208
- ".claude/skills/wf-agents-docs/SKILL.md": "sha256-e0fe333aebae12a3e2cc6355e69237186a410f5d7a650ff5948ec132d9c630c4",
216
+ ".claude/skills/wf-agents-docs/SKILL.md": "sha256-20cd0d52d600ba9a61cbeb7fefea3beed213f77a87f23a1b534e6229949d5b01",
209
217
  ".claude/skills/wf-auto-spark/SKILL.md": "sha256-0afd699c52a45a4071bcecf09ee487adb6002be6c608fdf653fba1c0a00e4ec4",
210
218
  ".claude/skills/wf-auto/SKILL.md": "sha256-e62077d3c54d946f549c781fdf3f765c9a0ced41d0bedc96915b7167c3332987",
211
219
  ".claude/skills/wf-browser/SKILL.md": "sha256-0914538f7ae624b66cede82593f8063716c96c0f7b36adebbcf413c9e2a1d836",
220
+ ".claude/skills/wf-command-create/SKILL.md": "sha256-b8df91106d4ea161d659d1099a2ae509b8c81e9954946c2f53629ccbc5ffe70a",
212
221
  ".claude/skills/wf-help/SKILL.md": "sha256-418564cbe5e2df1e63fccdc9cd1cc12b05df9589836c6ff39ff43610eddf4e56",
213
222
  ".claude/skills/wf-learn/SKILL.md": "sha256-39e4bbe2da1261c02e37aa03ade0f9faaf6bc1f89568af1bb70f1af45d5f5bda",
214
- ".claude/skills/wf-max/SKILL.md": "sha256-7db71b3356cc442540e96b7931a6cf5c23d71fedfc53eabde8e99dbe4afe2c50",
223
+ ".claude/skills/wf-max/SKILL.md": "sha256-b3e2fe922c7d7d5effee6a2d51324ff54049e2d419dba2f74dda025ed529c561",
215
224
  ".claude/skills/wf-readme/SKILL.md": "sha256-32256ab8e87fc1c2606fd102d85b59fa0b406d88d5639c2f9ff2f02e83f7d81f",
216
225
  ".claude/skills/wf-remove/SKILL.md": "sha256-2de3d7b5cba2456a83aaa86487492a627d836526dbd2da1225cec9d7634b625c",
217
- ".claude/skills/wf-review/SKILL.md": "sha256-513ac34d7c6025f40f5457ffacf24df95ec248158660f1cd21225e00eda1800c",
226
+ ".claude/skills/wf-review/SKILL.md": "sha256-11117d7de4cd3cfd1616538233487420fff5a5d2a91754a68dc3a3134d06d29e",
227
+ ".claude/skills/wf-task-archive/SKILL.md": "sha256-f1637ee8c56b1385aed5db9c93f74889c2542a85273fdc68c6a4975a906f1cd5",
228
+ ".claude/skills/wf-task-list/SKILL.md": "sha256-04bcae617ef70e6b46c267ed726f6e8352d2f0b72aaaa8a486e3a760a8144b48",
229
+ ".claude/skills/wf-task-record/SKILL.md": "sha256-7afb4a9f04da96e45b9159f596d00c563184a27aff538385519187f2868811f8",
218
230
  ".claude/skills/wf-update/SKILL.md": "sha256-98a762d8d13b2ad36331b97c94b0b28b3103ee091814cc2c3710861895611e14",
219
231
  ".claude/skills/wf/SKILL.md": "sha256-78cc8b5be329649508b9fa6856b50c709ae74fbc31a4c7b77a69c6552723e29b",
220
232
  ".codex/config.toml": "sha256-b561d07aaba9bb32df0c48713f6a00be95462af9fa9383efb7cee89f9b24f9ba",
@@ -241,53 +253,58 @@
241
253
  ".opencode/commands/wf-auto-spark.md": "sha256-503c88eba452f20ca04c32db734eed1c666a381bd6948c3ffe18f5c4a4255729",
242
254
  ".opencode/commands/wf-auto.md": "sha256-06196a633eb0464ff152e7bfffabd76c09ab32a2aef9d84b82bbb4c204503226",
243
255
  ".opencode/commands/wf-browser.md": "sha256-1cd46b259cb509af2d0bb1d105912889068611875c008e002598d0e7ed42cf52",
244
- ".opencode/commands/wf-help.md": "sha256-2d8c841555ae64ec5be2ad4cf2e126cc8db04ece71cb05948ef029f2e704308e",
256
+ ".opencode/commands/wf-command-create.md": "sha256-29b597b7c2c3b8a7e131365e1704855bbd2774511ed30cf99e398f77123e2981",
257
+ ".opencode/commands/wf-help.md": "sha256-d1ff937d1d10a76270a23785e280bcd6f9d6dde05fa6d592da6094a8a819740b",
245
258
  ".opencode/commands/wf-learn.md": "sha256-02606f2a91e03056676aa022a060cd4a05a4d3123f8cb6f5e27bc50d90c6448a",
246
259
  ".opencode/commands/wf-max.md": "sha256-21ddf8d4eff7ce91948a41eb68cbc9d184349ca3a422c72950fc83a5039eb663",
247
260
  ".opencode/commands/wf-readme.md": "sha256-3eee1a6b3f62c22ed46440ed38ecb02999c9a3128d7660e91e7f0a94c59fa463",
248
261
  ".opencode/commands/wf-remove.md": "sha256-80fe1849412028c9a91120143eeb10e153e6d7c32ec502c0d7ef3599d13fa337",
249
262
  ".opencode/commands/wf-review.md": "sha256-bb031ffc8e392af2c1b2bb97b2f7605af1dcfa70514c6068312eca01f170e6d9",
263
+ ".opencode/commands/wf-task-archive.md": "sha256-eed9b41bd4fc9c4ca6d0b4aa2cc0492e7695173b6b5487a7a07683dec66de162",
264
+ ".opencode/commands/wf-task-list.md": "sha256-66ba8af605aa83408b5a5c8621af52da98c5a9ed6bbad5be53290903a0a329fc",
265
+ ".opencode/commands/wf-task-record.md": "sha256-c71c49e54f568eff816f5eea505d34a139e91f4f18aed504391ab6fa6afd539e",
250
266
  ".opencode/commands/wf-update.md": "sha256-f6aa497209ad6c430771b5621720bca50bb06cf5ae3f40dfe1086f0372c232d7",
251
267
  ".opencode/commands/wf.md": "sha256-bef81f0404230ff0de64727d46aa947d7434d06fde8ad03c55db9ccf54870cca",
252
268
  ".opencode/plugins/harness-wf-status.mjs": "sha256-ee0987cec5530c34784c619a803562d7085ae26fe5d199fde7ce42c2bed4724e",
253
269
  "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",
270
+ "CLAUDE.md": "sha256-7c1cd41ebbd6a87b2b59606aff70b7aab0bdce737bca013e8f55efd63292bfae",
271
+ "Harness/MEMORY.md": "sha256-896a7b09e96aa0f3041c577eab70160381856cf63a26a7daf74a0eb48dc3e898",
272
+ "Harness/README.md": "sha256-9bfe3caa4b28db129da66aba36d32bddc450b8399e5e14b03f66d3f1a8bcea47",
273
+ "Harness/ownership.manifest.json": "sha256-3948ecdaa8f9f05f46a6df4e5b7df1949b6ab268c850b9677bbc0ed77e579630",
258
274
  "Harness/project/architecture.md": "sha256-27462306667539d71aecc4a90a778222f61585ef99e8131fb38f866913cac1c4",
259
275
  "Harness/research/README.md": "sha256-b7a542c0d919cabc185b6e7a1e6ef265dc5160978d0c1dd804f2c6547d0202a4",
260
276
  "Harness/scripts/archive-tasks.mjs": "sha256-c5891c32d23f0b1bc863753d11116ab593928aa9ebedf2768b68b77e88c9909c",
261
277
  "Harness/scripts/context-budget.mjs": "sha256-079228fa11046c5e4ca7323ac09091b05a78efae03ce655fee0c608c6833c33f",
262
278
  "Harness/scripts/l2-cache-telemetry.mjs": "sha256-139b5317eb3917f2ca0acd3cb1164170cc8c1dd60e0dee35f8d1596aed28c22c",
263
279
  "Harness/scripts/scan-clean.mjs": "sha256-6c4b2a4d15a8cd758214a360f8d3be11a835368d409c95719242c75ccf466c8a",
264
- "Harness/scripts/task-state.mjs": "sha256-409dfac45fb153ed648081bf1a3993c070b05473344fafe524ba2a96b9576934",
265
- "Harness/scripts/validate-harness.mjs": "sha256-7d12fcb23aeb70211f4086c6aa5c327ae48c81d4c4fd26c20dc2f16482c6e966",
280
+ "Harness/scripts/task-state.mjs": "sha256-826fbdb6221011dd8b5b068dcb481ad133d4f05fc886e407a373e808e3c04b31",
281
+ "Harness/scripts/validate-harness.mjs": "sha256-9fdc0299a5af5f57a74a3f98eec25c102b3d9a855ecfa42fbcb62d6752f4024e",
266
282
  "Harness/scripts/wf-auto-update-prompt.mjs": "sha256-14210304dbd8e648b8939fc4c5d3664f943052153e689264c16b05b7b81bd39e",
267
- "Harness/scripts/wf-remove.mjs": "sha256-b043f84a69da54d0f137ce0c91ae7b55c0d76711680ee7bc8762a802be1ee8c8",
283
+ "Harness/scripts/wf-remove.mjs": "sha256-1adc68b20f4f44cc44a6b52de2f3fc06a58edede6a73fff1f7bcd631a165a3fd",
268
284
  "Harness/scripts/wf-update-check.mjs": "sha256-32e9ed19046ac9b4910a661dae8fc13c03a605912430009cc8f830c1fdab3984",
269
285
  "Harness/settings.json": "sha256-db6a14fcaaba3d2ac9c0c11bd11273bd016bcc16c154895d4c0b2a03ef51786e",
270
286
  "Harness/specs/guides/ECC-GUIDE.md": "sha256-eba123cad02dde928317b9347efac45daf33698221d2d91768559a1f0456cc97",
271
- "Harness/specs/guides/SETUP.md": "sha256-7747cd6ef3ef81ff15a893d3d4c428dbab9ba0ec8193aedb00d992fd268d7afb",
287
+ "Harness/specs/guides/SETUP.md": "sha256-2f33b14eec035c9603ad6355cecc109879e9320a7a29aa9e9be6bbc743362b38",
272
288
  "Harness/specs/guides/extension.md": "sha256-5bf5895f849b972e5bdd1afd1a6914cd743b88b05668bb72dca7cd835262e8c9",
273
289
  "Harness/specs/guides/lifecycle.md": "sha256-3bb2107af2ee569c905ca615d662ba9adfd606a595e45880cfc292779c5f1844",
274
290
  "Harness/specs/protocols/ACCEPTANCE_PROTOCOL.md": "sha256-0f7a21a1fbfdca6e5f28f3297b61c3446e3bdd552a2143c7032d6271a4e26103",
275
291
  "Harness/specs/protocols/AGENT_ISOLATION.md": "sha256-54abcd4fdaf8810ab42da8a7f2ab5b5f5305f105f93e8764081b10edce053506",
276
292
  "Harness/specs/protocols/DEBUG_PROTOCOL.md": "sha256-ed80de0e3e1a40dbb9fd0bdead9174f1650e1833027f3d7fb4bb5884142e03f7",
277
293
  "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",
294
+ "Harness/specs/protocols/MEMORY_PROTOCOL.md": "sha256-5542c5007f278e0d83627d831beff4eaa58e2bc256f7962f562050de124e24d9",
295
+ "Harness/specs/protocols/TASK_ARCHIVE.md": "sha256-f526745f6dda7bb04b3540ca58c921b27aeca845b0cf65b9a0f7cdb0c1ed0f20",
280
296
  "Harness/specs/protocols/TDD-GUIDE.md": "sha256-602084530fd0dea7499a023ce75738351e5d97a0c222b64d405f36da6b59a162",
281
297
  "Harness/specs/runtime/agent-workflow.md": "sha256-9e6390715a9c2e404923d17e12369fe5af22c9a615ab14a010a8d6da0974c987",
298
+ "Harness/specs/runtime/command-surface.json": "sha256-9c74976ff14315f13bb6e02e19d200d295a287d236071e8b03570229d3719732",
282
299
  "Harness/specs/runtime/context-loading.md": "sha256-323e9476486ebf60cfd9fd78834701817f882648749cd548dd7a47670fce0bd6",
283
300
  "Harness/specs/runtime/dispatch.md": "sha256-1b1c2681c2722b8d708f8cca48ec1991ee922602c4c7333704f0156f6ffa498f",
284
- "Harness/specs/runtime/subagents.md": "sha256-6db97dd3a72c28f4ec24a56ea031de9f6ecb0eb4c72427e6409731cf45dab323",
301
+ "Harness/specs/runtime/subagents.md": "sha256-bb71ae927dd5f4656f97a78797b1d776618a39b26a7364a256cbcf38db427e71",
285
302
  "Harness/specs/workflows/WF-AUTO-ANGLES.md": "sha256-b9641d871f728e8112ad0d8c7f87bcbec0a06aa572c5f3060efdd26496abdf9b",
286
303
  "Harness/specs/workflows/WF-AUTO-SPARK.md": "sha256-dfe7e31373ccc9dea2d552649ec21dff91bca723316655788e82ab37cf0d33e5",
287
304
  "Harness/specs/workflows/WF-AUTO.md": "sha256-742e949bf77259997d662447f5b7c5627d8459f0b7aed96748cdb2de9c3bcfa9",
288
305
  "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",
306
+ "Harness/specs/workflows/WF-MAX.md": "sha256-4584a0870138db80d507dcfcebb32f34dfb6c9a4a3b154faad15f621b66536e7",
307
+ "Harness/specs/workflows/WF-STATE.md": "sha256-7108775358b44229302d3271083b349648d44b1c61de89167e4e99346821bf2a",
291
308
  "Harness/specs/workflows/WF.md": "sha256-d33e9ff55e67a34a862a896693cb55aeae8f73dd7d0ede561943674dd3e6d212",
292
309
  "Harness/templates/ACCEPTANCE.template.md": "sha256-394a6c08b155b1d121f1d51da774f7988bdb891224c6d5f2ca2c131e8c95ffb3",
293
310
  "Harness/templates/API_CONTRACT.template.md": "sha256-e11ec9866576624982f35e77359e3f4ef3aea3e3f6b5895f6cc5419d29699fc5",
@@ -305,12 +322,16 @@
305
322
  ".agents/skills/wf-auto-spark/SKILL.md": ".claude/skills/wf-auto-spark/SKILL.md",
306
323
  ".agents/skills/wf-auto/SKILL.md": ".claude/skills/wf-auto/SKILL.md",
307
324
  ".agents/skills/wf-browser/SKILL.md": ".claude/skills/wf-browser/SKILL.md",
325
+ ".agents/skills/wf-command-create/SKILL.md": ".claude/skills/wf-command-create/SKILL.md",
308
326
  ".agents/skills/wf-help/SKILL.md": ".claude/skills/wf-help/SKILL.md",
309
327
  ".agents/skills/wf-learn/SKILL.md": ".claude/skills/wf-learn/SKILL.md",
310
328
  ".agents/skills/wf-max/SKILL.md": ".claude/skills/wf-max/SKILL.md",
311
329
  ".agents/skills/wf-readme/SKILL.md": ".claude/skills/wf-readme/SKILL.md",
312
330
  ".agents/skills/wf-remove/SKILL.md": ".claude/skills/wf-remove/SKILL.md",
313
331
  ".agents/skills/wf-review/SKILL.md": ".claude/skills/wf-review/SKILL.md",
332
+ ".agents/skills/wf-task-archive/SKILL.md": ".claude/skills/wf-task-archive/SKILL.md",
333
+ ".agents/skills/wf-task-list/SKILL.md": ".claude/skills/wf-task-list/SKILL.md",
334
+ ".agents/skills/wf-task-record/SKILL.md": ".claude/skills/wf-task-record/SKILL.md",
314
335
  ".agents/skills/wf-update/SKILL.md": ".claude/skills/wf-update/SKILL.md",
315
336
  ".agents/skills/wf/SKILL.md": ".claude/skills/wf/SKILL.md",
316
337
  ".claude/agents/architect-manager.md": ".claude/agents/architect-manager.md",
@@ -335,12 +356,16 @@
335
356
  ".claude/commands/wf-auto-spark.md": ".claude/commands/wf-auto-spark.md",
336
357
  ".claude/commands/wf-auto.md": ".claude/commands/wf-auto.md",
337
358
  ".claude/commands/wf-browser.md": ".claude/commands/wf-browser.md",
359
+ ".claude/commands/wf-command-create.md": ".claude/commands/wf-command-create.md",
338
360
  ".claude/commands/wf-help.md": ".claude/commands/wf-help.md",
339
361
  ".claude/commands/wf-learn.md": ".claude/commands/wf-learn.md",
340
362
  ".claude/commands/wf-max.md": ".claude/commands/wf-max.md",
341
363
  ".claude/commands/wf-readme.md": ".claude/commands/wf-readme.md",
342
364
  ".claude/commands/wf-remove.md": ".claude/commands/wf-remove.md",
343
365
  ".claude/commands/wf-review.md": ".claude/commands/wf-review.md",
366
+ ".claude/commands/wf-task-archive.md": ".claude/commands/wf-task-archive.md",
367
+ ".claude/commands/wf-task-list.md": ".claude/commands/wf-task-list.md",
368
+ ".claude/commands/wf-task-record.md": ".claude/commands/wf-task-record.md",
344
369
  ".claude/commands/wf-update.md": ".claude/commands/wf-update.md",
345
370
  ".claude/commands/wf.md": ".claude/commands/wf.md",
346
371
  ".claude/rules/ecc/common.md": ".claude/rules/ecc/common.md",
@@ -351,12 +376,16 @@
351
376
  ".claude/skills/wf-auto-spark/SKILL.md": ".claude/skills/wf-auto-spark/SKILL.md",
352
377
  ".claude/skills/wf-auto/SKILL.md": ".claude/skills/wf-auto/SKILL.md",
353
378
  ".claude/skills/wf-browser/SKILL.md": ".claude/skills/wf-browser/SKILL.md",
379
+ ".claude/skills/wf-command-create/SKILL.md": ".claude/skills/wf-command-create/SKILL.md",
354
380
  ".claude/skills/wf-help/SKILL.md": ".claude/skills/wf-help/SKILL.md",
355
381
  ".claude/skills/wf-learn/SKILL.md": ".claude/skills/wf-learn/SKILL.md",
356
382
  ".claude/skills/wf-max/SKILL.md": ".claude/skills/wf-max/SKILL.md",
357
383
  ".claude/skills/wf-readme/SKILL.md": ".claude/skills/wf-readme/SKILL.md",
358
384
  ".claude/skills/wf-remove/SKILL.md": ".claude/skills/wf-remove/SKILL.md",
359
385
  ".claude/skills/wf-review/SKILL.md": ".claude/skills/wf-review/SKILL.md",
386
+ ".claude/skills/wf-task-archive/SKILL.md": ".claude/skills/wf-task-archive/SKILL.md",
387
+ ".claude/skills/wf-task-list/SKILL.md": ".claude/skills/wf-task-list/SKILL.md",
388
+ ".claude/skills/wf-task-record/SKILL.md": ".claude/skills/wf-task-record/SKILL.md",
360
389
  ".claude/skills/wf-update/SKILL.md": ".claude/skills/wf-update/SKILL.md",
361
390
  ".claude/skills/wf/SKILL.md": ".claude/skills/wf/SKILL.md",
362
391
  ".codex/config.toml": ".codex/config.toml",
@@ -384,12 +413,16 @@
384
413
  ".opencode/commands/wf-auto-spark.md": ".opencode/commands/wf-auto-spark.md",
385
414
  ".opencode/commands/wf-auto.md": ".opencode/commands/wf-auto.md",
386
415
  ".opencode/commands/wf-browser.md": ".opencode/commands/wf-browser.md",
416
+ ".opencode/commands/wf-command-create.md": ".opencode/commands/wf-command-create.md",
387
417
  ".opencode/commands/wf-help.md": ".opencode/commands/wf-help.md",
388
418
  ".opencode/commands/wf-learn.md": ".opencode/commands/wf-learn.md",
389
419
  ".opencode/commands/wf-max.md": ".opencode/commands/wf-max.md",
390
420
  ".opencode/commands/wf-readme.md": ".opencode/commands/wf-readme.md",
391
421
  ".opencode/commands/wf-remove.md": ".opencode/commands/wf-remove.md",
392
422
  ".opencode/commands/wf-review.md": ".opencode/commands/wf-review.md",
423
+ ".opencode/commands/wf-task-archive.md": ".opencode/commands/wf-task-archive.md",
424
+ ".opencode/commands/wf-task-list.md": ".opencode/commands/wf-task-list.md",
425
+ ".opencode/commands/wf-task-record.md": ".opencode/commands/wf-task-record.md",
393
426
  ".opencode/commands/wf-update.md": ".opencode/commands/wf-update.md",
394
427
  ".opencode/commands/wf.md": ".opencode/commands/wf.md",
395
428
  ".opencode/plugins/harness-wf-status.mjs": ".opencode/plugins/harness-wf-status.mjs",
@@ -431,6 +464,7 @@
431
464
  "Harness/specs/protocols/TASK_ARCHIVE.md": "Harness/specs/protocols/TASK_ARCHIVE.md",
432
465
  "Harness/specs/protocols/TDD-GUIDE.md": "Harness/specs/protocols/TDD-GUIDE.md",
433
466
  "Harness/specs/runtime/agent-workflow.md": "Harness/specs/runtime/agent-workflow.md",
467
+ "Harness/specs/runtime/command-surface.json": "Harness/specs/runtime/command-surface.json",
434
468
  "Harness/specs/runtime/context-loading.md": "Harness/specs/runtime/context-loading.md",
435
469
  "Harness/specs/runtime/dispatch.md": "Harness/specs/runtime/dispatch.md",
436
470
  "Harness/specs/runtime/subagents.md": "Harness/specs/runtime/subagents.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,10 @@ 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. |
25
29
 
26
30
  Source of truth: `Harness/README.md#Skill Commands` plus installed skills under
27
31
  `.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,27 @@
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
+ - 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.
@@ -14,7 +14,7 @@ In direct mode, do not load the full Harness router. Inspect only the files need
14
14
 
15
15
  Complex work may use direct planning, task capsules, tests, and subagents without entering WF. WF execution modes are explicit only: the user must type `/wf`, `$wf`, `/skills wf`, `/wf-max`, `$wf-max`, `/skills wf-max`, `/wf-auto`, `$wf-auto`, `/skills wf-auto`, `/wf-auto-spark`, `$wf-auto-spark`, or `/skills wf-auto-spark` to enter the WF kernel. No other phrasing, complexity heuristic, or inferred intent triggers WF.
16
16
 
17
- `/wf-help`, `$wf-help`, `/skills wf-help`, `/wf-update`, `$wf-update`, and `/skills wf-update` are **direct/compat commands** — do NOT load `Harness/MEMORY.md`, do NOT enter WF. Claude Code and OpenCode execute the direct command files; Codex may invoke the matching compatibility skill shim, which returns the static help/update instructions without entering WF.
17
+ `/wf-help`, `$wf-help`, `/skills wf-help`, `/wf-update`, `$wf-update`, `/skills wf-update`, `/wf-task-record`, `$wf-task-record`, `/skills wf-task-record`, `/wf-task-list`, `$wf-task-list`, `/skills wf-task-list`, `/wf-task-archive`, `$wf-task-archive`, `/skills wf-task-archive`, `/wf-command-create`, `$wf-command-create`, and `/skills wf-command-create` are **direct/compat commands** — do NOT load `Harness/MEMORY.md`, do NOT enter WF. Claude Code and OpenCode execute the direct command files; Codex may invoke the matching compatibility skill shim.
18
18
 
19
19
  For non-direct workflow commands (`/wf`, `/wf-max`, `/wf-auto`, `/wf-review`, `/wf-learn`, `/wf-readme`, `/wf-remove`, `/wf-browser`, `/wf-auto-spark`, and matching `$wf-*` or `/skills wf-*` forms except the direct/compat commands above), load `Harness/MEMORY.md` first, then `Harness/README.md`.
20
20
 
@@ -24,11 +24,13 @@ If the user says "continue", "resume", "last task", "current task", "status", "w
24
24
 
25
25
  1. Read `Harness/PROGRESS.md` → find Active Task.
26
26
  2. If Active Task exists, read `Harness/tasks/<active-task>/STATE.json` first.
27
- 3. Read `Harness/tasks/<active-task>/PROGRESS.md`.
28
- 4. Read `Harness/tasks/<active-task>/PLAN.md` only if decisions or scope need review.
29
- 5. From STATE.json, recover: phase, gate, tier, ready/running/blocked/done queues, activeQuestion, nextAction.
30
- 6. Do NOT bulk-read `Harness/tasks/` to find context. Use the active pointer.
31
- 7. Direct simple tasks may skip STATE/PLAN/PROGRESS unless the user says "continue"/"resume".
27
+ 3. From STATE.json, check `links.dependsOn` — if non-empty, check whether any dependency tasks are still open (STATE.json status is non-archived) and report blocked dependencies.
28
+ 4. From STATE.json, check `workItems[]` if non-empty, inspect items with status `running` or `ready` for parallel dispatch candidates.
29
+ 5. Read `Harness/tasks/<active-task>/PROGRESS.md`.
30
+ 6. Read `Harness/tasks/<active-task>/PLAN.md` only if decisions or scope need review.
31
+ 7. From STATE.json, recover: phase, gate, tier, ready/running/blocked/done queues, activeQuestion, nextAction.
32
+ 8. Do NOT bulk-read `Harness/tasks/` to find context. Use the active pointer.
33
+ 9. Direct simple tasks may skip STATE/PLAN/PROGRESS unless the user says "continue"/"resume". The `continue` keyword resolves deterministically from the active pointer plus STATE.json — it always recovers the same state.
32
34
 
33
35
  See `Harness/specs/workflows/WF-STATE.md` for the full state machine contract. Completed/abandoned tasks are archived to `Harness/tasks/_archive/` per `Harness/specs/protocols/TASK_ARCHIVE.md`.
34
36