create-harness-vibe-coding 0.1.3 → 0.1.4
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 +71 -74
- package/package.json +2 -2
- package/src/generator.js +3 -5
- package/src/index.js +8 -8
- package/templates/common/.claude/agents/architect.md +35 -0
- package/templates/common/.claude/agents/debugger.md +42 -0
- package/templates/common/.claude/agents/docs-researcher.md +43 -0
- package/templates/common/.claude/agents/implementer.md +41 -0
- package/templates/common/.claude/agents/planner.md +35 -0
- package/templates/common/.claude/agents/researcher.md +42 -0
- package/templates/common/.claude/agents/reviewer.md +34 -0
- package/templates/common/.claude/agents/test-writer.md +39 -0
- package/templates/common/.claude/agents/verifier.md +33 -0
- package/templates/common/.claude/rules/ecc/common.md +25 -22
- package/templates/common/.claude/skills/harness-build-loop/SKILL.md +21 -0
- package/templates/common/.claude/skills/harness-context/SKILL.md +24 -0
- package/templates/common/.claude/skills/harness-lifecycle/SKILL.md +19 -0
- package/templates/common/.claude/skills/harness-research/SKILL.md +29 -0
- package/templates/common/.claude/skills/harness-router/SKILL.md +14 -0
- package/templates/common/AGENTS.md +3 -1
- package/templates/common/CLAUDE.md +30 -33
- package/templates/common/MEMORY.md +30 -7
- package/templates/common/SETUP.md +42 -68
- package/templates/common/docs/README.md +81 -96
- package/templates/common/docs/domain/ports.md +26 -26
- package/templates/common/docs/features/_template.md +34 -25
- package/templates/common/docs/harness/PLAN.md +80 -0
- package/templates/common/docs/harness/agent-workflow.md +57 -116
- package/templates/common/docs/harness/architecture.md +51 -48
- package/templates/common/docs/harness/context-loading.md +93 -0
- package/templates/common/docs/harness/data-flow.md +20 -20
- package/templates/common/docs/harness/dispatch.md +82 -0
- package/templates/common/docs/harness/extension.md +67 -0
- package/templates/common/docs/harness/lifecycle.md +33 -0
- package/templates/common/docs/harness/state-machines.md +15 -15
- package/templates/common/docs/research/PRD.md +25 -23
- package/templates/common/docs/research/README.md +121 -0
- package/templates/common/docs/research/research-results.md +66 -0
- package/templates/common/scripts/validate-harness.mjs +207 -0
- package/templates/common/docs/research/scaffolds.md +0 -60
|
@@ -1,112 +1,97 @@
|
|
|
1
|
-
# {{projectName}}
|
|
1
|
+
# {{projectName}} - Harness Router
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
>
|
|
5
|
-
> **Principle**: Short entry + topic-specific docs. Don't cram everything into `CLAUDE.md` or `AGENTS.md`.
|
|
3
|
+
Purpose: route humans and agents to the smallest useful context.
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
Default load: `CLAUDE.md`, `MEMORY.md`, this file, and `docs/harness/PLAN.md` when work is active. Do not read the whole docs tree.
|
|
8
6
|
|
|
9
|
-
## 0-1
|
|
7
|
+
## 0-1 Flow
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
```text
|
|
10
|
+
Idea -> Research -> PRD -> Architecture -> Plan -> Build -> Verify -> Feedback
|
|
11
|
+
```
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
| --- | --- | --- | --- |
|
|
15
|
-
| 1 | [research/scaffolds.md](research/scaffolds.md) | What do others do? Which templates, frameworks, constraints? Why adopt/reject? | At least 3 references; each with Purpose / Strength / Weakness / Decision |
|
|
16
|
-
| 2 | [research/PRD.md](research/PRD.md) | What does this MVP solve? What is explicitly NOT in scope? How to verify? | One page; MVP, Non-goals, verifiable acceptance criteria |
|
|
17
|
-
| 3 | [harness/architecture.md](harness/architecture.md) | How many layers? Component boundaries? What can/can't harness do? | Layer dependencies, core components, non-negotiable constraints, key decisions |
|
|
18
|
-
| 4 | [domain/ports.md](domain/ports.md) | What contracts between layers? Error and idempotency semantics? | Each port: preconditions, postconditions, error semantics, known implementations |
|
|
19
|
-
| 5 | [harness/data-flow.md](harness/data-flow.md) | Normal path and failure paths? What does the caller see? | At least 1 core flow; each failure point has system behavior and recovery |
|
|
20
|
-
| 6 | [harness/state-machines.md](harness/state-machines.md) | Which components have state? Which transitions are legal/illegal? | Each stateful component: state enum, transition table, illegal transitions |
|
|
21
|
-
| 7 | [harness/agent-workflow.md](harness/agent-workflow.md) | How do agents divide work, TDD, verify, and close? | Feature doc template, subagent roles, write set, completion criteria |
|
|
22
|
-
| 8 | tests + implementation | Is the design proven by code? | Minimal vertical slice runs; tests cover core success/failure paths |
|
|
23
|
-
|
|
24
|
-
**Hard gates**:
|
|
25
|
-
- If a doc still has `{{...}}` placeholders, don't claim the architecture is finalized.
|
|
26
|
-
- **Minimum docs to start coding**: `research/PRD.md` + `harness/architecture.md` + at least 1 filled port contract. Once there, start a minimal vertical slice, but record risks from missing `data-flow.md` / `state-machines.md` in the feature doc or tests.
|
|
27
|
-
- If architecture boundaries change, sync docs and tests.
|
|
28
|
-
- If implementation spans more than one short session, open a feature doc from [features/_template.md](features/_template.md) first.
|
|
29
|
-
|
|
30
|
-
## Doc Completion Standards
|
|
31
|
-
|
|
32
|
-
| Doc | Minimum Standard | Can Defer |
|
|
33
|
-
| --- | --- | --- |
|
|
34
|
-
| `research/scaffolds.md` | At least 3 references; each with Purpose / Strength / Weakness / Decision; final decision recorded | Rejected options can be backfilled |
|
|
35
|
-
| `research/PRD.md` | Why, MVP, Non-goals, decision priorities, acceptance criteria are not placeholders | Non-functional targets can start as MVP-level goals |
|
|
36
|
-
| `harness/architecture.md` | Layer dependencies, core components, at least 1 ADR, non-negotiable constraints | Runner variants can say "none yet" when only one runner exists |
|
|
37
|
-
| `domain/ports.md` | At least 1 port with preconditions, postconditions, error semantics, idempotency, known impls | Additional ports can be added incrementally with features |
|
|
38
|
-
| `harness/data-flow.md` | At least 1 core flow with normal + failure paths | Secondary flows can come later |
|
|
39
|
-
| `harness/state-machines.md` | Every stateful component has state enum and transition table | Stateless components don't need entries |
|
|
40
|
-
| `harness/agent-workflow.md` | Feature doc, write set, verification, closure criteria are clear | Subagent roles can expand as needed |
|
|
41
|
-
| `features/*.md` | Requirements / Design / Tasks / Verification closed loop | Minor fixes can take the fast lane with a reason |
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Harness Boundary
|
|
46
|
-
|
|
47
|
-
The current template uses `interfaces -> harness -> application -> domain` with `infrastructure` adapters. The `domain` is any business domain: data analysis, document processing, code repair, ops automation — all can hang off the same harness.
|
|
48
|
-
|
|
49
|
-
| Layer | Responsible For | NOT Responsible For |
|
|
50
|
-
| --- | --- | --- |
|
|
51
|
-
| `interfaces/` | CLI / API / UI entry points | Business rules, data source details |
|
|
52
|
-
| `harness/` | Runtime shell, scheduling, safety gates, audit, observability, failure control | Domain business rules, domain decisions, adapter implementation details |
|
|
53
|
-
| `application/` | Use-case orchestration, composing domain ports into business actions | Specific external service implementations |
|
|
54
|
-
| `domain/` | Business objects, business invariants, port protocols | Importing harness / infrastructure / interfaces |
|
|
55
|
-
| `infrastructure/` | Filesystem, database, external API, model service port implementations | Defining business contracts |
|
|
56
|
-
|
|
57
|
-
How to decide: if it "protects, records, schedules, recovers the system during runtime" → harness. If it "decides whether a business action should happen and what it means" → application/domain.
|
|
58
|
-
|
|
59
|
-
---
|
|
13
|
+
For the full phase contract, load [harness/lifecycle.md](harness/lifecycle.md).
|
|
60
14
|
|
|
61
|
-
##
|
|
15
|
+
## Development Contract
|
|
62
16
|
|
|
63
|
-
|
|
64
|
-
docs
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
│ └── state-machines.md ← Stateful component transition diagrams and tables
|
|
73
|
-
├── domain/
|
|
74
|
-
│ └── ports.md ← Cross-layer interface contracts: pre/post, error semantics
|
|
75
|
-
└── research/
|
|
76
|
-
├── PRD.md ← One-page MVP scope and acceptance template
|
|
77
|
-
└── scaffolds.md ← Research conclusions, reference templates, tech rationale
|
|
78
|
-
```
|
|
17
|
+
- This file is a router, not a full spec.
|
|
18
|
+
- If the task does not clearly match a row below, search by keywords before loading more docs.
|
|
19
|
+
- Core rules live in `CLAUDE.md` and `.claude/rules/ecc/common.md`.
|
|
20
|
+
- Phase rules live in [harness/lifecycle.md](harness/lifecycle.md).
|
|
21
|
+
- Build, review, test, and subagent rules live in [harness/agent-workflow.md](harness/agent-workflow.md).
|
|
22
|
+
- Parallel dispatch rules live in [harness/dispatch.md](harness/dispatch.md).
|
|
23
|
+
- Extension rules live in [harness/extension.md](harness/extension.md).
|
|
24
|
+
- Context-loading rules live in [harness/context-loading.md](harness/context-loading.md).
|
|
25
|
+
- Progress lives in [harness/PLAN.md](harness/PLAN.md) and the current feature doc.
|
|
79
26
|
|
|
80
|
-
|
|
27
|
+
## Keyword Routing
|
|
81
28
|
|
|
82
|
-
|
|
29
|
+
Use this only when the task is ambiguous or the matching row is unclear.
|
|
83
30
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
| New developer | [research/PRD.md](research/PRD.md) | [harness/architecture.md](harness/architecture.md) |
|
|
87
|
-
| Implementer | [harness/agent-workflow.md](harness/agent-workflow.md) | [features/_template.md](features/_template.md) |
|
|
88
|
-
| Reviewer | [harness/state-machines.md](harness/state-machines.md) | tests |
|
|
89
|
-
| Architecture maintainer | [research/scaffolds.md](research/scaffolds.md) | [harness/architecture.md](harness/architecture.md) |
|
|
31
|
+
1. Extract 2-5 concrete keywords from the user request.
|
|
32
|
+
2. Search the project docs first:
|
|
90
33
|
|
|
91
|
-
|
|
34
|
+
```bash
|
|
35
|
+
rg -n "keyword1|keyword2|keyword3" CLAUDE.md MEMORY.md docs
|
|
36
|
+
```
|
|
92
37
|
|
|
93
|
-
|
|
38
|
+
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 `docs/harness/PLAN.md`.
|
|
94
40
|
|
|
95
|
-
|
|
96
|
-
- New cross-layer interface → update `domain/ports.md`.
|
|
97
|
-
- New flow or failure path → update `harness/data-flow.md`.
|
|
98
|
-
- New stateful component → update `harness/state-machines.md`.
|
|
99
|
-
- New external dependency, template, or framework choice → update `research/scaffolds.md`.
|
|
100
|
-
- Non-trivial feature → copy `features/_template.md`, follow `harness/agent-workflow.md`.
|
|
101
|
-
- Docs rules repeatedly ignored by agents → don't lengthen entry files; turn rules into tests, lint, or more specific templates.
|
|
41
|
+
Keywords are retrieval hints, not project facts.
|
|
102
42
|
|
|
103
|
-
|
|
43
|
+
## Load By Task
|
|
104
44
|
|
|
105
|
-
|
|
45
|
+
Load the matching row only. Add adjacent docs only when the loaded doc directly names them.
|
|
106
46
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
47
|
+
| When to Read | Keywords | Load | Output |
|
|
48
|
+
| --- | --- | --- | --- |
|
|
49
|
+
| Raw idea or vague product request | idea, vague, clarify, goal, non-goal, lifecycle | [harness/lifecycle.md](harness/lifecycle.md), [research/PRD.md](research/PRD.md) | clarified goal, non-goals, first questions |
|
|
50
|
+
| 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
|
+
| 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 | [harness/architecture.md](harness/architecture.md), [domain/ports.md](domain/ports.md) | layer map, ports, constraints |
|
|
53
|
+
| Need implementation plan | plan, task, write set, verify, milestone, progress | [harness/PLAN.md](harness/PLAN.md), [harness/agent-workflow.md](harness/agent-workflow.md) | tasks, write set, verification commands |
|
|
54
|
+
| Need parallel agents | parallel, dispatch, handoff, write set, dependency, status | [harness/dispatch.md](harness/dispatch.md), [harness/context-loading.md](harness/context-loading.md), [harness/PLAN.md](harness/PLAN.md) | dispatch table, agent roles, read/write sets |
|
|
55
|
+
| Adding stack-specific agents/skills | extension, agent, skill, rule, hook, stack-specific, compatibility | [harness/extension.md](harness/extension.md), [harness/dispatch.md](harness/dispatch.md) | compatible agents, skills, rules, hooks |
|
|
56
|
+
| Need subagents | subagent, role pack, context, inject, return format | [harness/context-loading.md](harness/context-loading.md) | role-specific context pack |
|
|
57
|
+
| Need feature work | feature, implementation, TDD, test, review, closeout | [features/_template.md](features/_template.md), [harness/agent-workflow.md](harness/agent-workflow.md) | feature doc, tests, implementation loop |
|
|
58
|
+
| Flow or failure behavior changes | data flow, event, failure, retry, recovery, caller behavior | [harness/data-flow.md](harness/data-flow.md) | happy path, failure path, caller behavior |
|
|
59
|
+
| Stateful behavior changes | state, transition, guard, illegal transition, state machine | [harness/state-machines.md](harness/state-machines.md) | states, transitions, illegal transitions |
|
|
60
|
+
| Review or release check | review, release, finding, risk, evidence, verification | [harness/agent-workflow.md](harness/agent-workflow.md), current feature doc | findings, verification evidence |
|
|
61
|
+
| Harness readiness check | validate, readiness, placeholder, missing file, release gate | `scripts/validate-harness.mjs`, `scripts/validate-harness.mjs --strict` | missing files and unresolved project placeholders |
|
|
62
|
+
|
|
63
|
+
## Gates
|
|
64
|
+
|
|
65
|
+
- Move phases in order unless the user asks for a fast lane.
|
|
66
|
+
- Do not code before the PRD has MVP, non-goals, and acceptance criteria.
|
|
67
|
+
- Do not cross a layer boundary without updating architecture or ports.
|
|
68
|
+
- Do not spawn a subagent without a role, read boundary, write boundary, and return contract.
|
|
69
|
+
- Do not run writing agents in parallel unless write sets are disjoint.
|
|
70
|
+
- Do not add stack-specific agents or skills without following `harness/extension.md`.
|
|
71
|
+
- Do not close work without tests or recorded manual verification.
|
|
72
|
+
- Do not mark work `Verified` until evidence is recorded in `docs/harness/PLAN.md` or the feature doc.
|
|
73
|
+
- Run `node scripts/validate-harness.mjs` for scaffold structure; run `node scripts/validate-harness.mjs --strict` after bootstrap and before release.
|
|
74
|
+
- If a doc still has `{{...}}`, treat that section as a template, not project fact.
|
|
75
|
+
|
|
76
|
+
## Doc Map
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
docs/README.md router only
|
|
80
|
+
docs/harness/PLAN.md active execution plan
|
|
81
|
+
docs/harness/lifecycle.md 0-1 product flow
|
|
82
|
+
docs/harness/context-loading.md dynamic loading and subagent packs
|
|
83
|
+
docs/harness/dispatch.md lightweight parallel dispatch protocol
|
|
84
|
+
docs/harness/extension.md stack-specific asset contract
|
|
85
|
+
docs/harness/agent-workflow.md build/review/test loop
|
|
86
|
+
docs/harness/architecture.md layer boundaries
|
|
87
|
+
docs/harness/data-flow.md runtime/failure paths
|
|
88
|
+
docs/harness/state-machines.md state transitions
|
|
89
|
+
docs/domain/ports.md cross-layer contracts
|
|
90
|
+
docs/features/_template.md feature work packet
|
|
91
|
+
docs/research/README.md research protocol
|
|
92
|
+
docs/research/PRD.md product scope
|
|
93
|
+
docs/research/research-results.md research results
|
|
94
|
+
scripts/validate-harness.mjs lightweight harness gate
|
|
95
|
+
.claude/agents/* built-in common agents
|
|
96
|
+
.claude/skills/* skill-style dynamic loaders
|
|
97
|
+
```
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Port Contracts — {{projectName}}
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **Responsibility**: Define cross-layer interface contracts. These are the "legal contracts" of a layered architecture. Each port documents not only its signature, but also preconditions, postconditions, and error semantics.
|
|
4
4
|
>
|
|
5
|
-
>
|
|
5
|
+
> **Principle**: Port documentation != API reference documentation. It is a contract that specifies caller obligations and implementer guarantees.
|
|
6
6
|
>
|
|
7
|
-
>
|
|
7
|
+
> Philosophical origins: Bertrand Meyer's Design by Contract (Eiffel) + Alistair Cockburn's hexagonal architecture port documentation.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## 1.
|
|
11
|
+
## 1. Port Classification
|
|
12
12
|
|
|
13
|
-
### 1.1
|
|
13
|
+
### 1.1 Driving Ports (Inbound — external calls application)
|
|
14
14
|
|
|
15
|
-
|
|
|
15
|
+
| Port | Definition Location | Purpose |
|
|
16
16
|
| --- | --- | --- |
|
|
17
17
|
| `{{INBOUND_PORT_1}}` | `{{LOCATION}}` | {{DESCRIPTION}} |
|
|
18
18
|
|
|
19
|
-
### 1.2
|
|
19
|
+
### 1.2 Driven Ports (Outbound — application calls external)
|
|
20
20
|
|
|
21
|
-
|
|
|
21
|
+
| Port | Definition Location | Purpose |
|
|
22
22
|
| --- | --- | --- |
|
|
23
23
|
| `{{OUTBOUND_PORT_1}}` | `{{LOCATION}}` | {{DESCRIPTION}} |
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
## 2.
|
|
27
|
+
## 2. Port Definition Template
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
Fill in each port using the format below:
|
|
30
30
|
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
31
|
+
- **Category**: Driving / Driven
|
|
32
|
+
- **Definition Location**: `{{FILE_PATH}}`
|
|
33
|
+
- **Contract Class**: `{{CLASS_OR_INTERFACE}}`
|
|
34
34
|
|
|
35
|
-
###
|
|
35
|
+
### Purpose
|
|
36
36
|
|
|
37
37
|
{{WHAT_THIS_PORT_DOES}}
|
|
38
38
|
|
|
39
|
-
###
|
|
39
|
+
### Methods
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
**Preconditions** (caller must guarantee):
|
|
42
42
|
- {{PRECONDITION_1}}
|
|
43
43
|
- {{PRECONDITION_2}}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
**Postconditions** (implementer guarantees):
|
|
46
46
|
- {{POSTCONDITION_1}}
|
|
47
47
|
- {{POSTCONDITION_2}}
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
**Error Semantics**:
|
|
50
50
|
|
|
51
|
-
|
|
|
51
|
+
| Exception Type | Trigger Condition | Caller Should |
|
|
52
52
|
| --- | --- | --- |
|
|
53
53
|
| `{{EXCEPTION_TYPE}}` | {{CONDITION}} | {{CALLER_ACTION}} |
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
**Idempotency**: {{YES_NO_AND_DETAILS}}
|
|
56
56
|
|
|
57
|
-
###
|
|
57
|
+
### Known Implementations
|
|
58
58
|
|
|
59
|
-
|
|
|
59
|
+
| Adapter | Location | Purpose |
|
|
60
60
|
| --- | --- | --- |
|
|
61
61
|
| `{{ADAPTER_NAME}}` | `{{LOCATION}}` | {{PURPOSE}} |
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
65
|
-
## 3.
|
|
65
|
+
## 3. Cross-Port Invariants
|
|
66
66
|
|
|
67
67
|
- {{INVARIANT_1}}
|
|
68
68
|
- {{INVARIANT_2}}
|
|
69
|
-
-
|
|
69
|
+
- New ports must be defined in `domain/ports`; adapters go in `infrastructure/`.
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
>
|
|
73
|
+
> **Note**: The current ports.md is a template. Replace `{{...}}` placeholders with your project's domain details. Refer to `docs/harness/data-flow.md` to understand how ports are orchestrated.
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
# {{FEATURE_NAME}}
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
>
|
|
6
|
-
>
|
|
3
|
+
> **When to use**: During the PRD phase, every new feature identified in `research/PRD.md` must have its own features document created from this template. One feature = one doc = one implementation unit. Do not code a PRD scope item without a corresponding features doc.
|
|
4
|
+
|
|
5
|
+
> **Status**: Draft / In Progress / Blocked / Done
|
|
6
|
+
> **Created**: {{YYYY-MM-DD}}
|
|
7
|
+
> **Owner**: {{OWNER_OR_AGENT}}
|
|
8
|
+
> **Related Docs**: {{PRD_OR_ARCH_DOC_LINKS}}
|
|
7
9
|
|
|
8
10
|
---
|
|
9
11
|
|
|
10
12
|
## 1. Requirements
|
|
11
13
|
|
|
12
|
-
### 1.1
|
|
14
|
+
### 1.1 Background
|
|
13
15
|
|
|
14
16
|
{{WHY_THIS_FEATURE_EXISTS}}
|
|
15
17
|
|
|
16
|
-
### 1.2
|
|
18
|
+
### 1.2 Goals
|
|
17
19
|
|
|
18
20
|
- {{GOAL_1}}
|
|
19
21
|
- {{GOAL_2}}
|
|
20
22
|
|
|
21
|
-
### 1.3
|
|
23
|
+
### 1.3 Non-Goals
|
|
22
24
|
|
|
23
25
|
- {{NON_GOAL_1}}
|
|
24
26
|
- {{NON_GOAL_2}}
|
|
25
27
|
|
|
26
|
-
### 1.4
|
|
28
|
+
### 1.4 Acceptance Criteria
|
|
27
29
|
|
|
28
30
|
- [ ] {{ACCEPTANCE_CRITERION_1}}
|
|
29
31
|
- [ ] {{ACCEPTANCE_CRITERION_2}}
|
|
@@ -33,9 +35,9 @@
|
|
|
33
35
|
|
|
34
36
|
## 2. Design
|
|
35
37
|
|
|
36
|
-
### 2.1
|
|
38
|
+
### 2.1 Impact Scope
|
|
37
39
|
|
|
38
|
-
|
|
|
40
|
+
| Area | Impacted? | Notes |
|
|
39
41
|
| --- | --- | --- |
|
|
40
42
|
| `harness/architecture.md` | {{YES_NO}} | {{NOTE}} |
|
|
41
43
|
| `domain/ports.md` | {{YES_NO}} | {{NOTE}} |
|
|
@@ -53,20 +55,20 @@
|
|
|
53
55
|
- `{{PATH_OR_BEHAVIOR_1}}`
|
|
54
56
|
- `{{PATH_OR_BEHAVIOR_2}}`
|
|
55
57
|
|
|
56
|
-
### 2.4
|
|
58
|
+
### 2.4 Approach
|
|
57
59
|
|
|
58
|
-
####
|
|
60
|
+
#### Candidate Approaches
|
|
59
61
|
|
|
60
|
-
|
|
|
62
|
+
| Approach | Pros | Cons | Decision |
|
|
61
63
|
| --- | --- | --- | --- |
|
|
62
64
|
| {{OPTION_A}} | {{PROS_A}} | {{CONS_A}} | {{ACCEPT_REJECT}} |
|
|
63
65
|
| {{OPTION_B}} | {{PROS_B}} | {{CONS_B}} | {{ACCEPT_REJECT}} |
|
|
64
66
|
|
|
65
|
-
####
|
|
67
|
+
#### Rationale
|
|
66
68
|
|
|
67
69
|
{{SELECTED_DESIGN_AND_RATIONALE}}
|
|
68
70
|
|
|
69
|
-
### 2.5
|
|
71
|
+
### 2.5 Edge Cases
|
|
70
72
|
|
|
71
73
|
- {{EDGE_CASE_1}} -> {{EXPECTED_BEHAVIOR_1}}
|
|
72
74
|
- {{EDGE_CASE_2}} -> {{EXPECTED_BEHAVIOR_2}}
|
|
@@ -75,7 +77,7 @@
|
|
|
75
77
|
|
|
76
78
|
## 3. Tasks
|
|
77
79
|
|
|
78
|
-
>
|
|
80
|
+
> Every task must have a verification method. When a subagent is needed, define its role and write set first.
|
|
79
81
|
|
|
80
82
|
| # | Task | Owner | Write Set | Verify |
|
|
81
83
|
| --- | --- | --- | --- | --- |
|
|
@@ -83,15 +85,22 @@
|
|
|
83
85
|
| 2 | {{IMPLEMENT_MINIMAL_CHANGE}} | {{OWNER}} | `{{PATH}}` | `{{COMMAND_OR_CHECK}}` |
|
|
84
86
|
| 3 | {{SYNC_DOCS_OR_BOUNDARIES}} | {{OWNER}} | `{{PATH}}` | `{{COMMAND_OR_CHECK}}` |
|
|
85
87
|
|
|
86
|
-
### Subagent Plan
|
|
88
|
+
### Subagent Plan (required — justify if all No)
|
|
87
89
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
90
|
+
Estimate the context budget for this feature. If the main agent would need to read >5 files or modify >3 files, subagents are mandatory per `.claude/rules/ecc/common.md`.
|
|
91
|
+
|
|
92
|
+
| Agent / Pass | Required? | Mode | Read Boundary | Write Set | Verify |
|
|
93
|
+
| --- | --- | --- | --- | --- | --- |
|
|
94
|
+
| Planner | {{YES_NO}} | Parallel Read | `{{SCOPE}}` | none | `{{CHECK}}` |
|
|
95
|
+
| Researcher / Docs Researcher | {{YES_NO}} | Parallel Read | `{{SCOPE}}` | none | `{{CHECK}}` |
|
|
96
|
+
| Architect | {{YES_NO}} | Parallel Read | `{{SCOPE}}` | none | `{{CHECK}}` |
|
|
97
|
+
| Explorer Pass | {{YES_NO}} | Parallel Read | `{{SCOPE}}` | none | `{{CHECK}}` |
|
|
98
|
+
| Test Writer | {{YES_NO}} | Serial Write | `{{SCOPE}}` | `{{PATH}}` | `{{COMMAND}}` |
|
|
99
|
+
| Implementer / Debugger | {{YES_NO}} | Serial Write | `{{SCOPE}}` | `{{PATH}}` | `{{COMMAND}}` |
|
|
100
|
+
| Reviewer | {{YES_NO}} | Parallel Read | `{{SCOPE}}` | none | `{{CHECK}}` |
|
|
101
|
+
| Verifier | {{YES_NO}} | Parallel Read | `{{SCOPE}}` | none | `{{COMMANDS}}` |
|
|
102
|
+
|
|
103
|
+
**If all roles are No, justify:** {{WHY_MAIN_AGENT_CAN_HANDLE_ALONE}}
|
|
95
104
|
|
|
96
105
|
---
|
|
97
106
|
|
|
@@ -114,7 +123,7 @@
|
|
|
114
123
|
- [ ] `domain/ports.md`
|
|
115
124
|
- [ ] `harness/data-flow.md`
|
|
116
125
|
- [ ] `harness/state-machines.md`
|
|
117
|
-
- [ ] `research/
|
|
126
|
+
- [ ] `research/research-results.md`
|
|
118
127
|
- [ ] Not needed because {{REASON}}
|
|
119
128
|
|
|
120
129
|
### 4.4 Decision Log
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# PLAN.md - Active Execution Plan
|
|
2
|
+
|
|
3
|
+
Use this file when work spans more than one step, one file, or one agent.
|
|
4
|
+
|
|
5
|
+
## Current Goal
|
|
6
|
+
|
|
7
|
+
{{CURRENT_GOAL}}
|
|
8
|
+
|
|
9
|
+
## Phase
|
|
10
|
+
|
|
11
|
+
Choose one: Idea / Research / PRD / Architecture / Plan / Build / Verify / Feedback.
|
|
12
|
+
|
|
13
|
+
Current: {{CURRENT_PHASE}}
|
|
14
|
+
|
|
15
|
+
## Progress Rules
|
|
16
|
+
|
|
17
|
+
- Phase tracks lifecycle progress.
|
|
18
|
+
- Task status tracks execution progress.
|
|
19
|
+
- Update before handoff, after verification, and when blocked.
|
|
20
|
+
|
|
21
|
+
Allowed task statuses: Pending / In Progress / Blocked / Done / Verified.
|
|
22
|
+
|
|
23
|
+
- Pending: not started.
|
|
24
|
+
- In Progress: active work.
|
|
25
|
+
- Blocked: needs user input or external change.
|
|
26
|
+
- Done: task complete, evidence not final.
|
|
27
|
+
- Verified: verification evidence is recorded.
|
|
28
|
+
|
|
29
|
+
## Success Criteria
|
|
30
|
+
|
|
31
|
+
- [ ] {{CRITERION_1}}
|
|
32
|
+
- [ ] {{CRITERION_2}}
|
|
33
|
+
- [ ] {{CRITERION_3}}
|
|
34
|
+
|
|
35
|
+
## Scope
|
|
36
|
+
|
|
37
|
+
Allowed write set:
|
|
38
|
+
- `{{PATH_OR_GLOB}}`
|
|
39
|
+
|
|
40
|
+
Forbidden:
|
|
41
|
+
- {{OUT_OF_SCOPE}}
|
|
42
|
+
|
|
43
|
+
## Loaded Context
|
|
44
|
+
|
|
45
|
+
Keep this list short. Add only docs/files used for the current phase.
|
|
46
|
+
|
|
47
|
+
- `docs/README.md`
|
|
48
|
+
- `{{LOADED_DOC_OR_FILE}}`
|
|
49
|
+
|
|
50
|
+
## Tasks
|
|
51
|
+
|
|
52
|
+
| # | Task | Owner | Verify | Status |
|
|
53
|
+
| --- | --- | --- | --- | --- |
|
|
54
|
+
| 1 | {{TASK}} | {{OWNER}} | `{{COMMAND_OR_CHECK}}` | Pending |
|
|
55
|
+
|
|
56
|
+
## Parallel Dispatch
|
|
57
|
+
|
|
58
|
+
Use [dispatch.md](dispatch.md) when more than one agent or bounded pass is useful.
|
|
59
|
+
|
|
60
|
+
| Task | Agent | Mode | Read Set | Write Set | Depends On | Output | Status |
|
|
61
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
62
|
+
| {{TASK}} | {{AGENT}} | Parallel Read / Serial Write / Isolated Worktree | `{{READ_SET}}` | `{{WRITE_SET_OR_NONE}}` | {{DEPENDENCY_OR_NONE}} | {{EXPECTED_OUTPUT}} | Pending |
|
|
63
|
+
|
|
64
|
+
## Agent Handoffs
|
|
65
|
+
|
|
66
|
+
| Agent | Role | Context Pack | Result |
|
|
67
|
+
| --- | --- | --- | --- |
|
|
68
|
+
| {{AGENT}} | {{ROLE}} | {{DOCS_OR_FILES}} | {{SUMMARY}} |
|
|
69
|
+
|
|
70
|
+
## Decisions
|
|
71
|
+
|
|
72
|
+
| Date | Decision | Reason |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| {{YYYY-MM-DD}} | {{DECISION}} | {{REASON}} |
|
|
75
|
+
|
|
76
|
+
## Verification
|
|
77
|
+
|
|
78
|
+
| Check | Result | Notes |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| `{{CHECK}}` | Not run | {{NOTES}} |
|