create-harness-vibe-coding 0.8.13 → 0.8.17
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/CHANGELOG.md +174 -0
- package/README-CN.md +110 -107
- package/README.md +93 -44
- package/package.json +2 -1
- package/src/generator.js +609 -489
- package/src/index.js +5 -5
- package/templates/common/.claude/agents/architect-manager.md +1 -0
- package/templates/common/.claude/agents/architect.md +2 -1
- package/templates/common/.claude/agents/codebase-explorer.md +1 -0
- package/templates/common/.claude/agents/context-master.md +2 -1
- package/templates/common/.claude/agents/debugger.md +1 -0
- package/templates/common/.claude/agents/docs-researcher.md +2 -1
- package/templates/common/.claude/agents/explore-manager.md +1 -0
- package/templates/common/.claude/agents/implement-manager.md +1 -0
- package/templates/common/.claude/agents/implementer.md +1 -0
- package/templates/common/.claude/agents/memory-master.md +2 -1
- package/templates/common/.claude/agents/planner.md +3 -2
- package/templates/common/.claude/agents/reflector.md +1 -0
- package/templates/common/.claude/agents/researcher.md +1 -0
- package/templates/common/.claude/agents/review-manager.md +1 -0
- package/templates/common/.claude/agents/reviewer.md +2 -1
- package/templates/common/.claude/agents/task-scribe.md +1 -0
- package/templates/common/.claude/agents/tdd-guide.md +5 -4
- package/templates/common/.claude/agents/test-writer.md +6 -5
- package/templates/common/.claude/agents/verifier.md +1 -0
- package/templates/common/.claude/commands/wf-auto-spark.md +16 -0
- package/templates/common/.claude/commands/wf-auto.md +16 -0
- package/templates/{optional/skills/browser-e2e/.opencode → common/.claude}/commands/wf-browser.md +3 -2
- package/templates/common/.claude/commands/wf-help.md +9 -5
- package/templates/common/.claude/commands/wf-learn.md +16 -0
- package/templates/common/.claude/commands/wf-max.md +20 -0
- package/templates/common/.claude/commands/wf-readme.md +16 -0
- package/templates/common/.claude/commands/wf-remove.md +16 -0
- package/templates/common/.claude/commands/wf-review.md +16 -0
- package/templates/common/.claude/commands/wf-update.md +68 -10
- package/templates/common/.claude/commands/wf.md +16 -0
- package/templates/common/.claude/rules/ecc/common.md +6 -5
- package/templates/common/.claude/skills/subagent-orchestrator/SKILL.md +12 -6
- package/templates/common/.claude/skills/tdd/SKILL.md +5 -5
- package/templates/common/.claude/skills/wf/SKILL.md +13 -5
- package/templates/common/.claude/skills/wf-agents-docs/SKILL.md +119 -0
- package/templates/common/.claude/skills/wf-auto/SKILL.md +27 -7
- package/templates/common/.claude/skills/wf-auto-spark/SKILL.md +12 -5
- package/templates/common/.claude/skills/wf-browser/SKILL.md +176 -0
- package/templates/common/.claude/skills/wf-help/SKILL.md +30 -0
- package/templates/common/.claude/skills/wf-learn/SKILL.md +6 -0
- package/templates/common/.claude/skills/wf-max/SKILL.md +43 -14
- package/templates/common/.claude/skills/wf-readme/SKILL.md +8 -2
- package/templates/common/.claude/skills/wf-remove/SKILL.md +6 -0
- package/templates/common/.claude/skills/wf-review/SKILL.md +10 -3
- package/templates/common/.claude/skills/wf-update/SKILL.md +41 -4
- package/templates/common/.codex/config.toml +3 -5
- package/templates/common/.harness-version +326 -131
- package/templates/common/.opencode/agents/architect-manager.md +8 -1
- package/templates/common/.opencode/agents/architect.md +2 -1
- package/templates/common/.opencode/agents/codebase-explorer.md +1 -0
- package/templates/common/.opencode/agents/context-master.md +2 -1
- package/templates/common/.opencode/agents/debugger.md +1 -0
- package/templates/common/.opencode/agents/docs-researcher.md +2 -1
- package/templates/common/.opencode/agents/explore-manager.md +11 -1
- package/templates/common/.opencode/agents/implement-manager.md +6 -3
- package/templates/common/.opencode/agents/implementer.md +1 -0
- package/templates/common/.opencode/agents/memory-master.md +2 -1
- package/templates/common/.opencode/agents/planner.md +3 -2
- package/templates/common/.opencode/agents/reflector.md +1 -0
- package/templates/common/.opencode/agents/researcher.md +1 -0
- package/templates/common/.opencode/agents/review-manager.md +6 -2
- package/templates/common/.opencode/agents/reviewer.md +2 -1
- package/templates/common/.opencode/agents/task-scribe.md +1 -0
- package/templates/common/.opencode/agents/tdd-guide.md +5 -4
- package/templates/common/.opencode/agents/test-writer.md +6 -5
- package/templates/common/.opencode/agents/verifier.md +1 -0
- package/templates/common/.opencode/commands/wf-auto-spark.md +3 -2
- package/templates/common/.opencode/commands/wf-auto.md +3 -2
- package/templates/common/.opencode/commands/wf-browser.md +16 -0
- package/templates/common/.opencode/commands/wf-help.md +9 -5
- package/templates/common/.opencode/commands/wf-learn.md +3 -2
- package/templates/common/.opencode/commands/wf-max.md +12 -6
- package/templates/common/.opencode/commands/wf-readme.md +3 -2
- package/templates/common/.opencode/commands/wf-remove.md +3 -2
- package/templates/common/.opencode/commands/wf-review.md +3 -2
- package/templates/common/.opencode/commands/wf-update.md +68 -10
- package/templates/common/.opencode/commands/wf.md +3 -2
- package/templates/common/CLAUDE.md +15 -13
- package/templates/common/Harness/MEMORY.md +24 -21
- package/templates/common/Harness/README.md +50 -47
- package/templates/common/Harness/ownership.manifest.json +878 -0
- package/templates/common/Harness/{architecture.md → project/architecture.md} +1 -1
- package/templates/common/Harness/research/README.md +3 -3
- package/templates/common/Harness/scripts/archive-tasks.mjs +12 -220
- package/templates/common/Harness/scripts/context-budget.mjs +95 -0
- package/templates/common/Harness/scripts/l2-cache-telemetry.mjs +703 -0
- package/templates/common/Harness/scripts/scan-clean.mjs +16 -12
- package/templates/common/Harness/scripts/task-state.mjs +889 -0
- package/templates/common/Harness/scripts/validate-harness.mjs +553 -191
- package/templates/common/Harness/scripts/wf-remove.mjs +61 -35
- package/templates/common/Harness/scripts/wf-update-check.mjs +358 -45
- package/templates/common/Harness/settings.json +43 -0
- package/templates/common/Harness/{ECC-GUIDE.md → specs/guides/ECC-GUIDE.md} +4 -4
- package/templates/common/Harness/{SETUP.md → specs/guides/SETUP.md} +34 -37
- package/templates/common/Harness/{extension.md → specs/guides/extension.md} +3 -3
- package/templates/common/Harness/{lifecycle.md → specs/guides/lifecycle.md} +2 -2
- package/templates/common/Harness/specs/protocols/TASK_ARCHIVE.md +76 -0
- package/templates/common/Harness/{agent-workflow.md → specs/runtime/agent-workflow.md} +6 -6
- package/templates/common/Harness/{context-loading.md → specs/runtime/context-loading.md} +85 -21
- package/templates/common/Harness/{dispatch.md → specs/runtime/dispatch.md} +4 -3
- package/templates/common/Harness/{subagents.md → specs/runtime/subagents.md} +19 -10
- package/templates/common/Harness/{WF-AUTO-SPARK.md → specs/workflows/WF-AUTO-SPARK.md} +2 -2
- package/templates/common/Harness/{WF-AUTO.md → specs/workflows/WF-AUTO.md} +12 -7
- package/templates/common/Harness/{WF-KERNEL.md → specs/workflows/WF-KERNEL.md} +11 -1
- package/templates/common/Harness/{WF-MAX.md → specs/workflows/WF-MAX.md} +40 -7
- package/templates/common/Harness/specs/workflows/WF-STATE.md +141 -0
- package/templates/common/Harness/{WF.md → specs/workflows/WF.md} +12 -1
- package/templates/common/README.md +8 -6
- package/templates/common/memory/startup-hints.md +19 -17
- package/templates/common/opencode.json +1 -0
- package/templates/optional/catalog.json +2 -9
- package/templates/optional/skills/github-pr-review/.claude/skills/github-pr-review/SKILL.md +1 -1
- package/templates/optional/skills/python-backend/.claude/skills/python-backend/SKILL.md +1 -1
- package/templates/optional/skills/ts-react-frontend/.claude/skills/ts-react-frontend/SKILL.md +1 -1
- package/templates/optional/skills/ui-ux-review/.claude/skills/ui-ux-review/SKILL.md +1 -1
- package/templates/common/Harness/TASK_ARCHIVE.md +0 -56
- package/templates/common/Harness/WF-STATE.md +0 -83
- package/templates/optional/skills/browser-e2e/.claude/skills/browser-e2e/SKILL.md +0 -42
- package/templates/optional/skills/browser-e2e/.claude/skills/wf-browser/SKILL.md +0 -194
- package/templates/optional/skills/browser-e2e/Harness/workflows/browser-e2e.md +0 -119
- /package/templates/common/Harness/{ACCEPTANCE_PROTOCOL.md → specs/protocols/ACCEPTANCE_PROTOCOL.md} +0 -0
- /package/templates/common/Harness/{AGENT_ISOLATION.md → specs/protocols/AGENT_ISOLATION.md} +0 -0
- /package/templates/common/Harness/{DEBUG_PROTOCOL.md → specs/protocols/DEBUG_PROTOCOL.md} +0 -0
- /package/templates/common/Harness/{HARNESS_BRIDGE.md → specs/protocols/HARNESS_BRIDGE.md} +0 -0
- /package/templates/common/Harness/{MEMORY_PROTOCOL.md → specs/protocols/MEMORY_PROTOCOL.md} +0 -0
- /package/templates/common/Harness/{TDD-GUIDE.md → specs/protocols/TDD-GUIDE.md} +0 -0
- /package/templates/common/Harness/{WF-AUTO-ANGLES.md → specs/workflows/WF-AUTO-ANGLES.md} +0 -0
|
@@ -4,10 +4,15 @@ 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 explicit `/wf` / `/wf-max` invocation.
|
|
6
6
|
|
|
7
|
+
Cache-first discipline: subagent context packs follow
|
|
8
|
+
`Harness/specs/runtime/context-loading.md#Cache-First Context Contract`. Inject only routed
|
|
9
|
+
docs and selected files, keep dispatch fields in deterministic order, defer
|
|
10
|
+
unused skill/tool schemas, and return bounded summaries instead of transcripts.
|
|
11
|
+
|
|
7
12
|
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
13
|
|
|
9
|
-
Subagent work is acceptance-driven. Use [AGENT_ISOLATION.md](AGENT_ISOLATION.md)
|
|
10
|
-
for role/context isolation and [ACCEPTANCE_PROTOCOL.md](ACCEPTANCE_PROTOCOL.md)
|
|
14
|
+
Subagent work is acceptance-driven. Use [AGENT_ISOLATION.md](../protocols/AGENT_ISOLATION.md)
|
|
15
|
+
for role/context isolation and [ACCEPTANCE_PROTOCOL.md](../protocols/ACCEPTANCE_PROTOCOL.md)
|
|
11
16
|
for PRD-GATE, AC-GATE, CONTRACT-GATE, TEST-GATE, VALIDATION-GATE, and
|
|
12
17
|
REVIEW-GATE.
|
|
13
18
|
|
|
@@ -82,7 +87,7 @@ Hard rule: implementer may not be the independent validator for the same AC ID.
|
|
|
82
87
|
|
|
83
88
|
## WF Default Fan-Out
|
|
84
89
|
|
|
85
|
-
Explicit `/wf`, `$wf`, or `/skills wf` requires tier-specific role coverage per `Harness/WF.md`.
|
|
90
|
+
Explicit `/wf`, `$wf`, or `/skills wf` requires tier-specific role coverage per `Harness/specs/workflows/WF.md`.
|
|
86
91
|
WF-Light: planner + test-writer + implementer + verifier.
|
|
87
92
|
WF-Standard: adds research/docs + one review lens.
|
|
88
93
|
WF-Full: complete role-chain coverage from `.claude/agents/` before closeout: plan,
|
|
@@ -106,7 +111,7 @@ Then add phase-specific agents:
|
|
|
106
111
|
- `context-master` before closeout for knowledge extraction
|
|
107
112
|
- `memory-master` after repeated failures and during closeout for consolidation
|
|
108
113
|
|
|
109
|
-
Collaboration mode is determined by WF tier and concrete conditions, not a fixed ratio. See `Harness/WF.md` for the tier decision guide. Summary: WF-Light uses minimal roles. WF-Standard uses moderate roles with one review lens. WF-Full always uses the complete role chain. Non-WF complex work may still use subagents and planning without entering any WF mode. Repeated failure after two attempts escalates to next tier.
|
|
114
|
+
Collaboration mode is determined by WF tier and concrete conditions, not a fixed ratio. See `Harness/specs/workflows/WF.md` for the tier decision guide. Summary: WF-Light uses minimal roles. WF-Standard uses moderate roles with one review lens. WF-Full always uses the complete role chain. Non-WF complex work may still use subagents and planning without entering any WF mode. Repeated failure after two attempts escalates to next tier.
|
|
110
115
|
|
|
111
116
|
## Efficiency Ladder
|
|
112
117
|
|
|
@@ -125,11 +130,15 @@ Max parallelism removes the Harness default cap, not the runtime's physical or
|
|
|
125
130
|
account cap. For WF-MAX, record the current runtime budget, use native
|
|
126
131
|
subagents first, close completed agents before declaring the pool exhausted,
|
|
127
132
|
then overflow to a peer CLI (`claude -p`, `codex exec`, or `opencode run --agent <role> --dir .`) with explicit
|
|
128
|
-
dispatch packets.
|
|
129
|
-
`
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
dispatch packets. WF-MAX must attempt native subagent fan-out and record
|
|
134
|
+
`fanoutAttempted: true` before any solo fallback. Do not scaffold Codex scalar
|
|
135
|
+
`[agents]` capacity fields into `.codex/config.toml`; codex-cli 0.144.x can
|
|
136
|
+
reject them during TUI `skills/list`. Probe the installed runtime first and
|
|
137
|
+
manage Codex WF-MAX caps through the dispatch ledger unless the installed
|
|
138
|
+
version accepts the config shape. Generated OpenCode config defaults to
|
|
139
|
+
`subagent_depth = 2` so manager subagents can invoke worker subagents; manager
|
|
140
|
+
agents also need `permission.task` allowlists. Do not rely on undocumented
|
|
141
|
+
fork/derive bypasses as stable capacity.
|
|
133
142
|
|
|
134
143
|
Default for explicit WF invocation: tier-based. WF-Light: planner + test-writer + implementer + verifier (bounded passes acceptable). WF-Standard: adds research/docs + one independent review lens. WF-Full: complete role chain, use bounded role passes as the recorded fallback when subagents are unavailable.
|
|
135
144
|
|
|
@@ -168,7 +177,7 @@ controller intake
|
|
|
168
177
|
|
|
169
178
|
## Dispatch Pack
|
|
170
179
|
|
|
171
|
-
Use the canonical dispatch input and handoff format in `Harness/dispatch.md`. Every subagent dispatch must be self-contained - inject only the docs selected by `Harness/README.md` and `Harness/context-loading.md`. On session start, the controller reads `Harness/tasks/<task-id>/STATE.json` per [WF-STATE.md](WF-STATE.md) to resume the dispatch ledger and ready queue.
|
|
180
|
+
Use the canonical dispatch input and handoff format in `Harness/specs/runtime/dispatch.md`. Every subagent dispatch must be self-contained - inject only the docs selected by `Harness/README.md` and `Harness/specs/runtime/context-loading.md`. On session start, the controller reads `Harness/tasks/<task-id>/STATE.json` per [WF-STATE.md](../workflows/WF-STATE.md) to resume the dispatch ledger and ready queue.
|
|
172
181
|
|
|
173
182
|
## Parallelism Rules
|
|
174
183
|
|
|
@@ -22,7 +22,7 @@ But perpetual search without direction = drift. The **Roadmap** is the anchor.
|
|
|
22
22
|
|
|
23
23
|
WF-AUTO-SPARK is a `/wf` variant layered on WF-AUTO: it inherits the WF-KERNEL contract via WF-AUTO and WF constraints, and does not define an independent heavy process. External spark search replaces discovery only; it does not replace acceptance, implementation, review, verification, reflection, or evidence.
|
|
24
24
|
|
|
25
|
-
Accepted spark candidates re-enter the standard W2-W5 gates per [WF-KERNEL.md](WF-KERNEL.md): implementer (one file_claim, ≤3 files, ≤50 lines), verifier, reviewer(s), reflector. Spark searchers are read-only. Any implementation must use the dispatch packet from `Harness/dispatch.md` with explicit write set, forbidden truth files, AC IDs, and verification commands. A candidate with no verifier evidence or no reflector PASS is not accepted, even if the idea is valuable.
|
|
25
|
+
Accepted spark candidates re-enter the standard W2-W5 gates per [WF-KERNEL.md](WF-KERNEL.md): implementer (one file_claim, ≤3 files, ≤50 lines), verifier, reviewer(s), reflector. Spark searchers are read-only. Any implementation must use the dispatch packet from `Harness/specs/runtime/dispatch.md` with explicit write set, forbidden truth files, AC IDs, and verification commands. A candidate with no verifier evidence or no reflector PASS is not accepted, even if the idea is valuable.
|
|
26
26
|
|
|
27
27
|
For task-state writes, CEO provides concise bullets and decisions; task-scribe formats task-state writes for roadmap, cycle PLAN, heartbeat, evidence pointers, and closeout. If task-scribe is unavailable, CEO may write the smallest durable checkpoint and must record that degradation in `PROGRESS.md`. This keeps the high-reasoning controller focused on decisions instead of spending tokens formatting process files.
|
|
28
28
|
|
|
@@ -313,7 +313,7 @@ This replaces the broken `/wf-auto` auto-continue. No silent drift across sessio
|
|
|
313
313
|
|
|
314
314
|
| File | Purpose |
|
|
315
315
|
|------|---------|
|
|
316
|
-
| `Harness/WF-AUTO-SPARK.md` | This spec |
|
|
316
|
+
| `Harness/specs/workflows/WF-AUTO-SPARK.md` | This spec |
|
|
317
317
|
| `Harness/tasks/auto/SPARK-ROADMAP.md` | Active roadmap (created at startup) |
|
|
318
318
|
| `Harness/tasks/auto/PLAN.md` | Per-cycle change spec |
|
|
319
319
|
| `Harness/tasks/auto/PROGRESS.md` | Cycle log, heartbeat, evidence ledger |
|
|
@@ -296,11 +296,16 @@ Every cycle writes one entry to `Harness/tasks/auto/PROGRESS.md`:
|
|
|
296
296
|
|
|
297
297
|
IMMEDIATELY return to W0. No pause between cycles — the only breaks are the adaptive Intent Checkpoint and the A-GATE.
|
|
298
298
|
|
|
299
|
-
###
|
|
299
|
+
### Runtime Hook Boundaries
|
|
300
300
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
auto-optimization.
|
|
301
|
+
Execution-control hooks are disabled by default across the Harness scaffold.
|
|
302
|
+
Startup update-check hooks are not execution-control hooks. Only an explicitly
|
|
303
|
+
enabled `/wf-auto` tick hook may drive long-running auto-optimization.
|
|
304
|
+
|
|
305
|
+
Manual or benchmark-driven single-cycle `/wf-auto` runs use the same bounded
|
|
306
|
+
tick contract: they may stop because the caller explicitly requested one tick,
|
|
307
|
+
but they still MUST create or update `Harness/tasks/auto/PLAN.md` and
|
|
308
|
+
`Harness/tasks/auto/PROGRESS.md` before returning.
|
|
304
309
|
|
|
305
310
|
The hook is not a role-enforcement mechanism, not a memory injection mechanism,
|
|
306
311
|
and not WF-MAX state. It is only a bounded tick trigger:
|
|
@@ -316,8 +321,8 @@ wf-auto hook event
|
|
|
316
321
|
|
|
317
322
|
Hard boundaries:
|
|
318
323
|
|
|
319
|
-
- no hook is installed or registered by default
|
|
320
|
-
- only `/wf-auto` may use a runtime hook
|
|
324
|
+
- no execution-control hook is installed or registered by default
|
|
325
|
+
- only `/wf-auto` may use a runtime hook to drive auto-optimization
|
|
321
326
|
- the hook must run one bounded tick, not an unbounded process
|
|
322
327
|
- the hook must respect `Harness/tasks/auto/STOP`, `state=paused`, user stop,
|
|
323
328
|
and the Adaptive Coverage Exhaustion Gate
|
|
@@ -368,7 +373,7 @@ Spark is NOT a separate optimization engine. It is a **candidate provider** plug
|
|
|
368
373
|
- User explicitly requests `/wf-auto-spark` → full perpetual inspiration mode (see `WF-AUTO-SPARK.md`)
|
|
369
374
|
- User says "I don't know" at an Intent Checkpoint
|
|
370
375
|
|
|
371
|
-
**`/wf-auto-spark` is a standalone perpetual mode** (spec: `Harness/WF-AUTO-SPARK.md`). Unlike vanilla spark which is a candidate provider inside `/wf-auto`, the standalone mode:
|
|
376
|
+
**`/wf-auto-spark` is a standalone perpetual mode** (spec: `Harness/specs/workflows/WF-AUTO-SPARK.md`). Unlike vanilla spark which is a candidate provider inside `/wf-auto`, the standalone mode:
|
|
372
377
|
- Never auto-stops — only user can stop it
|
|
373
378
|
- Requires a roadmap (North Star + staged milestones) declared at startup
|
|
374
379
|
- Enforces ≤50% deviation guard against North Star
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
The WF Kernel is the shared engine for `/wf`, `/wf-max`, `/wf-auto`, `/wf-auto-spark`, `/wf-review`, and `/wf-browser`. Variants extend the kernel; they do not duplicate the orchestration logic.
|
|
4
4
|
|
|
5
|
+
## Cache-First Context Contract
|
|
6
|
+
|
|
7
|
+
All WF variants preserve prompt-cache shape: stable workflow instructions and
|
|
8
|
+
deterministic dispatch schema first; task-specific state, current runtime facts,
|
|
9
|
+
and latest tool outputs last. Use
|
|
10
|
+
`Harness/specs/runtime/context-loading.md#Cache-First Context Contract` for load ordering.
|
|
11
|
+
Dispatch packets keep canonical field order, load only selected skills/tools,
|
|
12
|
+
and return bounded summaries through `MaxReturnTokens` and `ReturnSchema`
|
|
13
|
+
instead of transcripts.
|
|
14
|
+
|
|
5
15
|
## Role / Model Matrix
|
|
6
16
|
|
|
7
17
|
The orchestrator dispatches agents by role, model tier, and task type. No single agent type handles all work.
|
|
@@ -121,7 +131,7 @@ ReturnSchema:
|
|
|
121
131
|
|
|
122
132
|
| Task Type | Primary Agents | Skills |
|
|
123
133
|
|---|---|---|
|
|
124
|
-
| UI/browser behavior | test-writer, implementer, verifier, reviewer |
|
|
134
|
+
| UI/browser behavior | test-writer, implementer, verifier, reviewer | wf-browser |
|
|
125
135
|
| API/backend | docs-researcher, test-writer, implementer, verifier, reviewer (security) | tdd |
|
|
126
136
|
| Architecture/migration | architect, codebase-explorer, planner, reviewer | — |
|
|
127
137
|
| Docs/README | wf-readme, reviewer, task-scribe | wf-readme |
|
|
@@ -18,14 +18,37 @@ WF-MAX is **explicit only**. Enter ONLY when the user explicitly types `/wf-max`
|
|
|
18
18
|
|
|
19
19
|
## Fan-Out Modes
|
|
20
20
|
|
|
21
|
-
**WF-Max-Useful** (default): fan-out only where writeSets or review lenses are meaningfully independent. Overhead > 0.30 degrades a wave to flat role pass. CEO
|
|
21
|
+
**WF-Max-Useful** (default): fan-out only where writeSets or review lenses are meaningfully independent. Overhead > 0.30 degrades a wave to flat role pass. This does not authorize CEO source edits: source implementation still goes through an implementer/Worker role, or the run records an honest downgrade before editing.
|
|
22
22
|
|
|
23
23
|
**WF-Max-Strict** (explicit `--strict`, `strict wf-max`, or `strict mode`): unconditional fan-out per span formula. Every file gets a Worker.
|
|
24
24
|
|
|
25
|
+
## Mandatory Fan-Out Contract
|
|
26
|
+
|
|
27
|
+
`/wf-max` MUST attempt native subagent fan-out before implementation planning is considered complete. A solo controller path is allowed only after an explicit degradation record.
|
|
28
|
+
|
|
29
|
+
Minimum W0 attempt:
|
|
30
|
+
|
|
31
|
+
- Start `task-scribe` when available to maintain task state and the dispatch ledger.
|
|
32
|
+
- Start at least one independent read-only planning/exploration/review lane. For real multi-domain tasks, prefer `explore-manager` plus scoped researchers or codebase explorers.
|
|
33
|
+
- Record `fanoutAttempted: true`, runtime, channel tried, agents requested, configured/runtime limit facts, result, and degradation reason in the task PLAN or PROGRESS.
|
|
34
|
+
|
|
35
|
+
Mode interaction:
|
|
36
|
+
|
|
37
|
+
- WF-Max-Useful may shrink the fan-out after the first native attempt when write sets or review lenses are not meaningfully independent. It may not silently skip the attempt.
|
|
38
|
+
- WF-Max-Strict continues through the span formula until the Harness caps, runtime caps, user budget, or safety gates stop dispatch.
|
|
39
|
+
- If native manager fan-out is unavailable, the controller dispatches leaf agents directly with exact WF-MAX dispatch packets; if no independent channel exists, stop honestly and ask the user.
|
|
40
|
+
|
|
41
|
+
OpenCode-specific requirement: project `opencode.json` must set `subagent_depth >= 2` for manager -> worker nesting, and WF-MAX manager agents must expose `permission.task` allowlists for their child agents. Without those two settings, OpenCode may accept `/wf-max` but fail to fan out from manager subagents.
|
|
42
|
+
|
|
25
43
|
## CEO Contract
|
|
26
44
|
|
|
27
45
|
CEO reads, plans, dispatches, synthesizes, and writes task state only.
|
|
28
46
|
- **CEO never writes production source code.** All source edits are delegated to Workers.
|
|
47
|
+
- Any new task capsule uses `task-<verb>-<noun>[-detail]` under
|
|
48
|
+
`Harness/tasks/<task-id>/`; never use bare `fix-*` task ids.
|
|
49
|
+
- When updating `Harness/PROGRESS.md`, preserve required headings such as
|
|
50
|
+
`## Active Task`, `## Task Index`, and `## Cross-Task Decisions`; append or
|
|
51
|
+
update rows instead of replacing the file skeleton.
|
|
29
52
|
- CEO spawns task-scribe (haiku) by default to maintain dispatch ledger, heartbeat, and evidence pointers; if unavailable, CEO records the degradation and writes only the smallest durable checkpoint.
|
|
30
53
|
- CEO may spawn codebase-explorer(s) (haiku) for scoped source discovery.
|
|
31
54
|
|
|
@@ -45,7 +68,7 @@ WF-MAX Workers MUST execute as **independent agent contexts** — never as in-pr
|
|
|
45
68
|
|
|
46
69
|
When delegating source edits to a Worker, try channels in order; descend on failure; when all independent channels are unavailable, stop honestly and ask the user — do NOT fall back to an in-process MCP tool:
|
|
47
70
|
|
|
48
|
-
0. **
|
|
71
|
+
0. **Use proven channels only** — prefer the current runtime's native subagent channel when it has already returned successfully in this session. If a peer CLI is needed, follow `.claude/skills/wf-agents-docs/SKILL.md`, keep output on stdout, and return an Evidence-Packet instead of scratch files.
|
|
49
72
|
1. native subagent (preferred — independent context, bounded writeSet)
|
|
50
73
|
2. `claude -p` peer CLI (independent process)
|
|
51
74
|
3. `codex exec` peer CLI (independent process)
|
|
@@ -57,11 +80,11 @@ When delegating source edits to a Worker, try channels in order; descend on fail
|
|
|
57
80
|
|
|
58
81
|
### Timeout & Retry
|
|
59
82
|
|
|
60
|
-
Every
|
|
83
|
+
Every Worker dispatch or peer-CLI call must be bounded by the controller's command timeout. A Worker dispatch that returns `unavailable-timeout` or `unavailable-error` (transient) is retried **once**; a second failure descends to the next channel in the chain. WF-MAX MUST NEVER hang on an unresponsive channel (historical failure: a 300s Codex read-only query hang, `tasks/task-framework-metrics-and-entry-contract/PLAN.md`). Bounded calls + single retry + honest descent replace silent hangs.
|
|
61
84
|
|
|
62
|
-
###
|
|
85
|
+
### Capability Evidence
|
|
63
86
|
|
|
64
|
-
|
|
87
|
+
Record the channel actually used, command/tool form, timeout, exit status, and a <=250 token Evidence-Packet in the task capsule. Do not create ad hoc probe scripts or write peer-CLI output to `%TEMP%`; persistent evidence belongs only under the current task's `evidence/` directory when it is intentionally part of the task record.
|
|
65
88
|
|
|
66
89
|
## Parallelism Priority
|
|
67
90
|
|
|
@@ -99,11 +122,21 @@ WF-MAX fan-out is bounded. Unbounded worker dispatch is forbidden.
|
|
|
99
122
|
- **Overflow discipline**: Cross-CLI overflow (Codex → Claude, Claude → Codex) is allowed only after native subagent pool is genuinely exhausted (not just busy). Each overflow dispatch costs context; prefer closing completed agents first.
|
|
100
123
|
- **Idle workers**: Close completed agents before declaring the pool exhausted. Do not spawn new workers while idle capacity is available.
|
|
101
124
|
|
|
125
|
+
## Runtime Capacity Map
|
|
126
|
+
|
|
127
|
+
Harness treats vendor/runtime limits as outer ceilings, not as permission to exceed the WF-MAX caps above.
|
|
128
|
+
|
|
129
|
+
| Runtime | Native limit/config surface | Harness rule |
|
|
130
|
+
| --- | --- | --- |
|
|
131
|
+
| Claude Code | Official docs describe subagent caps for session total `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` (default 200), concurrency `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` (default 20), and spawn depth `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` (default 3); use current Claude Code agent/subagent settings when available. | Record the detected limit/source when known; Harness WF-MAX caps still apply unless the user approves a task-local override. Do not raise environment limits without user approval. |
|
|
132
|
+
| Codex | Official manual documents `[agents].max_concurrent_threads_per_session`; `agents.max_threads` is a legacy alias. Local codex-cli 0.144.x can reject scalar `[agents]` caps from project `.codex/config.toml` during TUI `skills/list`. | Do not scaffold Codex scalar agent caps into `.codex/config.toml`. Probe the installed runtime first; Harness manages a conservative task-local cap through the dispatch ledger unless `codex --strict-config doctor` verifies the config shape. |
|
|
133
|
+
| OpenCode | Official config uses `subagent_depth`; default `1` permits primary -> subagent but blocks subagent -> subagent. `0` disables subagent launches; `2` permits one nested manager -> worker level. No official concurrent-count cap was found in the current docs. | Generated config sets `subagent_depth = 2`; Harness manages total/per-wave counts through WF-MAX caps and manager `permission.task` allowlists. |
|
|
134
|
+
|
|
102
135
|
## Organization Model
|
|
103
136
|
|
|
104
137
|
```
|
|
105
138
|
CEO(1) -> Manager_1(span) -> Worker_1..n
|
|
106
|
-
-> Manager_2(span) ->
|
|
139
|
+
-> Manager_2(span) -> Worker_1..n
|
|
107
140
|
```
|
|
108
141
|
|
|
109
142
|
## D-GATE
|
|
@@ -116,7 +149,7 @@ D-GATE is mandatory before implementation waves per [WF-KERNEL.md](WF-KERNEL.md)
|
|
|
116
149
|
2. Close completed agents; fill idle slots immediately.
|
|
117
150
|
3. Cross-CLI overflow: use an available peer CLI with explicit dispatch packets: `claude -p`, `codex exec`, or `opencode run --agent <role> --dir .`.
|
|
118
151
|
4. Bounded-pass fallback only when subagents and overflow are exhausted.
|
|
119
|
-
5.
|
|
152
|
+
5. Codex compatibility guard: do not write scalar `[agents]` capacity fields into project `.codex/config.toml` by default. Probe the installed version first; local codex-cli 0.144.x has been observed to reject those fields during TUI `skills/list`. Harness manages Codex WF-MAX concurrency through the dispatch ledger and asks the user before any project/global Codex config change.
|
|
120
153
|
6. Do not rely on Codex++, undocumented config, environment variables, forked/derived conversations, or third-party forks as stable capacity.
|
|
121
154
|
|
|
122
155
|
## Anti-Patterns and Sizing
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# WF-STATE - Lightweight Resumable State Machine
|
|
2
|
+
|
|
3
|
+
Purpose: persist resumable workflow state across compaction, new Claude Code
|
|
4
|
+
windows, new terminals, and project reopen. It is NOT a scheduler, daemon, lock
|
|
5
|
+
manager, async runtime, or graph framework.
|
|
6
|
+
|
|
7
|
+
## State Files
|
|
8
|
+
|
|
9
|
+
| File | Role |
|
|
10
|
+
|------|------|
|
|
11
|
+
| `Harness/PROGRESS.md` | Derived global active pointer and Task Index |
|
|
12
|
+
| `Harness/tasks/<task-id>/STATE.json` | Canonical machine-readable resume truth |
|
|
13
|
+
| `Harness/tasks/<task-id>/PROGRESS.md` | Human-readable summary |
|
|
14
|
+
| `Harness/tasks/<task-id>/PLAN.md` | Plan, decisions, scope context |
|
|
15
|
+
|
|
16
|
+
Task id convention: new task capsules MUST use
|
|
17
|
+
`task-<verb>-<noun>[-detail]` (kebab-case, 2-5 words after the prefix), for
|
|
18
|
+
example `task-fix-login-flow`. Do not create bare task names such as
|
|
19
|
+
`fix-login-flow`.
|
|
20
|
+
|
|
21
|
+
## Enums
|
|
22
|
+
|
|
23
|
+
### status
|
|
24
|
+
|
|
25
|
+
`active`, `blocked`, `in_progress`, `running`, `pending`,
|
|
26
|
+
`needs-user-decision`, `complete`, `verified`, `archived`, `abandoned`,
|
|
27
|
+
`obsolete`, `done`, `closed`, `closeout`, `skipped`, `failed`
|
|
28
|
+
|
|
29
|
+
### phase
|
|
30
|
+
|
|
31
|
+
`intake`, `clarify`, `requirements`, `prd`, `acceptance`, `plan`, `explore`,
|
|
32
|
+
`implement`, `verify`, `review`, `fix`, `reflect`, `closeout`, `blocked`,
|
|
33
|
+
`verified`, `archived`
|
|
34
|
+
|
|
35
|
+
Legacy aliases such as `Implementation`, `Validation`, and
|
|
36
|
+
`Verified/Complete` are normalized by `task-state.mjs`.
|
|
37
|
+
|
|
38
|
+
### item status (queues)
|
|
39
|
+
|
|
40
|
+
`pending`, `ready`, `running`, `done`, `blocked`, `skipped`, `failed`
|
|
41
|
+
|
|
42
|
+
### mode
|
|
43
|
+
|
|
44
|
+
`direct`, `wf`, `wf-max`, `wf-auto`, `wf-auto-spark`, `wf-review`,
|
|
45
|
+
`wf-browser`
|
|
46
|
+
|
|
47
|
+
### tier
|
|
48
|
+
|
|
49
|
+
`none`, `light`, `standard`, `full`, `max-useful`, `max-strict`
|
|
50
|
+
|
|
51
|
+
## Rules
|
|
52
|
+
|
|
53
|
+
1. **STATE.json is machine-readable resume truth.** On session start, the agent
|
|
54
|
+
reads it to know where it left off.
|
|
55
|
+
2. **PROGRESS.md is human-readable summary.** It mirrors key state but is
|
|
56
|
+
secondary for machine reasoning and may be rewritten from state.
|
|
57
|
+
3. **PLAN.md is plan/decision context.** Load only when decisions or scope need
|
|
58
|
+
review.
|
|
59
|
+
4. **On every phase transition, dispatch return, blocker, verification result,
|
|
60
|
+
review finding, or closeout, update STATE.json through
|
|
61
|
+
`Harness/scripts/task-state.mjs` when the command covers the change.**
|
|
62
|
+
task-scribe or controller writes; production agents never write task state.
|
|
63
|
+
5. **Long logs/transcripts never go into STATE.json.** Store paths only.
|
|
64
|
+
6. **task-scribe may update STATE.json and task summaries; production agents may
|
|
65
|
+
not.**
|
|
66
|
+
7. **If STATE.json conflicts with PLAN/PROGRESS, controller stops and reconciles
|
|
67
|
+
before continuing.**
|
|
68
|
+
|
|
69
|
+
## CLI Contract
|
|
70
|
+
|
|
71
|
+
Use `Harness/scripts/task-state.mjs` as the deterministic state writer:
|
|
72
|
+
|
|
73
|
+
- `node Harness/scripts/task-state.mjs list --json`
|
|
74
|
+
- `node Harness/scripts/task-state.mjs validate --json`
|
|
75
|
+
- `node Harness/scripts/task-state.mjs reconcile --dry-run --json`
|
|
76
|
+
- `node Harness/scripts/task-state.mjs reconcile --apply`
|
|
77
|
+
- `node Harness/scripts/task-state.mjs set-active <task-id>`
|
|
78
|
+
- `node Harness/scripts/task-state.mjs transition <task-id> --status <status> --phase <phase>`
|
|
79
|
+
- `node Harness/scripts/task-state.mjs archive --keep 5 --dry-run --json`
|
|
80
|
+
- `node Harness/scripts/task-state.mjs archive --keep 5 --apply`
|
|
81
|
+
|
|
82
|
+
Do not rely on prompt instructions alone to keep active task, task `STATE.json`,
|
|
83
|
+
task `PROGRESS.md`, and root `Harness/PROGRESS.md` synchronized.
|
|
84
|
+
|
|
85
|
+
## Resume Protocol
|
|
86
|
+
|
|
87
|
+
New window / session start:
|
|
88
|
+
|
|
89
|
+
1. Read `CLAUDE.md`.
|
|
90
|
+
2. If user says "continue", "resume", "last task", "current task", "status",
|
|
91
|
+
or the work is not a simple direct task:
|
|
92
|
+
- Read `Harness/PROGRESS.md` and find Active Task.
|
|
93
|
+
- If Active Task exists, read `Harness/tasks/<active-task>/STATE.json`.
|
|
94
|
+
- Read `Harness/tasks/<active-task>/PROGRESS.md`.
|
|
95
|
+
- Read `Harness/tasks/<active-task>/PLAN.md` only if decisions/scope need review.
|
|
96
|
+
3. From STATE.json, determine:
|
|
97
|
+
- Current phase, gate, tier.
|
|
98
|
+
- activeQuestion (needs user answer before proceeding).
|
|
99
|
+
- Queues: ready (can dispatch immediately), running (awaiting results),
|
|
100
|
+
blocked (needs resolution), done.
|
|
101
|
+
- nextAction (what to do next).
|
|
102
|
+
4. Do NOT bulk-read `Harness/tasks/` to find context. Use the active pointer.
|
|
103
|
+
5. Direct simple tasks may skip STATE/PLAN/PROGRESS unless the user says
|
|
104
|
+
"continue"/"resume".
|
|
105
|
+
|
|
106
|
+
## State Transitions
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
intake -> clarify -> requirements -> prd -> acceptance -> plan
|
|
110
|
+
-> explore -> implement -> verify -> review
|
|
111
|
+
-> (fix -> verify -> review loop)
|
|
112
|
+
-> reflect -> closeout
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Any phase may transition to `blocked` if a dependency, user decision, or external
|
|
116
|
+
input is required.
|
|
117
|
+
|
|
118
|
+
## Dispatch Ledger
|
|
119
|
+
|
|
120
|
+
Every dispatch packet MUST have an `id`. On return, controller or task-scribe
|
|
121
|
+
updates the ledger item:
|
|
122
|
+
|
|
123
|
+
- `id`, `agent`, `role`, `phase`, `status` (`pending`, `ready`, `running`,
|
|
124
|
+
`done`, `blocked`, `skipped`, `failed`), `evidence`
|
|
125
|
+
|
|
126
|
+
See [WF-KERNEL.md](WF-KERNEL.md) for the dispatch packet format.
|
|
127
|
+
|
|
128
|
+
## Integration with /wf and /wf-max
|
|
129
|
+
|
|
130
|
+
- `/wf` uses the STATE ready queue for dynamic orchestration.
|
|
131
|
+
- `/wf-max` uses the SAME STATE ready queue for maximum safe fan-out.
|
|
132
|
+
- When a subagent returns or goes idle, controller immediately dispatches the
|
|
133
|
+
next ready item.
|
|
134
|
+
- task-scribe is the exception for task-state writes.
|
|
135
|
+
- Production source agents do not write STATE/PLAN/PROGRESS unless explicitly
|
|
136
|
+
dispatched as task-scribe.
|
|
137
|
+
|
|
138
|
+
## Template
|
|
139
|
+
|
|
140
|
+
See `Harness/tasks/_template/STATE.json` for the canonical template. On task
|
|
141
|
+
creation, copy and populate from the template.
|
|
@@ -17,6 +17,10 @@ All WF variants (`/wf`, `/wf-max`, `/wf-auto`, `/wf-auto-spark`, `/wf-review`, `
|
|
|
17
17
|
|
|
18
18
|
Resumable state follows [WF-STATE.md](WF-STATE.md): STATE.json is the machine-readable resume truth; the ready queue is persisted there across sessions.
|
|
19
19
|
|
|
20
|
+
New task capsules MUST use task ids matching `task-<verb>-<noun>[-detail]`
|
|
21
|
+
and live under `Harness/tasks/<task-id>/`; never create bare task directories
|
|
22
|
+
like `fix-login`.
|
|
23
|
+
|
|
20
24
|
This file defines the `/wf` user contract, tiers, and the standard orchestration loop.
|
|
21
25
|
|
|
22
26
|
## Trigger
|
|
@@ -34,6 +38,13 @@ These are NOT WF triggers:
|
|
|
34
38
|
2. Load `Harness/memory/*` only when `MEMORY_PROTOCOL.md` scenario hints match.
|
|
35
39
|
3. Record `Memory preflight: done` and `Memory hints: none | <file/path + reason>`.
|
|
36
40
|
|
|
41
|
+
## Cache Discipline
|
|
42
|
+
|
|
43
|
+
Follow `Harness/specs/runtime/context-loading.md#Cache-First Context Contract`: keep the
|
|
44
|
+
listed router/workflow loads in stable order, load only routed skills/tools, and
|
|
45
|
+
append task state, current runtime facts, and latest tool output after the
|
|
46
|
+
stable docs. Do not bulk-load skill bodies, tool schemas, or `Harness/`.
|
|
47
|
+
|
|
37
48
|
## Standard Orchestration Loop
|
|
38
49
|
|
|
39
50
|
The `/wf` kernel follows a dependency-driven ready-queue, NOT a fixed serial phase list.
|
|
@@ -126,7 +137,7 @@ Second wave — after synthesis:
|
|
|
126
137
|
|
|
127
138
|
## Browser and API Evidence
|
|
128
139
|
|
|
129
|
-
See [HARNESS_BRIDGE.md](HARNESS_BRIDGE.md) and [WF-KERNEL.md](WF-KERNEL.md) Task Type Routing for UI/browser and API/backend task types.
|
|
140
|
+
See [HARNESS_BRIDGE.md](../protocols/HARNESS_BRIDGE.md) and [WF-KERNEL.md](WF-KERNEL.md) Task Type Routing for UI/browser and API/backend task types.
|
|
130
141
|
|
|
131
142
|
Agents live under `.claude/agents/` and `.opencode/agents/`. Task state lives under `Harness/tasks/<task-id>/`.
|
|
132
143
|
|
|
@@ -26,21 +26,23 @@ Replace the examples with the real commands discovered from this project. If a c
|
|
|
26
26
|
|
|
27
27
|
- Keep branch, commit, pull request, CI, and release conventions in this README.
|
|
28
28
|
- Do not place build scripts, git policy, or project maintenance instructions in `CLAUDE.md`.
|
|
29
|
-
- Keep code architecture notes in `Harness/architecture.md` or feature docs.
|
|
29
|
+
- Keep code architecture notes in `Harness/project/architecture.md` or feature docs.
|
|
30
30
|
- For README improvements, use `.claude/skills/wf-readme/SKILL.md`; preserve public docs unless a rewrite is approved.
|
|
31
31
|
|
|
32
32
|
## Harness
|
|
33
33
|
|
|
34
34
|
The agentic engineering harness lives in `Harness/`.
|
|
35
35
|
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
36
|
+
- Normal agent sessions start from `CLAUDE.md`.
|
|
37
|
+
- Use `Harness/specs/guides/SETUP.md` only for install/bootstrap guidance, migration, upgrade decisions, or explicit setup requests.
|
|
38
|
+
- Use `Harness/README.md` as the Harness workflow router when a routed task needs it.
|
|
39
|
+
- Load memory and resource registrations from `Harness/MEMORY.md` only when routed.
|
|
39
40
|
- Track active work in `Harness/PROGRESS.md` and `Harness/tasks/<task-id>/PROGRESS.md`.
|
|
40
|
-
- Use
|
|
41
|
+
- Use `/wf-update` or `$wf-update` for Harness upgrades; the agent should report version, changed files, validation results, and release highlights from update metadata.
|
|
42
|
+
- Use `Harness/specs/workflows/WF.md` only when the user explicitly invokes a WF command such as `/wf` or `/wf-max`; complex work may still use direct planning, tests, and subagents without entering WF.
|
|
41
43
|
- Claude Code: invoke the `wf` skill with `/wf`.
|
|
42
44
|
- Codex: invoke the `wf` skill with `$wf` or `/skills`.
|
|
43
|
-
- Use `Harness/subagents.md` when coordinating multiple agents.
|
|
45
|
+
- Use `Harness/specs/runtime/subagents.md` when coordinating multiple agents.
|
|
44
46
|
|
|
45
47
|
Tool discovery files stay at the repository root:
|
|
46
48
|
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
# Startup Hints (L2 Memory Digest)
|
|
2
2
|
|
|
3
|
-
> L2 =
|
|
3
|
+
> L2 = lightweight startup memory digest. New Harness sessions may read this
|
|
4
|
+
> file after `CLAUDE.md`, but must not load full `Harness/MEMORY.md`,
|
|
5
|
+
> `Harness/README.md`, or `Harness/PROGRESS.md` during thin startup.
|
|
4
6
|
|
|
5
7
|
## Core Principles
|
|
6
8
|
|
|
7
|
-
- Memory
|
|
8
|
-
-
|
|
9
|
-
- Broad runtime hooks
|
|
10
|
-
- Direct mode
|
|
11
|
-
-
|
|
9
|
+
- Memory is short scenario guidance, not a task log.
|
|
10
|
+
- Do not write timestamps by default; write only durable, reusable guidance.
|
|
11
|
+
- Broad runtime hooks are forbidden. The only Harness exception is the bounded `/wf-auto` tick hook.
|
|
12
|
+
- Direct mode must not load the full Harness router. `startup-hints.md` is the lightweight startup allowance.
|
|
13
|
+
- Detailed memory still loads only when routed through `MEMORY_PROTOCOL.md`.
|
|
12
14
|
|
|
13
15
|
## Memory Candidate Detection
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
Treat these as memory candidates:
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
- English: remember, next time, don't, do not, never, always, I prefer, I want you to
|
|
20
|
+
- Chinese: 记住, 下次, 以后, 不要再, 总是, 永远不要, 我偏好, 我希望你以后
|
|
19
21
|
|
|
20
22
|
## When to Write Memory
|
|
21
23
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
24
|
+
- Explicit user preference: write immediately only when clear, safe, and reusable.
|
|
25
|
+
- Repeated implicit correction: same assumption or pattern corrected 2+ times.
|
|
26
|
+
- Tool/command failure: same tool or command pattern fails 3+ times.
|
|
27
|
+
- Review/debug lesson: write only when it is reusable and can prevent regressions.
|
|
26
28
|
|
|
27
29
|
## What NOT to Write
|
|
28
30
|
|
|
29
|
-
- Task
|
|
30
|
-
- Raw logs
|
|
31
|
-
- Secrets, tokens, credentials, private data
|
|
32
|
-
-
|
|
31
|
+
- Task logs, process summaries, or one-off emotions.
|
|
32
|
+
- Raw logs or transcripts.
|
|
33
|
+
- Secrets, tokens, credentials, or private data.
|
|
34
|
+
- Temporary preferences or notes with no reusable value.
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"skills": [
|
|
3
|
-
{
|
|
4
|
-
"id": "browser-e2e",
|
|
5
|
-
"title": "Browser E2E",
|
|
6
|
-
"description": "Mandatory real-browser smoke workflow using Playwright, Chrome DevTools/CDP, or documented manual evidence.",
|
|
7
|
-
"files": ["skills/browser-e2e"],
|
|
8
|
-
"tags": ["e2e", "browser", "playwright", "cdp"]
|
|
9
|
-
},
|
|
10
3
|
{
|
|
11
4
|
"id": "ui-ux-review",
|
|
12
5
|
"title": "UI/UX Review",
|
|
@@ -37,8 +30,8 @@
|
|
|
37
30
|
}
|
|
38
31
|
],
|
|
39
32
|
"presets": {
|
|
40
|
-
"web-app": ["ts-react-frontend", "
|
|
41
|
-
"fullstack": ["ts-react-frontend", "python-backend", "
|
|
33
|
+
"web-app": ["ts-react-frontend", "ui-ux-review"],
|
|
34
|
+
"fullstack": ["ts-react-frontend", "python-backend", "github-pr-review"]
|
|
42
35
|
},
|
|
43
36
|
"externalRecommendations": [
|
|
44
37
|
{
|
|
@@ -37,4 +37,4 @@ Update `Harness/tasks/<task-id>/PLAN.md` only when the PR review is part of a tr
|
|
|
37
37
|
|
|
38
38
|
## dispatch.md Usage
|
|
39
39
|
|
|
40
|
-
Use `Harness/dispatch.md` when independent review areas can be assigned separately, such as backend, frontend, and CI.
|
|
40
|
+
Use `Harness/specs/runtime/dispatch.md` when independent review areas can be assigned separately, such as backend, frontend, and CI.
|
|
@@ -37,4 +37,4 @@ Update `Harness/tasks/<task-id>/PLAN.md` only when executing a tracked plan item
|
|
|
37
37
|
|
|
38
38
|
## dispatch.md Usage
|
|
39
39
|
|
|
40
|
-
Use `Harness/dispatch.md` for separable backend work such as API implementation, database changes, and test coverage.
|
|
40
|
+
Use `Harness/specs/runtime/dispatch.md` for separable backend work such as API implementation, database changes, and test coverage.
|
package/templates/optional/skills/ts-react-frontend/.claude/skills/ts-react-frontend/SKILL.md
CHANGED
|
@@ -40,4 +40,4 @@ Update `Harness/tasks/<task-id>/PLAN.md` only when executing a tracked task or r
|
|
|
40
40
|
|
|
41
41
|
## dispatch.md Usage
|
|
42
42
|
|
|
43
|
-
Use `Harness/dispatch.md` when independent frontend tasks can run in parallel, such as components, tests, and browser checks.
|
|
43
|
+
Use `Harness/specs/runtime/dispatch.md` when independent frontend tasks can run in parallel, such as components, tests, and browser checks.
|
|
@@ -37,4 +37,4 @@ Update current task `tasks/<id>/PLAN.md` only for tracked review tasks or when r
|
|
|
37
37
|
|
|
38
38
|
## dispatch.md Usage
|
|
39
39
|
|
|
40
|
-
Use `Harness/dispatch.md` only for independent review streams such as separate routes or breakpoints.
|
|
40
|
+
Use `Harness/specs/runtime/dispatch.md` only for independent review streams such as separate routes or breakpoints.
|