create-harness-vibe-coding 0.2.1 → 0.3.0

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 (47) hide show
  1. package/README.md +104 -21
  2. package/package.json +1 -1
  3. package/src/generator.js +2 -0
  4. package/templates/common/.claude/agents/context-master.md +78 -0
  5. package/templates/common/.claude/agents/debugger.md +1 -1
  6. package/templates/common/.claude/agents/docs-researcher.md +1 -1
  7. package/templates/common/.claude/agents/implementer.md +1 -1
  8. package/templates/common/.claude/agents/memory-master.md +67 -0
  9. package/templates/common/.claude/agents/planner.md +1 -1
  10. package/templates/common/.claude/agents/researcher.md +1 -1
  11. package/templates/common/.claude/agents/test-writer.md +1 -1
  12. package/templates/common/.claude/agents/verifier.md +1 -1
  13. package/templates/common/.claude/commands/update.md +11 -0
  14. package/templates/common/.claude/commands/wf.md +10 -4
  15. package/templates/common/.claude/rules/ecc/common.md +2 -2
  16. package/templates/common/.claude/skills/harness-build-loop/SKILL.md +2 -1
  17. package/templates/common/.claude/skills/harness-context/SKILL.md +2 -1
  18. package/templates/common/.claude/skills/harness-lifecycle/SKILL.md +2 -1
  19. package/templates/common/.claude/skills/harness-research/SKILL.md +2 -1
  20. package/templates/common/.claude/skills/harness-router/SKILL.md +1 -1
  21. package/templates/common/.claude/skills/readme-optimizer/SKILL.md +3 -2
  22. package/templates/common/.claude/skills/subagent-orchestrator/SKILL.md +5 -3
  23. package/templates/common/.claude/skills/wf-mode/SKILL.md +9 -4
  24. package/templates/common/.claude/skills/wf-update/SKILL.md +58 -0
  25. package/templates/common/.harness-version +8 -0
  26. package/templates/common/CLAUDE.md +13 -4
  27. package/templates/common/MEMORY.md +6 -1
  28. package/templates/common/README.md +2 -2
  29. package/templates/common/SETUP.md +24 -14
  30. package/templates/common/docs/README.md +23 -16
  31. package/templates/common/docs/features/_template.md +11 -1
  32. package/templates/common/docs/harness/PLAN.md +37 -88
  33. package/templates/common/docs/harness/PROGRESS.md +17 -0
  34. package/templates/common/docs/harness/WF.md +17 -9
  35. package/templates/common/docs/harness/agent-workflow.md +19 -7
  36. package/templates/common/docs/harness/architecture.md +1 -1
  37. package/templates/common/docs/harness/context-loading.md +17 -5
  38. package/templates/common/docs/harness/dispatch.md +9 -6
  39. package/templates/common/docs/harness/extension.md +4 -4
  40. package/templates/common/docs/harness/lifecycle.md +2 -2
  41. package/templates/common/docs/harness/subagents.md +12 -7
  42. package/templates/common/docs/research/README.md +3 -3
  43. package/templates/common/docs/tasks/_template/ARTIFACTS.md +3 -0
  44. package/templates/common/docs/tasks/_template/NOTES.md +3 -0
  45. package/templates/common/docs/tasks/_template/PLAN.md +40 -0
  46. package/templates/common/docs/tasks/_template/PROGRESS.md +29 -0
  47. package/templates/common/scripts/validate-harness.mjs +59 -7
@@ -21,7 +21,7 @@ WF mode requires multi-subagent orchestration by default.
21
21
  - Explicit `/wf`, `wf mode`, `workflow mode`, or `wk mode` MUST spawn at least 3 distinct subagents from `.claude/agents/` before second planning unless the runtime cannot spawn subagents.
22
22
  - Use a 7:3 collaboration bias: prefer multi-agent collaboration for long, uncertain, cross-file, cross-layer, browser/API, migration, or repeated-failure work; reserve solo mode for clearly local, low-risk, one-file tasks outside explicit WF/WK mode.
23
23
  - Default initial fan-out: `planner`, `researcher` or `docs-researcher`, and `architect`. Add `test-writer`, `reviewer`, `debugger`, or `verifier` when the phase needs them.
24
- - Record every dispatch or bounded-pass fallback in `Harness/PLAN.md#Parallel Dispatch`.
24
+ - Record every dispatch or bounded-pass fallback in `Harness/tasks/<task-id>/PLAN.md#Subagent Dispatch`.
25
25
  - If subagents are unavailable, emulate the same roles as separate bounded passes and record why the fallback was used.
26
26
 
27
27
  ## WF Loop
@@ -42,10 +42,10 @@ Intake
42
42
 
43
43
  ## Intake
44
44
 
45
- 1. Read `CLAUDE.md`, `Harness/MEMORY.md`, `Harness/README.md`, and `Harness/PLAN.md`.
45
+ 1. Read `CLAUDE.md`, `Harness/MEMORY.md`, `Harness/README.md`, `Harness/PROGRESS.md`, and the current task's `PROGRESS.md` and `PLAN.md` under `Harness/tasks/<task-id>/`.
46
46
  2. State the goal, non-goals, confidence level, known risks, and write boundaries.
47
47
  3. Ask up to three blocking questions only when the next action cannot reach 95% confidence.
48
- 4. Update `Harness/PLAN.md#Heartbeat` before dispatching agents or running long commands.
48
+ 4. Update `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat` before dispatching agents or running long commands.
49
49
  5. Load `Harness/subagents.md` before coordinating multiple agents; explicit WF/WK mode always coordinates multiple roles.
50
50
 
51
51
  ## Exploration
@@ -59,13 +59,14 @@ Use parallel read-only subagents first. Explicit WF/WK mode starts with at least
59
59
  | `docs-researcher` | official docs, SDK/API versions, browser/tool limits | none unless returning a docs patch |
60
60
  | `architect` | boundaries, ports, data flow, state impact, migration risks | none unless returning a docs patch |
61
61
 
62
- Use local files first. Use web search, Tavily, TinyFish, GitHub, official docs, or user-provided links only when the decision needs current or external evidence. Record tool choice and limitations in `Harness/research/research-results.md` or `Harness/PLAN.md`.
62
+ Use local files first. Use web search, Tavily, TinyFish, GitHub, official docs, or user-provided links only when the decision needs current or external evidence. Record tool choice and limitations in `Harness/research/research-results.md` or `Harness/tasks/<task-id>/PLAN.md`.
63
63
 
64
64
  ## Subagent Orchestration
65
65
 
66
66
  Use `Harness/subagents.md` as the orchestration methodology and `Harness/dispatch.md` as the dispatch table protocol.
67
67
 
68
68
  - The main agent is the controller and owns synthesis, integration, and final verification.
69
+ - Subagents are readers and reporters. Only the main agent writes to task PROGRESS.md and PLAN.md. Subagents return PLAN patch suggestions which the main agent reviews before committing.
69
70
  - Parallelize read-only exploration; serialize writers unless write sets are disjoint and isolated.
70
71
  - Every subagent gets a dispatch pack with role, goal, read set, write set, forbidden scope, injected docs, evidence, stop condition, and return format.
71
72
  - After implementation, run spec review before code-quality or architecture review.
@@ -84,7 +85,7 @@ After exploration, synthesize:
84
85
  - verification path
85
86
  - rollback or recovery plan
86
87
 
87
- Write the result to `Harness/PLAN.md` before implementation.
88
+ Write the result to `Harness/tasks/<task-id>/PLAN.md` before implementation. Update `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat`.
88
89
 
89
90
  ## Build And Review
90
91
 
@@ -111,20 +112,20 @@ For API changes, run the project API/integration test path or a documented real
111
112
 
112
113
  If verification fails:
113
114
 
114
- 1. Update `Harness/PLAN.md#Heartbeat` with failure count and blocker.
115
+ 1. Update `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat` with failure count and blocker.
115
116
  2. Dispatch `debugger` with the failing command, error output, and smallest relevant files.
116
117
  3. Fix the smallest reproduced failure.
117
118
  4. Run reviewer again.
118
119
  5. Run verifier again.
119
120
  6. Repeat until verified or blocked by missing user input/external state.
120
121
 
121
- If the same failure class happens three times, stop blind fixes. Record evidence, likely root causes, attempted paths, and ask the user to choose among clear options.
122
+ If the same failure class happens three times, stop blind fixes. Before asking the user, dispatch `memory-master` to record the failure pattern, attempted paths, and root cause hypothesis to `Harness/memory/agent-lessons-patterns.md`. Then present evidence-backed options to the user.
122
123
 
123
124
  ## Heartbeat Protocol
124
125
 
125
126
  Heartbeat is a lightweight recovery protocol, not a background daemon.
126
127
 
127
- Update `Harness/PLAN.md#Heartbeat`:
128
+ Update `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat`:
128
129
 
129
130
  - before a long command
130
131
  - after a long command
@@ -135,6 +136,8 @@ Update `Harness/PLAN.md#Heartbeat`:
135
136
 
136
137
  The agent may set the next beat interval by event instead of time, such as "after next test run", "after reviewer returns", or "after browser evidence is captured".
137
138
 
139
+ When context approaches ~85% of the window, dispatch `context-master` to analyze and append a compression suggestion to `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat`. The suggestion is non-blocking; the controller checks it at the next natural pause point.
140
+
138
141
  ## Closeout
139
142
 
140
143
  Close only when:
@@ -143,4 +146,9 @@ Close only when:
143
146
  - reviewer has no unresolved critical/high findings
144
147
  - test/API/browser evidence is recorded
145
148
  - affected Harness docs are synced
146
- - `Harness/PLAN.md#Heartbeat` says the task is verified or lists the exact next recovery action
149
+ - `context-master` has analyzed the session and extracted durable knowledge
150
+ - `memory-master` has consolidated extracted knowledge into `Harness/memory/*` and `Harness/MEMORY.md`
151
+ - Current task PROGRESS.md and PLAN.md are archived under `Harness/tasks/<task-id>/` with Phase set to Verified
152
+ - `Harness/PROGRESS.md` task index is updated (Closed column filled, Active Task cleared or set to next task)
153
+ - `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat` says the task is verified or lists the exact next recovery action
154
+ - `Harness/PROGRESS.md` task index reflects the closed task
@@ -5,16 +5,26 @@ Use when implementing, reviewing, debugging, or coordinating subagents.
5
5
  ## ReAct Loop
6
6
 
7
7
  ```text
8
- Observe -> Load minimal context -> Plan -> Act -> Verify -> Update Harness/PLAN.md
8
+ Observe -> Load minimal context -> Plan -> Act -> Verify -> Update Harness/tasks/<task-id>/PROGRESS.md
9
9
  ```
10
10
 
11
11
  If context grows, load [context-loading.md](context-loading.md) and split the work. If more than one agent is useful, load [subagents.md](subagents.md) and [dispatch.md](dispatch.md).
12
12
 
13
13
  ## Feature Packet
14
14
 
15
- Every PRD scope item (`research/PRD.md` Section 2) must have its own feature doc at `Harness/features/<name>.md` created from `Harness/features/_template.md`. One feature = one doc = one implementation unit. Do not code without a feature doc.
15
+ Every PRD scope item must be covered by a feature doc at `Harness/features/<name>.md`
16
+ created from `Harness/features/_template.md`. Do not code without a feature doc.
16
17
 
17
- Small scope is not an exception a short feature doc is better than none. If the work is truly too small for a full feature doc (single-file fix, no behavior change), it is not a PRD scope item.
18
+ **Cohesion rule**: if multiple PRD scope items share the same write set, the same
19
+ test/verification path, and the same review boundary, group them into a single
20
+ feature doc. The PRD owns scope decomposition; the feature doc owns the
21
+ implementation unit. The number of feature docs should reflect the number of
22
+ distinguishable implementation units, not the number of PRD checkboxes.
23
+
24
+ **Minimum bar**: a feature doc is still required when the implementation touches
25
+ more than one file or changes user-visible behavior. Only skip a feature doc
26
+ entirely when the work is a single-file fix with no behavior change — in that
27
+ case, record the change in `Harness/tasks/<task-id>/PLAN.md` instead.
18
28
 
19
29
  **New vs iterate**: if a PRD scope item has ≥85% overlap with an existing feature doc, open the existing doc, bump `Version`, and add a `## Changelog` entry. Only create a new file when the scope is substantially different. When unsure, ask.
20
30
 
@@ -58,16 +68,16 @@ Rules:
58
68
 
59
69
  ## Parallel Dispatch
60
70
 
61
- Use [subagents.md](subagents.md) and [dispatch.md](dispatch.md) for multi-agent work. Default to at most three active agents. Prefer parallel read-only work first, then serial writes.
71
+ Use [subagents.md](subagents.md) and [dispatch.md](dispatch.md) for multi-agent work. Default to at most three active agents (WF mode overrides this; see [WF.md](WF.md)). Prefer parallel read-only work first, then serial writes.
62
72
 
63
73
  Every dispatched agent returns the handoff format defined in [dispatch.md](dispatch.md).
64
74
 
65
75
  ## Conflict Rule
66
76
 
67
- If PRD, Harness/PLAN.md, architecture, ports, tests, or code disagree:
77
+ If PRD, task PLAN.md, architecture, ports, tests, or code disagree:
68
78
 
69
79
  1. stop implementation
70
- 2. record the conflict in `Harness/PLAN.md` or the feature doc
80
+ 2. record the conflict in `Harness/tasks/<task-id>/PROGRESS.md` or the feature doc
71
81
  3. choose the smallest reversible decision
72
82
  4. ask the maintainer when user-visible behavior or security is affected
73
83
 
@@ -79,4 +89,6 @@ Close only when:
79
89
  - verification evidence is recorded
80
90
  - architecture, ports, data-flow, or state docs are synced if affected
81
91
  - no unresolved critical/high review findings remain
82
- - `Harness/PLAN.md` states the final status or next iteration
92
+ - any optimistic UI mutation has a declared and verified rollback path
93
+ - any file declared as DONE in PLAN.md or PROGRESS.md exists on disk (chat output is not durable evidence)
94
+ - `Harness/tasks/<task-id>/PROGRESS.md` states the final status or next iteration
@@ -60,7 +60,7 @@ State must have one owner, legal transitions, and observable recovery behavior.
60
60
  - Identify durable state, runtime cache, derived UI state, external system state, and audit/event history separately.
61
61
  - Name the owner of each state slice; do not let UI, application services, and infrastructure all mutate the same state directly.
62
62
  - Model long-running workflows with explicit states, guards, and failure transitions in `Harness/state-machines.md`.
63
- - Store resumable progress and recovery decisions in `Harness/PLAN.md#Heartbeat` or project-owned durable storage, not only in chat.
63
+ - Store resumable progress and recovery decisions in `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat` or project-owned durable storage, not only in chat.
64
64
  - Keep state minimal: derive values when cheap, persist only what must survive reload, retry, or handoff.
65
65
 
66
66
  ---
@@ -6,9 +6,9 @@ Use when context is growing, subagents are needed, or an agent is unsure which h
6
6
 
7
7
  `Harness/README.md` is the primary router. This file is a secondary context-splitting protocol for subagents and long tasks.
8
8
 
9
- If this file and `Harness/README.md` disagree, follow `Harness/README.md`, record the assumption in `Harness/PLAN.md`, and update this file later.
9
+ If this file and `Harness/README.md` disagree, follow `Harness/README.md`, record the assumption in `Harness/tasks/<task-id>/PROGRESS.md`, and update this file later.
10
10
 
11
- project files are the only durable communication channel; chat/subagent transcript state is non-authoritative. Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
11
+ project files are the only durable communication channel; chat/subagent transcript state is non-authoritative. Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/tasks/<task-id>/PROGRESS.md` and `Harness/tasks/<task-id>/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
12
12
 
13
13
  ## Main Context
14
14
 
@@ -17,7 +17,9 @@ Always keep:
17
17
  - `CLAUDE.md`
18
18
  - `Harness/MEMORY.md`
19
19
  - `Harness/README.md`
20
- - `Harness/PLAN.md` when active
20
+ - `Harness/PROGRESS.md` when active
21
+ - `Harness/tasks/<task-id>/PROGRESS.md` when active
22
+ - `Harness/tasks/<task-id>/PLAN.md` when active
21
23
  - current feature doc when active
22
24
 
23
25
  Load other docs only by trigger.
@@ -30,8 +32,8 @@ Load other docs only by trigger.
30
32
  | research, competitors, stack choice | `Harness/research/README.md`, `Harness/research/research-results.md` |
31
33
  | official docs, API, SDK, version, limits | `Harness/research/README.md`, `Harness/architecture.md`, `Harness/domain/ports.md` as needed |
32
34
  | layer, dependency, module boundary | `Harness/architecture.md`, `Harness/domain/ports.md` |
33
- | task split, owner, write set | `Harness/PLAN.md`, `Harness/agent-workflow.md` |
34
- | parallel agents, dispatch, worktree decision | `Harness/subagents.md`, `Harness/dispatch.md`, `Harness/PLAN.md` |
35
+ | task split, owner, write set | `Harness/tasks/<task-id>/PROGRESS.md`, `Harness/tasks/<task-id>/PLAN.md`, `Harness/agent-workflow.md` |
36
+ | parallel agents, dispatch, worktree decision | `Harness/subagents.md`, `Harness/dispatch.md`, `Harness/tasks/<task-id>/PLAN.md` |
35
37
  | memory, repeated tool failure, repeated user correction, reusable lesson | `Harness/MEMORY.md`, the relevant `Harness/memory/*.md` file |
36
38
  | event, retry, failure path | `Harness/data-flow.md` |
37
39
  | status, transition, resume | `Harness/state-machines.md` |
@@ -89,6 +91,16 @@ Verifier:
89
91
  - forbid: code changes
90
92
  - return: commands run, results, residual risk
91
93
 
94
+ Memory Master:
95
+ - inject: trigger reason, current failure/user-correction/closeout context, task PROGRESS.md section
96
+ - forbid: source code, unrelated Harness docs
97
+ - return: memory action summary, files written, cross-project flag
98
+
99
+ Context Master:
100
+ - inject: trigger reason (threshold % or closeout), current task PROGRESS.md, task phase
101
+ - forbid: source code, memory files, MEMORY.md writes
102
+ - return: context usage %, stale blocks, compressible blocks, durable knowledge candidates, compression suggestion
103
+
92
104
  ## Handoff Rule
93
105
 
94
106
  Only the subagent summary enters main context. If details are needed, load the named files directly instead of replaying the subagent conversation.
@@ -10,18 +10,19 @@ Use when work needs parallel reading, independent review, cross-layer analysis,
10
10
 
11
11
  - Main agent owns the final decision, integration, and verification.
12
12
  - project files are the only durable communication channel; chat/subagent transcript state is non-authoritative.
13
- - Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
14
- - Prefer three or fewer active agents.
13
+ - Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/tasks/<task-id>/PROGRESS.md` and `Harness/tasks/<task-id>/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
14
+ - Prefer three or fewer active agents (WF mode overrides this; see [WF.md](WF.md)).
15
15
  - Read-only agents may run in parallel.
16
16
  - Writing agents run serially unless write sets are disjoint.
17
17
  - Use a worktree when two agents may touch overlapping files or long-running branches.
18
18
  - Only summaries enter main context. Load named files directly when details are needed.
19
+ - Subagents read task files, return findings and PLAN patch suggestions. Only the main agent commits changes to PROGRESS.md and PLAN.md.
19
20
 
20
21
  ## Dispatch Loop
21
22
 
22
23
  ```text
23
24
  Goal
24
- -> Fill PLAN tasks and Parallel Dispatch
25
+ -> Fill task PROGRESS.md and PLAN.md
25
26
  -> Apply subagents.md efficiency ladder
26
27
  -> Run parallel read-only agents
27
28
  -> Main agent integrates findings
@@ -29,7 +30,7 @@ Goal
29
30
  -> Implementer makes bounded change
30
31
  -> Reviewer checks diff
31
32
  -> Verifier records evidence
32
- -> Main agent updates PLAN and closes or iterates
33
+ -> Main agent updates task files and closes or iterates
33
34
  ```
34
35
 
35
36
  ## Modes
@@ -54,6 +55,8 @@ Goal
54
55
  | `debugger` | Serial Write | smallest fix for a reproduced failure |
55
56
  | `reviewer` | Parallel Read | diff review, risks, missing tests |
56
57
  | `verifier` | Parallel Read | run checks and record evidence |
58
+ | `memory-master` | Serial Write | write/consolidate memory entries, dedup, cross-project extraction |
59
+ | `context-master` | Parallel Read | analyze context usage, recommend compression, extract session knowledge |
57
60
 
58
61
  ## Dispatch Rules
59
62
 
@@ -61,7 +64,7 @@ Goal
61
64
  - A write set of `none` means read-only.
62
65
  - If two write sets overlap, do not run those agents in parallel.
63
66
  - If an agent returns uncertainty, mark the row `Blocked` or add a follow-up row.
64
- - If docs, tests, and code disagree, stop implementation and record the conflict in `PLAN.md`.
67
+ - If docs, tests, and code disagree, stop implementation and record the conflict in `Harness/tasks/<task-id>/PROGRESS.md`.
65
68
 
66
69
  ## Handoff Format
67
70
 
@@ -81,7 +84,7 @@ PLAN patch:
81
84
  ```
82
85
 
83
86
  Use `Files changed: none` for read-only agents. Use `PLAN patch: none` when no state update is needed.
84
- If a handoff matters after context loss, write it to `Harness/PLAN.md`, the current feature doc, or `Harness/memory/*`; do not rely on chat transcript state.
87
+ If a handoff matters after context loss, write it to `Harness/tasks/<task-id>/PROGRESS.md`, `Harness/tasks/<task-id>/PLAN.md`, the current feature doc, or `Harness/memory/*`; do not rely on chat transcript state.
85
88
 
86
89
  ## Statuses
87
90
 
@@ -12,7 +12,7 @@ Extensions must preserve project and harness ownership boundaries.
12
12
  - Treat existing project config as project fact. Read it before adding assets, then adapt new assets to the project instead of replacing the project.
13
13
  - Register added agents, skills, workflows, rules, and hooks in `Harness/MEMORY.md` and this docs router where applicable.
14
14
  - Added assets may extend `.claude/skills/`, `.claude/agents/`, `.claude/rules/`, or `Harness/workflows/`, but they must not replace core harness docs.
15
- - Core harness docs are `Harness/README.md`, `Harness/PLAN.md`, `Harness/subagents.md`, `Harness/context-loading.md`, `Harness/dispatch.md`, `Harness/agent-workflow.md`, and this file.
15
+ - Core harness docs are `Harness/README.md`, `Harness/PROGRESS.md`, `Harness/subagents.md`, `Harness/context-loading.md`, `Harness/dispatch.md`, `Harness/agent-workflow.md`, and this file.
16
16
  - If an optional workflow needs a new command or tool, document the command and fallback in `Harness/workflows/<name>.md` instead of changing core harness behavior.
17
17
 
18
18
  ## Agent Contract
@@ -55,10 +55,10 @@ Every added skill must state:
55
55
  - required inputs
56
56
  - allowed writes
57
57
  - output format
58
- - whether to update `Harness/PLAN.md`
58
+ - whether to update `Harness/PROGRESS.md` and task files
59
59
  - whether to use [subagents.md](subagents.md) and [dispatch.md](dispatch.md)
60
60
 
61
- Skills should extend the harness. They should not replace `Harness/README.md`, `PLAN.md`, `subagents.md`, `context-loading.md`, `dispatch.md`, or `agent-workflow.md`.
61
+ Skills should extend the harness. They should not replace `Harness/README.md`, `Harness/PROGRESS.md`, `subagents.md`, `context-loading.md`, `dispatch.md`, or `agent-workflow.md`.
62
62
 
63
63
  ## Rules
64
64
 
@@ -75,5 +75,5 @@ After adding assets:
75
75
  - list agents in `Harness/MEMORY.md#Agents`
76
76
  - list skills in `Harness/MEMORY.md#Skills`
77
77
  - list workflows by path in `Harness/MEMORY.md` or `Harness/README.md`
78
- - update `Harness/PLAN.md` when the asset affects current work
78
+ - update `Harness/PROGRESS.md` and `Harness/tasks/<task-id>/PROGRESS.md` when the asset affects current work
79
79
  - run `node Harness/scripts/validate-harness.mjs`
@@ -10,10 +10,10 @@ Use when starting a new product, clarifying a vague idea, or deciding the next p
10
10
  | Research | problem and constraints | `research/research-results.md` | `research/README.md` followed; at least 3 references or explicit reason not possible |
11
11
  | PRD | research decision | `research/PRD.md` | MVP, non-goals, acceptance criteria are verifiable |
12
12
  | Architecture | PRD | `Harness/architecture.md`, `Harness/domain/ports.md` | boundaries and first ports are defined |
13
- | Plan | PRD and architecture | `Harness/PLAN.md`, optional `Harness/dispatch.md`, one `Harness/features/<name>.md` per PRD scope item | tasks have owners, write sets, verification |
13
+ | Plan | PRD and architecture | `Harness/PROGRESS.md`, `Harness/tasks/<task-id>/PLAN.md`, optional `Harness/dispatch.md`, one `Harness/features/<name>.md` per PRD scope item | tasks have owners, write sets, verification |
14
14
  | Build | plan and tests | minimal vertical slice | tests or manual checks prove behavior |
15
15
  | Verify | implementation | review findings, test evidence | no unresolved critical/high findings |
16
- | Feedback | verified slice | next iteration or release decision | learnings recorded in PRD, PLAN, or MEMORY |
16
+ | Feedback | verified slice | next iteration or release decision | learnings recorded in PRD, `Harness/tasks/<task-id>/PROGRESS.md`, or MEMORY |
17
17
 
18
18
  ## Operating Rules
19
19
 
@@ -4,7 +4,7 @@ Purpose: coordinate subagents for speed without losing control of scope, evidenc
4
4
 
5
5
  Use this file when work needs multiple roles, parallel reading, independent review, broad context, repeated failures, or `/wf`.
6
6
 
7
- project files are the only durable communication channel; chat/subagent transcript state is non-authoritative. Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
7
+ project files are the only durable communication channel; chat/subagent transcript state is non-authoritative. Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/tasks/<task-id>/PROGRESS.md` and `Harness/tasks/<task-id>/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
8
8
 
9
9
  ## Source Attribution
10
10
 
@@ -28,7 +28,7 @@ The main agent is the controller. It owns:
28
28
  - intent confidence and user questions
29
29
  - task decomposition
30
30
  - read/write set boundaries
31
- - dispatch table in `Harness/PLAN.md`
31
+ - dispatch table in `Harness/tasks/<task-id>/PLAN.md#Subagent Dispatch`
32
32
  - integration of returned summaries
33
33
  - final verification and closeout
34
34
 
@@ -49,6 +49,8 @@ Use the installed roster under `.claude/agents/` before inventing ad hoc roles.
49
49
  | `reviewer` | spec compliance, code quality, maintainability, security, missing tests |
50
50
  | `debugger` | reproduced failures, root cause isolation, smallest safe fix |
51
51
  | `verifier` | command execution, real browser/API checks, final evidence |
52
+ | `memory-master` | write/consolidate memory entries, dedup, cross-project extraction; dispatched on repeated failures, user corrections, and WF closeout |
53
+ | `context-master` | analyze context usage, recommend compression at ~85% window, extract durable session knowledge during closeout |
52
54
 
53
55
  ## WF Default Fan-Out
54
56
 
@@ -67,6 +69,8 @@ Then add phase-specific agents:
67
69
  - `reviewer` for spec and code-quality gates
68
70
  - `debugger` after a reproduced verification failure
69
71
  - `verifier` for final command/browser/API evidence
72
+ - `context-master` before closeout for knowledge extraction
73
+ - `memory-master` after repeated failures and during closeout for consolidation
70
74
 
71
75
  The default decision ratio is a 7:3 collaboration bias: choose multi-agent collaboration for substantial or uncertain work about 70% of the time; choose solo mode only for clearly local, low-risk work that is not explicitly in WF/WK mode.
72
76
 
@@ -127,8 +131,9 @@ Do not make a subagent rediscover the entire project or read the whole harness.
127
131
  - Read-only agents may run in parallel.
128
132
  - Writing agents run serially unless write sets are disjoint and the controller has chosen an isolated worktree.
129
133
  - Reviewers may run in parallel after implementation, but spec compliance is evaluated before code-quality approval.
130
- - Do not let two agents edit `Harness/PLAN.md`, `Harness/MEMORY.md`, or `Harness/memory/*` concurrently. The controller writes durable state.
131
- - If two agents disagree, the controller records the conflict in `Harness/PLAN.md` and chooses the smallest reversible next step.
134
+ - Subagents are readers and reporters. They return findings and PLAN patch suggestions. Only the controller (main agent) commits state changes to task files.
135
+ - Do not let two agents edit `Harness/tasks/<task-id>/PROGRESS.md`, `Harness/tasks/<task-id>/PLAN.md`, `Harness/MEMORY.md`, or `Harness/memory/*` concurrently. The controller writes durable state.
136
+ - If two agents disagree, the controller records the conflict in `Harness/tasks/<task-id>/PLAN.md` and chooses the smallest reversible next step.
132
137
 
133
138
  ## Review Gates
134
139
 
@@ -144,7 +149,7 @@ If either reviewer finds issues, the implementer or debugger fixes them and the
144
149
  | Status | Controller Action |
145
150
  | --- | --- |
146
151
  | `DONE` | start review gates |
147
- | `DONE_WITH_CONCERNS` | read concerns, decide whether to address before review, record in `PLAN.md` |
152
+ | `DONE_WITH_CONCERNS` | read concerns, decide whether to address before review, record in `Harness/tasks/<task-id>/PROGRESS.md` |
148
153
  | `NEEDS_CONTEXT` | provide only missing context and re-dispatch |
149
154
  | `BLOCKED` | change something: add context, split task, upgrade reasoning, use debugger, or ask user |
150
155
 
@@ -153,14 +158,14 @@ Never retry the same failed prompt unchanged.
153
158
  ## Failure Recovery
154
159
 
155
160
  - First failed verification: record evidence, dispatch debugger with the smallest reproduced failure.
156
- - Second same-class failure: narrow scope, update `PLAN.md#Heartbeat`, and add a reviewer before another fix.
161
+ - Second same-class failure: narrow scope, update `Harness/tasks/<task-id>/PROGRESS.md#Heartbeat`, and add a reviewer before another fix.
157
162
  - Third same-class failure: stop blind fixes. Present evidence-backed options to the user.
158
163
 
159
164
  The recovery loop must preserve the same evidence standard as the main workflow: real commands, real browser/API checks when applicable, and recorded logs or artifacts.
160
165
 
161
166
  ## Synthesis Output
162
167
 
163
- After subagents return, the controller writes one synthesis into `Harness/PLAN.md`:
168
+ After subagents return, the controller writes one synthesis into `Harness/tasks/<task-id>/PLAN.md`:
164
169
 
165
170
  ```text
166
171
  Agents used:
@@ -6,7 +6,7 @@ Purpose: guide agent research. Record conclusions in [research-results.md](resea
6
6
 
7
7
  Use this before PRD, stack choice, external API use, public dependency choice, pricing/legal/security assumptions, or any fact likely to change.
8
8
 
9
- Skip only when the task is local, narrow, and fully answerable from existing project files. Record the skip reason in `Harness/PLAN.md`.
9
+ Skip only when the task is local, narrow, and fully answerable from existing project files. Record the skip reason in `Harness/tasks/<task-id>/PROGRESS.md`.
10
10
 
11
11
  ## Research Agent
12
12
 
@@ -21,7 +21,7 @@ Built-in agents:
21
21
  - `.claude/agents/researcher.md`: product, market, open-source, dependency, pricing, policy, and ecosystem research.
22
22
  - `.claude/agents/docs-researcher.md`: official docs, API, SDK, config, limits, errors, and examples verification.
23
23
 
24
- For multi-agent research plus build work, create the dispatch table in `Harness/PLAN.md` and follow `Harness/dispatch.md`.
24
+ For multi-agent research plus build work, create the dispatch table in `Harness/tasks/<task-id>/PLAN.md` and follow `Harness/dispatch.md`.
25
25
 
26
26
  Research Agent input:
27
27
 
@@ -104,7 +104,7 @@ Use these patterns when turning research into PRD or feature docs:
104
104
 
105
105
  ## Write Target
106
106
 
107
- - Research process, queries, and limitations: this file or `Harness/PLAN.md`.
107
+ - Research process, queries, and limitations: this file or `Harness/tasks/<task-id>/PROGRESS.md`.
108
108
  - Final research decisions: [research-results.md](research-results.md).
109
109
  - Product scope: [PRD.md](PRD.md).
110
110
  - Architecture consequences: `Harness/architecture.md` and `Harness/domain/ports.md`.
@@ -0,0 +1,3 @@
1
+ # {{TASK_ID}} — Artifacts
2
+
3
+ Optional: screenshots, logs, API responses, links. Create only when evidence is too large for this task's PLAN.md verification table.
@@ -0,0 +1,3 @@
1
+ # {{TASK_ID}} — Notes
2
+
3
+ Optional: exploration notes, design alternatives, research leads. Create only when notes are too long for this task's PLAN.md.
@@ -0,0 +1,40 @@
1
+ # {{TASK_ID}} — PLAN
2
+
3
+ Task-level implementation plan and evidence. Main agent writes after second planning; implementer reads before coding.
4
+
5
+ ## Goal
6
+
7
+ ## Acceptance Criteria
8
+
9
+ - [ ]
10
+
11
+ ## Scope
12
+
13
+ Allowed write set:
14
+ -
15
+
16
+ Forbidden:
17
+ -
18
+
19
+ ## Loaded Context
20
+
21
+ -
22
+
23
+ ## Subagent Dispatch
24
+
25
+ | Agent | Mode | Read Set | Write Set | Status |
26
+ |-------|------|----------|-----------|--------|
27
+
28
+ ## Subagent Synthesis
29
+
30
+ Agents used:
31
+ Findings accepted:
32
+ Findings rejected:
33
+ Conflicts:
34
+ Decisions:
35
+ Residual risk:
36
+
37
+ ## Verification
38
+
39
+ | Check | Result | Notes |
40
+ |-------|--------|-------|
@@ -0,0 +1,29 @@
1
+ # {{TASK_ID}} — PROGRESS
2
+
3
+ Task-level progress and heartbeat. Main agent updates; subagents read only.
4
+
5
+ ## Current Goal
6
+
7
+ ## Phase
8
+
9
+ Current: Intake
10
+
11
+ ## Heartbeat
12
+
13
+ Last beat:
14
+ Current phase: Intake
15
+ Current blocker: none
16
+ Next beat trigger:
17
+ Failure count: 0
18
+ Recovery action: none
19
+
20
+ ## Tasks
21
+
22
+ | # | Task | Owner | Verify | Status |
23
+ |---|------|-------|--------|--------|
24
+ | 1 | Define goal and scope | main agent | recorded above | Pending |
25
+
26
+ ## Agent Handoffs
27
+
28
+ | Agent | Role | Context Pack | Result |
29
+ |-------|------|-------------|--------|
@@ -25,6 +25,8 @@ const commonAgents = [
25
25
  'debugger',
26
26
  'reviewer',
27
27
  'verifier',
28
+ 'memory-master',
29
+ 'context-master',
28
30
  ];
29
31
 
30
32
  const commonSkills = [
@@ -34,6 +36,7 @@ const commonSkills = [
34
36
  'harness-context',
35
37
  'harness-build-loop',
36
38
  'wf-mode',
39
+ 'wf-update',
37
40
  'subagent-orchestrator',
38
41
  'readme-optimizer',
39
42
  ];
@@ -57,6 +60,7 @@ const required = [
57
60
  ...commonAgents.map(agent => `.claude/agents/${agent}.md`),
58
61
  ...commonSkills.map(skill => `.claude/skills/${skill}/SKILL.md`),
59
62
  'Harness/README.md',
63
+ 'Harness/PROGRESS.md',
60
64
  'Harness/PLAN.md',
61
65
  'Harness/lifecycle.md',
62
66
  'Harness/subagents.md',
@@ -72,10 +76,13 @@ const required = [
72
76
  'Harness/research/research-results.md',
73
77
  'Harness/research/PRD.md',
74
78
  'Harness/domain/ports.md',
79
+ '.claude/skills/wf-update/SKILL.md',
80
+ '.claude/commands/update.md',
81
+ 'Harness/.harness-version',
75
82
  ];
76
83
 
77
84
  const projectFacts = [
78
- 'Harness/PLAN.md',
85
+ 'Harness/PROGRESS.md',
79
86
  'Harness/research/PRD.md',
80
87
  'Harness/research/research-results.md',
81
88
  'Harness/architecture.md',
@@ -93,6 +100,8 @@ const contextPacks = [
93
100
  'Reviewer:',
94
101
  'Debugger:',
95
102
  'Verifier:',
103
+ 'Memory Master:',
104
+ 'Context Master:',
96
105
  ];
97
106
 
98
107
  const durableCommunicationDocs = [
@@ -181,6 +190,37 @@ for (const rel of required) {
181
190
  }
182
191
  }
183
192
 
193
+ // Task capsule template files
194
+ const taskTemplateDir = path.join(root, 'Harness', 'tasks', '_template');
195
+ if (!fs.existsSync(taskTemplateDir)) {
196
+ errors.push('missing directory: Harness/tasks/_template/');
197
+ } else {
198
+ for (const f of ['PROGRESS.md', 'PLAN.md']) {
199
+ if (!fs.existsSync(path.join(taskTemplateDir, f))) {
200
+ errors.push(`missing task template file: Harness/tasks/_template/${f}`);
201
+ }
202
+ }
203
+ }
204
+
205
+ // Cross-reference: DONE files in task PLAN.md must exist on disk
206
+ const taskDirs = fs.existsSync(path.join(root, 'Harness', 'tasks'))
207
+ ? fs.readdirSync(path.join(root, 'Harness', 'tasks'), { withFileTypes: true })
208
+ .filter(e => e.isDirectory() && e.name !== '_template')
209
+ .map(e => e.name)
210
+ : [];
211
+ for (const taskDir of taskDirs) {
212
+ const planPath = `Harness/tasks/${taskDir}/PLAN.md`;
213
+ const planText = read(planPath);
214
+ if (!planText) continue;
215
+ const donePattern = /`([^`]+\.(?:md|mjs|js|ts|json|html|css))`[^\n]*DONE/gi;
216
+ for (const match of planText.matchAll(donePattern)) {
217
+ const claimedFile = match[1];
218
+ if (!fs.existsSync(path.join(root, claimedFile))) {
219
+ errors.push(`${planPath} claims '${claimedFile}' is DONE but file does not exist`);
220
+ }
221
+ }
222
+ }
223
+
184
224
  if (fs.existsSync(path.join(root, 'Harness/research/scaffolds.md'))) {
185
225
  errors.push('legacy research file should be renamed: Harness/research/scaffolds.md -> Harness/research/research-results.md');
186
226
  }
@@ -218,17 +258,26 @@ requireText('CLAUDE.md', 'Harness/MEMORY.md` is the memory/resource router', 'me
218
258
  requireText('CLAUDE.md', 'Harness/README.md#Load By Task', 'Harness task router');
219
259
  requireText('CLAUDE.md', 'Harness/SETUP.md` exists, follow it before normal project work', 'setup bootstrap contract');
220
260
  requireText('CLAUDE.md', 'subagent-orchestrator` and `Harness/subagents.md', 'subagent orchestrator entry trigger');
261
+ requireText('CLAUDE.md', 'Harness/PROGRESS.md` is the global task index', 'PROGRESS global task index');
262
+ requireText('CLAUDE.md', 'Harness/tasks/', 'task capsule directory reference');
263
+ requireText('CLAUDE.md', 'Subagents are readers and reporters', 'subagent state committer rule');
221
264
  for (const heading of ['## 2. Think Before Coding', '## 3. Simplicity First', '## 4. Surgical Changes', '## 5. Goal-Driven Execution']) {
222
265
  requireText('CLAUDE.md', heading, `Karpathy-style rule heading: ${heading}`);
223
266
  }
224
267
 
268
+ // Root PROGRESS.md structure check
269
+ const progress = read('Harness/PROGRESS.md');
270
+ if (progress) {
271
+ for (const heading of ['## Active Task', '## Task Index', '## Cross-Task Decisions']) {
272
+ if (!progress.includes(heading)) errors.push(`Harness/PROGRESS.md missing heading: ${heading}`);
273
+ }
274
+ }
275
+
276
+ // Legacy PLAN.md deprecation check (it exists as stub, no longer requires active task headings)
225
277
  const plan = read('Harness/PLAN.md');
226
278
  if (plan) {
227
- for (const heading of ['## Current Goal', '## Phase', '## Heartbeat', '## Success Criteria', '## Loaded Context', '## Tasks', '## Parallel Dispatch', '## Subagent Synthesis', '## Verification']) {
228
- if (!plan.includes(heading)) errors.push(`Harness/PLAN.md missing heading: ${heading}`);
229
- }
230
- for (const marker of ['Next beat trigger', 'Recovery action']) {
231
- if (!plan.includes(marker)) errors.push(`Harness/PLAN.md missing heartbeat marker: ${marker}`);
279
+ if (!plan.includes('DEPRECATED')) {
280
+ errors.push('Harness/PLAN.md should be a deprecation stub; see Harness/PROGRESS.md');
232
281
  }
233
282
  }
234
283
 
@@ -349,7 +398,7 @@ for (const agent of commonAgents) {
349
398
  }
350
399
 
351
400
  requireText('Harness/extension.md', 'Skills should extend the harness');
352
- requireText('Harness/agent-workflow.md', 'Harness/PLAN.md');
401
+ requireText('Harness/agent-workflow.md', 'Harness/tasks/<task-id>/PROGRESS.md');
353
402
  requireText('Harness/research/README.md', 'research-results.md');
354
403
  requireText('Harness/WF.md', 'Ralph-style harness loop', 'WF loop description');
355
404
  requireText('Harness/WF.md', 'Heartbeat Protocol', 'heartbeat protocol');
@@ -357,6 +406,7 @@ requireText('Harness/WF.md', 'WF mode requires multi-subagent orchestration by d
357
406
  requireText('Harness/WF.md', 'Explicit `/wf`, `wf mode`, `workflow mode`, or `wk mode` MUST spawn at least 3 distinct subagents', 'explicit WF/WK subagent minimum');
358
407
  requireText('Harness/WF.md', '.claude/agents/', 'WF built-in agent roster path');
359
408
  requireText('Harness/WF.md', '7:3 collaboration bias', 'WF collaboration bias');
409
+ requireText('Harness/WF.md', 'Harness/tasks/', 'WF task directory reference');
360
410
  requireText('Harness/README.md', '`/wf`, `wf mode`, `workflow mode`, or `wk mode`', 'WF/WK router aliases');
361
411
  requireText('Harness/README.md', 'explicit WF/WK loads subagent docs immediately', 'explicit WF/WK router output');
362
412
  requireText('.claude/skills/harness-router/SKILL.md', '`/wf`, `wf mode`, `workflow mode`, `wk mode`', 'harness-router WF/WK aliases');
@@ -384,6 +434,8 @@ requireText('Harness/architecture.md', '## 2. Interface Decoupling', 'architectu
384
434
  requireText('Harness/architecture.md', '## 3. State Design', 'architecture state design');
385
435
  requireText('Harness/architecture.md', 'Avoid speculative abstraction', 'anti-overengineering architecture rule');
386
436
  requireText('CLAUDE.md', 'Use explicit interfaces or state models only when they protect a real boundary', 'CLAUDE interface/state simplicity rule');
437
+ requireText('CLAUDE.md', '/wf update', 'wf update startup instruction');
438
+ requireText('Harness/README.md', 'Need harness update', 'update routing row');
387
439
 
388
440
  if (errors.length) {
389
441
  console.error(`Harness validation failed${strict ? ' (strict)' : ''}:`);