create-harness-vibe-coding 0.1.9 → 0.2.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.
- package/README.md +177 -32
- package/package.json +5 -2
- package/src/generator.js +407 -53
- package/src/index.js +236 -22
- package/templates/common/.claude/agents/architect.md +4 -4
- package/templates/common/.claude/agents/debugger.md +1 -1
- package/templates/common/.claude/agents/docs-researcher.md +4 -4
- package/templates/common/.claude/agents/implementer.md +1 -1
- package/templates/common/.claude/agents/planner.md +3 -3
- package/templates/common/.claude/agents/researcher.md +4 -4
- package/templates/common/.claude/agents/reviewer.md +1 -1
- package/templates/common/.claude/agents/test-writer.md +2 -2
- package/templates/common/.claude/agents/verifier.md +1 -1
- package/templates/common/.claude/commands/wf.md +18 -0
- package/templates/common/.claude/rules/ecc/common.md +16 -6
- package/templates/common/.claude/skills/harness-build-loop/SKILL.md +4 -3
- package/templates/common/.claude/skills/harness-context/SKILL.md +4 -3
- package/templates/common/.claude/skills/harness-lifecycle/SKILL.md +3 -3
- package/templates/common/.claude/skills/harness-research/SKILL.md +4 -4
- package/templates/common/.claude/skills/harness-router/SKILL.md +7 -5
- package/templates/common/.claude/skills/readme-optimizer/SKILL.md +48 -0
- package/templates/common/.claude/skills/subagent-orchestrator/SKILL.md +36 -0
- package/templates/common/.claude/skills/wf-mode/SKILL.md +48 -0
- package/templates/common/AGENTS.md +2 -2
- package/templates/common/CLAUDE.md +39 -71
- package/templates/common/MEMORY.md +42 -33
- package/templates/common/README.md +41 -0
- package/templates/common/SETUP.md +149 -41
- package/templates/common/docs/README.md +72 -47
- package/templates/common/docs/domain/ports.md +1 -1
- package/templates/common/docs/features/_template.md +20 -10
- package/templates/common/docs/harness/PLAN.md +25 -2
- package/templates/common/docs/harness/WF.md +136 -0
- package/templates/common/docs/harness/agent-workflow.md +8 -8
- package/templates/common/docs/harness/context-loading.md +17 -14
- package/templates/common/docs/harness/data-flow.md +1 -1
- package/templates/common/docs/harness/dispatch.md +6 -0
- package/templates/common/docs/harness/extension.md +20 -8
- package/templates/common/docs/harness/lifecycle.md +2 -2
- package/templates/common/docs/harness/subagents.md +140 -0
- package/templates/common/docs/research/PRD.md +1 -1
- package/templates/common/docs/research/README.md +5 -5
- package/templates/common/memory/agent-lessons-patterns.md +21 -0
- package/templates/common/memory/tool-usage-reflections.md +21 -0
- package/templates/common/memory/user-corrections-preferences.md +21 -0
- package/templates/common/scripts/validate-harness.mjs +217 -46
- package/templates/optional/catalog.json +43 -0
- package/templates/optional/skills/browser-e2e/.claude/skills/browser-e2e/SKILL.md +42 -0
- package/templates/optional/skills/browser-e2e/docs/workflows/browser-e2e.md +42 -0
- package/templates/optional/skills/github-pr-review/.claude/skills/github-pr-review/SKILL.md +40 -0
- package/templates/optional/skills/github-pr-review/docs/workflows/github-pr-review.md +28 -0
- package/templates/optional/skills/python-backend/.claude/skills/python-backend/SKILL.md +40 -0
- package/templates/optional/skills/python-backend/docs/workflows/python-backend.md +34 -0
- package/templates/optional/skills/ts-react-frontend/.claude/skills/ts-react-frontend/SKILL.md +43 -0
- package/templates/optional/skills/ts-react-frontend/docs/workflows/ts-react-frontend.md +35 -0
- package/templates/optional/skills/ui-ux-review/.claude/skills/ui-ux-review/SKILL.md +40 -0
- package/templates/optional/skills/ui-ux-review/docs/workflows/ui-ux-review.md +26 -0
|
@@ -9,9 +9,10 @@ This scaffold is a 0-1 product harness:
|
|
|
9
9
|
- short agent entry files
|
|
10
10
|
- dynamic docs router
|
|
11
11
|
- PRD, research protocol, architecture, ports, data-flow, state templates
|
|
12
|
-
- active `
|
|
12
|
+
- active `Harness/PLAN.md`
|
|
13
|
+
- `Harness/MEMORY.md` plus a `Harness/memory/` folder for durable self-learning, user corrections, and tool reflections
|
|
13
14
|
- built-in common agents
|
|
14
|
-
- subagent context-loading protocol
|
|
15
|
+
- subagent orchestration and context-loading protocol
|
|
15
16
|
- skill-style dynamic loaders in `.claude/skills/`
|
|
16
17
|
- lightweight harness validator
|
|
17
18
|
- test/review/feedback loop
|
|
@@ -23,32 +24,134 @@ It does not guess your stack or business domain. Claude Code should fill those t
|
|
|
23
24
|
Start Claude Code, then say:
|
|
24
25
|
|
|
25
26
|
```text
|
|
26
|
-
Read SETUP.md. Bootstrap this project as a 0-1 product harness.
|
|
27
|
-
Use
|
|
28
|
-
First clarify the idea, then create PRD, research, architecture,
|
|
27
|
+
Read Harness/SETUP.md. Bootstrap this project as a 0-1 product harness.
|
|
28
|
+
Use Harness/README.md as the router. Keep context small.
|
|
29
|
+
First clarify the idea, then create PRD, research, architecture, Harness/PLAN.md, and the first vertical-slice task.
|
|
29
30
|
```
|
|
30
31
|
|
|
31
32
|
## Required Bootstrap Sequence
|
|
32
33
|
|
|
33
34
|
Claude must follow this order:
|
|
34
35
|
|
|
35
|
-
1. Read `CLAUDE.md`, `MEMORY.md`, `
|
|
36
|
-
2. Ask up to 3 blocking product questions. If not blocked, record assumptions in `
|
|
37
|
-
3. Fill `
|
|
38
|
-
4. Read `
|
|
39
|
-
5. Fill minimum architecture: `
|
|
40
|
-
6. Create the first vertical-slice plan in `
|
|
41
|
-
7. Use `
|
|
42
|
-
8. Fill `
|
|
36
|
+
1. Read `CLAUDE.md`, `Harness/MEMORY.md`, `Harness/README.md`, and `Harness/lifecycle.md`. Load `Harness/memory/*` only when the router or memory trigger applies.
|
|
37
|
+
2. Ask up to 3 blocking product questions. If not blocked, record assumptions in `Harness/PLAN.md`.
|
|
38
|
+
3. Fill `Harness/research/PRD.md` with MVP, non-goals, and acceptance criteria.
|
|
39
|
+
4. Read `Harness/research/README.md`, then fill `Harness/research/research-results.md` with adopted/rejected research choices.
|
|
40
|
+
5. Fill minimum architecture: `Harness/architecture.md` and one port in `Harness/domain/ports.md`.
|
|
41
|
+
6. Create the first vertical-slice plan in `Harness/PLAN.md`.
|
|
42
|
+
7. Use `Harness/subagents.md`, `Harness/context-loading.md`, and `Harness/dispatch.md` when spawning subagents.
|
|
43
|
+
8. Fill `Harness/data-flow.md` or `Harness/state-machines.md` only when the slice changes runtime flow, failure behavior, or state.
|
|
43
44
|
9. Implement only after a failing test or manual verification step is defined.
|
|
44
|
-
10. Run `node scripts/validate-harness.mjs --strict`.
|
|
45
|
-
11. Record final verification and next feedback step in `
|
|
45
|
+
10. Run `node Harness/scripts/validate-harness.mjs --strict`.
|
|
46
|
+
11. Record final verification and next feedback step in `Harness/PLAN.md`. If repeated tool failures, repeated user corrections, or reusable review/debug lessons appeared, record the concise reflection in the relevant `Harness/memory/` file.
|
|
47
|
+
|
|
48
|
+
## Existing Project Bootstrap Sequence
|
|
49
|
+
|
|
50
|
+
When adding this harness to a project that already has source code, docs, CI, or tool configuration, treat the existing project as the source of truth before filling harness docs.
|
|
51
|
+
|
|
52
|
+
1. Scan existing project facts first: `README.md`, package files (`package.json`, `pyproject.toml`, `go.mod`, etc.), test commands, app entry points, CI files, existing docs, and current run/build scripts.
|
|
53
|
+
2. Record discovered facts and open questions in `Harness/PLAN.md` before changing harness docs.
|
|
54
|
+
3. Fill `Harness/research/PRD.md`, `Harness/research/research-results.md`, `Harness/architecture.md`, and `Harness/domain/ports.md` from observed project facts plus explicit user input.
|
|
55
|
+
4. Existing configuration is project fact. Do not overwrite `CLAUDE.md`, `AGENTS.md`, `.claude/`, `.gitignore`, settings, hooks, package files, CI, docs routers, or workflow docs unless the user explicitly approves that exact overwrite.
|
|
56
|
+
5. When a harness file conflicts with an existing file, preserve the existing file and register any missing harness guidance manually using `Harness/extension.md`.
|
|
57
|
+
6. Run `node Harness/scripts/validate-harness.mjs` after registration, then run `node Harness/scripts/validate-harness.mjs --strict` only after project-fact placeholders have been resolved or intentionally recorded as open.
|
|
58
|
+
|
|
59
|
+
### Agent-Link Install Intake
|
|
60
|
+
|
|
61
|
+
When the user installs by pasting the GitHub link into an agent, ask intake questions before editing. Ask only questions that affect writes, architecture, security, or workflow. Ask at most three blocking questions up front, record safe defaults for the rest, and ask follow-ups only when that choice becomes active.
|
|
62
|
+
|
|
63
|
+
| Topic | Ask When | Default If Unanswered |
|
|
64
|
+
| --- | --- | --- |
|
|
65
|
+
| Root agent entry | `CLAUDE.md`, `AGENTS.md`, `.claude/`, or other agent entry files already exist | Preserve files; ask before merging the Harness entry contract |
|
|
66
|
+
| Harness location | `docs/` is already used for GitHub Pages, product docs, or generated docs | Use root `Harness/`; do not write harness docs into `docs/` |
|
|
67
|
+
| README ownership | root `README.md` is a public product page, package docs, or heavily customized | Preserve existing README and propose a minimal Development section |
|
|
68
|
+
| README optimization | existing README is stale, sparse, missing command tables, or the user asks for diagrams/polished docs | Offer `readme-optimizer`; default to append-only Development notes until the user approves a structure pass or full rewrite |
|
|
69
|
+
| Extensions | ECC, Superpowers, custom rules, or stack-specific skills may be useful | Recommend first; install only after user approval |
|
|
70
|
+
| Skills | stack is known and optional skills could improve testing, frontend, backend, review, or browser evidence | Install 1-2 relevant skills only after user approval |
|
|
71
|
+
| CI/CD | CI config exists or the project lacks a test/build gate | Document existing commands first; add CI/CD only after user approval |
|
|
72
|
+
| Verification depth | browser-visible, API, database, auth, payment, or deployment behavior is affected | Require real command evidence; require browser/API evidence when relevant |
|
|
73
|
+
| Memory/privacy | repo contains sensitive domain data, customer data, secrets, or private workflows | Enable memory index only; never record secrets or private data |
|
|
74
|
+
| Branch/worktree | project has uncommitted changes, risky migration, or parallel implementation lanes | Preserve current worktree; propose branch/worktree before broad edits |
|
|
75
|
+
| Package manager/stack | multiple package managers, monorepo apps, or unclear stack boundaries exist | Ask which workspace/app is in scope before writing |
|
|
76
|
+
|
|
77
|
+
### Agent Conflict Resolution Protocol
|
|
78
|
+
|
|
79
|
+
When `--on-conflict skip` leaves existing files untouched, the agent resolves each conflict with user supervision.
|
|
80
|
+
|
|
81
|
+
**Workflow:**
|
|
82
|
+
|
|
83
|
+
1. Run the harness tool in planning mode to get the conflict list:
|
|
84
|
+
```
|
|
85
|
+
npx create-harness-vibe-coding@latest . . -y --dry-run --json
|
|
86
|
+
```
|
|
87
|
+
Parse the JSON output. Files in `plan.skip[]` need attention. Files in `plan.create[]` are handled automatically.
|
|
88
|
+
|
|
89
|
+
2. For each skipped file, locate the harness template counterpart:
|
|
90
|
+
- From npm: `node_modules/create-harness-vibe-coding/templates/common/<path>`
|
|
91
|
+
- From GitHub: `https://raw.githubusercontent.com/zingspark/create-harness-vibe-coding/main/templates/common/<path>`
|
|
92
|
+
|
|
93
|
+
3. For each skipped file:
|
|
94
|
+
- Read the existing project file.
|
|
95
|
+
- Read the harness template counterpart.
|
|
96
|
+
- Compare sections and headings. Identify structural sections, registration entries, and required text patterns that exist in the template but are missing from the existing file.
|
|
97
|
+
- If the skipped file is `CLAUDE.md`, tell the user that it is the root agent entry contract. Ask whether they consent to refactor or merge it before editing. Preserve project-specific rules while adding the Harness startup, memory, router, workflow, and subagent orchestration contract.
|
|
98
|
+
- If the skipped file is `AGENTS.md`, tell the user that it is part of the root agent entry contract and ask whether they consent to merge or replace it before editing.
|
|
99
|
+
- Present each gap to the user as a choice:
|
|
100
|
+
- **[Merge]** — Edit the existing file to add only the missing sections. Preserve all existing content, ordering, and formatting.
|
|
101
|
+
- **[Overwrite]** — Replace with the template version. Optionally backup the original first (`--on-conflict backup`).
|
|
102
|
+
- **[Keep]** — Leave the existing file as-is. Skip this file.
|
|
103
|
+
|
|
104
|
+
4. For Merge: use Edit (not Write) to add missing content. Only insert sections, headings, and text that are structurally required. Do not reorder or modify existing content. Do not remove custom project-specific registrations.
|
|
105
|
+
|
|
106
|
+
5. After all merges, run `node Harness/scripts/validate-harness.mjs`. Fix any remaining validation errors, then run `node Harness/scripts/validate-harness.mjs --strict` only after project-fact placeholders are resolved.
|
|
107
|
+
|
|
108
|
+
**File-specific gap checklists:**
|
|
109
|
+
|
|
110
|
+
The harness validator checks for specific structural invariants. When comparing existing files against templates, verify these are present. Most other template content can vary; only the items below are required.
|
|
111
|
+
|
|
112
|
+
| File | Required check |
|
|
113
|
+
|------|----------------|
|
|
114
|
+
| `CLAUDE.md` | Must be merged only after user confirmation when it already exists. Required contract: `## 1. Harness Binding & Startup` with the `Harness/SETUP.md` bootstrap contract line; `## 6. Memory & Self-Learning` section; the tool reflection trigger text (`same tool/use pattern fails 3+ times`); the user correction trigger text (`user corrects the same assumption/pattern 2+ times`); `Never bulk-read Harness/` in Startup |
|
|
115
|
+
| `AGENTS.md` | Root agent entry points to `CLAUDE.md` and `Harness/README.md`; for existing projects, merge only after explicit user consent |
|
|
116
|
+
| `README.md` | Existing README is project-owned. Preserve by default; ask whether to append only Development notes or run `readme-optimizer` for a structure pass with tables/diagrams before broad edits |
|
|
117
|
+
| `Harness/MEMORY.md` | All 9 common agents registered under `## Agents`; all common harness skills registered under `## Skills`; all 3 `Harness/memory/` files registered under `## Memory Folder`; `Harness/memory/` folder usage guidance; `Project Resource Index` in title |
|
|
118
|
+
| `.claude/rules/ecc/common.md` | `## Context` section with the durable communication invariant (`project files are the only durable communication channel`); `## Memory` section with three reflection file entries; `## Security` section |
|
|
119
|
+
| `Harness/README.md` | `## Keyword Routing` heading; `## Load By Task` table with at minimum the rows: "Adding harness to existing project", "Need implementation plan", "Need parallel agents", "Need subagents", "Need durable memory or reflection"; `## Doc Map` with `memory/` and `subagents.md` entries; the durable communication invariant text; `Harness/README.md is the primary router` |
|
|
120
|
+
| `Harness/extension.md` | `## Non-Invasive Extension Rules` section with the "Preserve existing" rule; `## Agent Contract` section; `## Registration` section |
|
|
121
|
+
| `Harness/dispatch.md` | The durable communication invariant; common agent entries for all 9 agents; `## Handoff Format` heading |
|
|
122
|
+
| `Harness/context-loading.md` | The durable communication invariant; `Harness/README.md is the primary router`; all 10 subagent context packs (Explorer Pass, Planner, Researcher, Docs Researcher, Architect, Test Writer, Implementer, Reviewer, Debugger, Verifier) |
|
|
123
|
+
| `Harness/subagents.md` | `## Source Attribution`; `Controller Role`; `Efficiency Ladder`; `Review Gates`; source markers for `npx skills find`, `dispatching-parallel-agents`, and `subagent-driven-development` |
|
|
124
|
+
| `Harness/PLAN.md` | `## Current Goal`, `## Phase`, `## Success Criteria`, `## Loaded Context`, `## Tasks`, `## Parallel Dispatch`, `## Subagent Synthesis`, `## Verification` headings |
|
|
125
|
+
| `Harness/SETUP.md` | Only meaningful for fresh projects. If the project has its own onboarding docs, skip this file entirely (it is temporary). If kept, ensure the "Existing Project Bootstrap Sequence" is present. |
|
|
126
|
+
| `Harness/workflows/browser-e2e.md` (if installed as optional) | `data-testid`, `accessible labels/roles`, and `inputs, buttons, filters, rows, empty/error/loading states` requirement |
|
|
127
|
+
| `Harness/workflows/ts-react-frontend.md` (if installed as optional) | Same UI selector contract as above |
|
|
128
|
+
| `Harness/features/_template.md` | `## 1.5 UI Automation Hooks` with `data-testid` table |
|
|
129
|
+
|
|
130
|
+
**Files that do NOT need manual merge when the path does not already exist (auto-created by harness):**
|
|
131
|
+
|
|
132
|
+
- `Harness/memory/tool-usage-reflections.md`, `Harness/memory/user-corrections-preferences.md`, `Harness/memory/agent-lessons-patterns.md` — these are new empty files
|
|
133
|
+
- `.claude/agents/*.md` — all 9 common agents
|
|
134
|
+
- `.claude/skills/harness-*/SKILL.md`, `.claude/skills/wf-mode/SKILL.md`, and `.claude/skills/subagent-orchestrator/SKILL.md` — core harness skills, WF mode, and subagent orchestration
|
|
135
|
+
- `.claude/rules/ecc/common.md` — universal rules (unless the project has custom rules in this file)
|
|
136
|
+
- `.claude/settings.json` — harness settings
|
|
137
|
+
- `Harness/lifecycle.md`, `Harness/subagents.md`, `Harness/agent-workflow.md`, `Harness/architecture.md`, `Harness/data-flow.md`, `Harness/state-machines.md` — harness runtime docs
|
|
138
|
+
- `Harness/research/*.md` — research protocol and templates
|
|
139
|
+
- `Harness/domain/ports.md` — port contract template
|
|
140
|
+
- `AGENTS.md` — agent registry; if it already exists, ask for user consent before merging or replacing it
|
|
141
|
+
- `Harness/scripts/validate-harness.mjs` and `tests/.gitkeep` — tooling
|
|
142
|
+
|
|
143
|
+
Optional workflow examples:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npx create-harness-vibe-coding@latest my-app ./my-app -y --with browser-e2e,ts-react-frontend
|
|
147
|
+
npx create-harness-vibe-coding@latest my-app ./my-app -y --preset web-app
|
|
148
|
+
```
|
|
46
149
|
|
|
47
150
|
### Template Fill Guide
|
|
48
151
|
|
|
49
|
-
Each template doc contains `{{PLACEHOLDER}}` markers. Below is what every placeholder expects. Replace all markers in the doc before moving to the next doc. If a section does not apply yet, leave the `{{...}}` but record why in `
|
|
152
|
+
Each template doc contains `{{PLACEHOLDER}}` markers. Below is what every placeholder expects. Replace all markers in the doc before moving to the next doc. If a section does not apply yet, leave the `{{...}}` but record why in `Harness/PLAN.md`.
|
|
50
153
|
|
|
51
|
-
**`
|
|
154
|
+
**`Harness/research/PRD.md`** — Product scope. Fill with product facts from user input, not guesses:
|
|
52
155
|
- `{{WHY_THIS_PROJECT_EXISTS}}`: one-sentence motivation
|
|
53
156
|
- `{{MUST_1..3}}`: concrete, testable MVP items (checkbox form)
|
|
54
157
|
- `{{NON_GOAL_1..3}}`: explicitly out-of-scope items
|
|
@@ -56,25 +159,25 @@ Each template doc contains `{{PLACEHOLDER}}` markers. Below is what every placeh
|
|
|
56
159
|
- `{{ACCEPTANCE_1..3}}`: verifiable project-level acceptance criteria
|
|
57
160
|
- `{{DIMENSION}}`, `{{TARGET}}`, `{{MEASUREMENT}}`: non-functional requirements (perf, security, etc.)
|
|
58
161
|
|
|
59
|
-
**`
|
|
60
|
-
- Use `
|
|
162
|
+
**`Harness/research/research-results.md`** — Tech decisions. Research before filling:
|
|
163
|
+
- Use `Harness/research/README.md` as the research protocol.
|
|
61
164
|
- `{{CANDIDATE_1..3}}`: each candidate (framework, library, architecture style) with Purpose/Strength/Weakness/Decision/Link.
|
|
62
165
|
- `{{Architecture Style}}`: the chosen architectural style (e.g., Hexagonal, Modular Monolith).
|
|
63
166
|
- `{{CONSTRAINT_1..3}}`: hard technical constraints derived from research.
|
|
64
167
|
- `{{ALTERNATIVE_1..2}}`: rejected candidates worth watching for future.
|
|
65
168
|
|
|
66
|
-
**`
|
|
169
|
+
**`Harness/architecture.md`** — Layer structure. Derive from research-results:
|
|
67
170
|
- Fill the ASCII layer diagram with actual layer names. Do NOT add layers without a proven need.
|
|
68
171
|
- `2.1–2.5`: describe each harness core component (Runner, Permission Policy, Event Bus, State Store, Tool Registry) in project-specific terms.
|
|
69
172
|
- `3. Architectural Constraints`: add project-specific non-negotiables. Keep the domain/harness purity rules.
|
|
70
173
|
|
|
71
|
-
**`
|
|
174
|
+
**`Harness/domain/ports.md`** — Cross-layer contracts. One driving port + one driven port from the first slice:
|
|
72
175
|
- `{{INBOUND_PORT_1}}`: the first inbound port (e.g., "CreateOrderPort").
|
|
73
176
|
- `{{OUTBOUND_PORT_1}}`: the first outbound port (e.g., "OrderRepository").
|
|
74
177
|
- For each port: fill Purpose, Preconditions, Postconditions, Error Semantics, Idempotency.
|
|
75
178
|
- Leave remaining rows as `{{...}}` until more slices add ports.
|
|
76
179
|
|
|
77
|
-
**`
|
|
180
|
+
**`Harness/PLAN.md`** — Active execution state. Update continuously:
|
|
78
181
|
- `## Current Goal`: one sentence, what this iteration achieves.
|
|
79
182
|
- `## Phase`: current lifecycle phase (Idea/Research/PRD/Architecture/Plan/Build/Verify/Feedback).
|
|
80
183
|
- `## Success Criteria`: verifiable outcomes for this iteration.
|
|
@@ -82,13 +185,18 @@ Each template doc contains `{{PLACEHOLDER}}` markers. Below is what every placeh
|
|
|
82
185
|
- `## Parallel Dispatch`: only when spawning subagents — fill agent roles, read/write boundaries.
|
|
83
186
|
- `## Verification`: record test results, review findings, docs sync checklist.
|
|
84
187
|
|
|
85
|
-
**`
|
|
188
|
+
**`Harness/memory/`** — Durable self-evolution notes:
|
|
189
|
+
- `Harness/memory/tool-usage-reflections.md`: repeated tool failures, better command patterns, environment-specific fixes.
|
|
190
|
+
- `Harness/memory/user-corrections-preferences.md`: repeated user corrections, durable preferences, common-sense course corrections.
|
|
191
|
+
- `Harness/memory/agent-lessons-patterns.md`: reusable lessons from review, debugging, validation, and handoff loops.
|
|
192
|
+
|
|
193
|
+
**`Harness/data-flow.md`** — Runtime event paths (only when first slice has async/multi-step flow):
|
|
86
194
|
- `{{EVENT_1}}`: the first event type with producer, consumers, payload fields, delivery semantics.
|
|
87
195
|
- Happy Path: fill the Mermaid sequence diagram with actual ports and actions.
|
|
88
196
|
- Failure Paths: for each failure point, document trigger, system behavior, event, caller perception, recovery.
|
|
89
197
|
- If the first slice is synchronous and stateless, leave this doc as `{{...}}` and note in PLAN.md.
|
|
90
198
|
|
|
91
|
-
**`
|
|
199
|
+
**`Harness/state-machines.md`** — State transitions (only when first slice has stateful entities):
|
|
92
200
|
- Define states, transitions, guards, and illegal transitions for the first stateful entity.
|
|
93
201
|
- If no stateful entity exists in the first slice, leave as `{{...}}` and note in PLAN.md.
|
|
94
202
|
|
|
@@ -96,11 +204,11 @@ Each template doc contains `{{PLACEHOLDER}}` markers. Below is what every placeh
|
|
|
96
204
|
- Replace `{{projectName}}` with the actual project name immediately.
|
|
97
205
|
- Never invent content for a `{{...}}` marker. If you lack facts, ask the user or leave the marker.
|
|
98
206
|
- `<!-- HTML comments -->` in templates are instructions to you. Read them. Delete them after filling the section.
|
|
99
|
-
- After filling all templates in a phase, run `node scripts/validate-harness.mjs --strict`. Any remaining `{{...}}` in project-fact files will be flagged.
|
|
207
|
+
- After filling all templates in a phase, run `node Harness/scripts/validate-harness.mjs --strict`. Any remaining `{{...}}` in project-fact files will be flagged.
|
|
100
208
|
|
|
101
209
|
## Architecture Research (Dynamic)
|
|
102
210
|
|
|
103
|
-
Do not guess the architecture. Use `
|
|
211
|
+
Do not guess the architecture. Use `Harness/research/README.md` as the protocol and the high-star repos below as seed references. Search within them; do not read them whole.
|
|
104
212
|
|
|
105
213
|
### Seed Repositories (High-Star, High-Trust)
|
|
106
214
|
|
|
@@ -117,12 +225,12 @@ Do not guess the architecture. Use `docs/research/README.md` as the protocol and
|
|
|
117
225
|
|
|
118
226
|
After research, fill these docs in order:
|
|
119
227
|
|
|
120
|
-
1. `
|
|
121
|
-
2. `
|
|
122
|
-
3. `
|
|
123
|
-
4. `
|
|
228
|
+
1. `Harness/research/research-results.md` — Record candidate architectures with Adopt / Reject / Watch decisions. Use the `## Candidate References` template.
|
|
229
|
+
2. `Harness/architecture.md` — Fill the layering diagram, core components, and constraints. Do NOT add speculative layers. One layer per proven need.
|
|
230
|
+
3. `Harness/domain/ports.md` — Define ONE driving port and ONE driven port from the first vertical slice. More ports come with more slices.
|
|
231
|
+
4. `Harness/data-flow.md` — Fill the happy path for the first slice only. Add failure paths when they differ from the happy path.
|
|
124
232
|
|
|
125
|
-
**Constraint**: If the research does not give you enough confidence to fill a section, leave the `{{...}}` placeholder and record the open question in `
|
|
233
|
+
**Constraint**: If the research does not give you enough confidence to fill a section, leave the `{{...}}` placeholder and record the open question in `Harness/PLAN.md`. The strict validator will catch it.
|
|
126
234
|
|
|
127
235
|
## User Confirmation Protocol (Non-Negotiable)
|
|
128
236
|
|
|
@@ -133,7 +241,7 @@ When user intent is unclear or ambiguous:
|
|
|
133
241
|
- **Maximum 3 blocking questions per decision point.** Ask the highest-impact questions first.
|
|
134
242
|
- **Do not act on assumptions that affect architecture, scope, stack, or user-facing behavior.**
|
|
135
243
|
- **You must have ≥95% confidence before writing implementation code.** If below that threshold, stop and ask.
|
|
136
|
-
- **Record every assumption explicitly** in `
|
|
244
|
+
- **Record every assumption explicitly** in `Harness/PLAN.md` so the user can correct it later.
|
|
137
245
|
- **Silent picks are forbidden.** If two valid approaches exist and you cannot decide with high confidence, present both to the user with trade-offs.
|
|
138
246
|
|
|
139
247
|
False confidence is worse than a question. If you catch yourself thinking "this is probably what they want," stop and ask.
|
|
@@ -159,20 +267,20 @@ npx skills search "react testing"
|
|
|
159
267
|
npx skills search "python api"
|
|
160
268
|
```
|
|
161
269
|
|
|
162
|
-
**Manual discovery**: search GitHub and npm directly using patterns from `
|
|
270
|
+
**Manual discovery**: search GitHub and npm directly using patterns from `Harness/research/README.md#Architecture Decision References`.
|
|
163
271
|
|
|
164
272
|
**Priority order**:
|
|
165
273
|
1. `/find-skills` first — fastest discovery, respects your tool environment.
|
|
166
274
|
2. Superpowers registry — broad community coverage.
|
|
167
275
|
3. GitHub search — when the first two miss niche domains.
|
|
168
276
|
|
|
169
|
-
**What to install**: after finding skills, add them to `.claude/skills/<name>/SKILL.md`. Follow `
|
|
277
|
+
**What to install**: after finding skills, add them to `.claude/skills/<name>/SKILL.md`. Follow `Harness/extension.md` for compatibility. Start with 1-2 skills per stack area; more is not better.
|
|
170
278
|
|
|
171
279
|
This scaffold includes built-in harness skills (`.claude/skills/harness-*`). Keep those. Add stack-specific ones alongside them.
|
|
172
280
|
|
|
173
281
|
## Optional Agent Assets
|
|
174
282
|
|
|
175
|
-
After the product shape is known, Claude may also install or copy stack-specific agents, rules, and hooks into `.claude/`. Follow `
|
|
283
|
+
After the product shape is known, Claude may also install or copy stack-specific agents, rules, and hooks into `.claude/`. Follow `Harness/extension.md` for every added asset.
|
|
176
284
|
|
|
177
285
|
Examples:
|
|
178
286
|
|
|
@@ -186,14 +294,14 @@ This is a Go service. Add API, security, and integration-test agents.
|
|
|
186
294
|
|
|
187
295
|
This file is designed to be orphaned. When all configuration is complete:
|
|
188
296
|
|
|
189
|
-
1. Open `CLAUDE.md`. Delete the line:
|
|
297
|
+
1. Open `CLAUDE.md`. Delete the setup bootstrap line that starts with: ``If `Harness/SETUP.md` exists, follow it before normal project work``.
|
|
190
298
|
2. Delete this file.
|
|
191
299
|
|
|
192
300
|
```bash
|
|
193
|
-
rm SETUP.md
|
|
301
|
+
rm Harness/SETUP.md
|
|
194
302
|
```
|
|
195
303
|
|
|
196
|
-
After both steps, `SETUP.md` is fully isolated — no file references it, no trace remains. You are free to delete it at any time. It is a bootstrap scaffold, not a permanent fixture.
|
|
304
|
+
After both steps, `Harness/SETUP.md` is fully isolated — no file references it, no trace remains. You are free to delete it at any time. It is a bootstrap scaffold, not a permanent fixture.
|
|
197
305
|
|
|
198
306
|
---
|
|
199
307
|
|
|
@@ -213,7 +321,7 @@ npx create-harness-vibe-coding@latest my-agent-project ./my-agent-project -y
|
|
|
213
321
|
|
|
214
322
|
After scaffolding, bootstrap the harness yourself:
|
|
215
323
|
|
|
216
|
-
1. Read `CLAUDE.md`, `MEMORY.md`, and `
|
|
324
|
+
1. Read `CLAUDE.md`, `Harness/MEMORY.md`, and `Harness/README.md`.
|
|
217
325
|
2. Follow the Required Bootstrap Sequence above.
|
|
218
|
-
3. Run `node scripts/validate-harness.mjs --strict` when done.
|
|
219
|
-
4. Delete `SETUP.md`.
|
|
326
|
+
3. Run `node Harness/scripts/validate-harness.mjs --strict` when done.
|
|
327
|
+
4. Delete `Harness/SETUP.md`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# {{projectName}} - Harness Router
|
|
2
2
|
|
|
3
|
-
Purpose: route humans and agents to the smallest useful context.
|
|
3
|
+
Purpose: route humans and agents to the smallest useful context. `Harness/README.md` is the primary router.
|
|
4
4
|
|
|
5
|
-
Default load: `CLAUDE.md`, `MEMORY.md`, this file, and `
|
|
5
|
+
Default load: `CLAUDE.md`, `Harness/MEMORY.md`, this file, and `Harness/PLAN.md` when work is active. Do not read the whole `Harness/` tree.
|
|
6
6
|
|
|
7
7
|
## 0-1 Flow
|
|
8
8
|
|
|
@@ -10,19 +10,26 @@ Default load: `CLAUDE.md`, `MEMORY.md`, this file, and `docs/harness/PLAN.md` wh
|
|
|
10
10
|
Idea -> Research -> PRD -> Architecture -> Plan -> Build -> Verify -> Feedback
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
For the full phase contract, load [
|
|
13
|
+
For the full phase contract, load [lifecycle.md](lifecycle.md).
|
|
14
14
|
|
|
15
15
|
## Development Contract
|
|
16
16
|
|
|
17
17
|
- This file is a router, not a full spec.
|
|
18
18
|
- If the task does not clearly match a row below, search by keywords before loading more docs.
|
|
19
|
+
- project files are the only durable communication channel; chat/subagent transcript state is non-authoritative.
|
|
20
|
+
- Important assumptions, decisions, blockers, evidence, and handoffs must be written to [PLAN.md](PLAN.md), the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
|
|
21
|
+
- Build commands, git conventions, and release notes belong in root `README.md`, not `CLAUDE.md`.
|
|
22
|
+
- README rewrites are optional project-doc work. Use `readme-optimizer` and preserve existing public docs unless the user approves a broader restructure.
|
|
23
|
+
- Code architecture belongs in [architecture.md](architecture.md) or the current feature doc, not `CLAUDE.md`.
|
|
19
24
|
- Core rules live in `CLAUDE.md` and `.claude/rules/ecc/common.md`.
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
25
|
+
- WF mode rules live in [WF.md](WF.md).
|
|
26
|
+
- Phase rules live in [lifecycle.md](lifecycle.md).
|
|
27
|
+
- Build, review, test, and subagent rules live in [agent-workflow.md](agent-workflow.md).
|
|
28
|
+
- Parallel dispatch rules live in [dispatch.md](dispatch.md).
|
|
29
|
+
- Subagent orchestration methodology lives in [subagents.md](subagents.md).
|
|
30
|
+
- Extension rules live in [extension.md](extension.md).
|
|
31
|
+
- Context-loading rules live in [context-loading.md](context-loading.md).
|
|
32
|
+
- Progress lives in [PLAN.md](PLAN.md) and the current feature doc.
|
|
26
33
|
|
|
27
34
|
## Keyword Routing
|
|
28
35
|
|
|
@@ -32,11 +39,11 @@ Use this only when the task is ambiguous or the matching row is unclear.
|
|
|
32
39
|
2. Search the project docs first:
|
|
33
40
|
|
|
34
41
|
```bash
|
|
35
|
-
rg -n "keyword1|keyword2|keyword3" CLAUDE.md
|
|
42
|
+
rg -n "keyword1|keyword2|keyword3" CLAUDE.md README.md Harness
|
|
36
43
|
```
|
|
37
44
|
|
|
38
45
|
3. Load only the top matching doc or the smallest matching doc pair.
|
|
39
|
-
4. If keyword search conflicts with the table below, follow the table and record the assumption in `
|
|
46
|
+
4. If keyword search conflicts with the table below, follow the table and record the assumption in `Harness/PLAN.md`.
|
|
40
47
|
|
|
41
48
|
Keywords are retrieval hints, not project facts.
|
|
42
49
|
|
|
@@ -44,58 +51,76 @@ Keywords are retrieval hints, not project facts.
|
|
|
44
51
|
|
|
45
52
|
Load the matching row only. Add adjacent docs only when the loaded doc directly names them.
|
|
46
53
|
|
|
54
|
+
Routing priority: if a request is long, difficult, uncertain, repeated-failure, migration, architecture-heavy, browser-visible, or broad multi-agent implementation work, choose the WF row first. `wf-mode` may then delegate subagent coordination to `subagent-orchestrator`.
|
|
55
|
+
|
|
47
56
|
| When to Read | Keywords | Load | Output |
|
|
48
57
|
| --- | --- | --- | --- |
|
|
49
|
-
| Raw idea or vague product request | idea, vague, clarify, goal, non-goal, lifecycle | [
|
|
58
|
+
| Raw idea or vague product request | idea, vague, clarify, goal, non-goal, lifecycle | [lifecycle.md](lifecycle.md), [research/PRD.md](research/PRD.md) | clarified goal, non-goals, first questions |
|
|
50
59
|
| Need market/tech direction | research, market, competitor, stack, library, pricing, policy | [research/README.md](research/README.md), [research/research-results.md](research/research-results.md) | research protocol, adopted/rejected choices |
|
|
51
60
|
| Need MVP/spec | PRD, MVP, scope, requirement, acceptance, non-goal | [research/PRD.md](research/PRD.md) | one-page PRD with verifiable acceptance criteria |
|
|
52
|
-
| Need architecture or boundaries | architecture, boundary, layer, domain, port, adapter, dependency | [
|
|
53
|
-
| Need
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
| Need
|
|
57
|
-
| Need
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
61
|
+
| Need architecture or boundaries | architecture, boundary, layer, domain, port, adapter, dependency | [architecture.md](architecture.md), [domain/ports.md](domain/ports.md) | layer map, ports, constraints |
|
|
62
|
+
| Need WF mode | wf, /wf, workflow mode, long task, difficult, stuck, repeated failure | [WF.md](WF.md), [PLAN.md](PLAN.md) | exploration plan, second plan, heartbeat, recovery loop; load subagent docs only when needed |
|
|
63
|
+
| Adding harness to existing project | existing project, onboarding, migrate, bootstrap, preserve, conflict | [extension.md](extension.md), [PLAN.md](PLAN.md), root `README.md` and package/CI files | discovered project facts, preserved config, manual registration plan |
|
|
64
|
+
| README optimization | README, docs, quickstart, install docs, architecture diagram, command table, documentation polish | root `README.md`, `.claude/skills/readme-optimizer/SKILL.md`, [PLAN.md](PLAN.md), [architecture.md](architecture.md) as needed | approved README mode, preserved sections, proposed diff plan |
|
|
65
|
+
| Need implementation plan | plan, task, write set, verify, milestone, progress | [PLAN.md](PLAN.md), [agent-workflow.md](agent-workflow.md) | tasks, write set, verification commands |
|
|
66
|
+
| Need parallel agents | parallel, dispatch, handoff, write set, dependency, status | [subagents.md](subagents.md), [dispatch.md](dispatch.md), [context-loading.md](context-loading.md), [PLAN.md](PLAN.md) | orchestration plan, dispatch table, agent roles, read/write sets |
|
|
67
|
+
| Adding stack-specific agents/skills | extension, agent, skill, rule, hook, stack-specific, compatibility | [extension.md](extension.md), [dispatch.md](dispatch.md) | compatible agents, skills, rules, hooks |
|
|
68
|
+
| Optional workflow installed | workflow, optional, browser-e2e, ui-ux-review, github-pr-review, python-backend, ts-react-frontend | matching `workflows/*.md`, [extension.md](extension.md) | workflow-specific evidence, commands, fallback path |
|
|
69
|
+
| Need durable memory or reflection | memory, remember, preference, correction, tool failure, lesson, reflection | [MEMORY.md](MEMORY.md), `Harness/memory/tool-usage-reflections.md`, `Harness/memory/user-corrections-preferences.md`, `Harness/memory/agent-lessons-patterns.md` | concise newest-first memory entry or no-op rationale |
|
|
70
|
+
| Need subagents | subagent, role pack, context, inject, return format, orchestrator | [subagents.md](subagents.md), [context-loading.md](context-loading.md), [dispatch.md](dispatch.md) | controller plan, role-specific context pack, dispatch pack |
|
|
71
|
+
| Need feature work | feature, implementation, TDD, test, review, closeout | [features/_template.md](features/_template.md), [agent-workflow.md](agent-workflow.md) | feature doc, tests, implementation loop |
|
|
72
|
+
| Flow or failure behavior changes | data flow, event, failure, retry, recovery, caller behavior | [data-flow.md](data-flow.md) | happy path, failure path, caller behavior |
|
|
73
|
+
| Stateful behavior changes | state, transition, guard, illegal transition, state machine | [state-machines.md](state-machines.md) | states, transitions, illegal transitions |
|
|
74
|
+
| Review or release check | review, release, finding, risk, evidence, verification | [agent-workflow.md](agent-workflow.md), current feature doc | findings, verification evidence |
|
|
75
|
+
| Harness readiness check | validate, readiness, placeholder, missing file, release gate | `Harness/scripts/validate-harness.mjs`, `Harness/scripts/validate-harness.mjs --strict` | missing files and unresolved project placeholders |
|
|
62
76
|
|
|
63
77
|
## Gates
|
|
64
78
|
|
|
65
79
|
- Move phases in order unless the user asks for a fast lane.
|
|
80
|
+
- Use `/wf` when a task is long, difficult, uncertain, multi-file, or repeatedly failing.
|
|
66
81
|
- Do not code before the PRD has MVP, non-goals, and acceptance criteria.
|
|
67
82
|
- Do not cross a layer boundary without reading `domain/ports.md` and updating architecture or ports.
|
|
68
|
-
- Before adding failure paths, read `
|
|
69
|
-
- Before modifying stateful components, read `
|
|
70
|
-
- Unsure whether to open a feature doc? Read `
|
|
83
|
+
- Before adding failure paths, read `data-flow.md`.
|
|
84
|
+
- Before modifying stateful components, read `state-machines.md`.
|
|
85
|
+
- Unsure whether to open a feature doc? Read `agent-workflow.md` Section 1.
|
|
71
86
|
- Do not spawn a subagent without a role, read boundary, write boundary, and return contract.
|
|
72
87
|
- Do not run writing agents in parallel unless write sets are disjoint.
|
|
73
|
-
- Before coordinating multiple agents, fill `
|
|
74
|
-
-
|
|
88
|
+
- Before coordinating multiple agents, fill `PLAN.md#Parallel Dispatch` and follow `subagents.md` plus `dispatch.md`; if the work also matches WF triggers, enter WF mode first.
|
|
89
|
+
- In WF mode, update `PLAN.md#Heartbeat` before long commands, after failures, and at closeout.
|
|
90
|
+
- Do not add stack-specific agents or skills without following `extension.md`.
|
|
75
91
|
- Do not close work without tests or recorded manual verification.
|
|
76
|
-
- Do not mark work `Verified` until evidence is recorded in `
|
|
77
|
-
- Run `node scripts/validate-harness.mjs` for scaffold structure; run `node scripts/validate-harness.mjs --strict` after bootstrap and before release.
|
|
92
|
+
- Do not mark work `Verified` until evidence is recorded in `PLAN.md` or the feature doc.
|
|
93
|
+
- Run `node Harness/scripts/validate-harness.mjs` for scaffold structure; run `node Harness/scripts/validate-harness.mjs --strict` after bootstrap and before release.
|
|
78
94
|
- If a doc still has `{{...}}`, treat that section as a template, not project fact.
|
|
79
95
|
|
|
80
96
|
## Doc Map
|
|
81
97
|
|
|
82
98
|
```text
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
.
|
|
100
|
-
|
|
99
|
+
Harness/README.md router only
|
|
100
|
+
Harness/MEMORY.md resource index
|
|
101
|
+
Harness/PLAN.md active execution plan and heartbeat
|
|
102
|
+
Harness/WF.md long-task workflow and recovery loop
|
|
103
|
+
Harness/lifecycle.md 0-1 product flow
|
|
104
|
+
Harness/subagents.md controller-led subagent orchestration
|
|
105
|
+
Harness/context-loading.md dynamic loading and subagent packs
|
|
106
|
+
Harness/dispatch.md lightweight parallel dispatch protocol
|
|
107
|
+
Harness/extension.md stack-specific asset contract
|
|
108
|
+
Harness/agent-workflow.md build/review/test loop
|
|
109
|
+
Harness/architecture.md layer boundaries
|
|
110
|
+
Harness/data-flow.md runtime/failure paths
|
|
111
|
+
Harness/state-machines.md state transitions
|
|
112
|
+
Harness/domain/ports.md cross-layer contracts
|
|
113
|
+
Harness/features/_template.md feature work packet
|
|
114
|
+
Harness/research/README.md research protocol
|
|
115
|
+
Harness/research/PRD.md product scope
|
|
116
|
+
Harness/research/research-results.md research results
|
|
117
|
+
Harness/workflows/*.md optional workflow evidence rules
|
|
118
|
+
Harness/memory/tool-usage-reflections.md repeated tool failures and better command patterns
|
|
119
|
+
Harness/memory/user-corrections-preferences.md durable user corrections and preferences
|
|
120
|
+
Harness/memory/agent-lessons-patterns.md reusable review/debug lessons
|
|
121
|
+
Harness/scripts/validate-harness.mjs lightweight harness gate
|
|
122
|
+
.claude/agents/* built-in common agents
|
|
123
|
+
.claude/skills/* skill-style dynamic loaders
|
|
124
|
+
.claude/skills/readme-optimizer/SKILL.md README preservation and optional structure pass
|
|
125
|
+
.claude/commands/wf.md slash command bridge into wf-mode
|
|
101
126
|
```
|
|
@@ -70,4 +70,4 @@ Fill in each port using the format below:
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
> **Note**: The current ports.md is a template. Replace `{{...}}` placeholders with your project's domain details. Refer to `
|
|
73
|
+
> **Note**: The current ports.md is a template. Replace `{{...}}` placeholders with your project's domain details. Refer to `Harness/data-flow.md` to understand how ports are orchestrated.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# {{FEATURE_NAME}}
|
|
2
2
|
|
|
3
|
-
> **When to use**: Every PRD scope item in `research/PRD.md` Section 2 must have a feature doc — either a new one from this template, or an iteration on an existing one. Do not code a PRD scope item without a corresponding features doc.
|
|
3
|
+
> **When to use**: Every PRD scope item in `Harness/research/PRD.md` Section 2 must have a feature doc — either a new one from this template, or an iteration on an existing one. Do not code a PRD scope item without a corresponding features doc.
|
|
4
4
|
>
|
|
5
5
|
> **New vs iterate**: If the scope item has ≥85% overlap with an existing feature doc, iterate the existing doc (bump `Version`, add a `## Changelog` entry). If overlap is below 85%, create a new file from this template. When in doubt, ask the user.
|
|
6
6
|
|
|
@@ -34,6 +34,16 @@
|
|
|
34
34
|
- [ ] {{ACCEPTANCE_CRITERION_2}}
|
|
35
35
|
- [ ] {{ACCEPTANCE_CRITERION_3}}
|
|
36
36
|
|
|
37
|
+
### 1.5 UI Automation Hooks
|
|
38
|
+
|
|
39
|
+
For TS/React or browser workflows, define required stable accessible labels/roles and stable test hooks such as `data-testid` before implementation. These selectors must cover critical UI controls and states so CDP, Playwright, and manual verification can target inputs, buttons, filters, rows, empty/error/loading states, dialogs, navigation, and submitted/saved/error feedback without brittle DOM paths.
|
|
40
|
+
|
|
41
|
+
| Element / State | Accessible Role / Label | `data-testid` | Verification Target |
|
|
42
|
+
| --- | --- | --- | --- |
|
|
43
|
+
| {{INPUT_OR_CONTROL}} | {{ROLE_OR_LABEL}} | {{DATA_TESTID}} | {{PLAYWRIGHT_OR_MANUAL_CHECK}} |
|
|
44
|
+
| {{EMPTY_ERROR_LOADING_OR_ROW_STATE}} | {{ROLE_OR_LABEL}} | {{DATA_TESTID}} | {{PLAYWRIGHT_OR_MANUAL_CHECK}} |
|
|
45
|
+
| Not UI-facing | N/A | N/A | N/A |
|
|
46
|
+
|
|
37
47
|
---
|
|
38
48
|
|
|
39
49
|
## 2. Design
|
|
@@ -42,10 +52,10 @@
|
|
|
42
52
|
|
|
43
53
|
| Area | Impacted? | Notes |
|
|
44
54
|
| --- | --- | --- |
|
|
45
|
-
| `
|
|
46
|
-
| `domain/ports.md` | {{YES_NO}} | {{NOTE}} |
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
55
|
+
| `Harness/architecture.md` | {{YES_NO}} | {{NOTE}} |
|
|
56
|
+
| `Harness/domain/ports.md` | {{YES_NO}} | {{NOTE}} |
|
|
57
|
+
| `Harness/data-flow.md` | {{YES_NO}} | {{NOTE}} |
|
|
58
|
+
| `Harness/state-machines.md` | {{YES_NO}} | {{NOTE}} |
|
|
49
59
|
| tests | {{YES_NO}} | {{NOTE}} |
|
|
50
60
|
|
|
51
61
|
### 2.2 Allowed Write Set
|
|
@@ -122,11 +132,11 @@ Estimate the context budget for this feature. If the main agent would need to re
|
|
|
122
132
|
|
|
123
133
|
### 4.3 Docs Sync
|
|
124
134
|
|
|
125
|
-
- [ ] `
|
|
126
|
-
- [ ] `domain/ports.md`
|
|
127
|
-
- [ ] `
|
|
128
|
-
- [ ] `
|
|
129
|
-
- [ ] `research/research-results.md`
|
|
135
|
+
- [ ] `Harness/architecture.md`
|
|
136
|
+
- [ ] `Harness/domain/ports.md`
|
|
137
|
+
- [ ] `Harness/data-flow.md`
|
|
138
|
+
- [ ] `Harness/state-machines.md`
|
|
139
|
+
- [ ] `Harness/research/research-results.md`
|
|
130
140
|
- [ ] Not needed because {{REASON}}
|
|
131
141
|
|
|
132
142
|
### 4.4 Decision Log
|
|
@@ -12,6 +12,18 @@ Choose one: Idea / Research / PRD / Architecture / Plan / Build / Verify / Feedb
|
|
|
12
12
|
|
|
13
13
|
Current: {{CURRENT_PHASE}}
|
|
14
14
|
|
|
15
|
+
## Heartbeat
|
|
16
|
+
|
|
17
|
+
Mode: normal
|
|
18
|
+
Last beat: {{LAST_BEAT}}
|
|
19
|
+
Current phase: {{CURRENT_PHASE}}
|
|
20
|
+
Current blocker: {{CURRENT_BLOCKER_OR_NONE}}
|
|
21
|
+
Next beat trigger: {{NEXT_BEAT_TRIGGER}}
|
|
22
|
+
Failure count: 0
|
|
23
|
+
Recovery action: {{RECOVERY_ACTION_OR_NONE}}
|
|
24
|
+
|
|
25
|
+
Update this section before long commands, after long commands, before and after subagent handoffs, after failed verification, and before stopping for user input. In `wf-mode`, use this as the resume point after context loss or interruption.
|
|
26
|
+
|
|
15
27
|
## Progress Rules
|
|
16
28
|
|
|
17
29
|
- Phase tracks lifecycle progress.
|
|
@@ -44,7 +56,7 @@ Forbidden:
|
|
|
44
56
|
|
|
45
57
|
Keep this list short. Add only docs/files used for the current phase.
|
|
46
58
|
|
|
47
|
-
- `
|
|
59
|
+
- `Harness/README.md`
|
|
48
60
|
- `{{LOADED_DOC_OR_FILE}}`
|
|
49
61
|
|
|
50
62
|
## Tasks
|
|
@@ -55,12 +67,23 @@ Keep this list short. Add only docs/files used for the current phase.
|
|
|
55
67
|
|
|
56
68
|
## Parallel Dispatch
|
|
57
69
|
|
|
58
|
-
Use [dispatch.md](dispatch.md) when more than one agent or bounded pass is useful.
|
|
70
|
+
Use [subagents.md](subagents.md) and [dispatch.md](dispatch.md) when more than one agent or bounded pass is useful.
|
|
59
71
|
|
|
60
72
|
| Task | Agent | Mode | Read Set | Write Set | Depends On | Output | Status |
|
|
61
73
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
62
74
|
| {{TASK}} | {{AGENT}} | Parallel Read / Serial Write / Isolated Worktree | `{{READ_SET}}` | `{{WRITE_SET_OR_NONE}}` | {{DEPENDENCY_OR_NONE}} | {{EXPECTED_OUTPUT}} | Pending |
|
|
63
75
|
|
|
76
|
+
## Subagent Synthesis
|
|
77
|
+
|
|
78
|
+
Agents used:
|
|
79
|
+
Findings accepted:
|
|
80
|
+
Findings rejected:
|
|
81
|
+
Conflicts:
|
|
82
|
+
Decisions:
|
|
83
|
+
Next write set:
|
|
84
|
+
Verification path:
|
|
85
|
+
Residual risk:
|
|
86
|
+
|
|
64
87
|
## Agent Handoffs
|
|
65
88
|
|
|
66
89
|
| Agent | Role | Context Pack | Result |
|