create-harness-vibe-coding 0.8.8 → 0.8.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-CN.md +7 -1
- package/README.md +21 -2
- package/docs/images/harness-icon.png +0 -0
- package/package.json +2 -1
- package/src/generator.js +36 -0
- package/src/index.js +72 -4
- package/templates/common/.claude/agents/architect.md +31 -31
- package/templates/common/.claude/agents/codebase-explorer.md +45 -0
- package/templates/common/.claude/agents/docs-researcher.md +41 -41
- package/templates/common/.claude/agents/memory-master.md +26 -8
- package/templates/common/.claude/agents/reviewer.md +34 -34
- package/templates/common/.claude/agents/task-scribe.md +70 -0
- package/templates/common/.claude/commands/wf-help.md +8 -4
- package/templates/common/.claude/commands/wf-update.md +24 -0
- package/templates/common/.claude/rules/ecc/common.md +15 -2
- package/templates/common/.claude/settings.json +13 -0
- package/templates/common/.claude/skills/subagent-orchestrator/SKILL.md +8 -4
- package/templates/common/.claude/skills/wf/SKILL.md +15 -8
- package/templates/common/.claude/skills/wf-auto/SKILL.md +3 -2
- package/templates/common/.claude/skills/wf-learn/SKILL.md +9 -2
- package/templates/common/.claude/skills/wf-max/SKILL.md +23 -5
- package/templates/common/.claude/skills/wf-update/SKILL.md +15 -2
- package/templates/common/.codex/hooks.json +17 -0
- package/templates/common/.harness-version +89 -44
- package/templates/common/.opencode/agents/architect.md +24 -24
- package/templates/common/.opencode/agents/codebase-explorer.md +45 -0
- package/templates/common/.opencode/agents/docs-researcher.md +34 -34
- package/templates/common/.opencode/agents/memory-master.md +26 -8
- package/templates/common/.opencode/agents/reviewer.md +27 -27
- package/templates/common/.opencode/agents/task-scribe.md +70 -0
- package/templates/common/.opencode/commands/wf-auto-spark.md +15 -0
- package/templates/common/.opencode/commands/wf-auto.md +15 -0
- package/templates/common/.opencode/commands/wf-help.md +8 -4
- package/templates/common/.opencode/commands/wf-learn.md +15 -0
- package/templates/common/.opencode/commands/wf-max.md +15 -0
- package/templates/common/.opencode/commands/wf-readme.md +15 -0
- package/templates/common/.opencode/commands/wf-remove.md +15 -0
- package/templates/common/.opencode/commands/wf-review.md +15 -0
- package/templates/common/.opencode/commands/wf-update.md +24 -0
- package/templates/common/.opencode/commands/wf.md +15 -0
- package/templates/common/.opencode/plugins/harness-wf-status.mjs +135 -0
- package/templates/common/AGENTS.md +2 -29
- package/templates/common/CLAUDE.md +35 -6
- package/templates/common/Harness/ACCEPTANCE_PROTOCOL.md +2 -2
- package/templates/common/{MEMORY.md → Harness/MEMORY.md} +16 -3
- package/templates/common/Harness/MEMORY_PROTOCOL.md +80 -30
- package/templates/common/Harness/README.md +50 -22
- package/templates/common/{SETUP.md → Harness/SETUP.md} +278 -276
- package/templates/common/Harness/TASK_ARCHIVE.md +56 -0
- package/templates/common/Harness/WF-AUTO-SPARK.md +5 -14
- package/templates/common/Harness/WF-AUTO.md +13 -76
- package/templates/common/Harness/WF-KERNEL.md +189 -0
- package/templates/common/Harness/WF-MAX.md +60 -328
- package/templates/common/Harness/WF-STATE.md +83 -0
- package/templates/common/Harness/WF.md +117 -237
- package/templates/common/Harness/agent-workflow.md +2 -2
- package/templates/common/Harness/context-loading.md +3 -3
- package/templates/common/Harness/dispatch.md +43 -35
- package/templates/common/Harness/scripts/archive-tasks.mjs +239 -0
- package/templates/common/{scripts → Harness/scripts}/scan-clean.mjs +28 -1
- package/templates/common/{scripts → Harness/scripts}/validate-harness.mjs +909 -699
- package/templates/common/Harness/scripts/wf-auto-update-prompt.mjs +258 -0
- package/templates/common/{scripts → Harness/scripts}/wf-update-check.mjs +40 -7
- package/templates/common/Harness/subagents.md +28 -27
- package/templates/common/Harness/tasks/_template/PLAN.md +5 -0
- package/templates/common/Harness/tasks/_template/STATE.json +23 -0
- package/templates/common/README.md +1 -1
- package/templates/common/memory/agent-lessons-patterns.md +9 -8
- package/templates/common/memory/routes.md +43 -0
- package/templates/common/memory/startup-hints.md +32 -0
- package/templates/common/memory/tool-usage-reflections.md +9 -8
- package/templates/common/memory/user-corrections-preferences.md +11 -9
- package/templates/optional/catalog.json +8 -0
- package/templates/optional/skills/browser-e2e/.claude/skills/browser-e2e/SKILL.md +42 -42
- package/templates/optional/skills/browser-e2e/.opencode/commands/wf-browser.md +15 -0
- package/templates/optional/skills/github-pr-review/.claude/skills/github-pr-review/SKILL.md +40 -40
- package/templates/optional/skills/python-backend/.claude/skills/python-backend/SKILL.md +40 -40
- package/templates/optional/skills/ts-react-frontend/.claude/skills/ts-react-frontend/SKILL.md +43 -43
- package/templates/optional/skills/ui-ux-review/.claude/skills/ui-ux-review/SKILL.md +40 -40
- /package/templates/common/{scripts → Harness/scripts}/wf-remove.mjs +0 -0
|
@@ -4,27 +4,35 @@ Purpose: record durable lessons from acceptance, validation, and debug work with
|
|
|
4
4
|
|
|
5
5
|
Memory is downstream of evidence. It records reusable patterns, not raw transcripts.
|
|
6
6
|
|
|
7
|
+
## L1/L2/L3 Memory Architecture
|
|
8
|
+
|
|
9
|
+
- **L1 = File/Project Facts**: CLAUDE.md, Harness/README.md, PROGRESS/task capsules. Always loaded when relevant.
|
|
10
|
+
- **L2 = Startup Digest**: `Harness/memory/startup-hints.md`. Lightweight hints loaded at session start. Not a replacement for full router.
|
|
11
|
+
- **L3 = Detailed Durable Memory**: `Harness/memory/*.md` files. Loaded only when scenario matches via `routes.md`.
|
|
12
|
+
|
|
7
13
|
## When To Write Memory
|
|
8
14
|
|
|
9
15
|
Write memory when any condition applies:
|
|
10
16
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
17
|
+
- **Explicit user preference**: 用户显式说 remember/next time/never/always/记住/下次/不要再 时,清晰、安全、场景明确可立即写入 L3 (explicit user preference can be written immediately when safe and scoped)
|
|
18
|
+
- **Repeated implicit correction**: 同一假设/模式被纠正 2+ 次 — user corrects the same assumption or preference 2+ times
|
|
19
|
+
- **Tool/command pattern fails 3+ times**: 同类工具/命令失败 3+ 次 — same tool or command pattern fails 3+ times
|
|
20
|
+
- **Review/debug/validation lesson**: 只有可复用、能防回归时才写
|
|
21
|
+
- **WF closeout**: context-master 提取 durable knowledge 后写入
|
|
15
22
|
|
|
16
23
|
## What To Record
|
|
17
24
|
|
|
18
|
-
Memory entries should be short
|
|
25
|
+
Memory entries should be short and AC-aware when possible. Use **compact format** (default no date):
|
|
19
26
|
|
|
20
27
|
```markdown
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
- Context: AC-003 passed visually but failed API payload validation.
|
|
24
|
-
- Lesson: For login flows, require CDP/Playwright request assertions in addition to DOM checks.
|
|
25
|
-
- Applies to: `ACCEPTANCE_PROTOCOL.md`, `HARNESS_BRIDGE.md`
|
|
28
|
+
- When <scenario>: <rule>. Avoid <over-application>. Signals: <signals>.
|
|
26
29
|
```
|
|
27
30
|
|
|
31
|
+
Only use date/timestamp headings when:
|
|
32
|
+
- Entry supersedes prior conflicting guidance
|
|
33
|
+
- Time-sensitive context (version, deprecation)
|
|
34
|
+
- Conflict resolution needed
|
|
35
|
+
|
|
28
36
|
Good memory:
|
|
29
37
|
|
|
30
38
|
- failure mode
|
|
@@ -39,38 +47,61 @@ Bad memory:
|
|
|
39
47
|
- full logs when a summary is enough
|
|
40
48
|
- transient speculation
|
|
41
49
|
- implementation summaries with no reusable lesson
|
|
50
|
+
- task logs, process summaries, one-time emotions
|
|
42
51
|
|
|
43
|
-
##
|
|
52
|
+
## Memory Candidate Detection
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
**Explicit trigger phrases** (中英文):
|
|
55
|
+
- 英文: remember, next time, don't, do not, never, always, I prefer, I want you to
|
|
56
|
+
- 中文: 记住, 下次, 以后, 不要再, 总是, 永远不要, 我偏好, 我希望你以后
|
|
46
57
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
->
|
|
50
|
-
-> memory-master
|
|
51
|
-
-> deduplicate
|
|
52
|
-
-> write concise memory entry
|
|
58
|
+
**Decision flow**:
|
|
59
|
+
```
|
|
60
|
+
detect candidate -> classify target file -> safety filter -> dedup -> write/update -> return concise summary
|
|
53
61
|
```
|
|
54
62
|
|
|
55
|
-
|
|
63
|
+
- **Explicit user preference**: can be written immediately when safe and scoped
|
|
64
|
+
- **Repeated implicit correction**: still requires 2+ occurrences
|
|
65
|
+
- **Tool failure**: 3+ same failures required
|
|
66
|
+
- **Review/debug lesson**: only when reusable and regression-preventing
|
|
56
67
|
|
|
57
|
-
|
|
58
|
-
- `Harness/memory/user-corrections-preferences.md`
|
|
59
|
-
- `Harness/memory/agent-lessons-patterns.md`
|
|
60
|
-
- `Harness/MEMORY.md` only for routing/index updates
|
|
68
|
+
## Memory Routing (L3)
|
|
61
69
|
|
|
62
|
-
|
|
70
|
+
Routes are defined in `Harness/memory/routes.md`. Not detailed memory, but hit-rules index.
|
|
71
|
+
|
|
72
|
+
**Scenario pack**: intent / files / commands / signals / risk
|
|
73
|
+
|
|
74
|
+
**Scoring**:
|
|
75
|
+
- +4 exact file/path match
|
|
76
|
+
- +3 explicit trigger phrase match
|
|
77
|
+
- +3 command/error signature match
|
|
78
|
+
- +2 workflow/mode match
|
|
79
|
+
- +1 keyword overlap
|
|
80
|
+
- -4 avoid match
|
|
81
|
+
|
|
82
|
+
**Thresholds**:
|
|
83
|
+
- score >= 5: load matching entry/file section
|
|
84
|
+
- score 3-4: load route summary only
|
|
85
|
+
- score < 3: load nothing
|
|
86
|
+
|
|
87
|
+
**Hard triggers** (bypass scoring):
|
|
88
|
+
- Explicit user memory statement → user-corrections-preferences.md
|
|
89
|
+
- Same command fails 3x → tool-usage-reflections.md
|
|
90
|
+
- Review/debug/validation reusable lesson → agent-lessons-patterns.md
|
|
91
|
+
- Modifying hook-related files → load only-wf-auto hook lesson
|
|
92
|
+
- /wf-learn → full learning cycle
|
|
63
93
|
|
|
64
|
-
|
|
65
|
-
when the current task matches a known scenario. Hints must be scenario-specific
|
|
66
|
-
and must not dump full memory files into context.
|
|
94
|
+
**Load logging**: always state `memory hints loaded: <id> because <signal>`
|
|
67
95
|
|
|
68
|
-
|
|
69
|
-
|
|
96
|
+
No embedding; keep stable, explainable, token-efficient.
|
|
97
|
+
|
|
98
|
+
## Scenario Memory Hints
|
|
99
|
+
|
|
100
|
+
Controllers, context-master, or memory-master may load a compact memory hint when the current task matches a known scenario.
|
|
70
101
|
|
|
71
102
|
| Scenario | Load Or Hint |
|
|
72
103
|
| --- | --- |
|
|
73
|
-
| new session / startup | `Harness/
|
|
104
|
+
| new session / startup | `Harness/memory/startup-hints.md` (L2 digest) |
|
|
74
105
|
| same tool or command error repeats | matching entries from `memory/tool-usage-reflections.md` |
|
|
75
106
|
| user repeats a correction or preference | matching entries from `memory/user-corrections-preferences.md` |
|
|
76
107
|
| review/debug/validation failure | matching entries from `memory/agent-lessons-patterns.md` |
|
|
@@ -87,6 +118,25 @@ Hint rules:
|
|
|
87
118
|
- never inject secrets, credentials, tokens, private data, or raw transcripts
|
|
88
119
|
- memory-master owns writes; controller/context-master route context
|
|
89
120
|
|
|
121
|
+
## Closeout Flow
|
|
122
|
+
|
|
123
|
+
For WF closeout:
|
|
124
|
+
|
|
125
|
+
```text
|
|
126
|
+
context-master
|
|
127
|
+
-> extract durable acceptance/debug/validation lessons
|
|
128
|
+
-> memory-master
|
|
129
|
+
-> deduplicate
|
|
130
|
+
-> write concise entry
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Memory Master writes to:
|
|
134
|
+
|
|
135
|
+
- `Harness/memory/tool-usage-reflections.md`
|
|
136
|
+
- `Harness/memory/user-corrections-preferences.md`
|
|
137
|
+
- `Harness/memory/agent-lessons-patterns.md`
|
|
138
|
+
- `Harness/MEMORY.md` only for routing/index updates
|
|
139
|
+
|
|
90
140
|
## Memory Write Flow
|
|
91
141
|
|
|
92
142
|
Memory write triggers must never append raw logs directly to memory files.
|
|
@@ -1,18 +1,43 @@
|
|
|
1
1
|
# create-harness-vibe-coding - Harness Router
|
|
2
2
|
|
|
3
|
-
Purpose: route humans and agents to the smallest useful context. `Harness/README.md` is the primary router.
|
|
3
|
+
Purpose: route humans and agents to the smallest useful context. `CLAUDE.md` is the session entry router; `Harness/README.md` is the primary Harness documentation router.
|
|
4
4
|
|
|
5
|
-
Default load: `CLAUDE.md`.
|
|
5
|
+
Default load: `CLAUDE.md`. For workflow commands (`/wf`, `/wf-max`, `/wf-auto`, `/wf-review`, `/wf-learn`, `/wf-readme`, `/wf-remove`, `/wf-browser`, `/wf-auto-spark`), also load `Harness/MEMORY.md` (index only per Memory Preflight), this file, and `Harness/PROGRESS.md` when work is active.
|
|
6
|
+
|
|
7
|
+
`/wf-help` and `/wf-update` are **direct commands**: skip the router, do NOT load `Harness/MEMORY.md`, do NOT enter WF, execute immediately.
|
|
8
|
+
|
|
9
|
+
Do not read the whole `Harness/` tree.
|
|
10
|
+
|
|
11
|
+
## Resume Routing / Active Task Resume
|
|
12
|
+
|
|
13
|
+
`Harness/PROGRESS.md` is the global active pointer. `Harness/tasks/<task-id>/STATE.json` is the machine-readable resume entry.
|
|
14
|
+
|
|
15
|
+
On session start (new window, reopen, resume):
|
|
16
|
+
1. If the user says "continue", "resume", "last task", "current task", "status", or the work is not a simple direct task, read `Harness/PROGRESS.md`.
|
|
17
|
+
2. Find the Active Task, then read `Harness/tasks/<active-task>/STATE.json` first.
|
|
18
|
+
3. From STATE.json, determine:
|
|
19
|
+
- Current phase — what was in progress
|
|
20
|
+
- activeQuestion — is a user answer needed before proceeding?
|
|
21
|
+
- ready queue — can work be dispatched immediately?
|
|
22
|
+
- running items — need result confirmation?
|
|
23
|
+
- blocked — what's blocking?
|
|
24
|
+
- nextAction — what to do next
|
|
25
|
+
4. Do NOT discover context by reading all task directories. Use the active pointer.
|
|
26
|
+
5. Direct simple tasks may skip STATE/PLAN/PROGRESS unless the user says "continue"/"resume".
|
|
27
|
+
|
|
28
|
+
See `Harness/WF-STATE.md` for the full state machine contract and enums.
|
|
6
29
|
|
|
7
30
|
## Direct Mode (Degradation Path)
|
|
8
31
|
|
|
9
|
-
When the user does NOT invoke `/wf
|
|
32
|
+
When the user does NOT explicitly invoke `/wf-*`, `$wf-*`, `/skills wf`, `/skills wf-max`, or say `wf` / `wf-max`, the request is handled in **direct mode**. Skip the router entirely. Execute the task. Do not load `Harness/MEMORY.md`, `Harness/README.md`, or `Harness/PROGRESS.md`.
|
|
33
|
+
|
|
34
|
+
Complex work may use direct planning, task capsules, tests, and subagents without entering WF.
|
|
10
35
|
|
|
11
36
|
Escalate to the router (next section) only when:
|
|
12
|
-
- User explicitly invokes `/wf
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
-
|
|
37
|
+
- User explicitly invokes `/wf`, `/wf-max`, `$wf`, `$wf-max`, `/skills wf`, `/skills wf-max`, or says `wf` / `wf-max`
|
|
38
|
+
- User invokes another workflow `/wf-*` command (NOT `/wf-help` or `/wf-update` — those are direct commands)
|
|
39
|
+
|
|
40
|
+
`/wf-help` and `/wf-update` are direct commands executed immediately without router load.
|
|
16
41
|
|
|
17
42
|
## 0-1 Flow
|
|
18
43
|
|
|
@@ -65,7 +90,7 @@ Keywords are retrieval hints, not project facts.
|
|
|
65
90
|
|
|
66
91
|
Load the matching row only. Add adjacent docs only when the loaded doc directly names them.
|
|
67
92
|
|
|
68
|
-
Routing priority: **direct mode is the default** when no
|
|
93
|
+
Routing priority: **direct mode is the default** when no explicit WF token is present. Complex tasks may still plan, test, and use subagents without entering WF. If a request contains an explicit WF token (`/wf`, `$wf`, `/skills wf`, `/wf-max`, `$wf-max`, `/skills wf-max`), follow the WF contract. WF mode has three tiers: **WF-Light** (low-risk, explicit `/wf` — planner/test/verifier; no mandatory research/architecture/cross-review/reflector), **WF-Standard** (multi-file or behavior change — compact ACs, one implementer, one independent validation/review), **WF-Full** (high-risk, cross-layer, security/data-loss, browser/API, ambiguous architecture, or user asks for full role chain). `/wf-max` has two modes: **WF-Max-Useful** (default — fan-out only where write sets or review lenses are meaningfully independent) and **WF-Max-Strict** (explicit strict override preserving unconditional fan-out).
|
|
69
94
|
|
|
70
95
|
| When to Read | Keywords | Load | Output |
|
|
71
96
|
| --- | --- | --- | --- |
|
|
@@ -75,27 +100,28 @@ Routing priority: **direct mode is the default** when no `/wf-*` command is pres
|
|
|
75
100
|
| Need MVP/spec | PRD, MVP, scope, requirement, acceptance, non-goal | [research/PRD.md](research/PRD.md), [ACCEPTANCE_PROTOCOL.md](ACCEPTANCE_PROTOCOL.md) | Mini PRD with AC IDs and verifiable acceptance criteria |
|
|
76
101
|
| Need architecture or boundaries | architecture, boundary, layer, port, adapter, dependency | [architecture.md](architecture.md) | layer map, ports, constraints |
|
|
77
102
|
| Need WF command help | /wf-help, wf help, command list, list wf commands | `.claude/commands/wf-help.md` | direct command table; no skill invocation |
|
|
78
|
-
| Need WF mode |
|
|
79
|
-
| Need perpetual auto-optimization | /wf-auto, $wf-auto, wf
|
|
80
|
-
| Need perpetual inspiration mode | /wf-auto-spark, $wf-auto-spark, wf
|
|
81
|
-
| Need WF-MAX mode | /wf-max, $wf-max, wf
|
|
103
|
+
| Need WF mode (explicit only) | /wf, $wf, /skills wf (explicit user token only) | [WF.md](WF.md), [WF-KERNEL.md](WF-KERNEL.md), [PROGRESS.md](PROGRESS.md), the current task `tasks/<id>/PROGRESS.md` and `tasks/<id>/PLAN.md` | dynamic ready-queue orchestration, tier-gated acceptance |
|
|
104
|
+
| Need perpetual auto-optimization | /wf-auto, $wf-auto, /skills wf-auto (explicit user token only) | [WF-AUTO.md](WF-AUTO.md), [WF-AUTO-ANGLES.md](WF-AUTO-ANGLES.md), [subagents.md](subagents.md), [dispatch.md](dispatch.md) | perpetual loop, adaptive probe selection, dynamic risk obligations, spark search, intent checkpoint, evidence ledger; CEO never writes code |
|
|
105
|
+
| Need perpetual inspiration mode | /wf-auto-spark, $wf-auto-spark, /skills wf-auto-spark (explicit user token only) | [WF-AUTO-SPARK.md](WF-AUTO-SPARK.md), [WF-AUTO.md](WF-AUTO.md), [subagents.md](subagents.md), [dispatch.md](dispatch.md) | roadmap-anchored: North Star + milestones; external spark search; <=50% deviation guard; never auto-stops |
|
|
106
|
+
| Need WF-MAX mode (explicit only) | /wf-max, $wf-max, /skills wf-max (explicit user token only) | [WF-MAX.md](WF-MAX.md), [WF-KERNEL.md](WF-KERNEL.md), [subagents.md](subagents.md), [dispatch.md](dispatch.md) | /wf kernel + max safe fan-out (WF-Max-Useful default, WF-Max-Strict override) |
|
|
82
107
|
| Need peer review | /wf-review, $wf-review, peer review, second opinion, cross-check, stuck | `.claude/skills/wf-review/SKILL.md`, `.agents/skills/wf-review/SKILL.md`, `Harness/README.md` | cross-model multi-dimension review with severity classification |
|
|
83
108
|
| Adding harness to existing project | existing project, onboarding, migrate, bootstrap, preserve, conflict | [extension.md](extension.md), [PROGRESS.md](PROGRESS.md), root `README.md` and package/CI files | discovered project facts, preserved config, manual registration plan |
|
|
84
109
|
| README optimization | README, docs, quickstart, install docs, architecture diagram, command table, documentation polish | root `README.md`, `.claude/skills/wf-readme/SKILL.md`, [PROGRESS.md](PROGRESS.md), [architecture.md](architecture.md) as needed | approved README mode, preserved sections, proposed diff plan |
|
|
85
110
|
| Need implementation plan | plan, task, write set, verify, milestone, progress | [PROGRESS.md](PROGRESS.md), the current task `tasks/<id>/PROGRESS.md` and `tasks/<id>/PLAN.md`, [agent-workflow.md](agent-workflow.md), [ACCEPTANCE_PROTOCOL.md](ACCEPTANCE_PROTOCOL.md) | tasks, AC IDs, write set, verification commands |
|
|
111
|
+
| Browser E2E testing or automation | /wf-browser, browser, e2e, web automation, form fill, screenshot verify, page test, browser test, Playwright AI, Browser Use, CDP | browser-e2e workflow, [HARNESS_BRIDGE.md](HARNESS_BRIDGE.md), wf-browser skill, Browser Use skill | UI/API contract, CLI commands, screenshots, traces, validation matrix |
|
|
86
112
|
| Optional workflow installed | workflow, optional, ui-ux-review, github-pr-review, python-backend, ts-react-frontend | matching `workflows/*.md` (if installed), [extension.md](extension.md) | workflow-specific evidence, commands, fallback path |
|
|
87
113
|
| Need durable memory or reflection | memory, remember, preference, correction, tool failure, lesson, reflection, scenario memory | [MEMORY.md](MEMORY.md), [MEMORY_PROTOCOL.md](MEMORY_PROTOCOL.md), `Harness/memory/tool-usage-reflections.md`, `Harness/memory/user-corrections-preferences.md`, `Harness/memory/agent-lessons-patterns.md` | concise newest-first memory entry, scenario memory hint, or no-op rationale |
|
|
88
114
|
| Need subagents | subagent, role pack, context, inject, return format, orchestrator, isolation | [subagents.md](subagents.md), [context-loading.md](context-loading.md), [dispatch.md](dispatch.md), [AGENT_ISOLATION.md](AGENT_ISOLATION.md) | controller plan, role-specific context pack, isolation-aware dispatch pack |
|
|
89
115
|
| Need feature work | feature, implementation, TDD, test, review, closeout | [tasks/_template/PLAN.md](tasks/_template/PLAN.md), [agent-workflow.md](agent-workflow.md), [TDD-GUIDE.md](TDD-GUIDE.md), [ACCEPTANCE_PROTOCOL.md](ACCEPTANCE_PROTOCOL.md) | task plan, AC-linked RED tests, implementation loop |
|
|
90
116
|
| Review or release check | review, release, finding, risk, evidence, verification | [agent-workflow.md](agent-workflow.md), current feature doc | findings, verification evidence |
|
|
91
117
|
| Harness readiness check | validate, readiness, placeholder, missing file, release gate | `Harness/scripts/validate-harness.mjs`, `Harness/scripts/validate-harness.mjs --strict` | structural install check; strict bootstrap/release placeholder check |
|
|
92
|
-
| Need harness update | /wf-update, $wf-update, update, check for updates, harness version | `.claude/
|
|
118
|
+
| Need harness update | /wf-update, $wf-update, update, check for updates, harness version | `.claude/commands/wf-update.md`, `.opencode/commands/wf-update.md`, `Harness/.harness-version`, `Harness/scripts/wf-update-check.mjs`; Codex fallback: `.claude/skills/wf-update/SKILL.md` | script-driven comparison, SAFE/CONFLICT/PRESERVE classification, user decides conflicts |
|
|
93
119
|
| Need harness removal | /wf-remove, $wf-remove, wf remove, remove harness, uninstall harness | `.claude/skills/wf-remove/SKILL.md`, `.agents/skills/wf-remove/SKILL.md`, `Harness/scripts/wf-remove.mjs` | safe removal plan: auto-remove SAFE, confirm MODIFIED, never touch USER DATA |
|
|
94
120
|
|
|
95
121
|
## Gates
|
|
96
122
|
|
|
97
123
|
- Move phases in order unless the user asks for a fast lane.
|
|
98
|
-
- Use `/wf <task>` in Claude Code
|
|
124
|
+
- Use `/wf <task>` in Claude Code or `$wf` in Codex, or `/wf-max [task]` / `$wf-max` for maximum-parallelism mode. WF mode is explicit only. WF-Light for low-risk, WF-Standard for multi-file, WF-Full for high-risk/cross-layer. `/wf-max` defaults to useful-fanout (WF-Max-Useful); use explicit `--strict` or "strict wf-max" for unconditional fan-out (WF-Max-Strict).
|
|
99
125
|
- Use `/wf-auto` for perpetual self-directed optimization. It selects probes from project evidence and stops only after dynamic risk obligations and two different empty confirmation passes are recorded.
|
|
100
126
|
- **WF-MAX Role Contract**: Three-layer architecture: global mode (`wf-max`), agent role (`ceo|manager|worker|verifier|reviewer|reflector`), dispatch permission (`writeSet`, `forbidden`, `verification`). CEO never writes source code. Workers edit only dispatch.writeSet. Compliance is checked through dispatch packets, independent review, validation evidence, and task capsules. See `CLAUDE.md#1a`.
|
|
101
127
|
- **WF-REVIEW Anti-Self-Review**: Must invoke the OTHER CLI (Codex -> Claude, or Claude -> Codex). Same-model simulation is forbidden.
|
|
@@ -122,35 +148,37 @@ Routing priority: **direct mode is the default** when no `/wf-*` command is pres
|
|
|
122
148
|
| Category | Files |
|
|
123
149
|
|----------|-------|
|
|
124
150
|
| **Router + Index** | `README.md`, `MEMORY.md`, `PROGRESS.md` |
|
|
125
|
-
| **Task Capsule** | `tasks/<id>/PROGRESS.md`, `tasks/<id>/PLAN.md`, `tasks/_template/` |
|
|
126
|
-
| **Workflows** | `WF.md`, `WF-MAX.md`, `WF-AUTO.md`, `WF-AUTO-SPARK.md` |
|
|
151
|
+
| **Task Capsule** | `tasks/<id>/PROGRESS.md`, `tasks/<id>/PLAN.md`, `tasks/<id>/STATE.json`, `tasks/_template/` |
|
|
152
|
+
| **Workflows** | `WF.md`, `WF-KERNEL.md`, `WF-STATE.md`, `WF-MAX.md`, `WF-AUTO.md`, `WF-AUTO-SPARK.md` |
|
|
127
153
|
| **Protocols** | `ACCEPTANCE_PROTOCOL.md`, `AGENT_ISOLATION.md`, `HARNESS_BRIDGE.md`, `DEBUG_PROTOCOL.md`, `MEMORY_PROTOCOL.md` |
|
|
128
|
-
| **Guides** | `ECC-GUIDE.md`, `TDD-GUIDE.md`, `lifecycle.md`, `architecture.md` |
|
|
129
|
-
| **Orchestration** | `subagents.md`, `context-loading.md`, `dispatch.md`, `agent-workflow.md`, `extension.md` |
|
|
154
|
+
| **Guides** | `ECC-GUIDE.md`, `TDD-GUIDE.md`, `lifecycle.md`, `architecture.md`, `TASK_ARCHIVE.md` |
|
|
155
|
+
| **Orchestration** | `subagents.md`, `context-loading.md`, `dispatch.md`, `agent-workflow.md`, `extension.md`, `WF-STATE.md` |
|
|
130
156
|
| **Research** | `research/README.md`, `research/PRD.md`, `research/research-results.md` |
|
|
131
157
|
| **Acceptance Templates** | `templates/PRD.template.md`, `templates/ACCEPTANCE.template.md`, `templates/UI_CONTRACT.template.md`, `templates/API_CONTRACT.template.md`, `templates/TEST_PLAN.template.md`, `templates/PLAYWRIGHT_SPEC.template.ts`, `templates/VALIDATION_REPORT.template.md` |
|
|
132
158
|
| **Memory** | `memory/tool-usage-reflections.md`, `memory/user-corrections-preferences.md`, `memory/agent-lessons-patterns.md` |
|
|
133
|
-
| **Scripts** | `scripts/validate-harness.mjs`, `scripts/wf-update-check.mjs`, `scripts/wf-remove.mjs` |
|
|
159
|
+
| **Scripts** | `scripts/validate-harness.mjs`, `scripts/wf-update-check.mjs`, `scripts/wf-remove.mjs`, `scripts/archive-tasks.mjs` |
|
|
134
160
|
| **Runtime** | `.harness-version` |
|
|
135
161
|
| **Agents + Skills** | `.claude/agents/*`, `.claude/skills/*`, `.agents/skills/*` |
|
|
136
|
-
| **Direct Commands** | `.claude/commands/wf-help.md` |
|
|
162
|
+
| **Direct Commands** | `.claude/commands/wf-help.md`, `.claude/commands/wf-update.md`, `.opencode/commands/wf-help.md`, `.opencode/commands/wf-update.md` |
|
|
137
163
|
|
|
138
164
|
## Direct Commands
|
|
139
165
|
|
|
140
166
|
| Command | Purpose |
|
|
141
167
|
|---|---|
|
|
142
168
|
| `/wf-help` | Directly returns a table of all Harness WF commands, usage, and purpose. It does not invoke a skill or start a workflow. |
|
|
169
|
+
| `/wf-update` | Script-driven harness update: fetch + compare + apply. Direct command for Claude Code and OpenCode; skill path available for Codex compatibility. |
|
|
143
170
|
|
|
144
171
|
## Skill Commands
|
|
145
172
|
|
|
146
173
|
| Claude Code | Codex | Purpose |
|
|
147
174
|
|---|---|---|
|
|
148
|
-
| `/wf <task>` | `$wf <task>` |
|
|
149
|
-
| `/wf-max [task]` | `$wf-max [task]` | WF
|
|
175
|
+
| `/wf <task>` | `$wf <task>` | Tiered WF: WF-Light (low-risk, planner/test/verifier), WF-Standard (multi-file, compact ACs), WF-Full (high-risk/cross-layer, full role chain) |
|
|
176
|
+
| `/wf-max [task]` | `$wf-max [task]` | WF-Max-Useful default (fan-out only where independent), WF-Max-Strict override (unconditional fan-out) |
|
|
150
177
|
| `/wf-auto` | `$wf-auto` | Perpetual adaptive auto-optimization: dynamic probes, risk obligations, evidence-based exhaustion |
|
|
151
178
|
| `/wf-auto-spark` | `$wf-auto-spark` | Perpetual inspiration: spark search, roadmap-anchored, <=50% deviation guard, never auto-stops |
|
|
152
179
|
| `/wf-review [focus]` | `$wf-review [focus]` | Cross-model peer review via Codex <-> Claude |
|
|
153
180
|
| `/wf-learn` | `$wf-learn` | Force learning cycle: context-master -> memory-master |
|
|
181
|
+
| `/wf-browser [task]` | `$wf-browser [task]` | AI-driven browser automation for E2E testing |
|
|
154
182
|
| `/wf-readme [task]` | `$wf-readme [task]` | README preservation, merge, and documentation improvement workflow |
|
|
155
183
|
| `/wf-update` | `$wf-update` | Script-driven harness update: fetch + compare + apply |
|
|
156
184
|
| `/wf-remove` | `$wf-remove` | Safe harness removal: auto-delete SAFE, confirm MODIFIED, preserve USER DATA |
|