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
package/README.md
CHANGED
|
@@ -5,81 +5,86 @@
|
|
|
5
5
|
<img src="https://img.shields.io/github/stars/zingspark/create-harness-vibe-coding?style=social" alt="stars">
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
|
-
<h1 align="center"
|
|
8
|
+
<h1 align="center">create-harness-vibe-coding</h1>
|
|
9
9
|
<p align="center">
|
|
10
|
-
<b>
|
|
11
|
-
<sub>
|
|
10
|
+
<b>0-1 product harness scaffold for AI-assisted engineering.</b><br>
|
|
11
|
+
<sub>Idea -> Research -> PRD -> Architecture -> docs/harness/PLAN.md -> Build -> Verify -> Feedback.</sub>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## One Command
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
npx create-harness-vibe-coding@latest my-project
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
| What You Get |
|
|
23
|
-
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
22
|
+
| What You Get | Purpose |
|
|
23
|
+
|-------------|---------|
|
|
24
|
+
| `CLAUDE.md` + `docs/README.md` | Short entry and dynamic doc router |
|
|
25
|
+
| `docs/harness/PLAN.md` | Active execution state for multi-step work |
|
|
26
|
+
| Research + PRD templates | Clarify idea, scope, non-goals, acceptance criteria |
|
|
27
|
+
| Research protocol | Route research agents, source search, and fallback tools |
|
|
28
|
+
| Built-in common agents | Research, planning, architecture, testing, implementation, debugging, review, verification |
|
|
29
|
+
| Harness architecture docs | Boundaries, ports, data flow, state machines |
|
|
30
|
+
| Dispatch protocol | Lightweight parallel-agent coordination without a scheduler |
|
|
31
|
+
| Extension contract | Keep stack-specific agents and skills compatible |
|
|
32
|
+
| Context-loading protocol | Inject only the right docs into each subagent |
|
|
33
|
+
| Skill-style loaders | `.claude/skills/*` route lifecycle, context, and build loops |
|
|
34
|
+
| Harness validator | Checks required files and unresolved project placeholders |
|
|
35
|
+
| `.claude/` skeleton | Built-in common agents plus room for stack-specific assets |
|
|
30
36
|
|
|
31
37
|
---
|
|
32
38
|
|
|
33
|
-
##
|
|
39
|
+
## Why This Exists
|
|
34
40
|
|
|
35
|
-
|
|
41
|
+
Most 0-1 AI coding projects fail before code quality matters:
|
|
36
42
|
|
|
37
|
-
| Without Harness | With
|
|
43
|
+
| Without Harness | With This Scaffold |
|
|
38
44
|
|---|---|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
+
| Idea jumps straight to code | lifecycle forces research, PRD, and scope |
|
|
46
|
+
| Agent reads too much context | docs router loads only the needed harness file |
|
|
47
|
+
| Subagents get vague prompts | context-loading packs define role, boundaries, and return format |
|
|
48
|
+
| Process drift is invisible | validator checks core harness readiness |
|
|
49
|
+
| Architecture drifts silently | ports, data-flow, and state docs mark boundary changes |
|
|
50
|
+
| Tests come after implementation | workflow requires failing test or manual check first |
|
|
45
51
|
|
|
46
52
|
---
|
|
47
53
|
|
|
48
|
-
##
|
|
54
|
+
## How It Works
|
|
49
55
|
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
```text
|
|
57
|
+
npx scaffold
|
|
58
|
+
-> Claude reads SETUP.md
|
|
59
|
+
-> docs router selects only needed harness docs
|
|
60
|
+
-> PRD/research/architecture/PLAN are filled
|
|
61
|
+
-> first vertical slice is built, tested, reviewed, and fed back
|
|
62
|
+
-> validator catches missing project facts before release
|
|
57
63
|
```
|
|
58
64
|
|
|
59
|
-
###
|
|
65
|
+
### Harness idea
|
|
60
66
|
|
|
61
|
-
|
|
62
|
-
2. **docs/architecture.md** — Clean architecture layers. Harness runs the shell; domain defines the business.
|
|
63
|
-
3. **docs/agent-workflow.md** — TDD loop, subagent roles, write set rules, conflict resolution.
|
|
64
|
-
4. **docs/data-flow.md** — Every event's normal path + failure branches — the #1 doc AI fabricates without.
|
|
65
|
-
5. **docs/state-machines.md** — Every stateful component. Transition table. Illegal transitions explicitly denied.
|
|
66
|
-
6. **.claude/settings.json** — Permissions pre-configured (allow git/npm/pytest, deny rm/sudo/curl). Hooks ready.
|
|
67
|
-
7. **SETUP.md** — Temporary guide. Claude reads it, pulls agents/skills/rules from [ECC](https://github.com/affaan-m/ECC). User deletes it after.
|
|
67
|
+
The scaffold does not prebuild business code. It gives agents a compact process for turning an idea into a verified product slice.
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
71
|
-
##
|
|
71
|
+
## What's Inside
|
|
72
72
|
|
|
73
73
|
```
|
|
74
74
|
my-project/
|
|
75
|
-
├── CLAUDE.md ←
|
|
75
|
+
├── CLAUDE.md ← Short startup rules + context discipline
|
|
76
76
|
├── AGENTS.md ← Coding agent entry
|
|
77
77
|
├── MEMORY.md ← Cross-session resource index
|
|
78
78
|
├── SETUP.md ← Temporary init guide (delete after setup)
|
|
79
79
|
├── .gitignore
|
|
80
80
|
├── docs/
|
|
81
|
-
│ ├── README.md ←
|
|
81
|
+
│ ├── README.md ← Dynamic doc router
|
|
82
82
|
│ ├── harness/
|
|
83
|
+
│ │ ├── PLAN.md ← Active execution plan and handoffs
|
|
84
|
+
│ │ ├── lifecycle.md ← 0-1 product flow
|
|
85
|
+
│ │ ├── context-loading.md ← Subagent context packs
|
|
86
|
+
│ │ ├── dispatch.md ← Lightweight parallel-agent protocol
|
|
87
|
+
│ │ ├── extension.md ← Stack-specific agent/skill contract
|
|
83
88
|
│ │ ├── architecture.md ← Layer rules, components, ADRs
|
|
84
89
|
│ │ ├── agent-workflow.md ← TDD loop, subagent roles, write sets
|
|
85
90
|
│ │ ├── data-flow.md ← Event lifecycle: normal + failure paths
|
|
@@ -89,34 +94,34 @@ my-project/
|
|
|
89
94
|
│ ├── features/
|
|
90
95
|
│ │ └── _template.md ← Kiro-lite feature doc template
|
|
91
96
|
│ └── research/
|
|
97
|
+
│ ├── README.md ← Research-agent protocol and tool fallbacks
|
|
92
98
|
│ ├── PRD.md ← MVP scope & acceptance template
|
|
93
|
-
│ └──
|
|
99
|
+
│ └── research-results.md ← Tech research results and decisions
|
|
100
|
+
├── scripts/
|
|
101
|
+
│ └── validate-harness.mjs ← Lightweight harness readiness check
|
|
94
102
|
├── .claude/
|
|
95
|
-
│ ├── settings.json ←
|
|
96
|
-
│ ├── agents/ ←
|
|
97
|
-
│ ├── skills/ ←
|
|
98
|
-
│ ├── hooks/ ← Configure
|
|
103
|
+
│ ├── settings.json ← Base permissions
|
|
104
|
+
│ ├── agents/ ← Built-in common agents + stack-specific agents later
|
|
105
|
+
│ ├── skills/ ← Harness loaders + stack-specific skills
|
|
106
|
+
│ ├── hooks/ ← Configure automation after stack choice
|
|
99
107
|
│ └── rules/ecc/
|
|
100
|
-
│ └── common.md ← Universal coding rules
|
|
108
|
+
│ └── common.md ← Universal coding rules
|
|
101
109
|
└── tests/ ← Your test suite goes here
|
|
102
110
|
```
|
|
103
111
|
|
|
104
112
|
---
|
|
105
113
|
|
|
106
|
-
##
|
|
114
|
+
## Ecosystem Compatibility
|
|
107
115
|
|
|
108
|
-
| Platform |
|
|
109
|
-
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
| [claude-toolbox](https://github.com/serpro69/claude-toolbox) | ✅ Multi-language skills |
|
|
114
|
-
| Claude Code | ✅ Native settings.json + hooks |
|
|
115
|
-
| Codex / Cursor / Gemini CLI | ✅ Compatible (docs-only pattern) |
|
|
116
|
+
| Platform | Fit |
|
|
117
|
+
|----------|-----|
|
|
118
|
+
| Claude Code | Native `CLAUDE.md`, `.claude/settings.json`, agents, skills, hooks |
|
|
119
|
+
| Codex / Cursor / Gemini CLI | Works as docs-first process scaffold |
|
|
120
|
+
| ECC / Superpowers / toolboxes | Optional source for stack-specific agents, skills, and rules |
|
|
116
121
|
|
|
117
122
|
---
|
|
118
123
|
|
|
119
|
-
##
|
|
124
|
+
## Usage
|
|
120
125
|
|
|
121
126
|
```bash
|
|
122
127
|
# Interactive mode
|
|
@@ -132,38 +137,30 @@ npx create-harness-vibe-coding@latest my-project
|
|
|
132
137
|
### After scaffolding, tell Claude:
|
|
133
138
|
|
|
134
139
|
```
|
|
135
|
-
"Read SETUP.md.
|
|
136
|
-
"Read SETUP.md. This is a React TypeScript
|
|
137
|
-
"Read SETUP.md. This is a
|
|
140
|
+
"Read SETUP.md. Bootstrap this project from idea to first vertical slice."
|
|
141
|
+
"Read SETUP.md. This is a React TypeScript SaaS idea. Clarify PRD first, then plan the first slice."
|
|
142
|
+
"Read SETUP.md. This is a Python data product. Research the stack, define the MVP, then create docs/harness/PLAN.md."
|
|
138
143
|
```
|
|
139
144
|
|
|
140
145
|
---
|
|
141
146
|
|
|
142
|
-
##
|
|
147
|
+
## Footprint
|
|
143
148
|
|
|
144
149
|
| Metric | Value |
|
|
145
150
|
|--------|-------|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
| Node requirement | ≥ 18 |
|
|
151
|
-
| Zero runtime deps after scaffold | ✅ |
|
|
151
|
+
| Runtime after scaffold | none |
|
|
152
|
+
| Dependencies | 2 (`@clack/prompts`, `picocolors`) |
|
|
153
|
+
| Node requirement | >= 18 |
|
|
154
|
+
| Generated code | none until the product stack is chosen |
|
|
152
155
|
|
|
153
156
|
---
|
|
154
157
|
|
|
155
|
-
##
|
|
158
|
+
## Contributing
|
|
156
159
|
|
|
157
160
|
PRs welcome. The template docs live in `templates/common/` — edit them to change what gets scaffolded.
|
|
158
161
|
|
|
159
162
|
---
|
|
160
163
|
|
|
161
|
-
##
|
|
164
|
+
## License
|
|
162
165
|
|
|
163
166
|
MIT © [zingspark](https://github.com/zingspark)
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
<p align="center">
|
|
168
|
-
<sub>Built for the vibe-coding era. Scaffold fast, build faster.</sub>
|
|
169
|
-
</p>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-harness-vibe-coding",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Scaffold a
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "Scaffold a 0-1 product harness for AI-assisted research, PRD, planning, architecture, build, test, and feedback loops",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"create-harness-vibe-coding": "./bin/create-harness-vibe-coding.js"
|
package/src/generator.js
CHANGED
|
@@ -63,7 +63,7 @@ export function generate({ projectName, targetDir }) {
|
|
|
63
63
|
if (fs.existsSync(resolvedDir)) {
|
|
64
64
|
const existing = fs.readdirSync(resolvedDir).filter(f => f !== '.git');
|
|
65
65
|
if (existing.length > 0) {
|
|
66
|
-
console.log(pc.yellow(
|
|
66
|
+
console.log(pc.yellow(`Directory "${targetDir}" already exists and is not empty. Files may be overwritten.`));
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -71,17 +71,15 @@ export function generate({ projectName, targetDir }) {
|
|
|
71
71
|
|
|
72
72
|
try {
|
|
73
73
|
// 1. Copy all template files
|
|
74
|
-
console.log(pc.cyan('
|
|
74
|
+
console.log(pc.cyan('Copying templates...'));
|
|
75
75
|
copyDir(TEMPLATES_DIR, resolvedDir, vars);
|
|
76
76
|
|
|
77
77
|
// List all created files from templates
|
|
78
78
|
created.push(...walkFiles(TEMPLATES_DIR).map(f => f.replace(/\\/g, '/')));
|
|
79
79
|
|
|
80
80
|
// 2. Create empty directories
|
|
81
|
-
console.log(pc.cyan('
|
|
81
|
+
console.log(pc.cyan('Creating placeholder directories...'));
|
|
82
82
|
const emptyDirs = [
|
|
83
|
-
'.claude/agents',
|
|
84
|
-
'.claude/skills',
|
|
85
83
|
'.claude/hooks',
|
|
86
84
|
'tests',
|
|
87
85
|
];
|
package/src/index.js
CHANGED
|
@@ -11,8 +11,8 @@ const argDir = args[1];
|
|
|
11
11
|
|
|
12
12
|
console.log('');
|
|
13
13
|
console.log(pc.magenta('╔══════════════════════════════════════════╗'));
|
|
14
|
-
console.log(pc.magenta('║
|
|
15
|
-
console.log(pc.magenta('║
|
|
14
|
+
console.log(pc.magenta('║ create-harness-vibe-coding ║'));
|
|
15
|
+
console.log(pc.magenta('║ 0-1 Product Harness Scaffold ║'));
|
|
16
16
|
console.log(pc.magenta('╚══════════════════════════════════════════╝'));
|
|
17
17
|
console.log('');
|
|
18
18
|
|
|
@@ -26,7 +26,7 @@ if (argName) {
|
|
|
26
26
|
console.log(pc.dim('────────────────────────────────────────────'));
|
|
27
27
|
console.log(` Project ${pc.green(projectName)}`);
|
|
28
28
|
console.log(` Directory ${pc.green(targetDir)}`);
|
|
29
|
-
console.log(` Creates ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
|
|
29
|
+
console.log(` Creates ${pc.cyan('CLAUDE.md, docs/harness/PLAN.md, docs/, scripts/, .claude/, SETUP.md, tests/')}`);
|
|
30
30
|
console.log(pc.dim('────────────────────────────────────────────'));
|
|
31
31
|
console.log('');
|
|
32
32
|
|
|
@@ -52,7 +52,7 @@ if (argName) {
|
|
|
52
52
|
console.log(pc.dim('────────────────────────────────────────────'));
|
|
53
53
|
console.log(` Project ${pc.green(projectName)}`);
|
|
54
54
|
console.log(` Directory ${pc.green(targetDir)}`);
|
|
55
|
-
console.log(` Creates ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
|
|
55
|
+
console.log(` Creates ${pc.cyan('CLAUDE.md, docs/harness/PLAN.md, docs/, scripts/, .claude/, SETUP.md, tests/')}`);
|
|
56
56
|
console.log(pc.dim('────────────────────────────────────────────'));
|
|
57
57
|
console.log('');
|
|
58
58
|
|
|
@@ -79,24 +79,24 @@ if (argName) {
|
|
|
79
79
|
|
|
80
80
|
function printResult(result, targetDir) {
|
|
81
81
|
if (result.success) {
|
|
82
|
-
console.log(pc.green(`\
|
|
82
|
+
console.log(pc.green(`\nProject created: ${result.created.length} files\n`));
|
|
83
83
|
|
|
84
84
|
console.log(pc.bold('Next steps:'));
|
|
85
85
|
console.log(` ${pc.cyan(`cd ${targetDir}`)}`);
|
|
86
86
|
console.log(` ${pc.cyan('claude')} # Start Claude Code`);
|
|
87
|
-
console.log(` Tell Claude: "${pc.yellow('Read SETUP.md
|
|
87
|
+
console.log(` Tell Claude: "${pc.yellow('Read SETUP.md. Bootstrap this project from idea to first vertical slice.')}"`);
|
|
88
88
|
console.log('');
|
|
89
89
|
console.log(pc.dim(' SETUP.md is temporary. Delete it after initialization.'));
|
|
90
90
|
console.log('');
|
|
91
91
|
|
|
92
92
|
if (result.errors.length > 0) {
|
|
93
|
-
console.log(pc.red(`\n
|
|
93
|
+
console.log(pc.red(`\n${result.errors.length} warning(s):`));
|
|
94
94
|
for (const err of result.errors) {
|
|
95
95
|
console.log(pc.red(` - ${err}`));
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
} else {
|
|
99
|
-
console.log(pc.red('\
|
|
99
|
+
console.log(pc.red('\nGeneration failed:'));
|
|
100
100
|
for (const err of result.errors) {
|
|
101
101
|
console.log(pc.red(` - ${err}`));
|
|
102
102
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architect
|
|
3
|
+
description: Use to review layer boundaries, ports, data flow, state machines, dependency direction, and architecture impact before implementation.
|
|
4
|
+
tools: Read, Grep, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-context
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Architect
|
|
10
|
+
|
|
11
|
+
You are an architecture review agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- `docs/harness/architecture.md`
|
|
16
|
+
- `docs/domain/ports.md`
|
|
17
|
+
- `docs/harness/data-flow.md` when runtime flow may change
|
|
18
|
+
- `docs/harness/state-machines.md` when state may change
|
|
19
|
+
- current PRD or feature doc
|
|
20
|
+
|
|
21
|
+
Rules:
|
|
22
|
+
|
|
23
|
+
- Do not write files.
|
|
24
|
+
- Domain must not depend on harness, infrastructure, or interfaces.
|
|
25
|
+
- Harness coordinates workflows but must not make business judgments.
|
|
26
|
+
- New cross-layer capability needs a domain port.
|
|
27
|
+
- Boundary changes must name affected docs.
|
|
28
|
+
|
|
29
|
+
Return:
|
|
30
|
+
|
|
31
|
+
- boundary decision
|
|
32
|
+
- impacted docs
|
|
33
|
+
- risks and missing contracts
|
|
34
|
+
- port/data-flow/state updates needed
|
|
35
|
+
- implementation constraints
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debugger
|
|
3
|
+
description: Use to isolate a failing command, reproduce the smallest failing path, and propose the narrowest fix.
|
|
4
|
+
tools: Read, Grep, Glob, Bash, Write, Edit, MultiEdit
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-build-loop
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Debugger
|
|
10
|
+
|
|
11
|
+
You are a debugging agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- failing command and error output
|
|
16
|
+
- related files
|
|
17
|
+
- `docs/harness/PLAN.md`
|
|
18
|
+
- current feature doc when present
|
|
19
|
+
|
|
20
|
+
Inputs you must receive:
|
|
21
|
+
|
|
22
|
+
- failure to reproduce
|
|
23
|
+
- allowed write set
|
|
24
|
+
- forbidden scope
|
|
25
|
+
- verification command
|
|
26
|
+
|
|
27
|
+
Rules:
|
|
28
|
+
|
|
29
|
+
- Reproduce or explain why reproduction is not possible.
|
|
30
|
+
- Fix the smallest failing path.
|
|
31
|
+
- Write only inside the declared write set.
|
|
32
|
+
- Do not redesign adjacent code.
|
|
33
|
+
- Do not loosen tests.
|
|
34
|
+
- Stop if the fix requires an undeclared architecture or port change.
|
|
35
|
+
|
|
36
|
+
Return:
|
|
37
|
+
|
|
38
|
+
- root cause
|
|
39
|
+
- changed files
|
|
40
|
+
- verification result
|
|
41
|
+
- remaining risk
|
|
42
|
+
- docs that must be synced
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-researcher
|
|
3
|
+
description: Use to verify official documentation, APIs, SDK behavior, config options, version changes, limits, error semantics, and examples before implementation.
|
|
4
|
+
tools: Read, Grep, Glob, WebSearch, WebFetch, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-research
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Docs Researcher
|
|
10
|
+
|
|
11
|
+
You are a documentation verification agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- `docs/research/README.md`
|
|
16
|
+
- `docs/harness/architecture.md` when boundaries may change
|
|
17
|
+
- `docs/domain/ports.md` when APIs cross layers
|
|
18
|
+
- `docs/harness/PLAN.md`
|
|
19
|
+
|
|
20
|
+
Inputs you must receive:
|
|
21
|
+
|
|
22
|
+
- library, API, platform, or config to verify
|
|
23
|
+
- exact implementation question
|
|
24
|
+
- version or date constraints
|
|
25
|
+
- trusted source boundaries
|
|
26
|
+
- return format
|
|
27
|
+
|
|
28
|
+
Rules:
|
|
29
|
+
|
|
30
|
+
- Prefer official docs, official repos, changelogs, release notes, and typed API references.
|
|
31
|
+
- Check dates and versions for unstable facts.
|
|
32
|
+
- Verify method names, required parameters, limits, auth, errors, idempotency, and side effects.
|
|
33
|
+
- Use examples only after confirming the reference docs.
|
|
34
|
+
- Bash is read/search only: `rg`, `gh search`, `tvly search`, `tinyfish agent run`, or equivalent. Do not write files.
|
|
35
|
+
- Do not implement code.
|
|
36
|
+
|
|
37
|
+
Return:
|
|
38
|
+
|
|
39
|
+
- answer with source links
|
|
40
|
+
- version/date checked
|
|
41
|
+
- implementation constraints
|
|
42
|
+
- error and edge-case notes
|
|
43
|
+
- docs that must be updated: PRD, architecture, ports, data-flow, state, feature doc, or none
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implementer
|
|
3
|
+
description: Use to implement the smallest change inside a declared write set after tests or manual checks are defined.
|
|
4
|
+
tools: Read, Grep, Glob, Write, Edit, MultiEdit, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-build-loop
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Implementer
|
|
10
|
+
|
|
11
|
+
You are an implementation agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- current task from `docs/harness/PLAN.md`
|
|
16
|
+
- current feature doc when present
|
|
17
|
+
- failing test or manual check
|
|
18
|
+
- relevant architecture/ports docs if boundaries are touched
|
|
19
|
+
|
|
20
|
+
Inputs you must receive:
|
|
21
|
+
|
|
22
|
+
- task
|
|
23
|
+
- allowed write set
|
|
24
|
+
- forbidden scope
|
|
25
|
+
- verification command
|
|
26
|
+
|
|
27
|
+
Rules:
|
|
28
|
+
|
|
29
|
+
- Write only inside the declared write set.
|
|
30
|
+
- Do not broaden scope or refactor adjacent code.
|
|
31
|
+
- Do not loosen tests.
|
|
32
|
+
- Keep changes minimal and reversible.
|
|
33
|
+
- Stop if the required change crosses an undeclared architecture or port boundary.
|
|
34
|
+
|
|
35
|
+
Return:
|
|
36
|
+
|
|
37
|
+
- changed files
|
|
38
|
+
- implementation notes
|
|
39
|
+
- verification command run or not run
|
|
40
|
+
- docs that must be synced
|
|
41
|
+
- remaining risks
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: planner
|
|
3
|
+
description: Use to split a goal into tasks, dependencies, write sets, verification steps, and a Parallel Dispatch table before multi-step work.
|
|
4
|
+
tools: Read, Grep, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-context
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Planner
|
|
10
|
+
|
|
11
|
+
You are a planning agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- `docs/harness/PLAN.md`
|
|
16
|
+
- `docs/harness/lifecycle.md`
|
|
17
|
+
- `docs/harness/dispatch.md`
|
|
18
|
+
- current PRD or feature doc if present
|
|
19
|
+
|
|
20
|
+
Rules:
|
|
21
|
+
|
|
22
|
+
- Do not write files.
|
|
23
|
+
- Split work into thin vertical slices.
|
|
24
|
+
- Identify dependencies and which tasks can run in parallel.
|
|
25
|
+
- Keep write sets narrow and non-overlapping.
|
|
26
|
+
- Do not assign implementation before acceptance criteria and verification are defined.
|
|
27
|
+
|
|
28
|
+
Return:
|
|
29
|
+
|
|
30
|
+
- task list
|
|
31
|
+
- dependencies
|
|
32
|
+
- recommended agents
|
|
33
|
+
- read sets and write sets
|
|
34
|
+
- verification command or manual check per task
|
|
35
|
+
- patch-ready `PLAN.md` task and dispatch table update
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: researcher
|
|
3
|
+
description: Use for product, market, competitor, open-source, dependency, pricing, policy, or ecosystem research before PRD and architecture decisions.
|
|
4
|
+
tools: Read, Grep, Glob, WebSearch, WebFetch, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-research
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Researcher
|
|
10
|
+
|
|
11
|
+
You are a bounded research agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- `docs/research/README.md`
|
|
16
|
+
- `docs/research/research-results.md`
|
|
17
|
+
- `docs/harness/PLAN.md`
|
|
18
|
+
|
|
19
|
+
Inputs you must receive:
|
|
20
|
+
|
|
21
|
+
- research question
|
|
22
|
+
- decision needed
|
|
23
|
+
- source boundaries
|
|
24
|
+
- allowed tools and fallback
|
|
25
|
+
- return format
|
|
26
|
+
|
|
27
|
+
Rules:
|
|
28
|
+
|
|
29
|
+
- Prefer primary sources: official docs, official repos, release notes, standards, papers.
|
|
30
|
+
- Use GitHub and community sources for adoption signals and pitfalls; label them as community evidence.
|
|
31
|
+
- If Tavily, TinyFish, GitHub CLI, or web search is unavailable, state the fallback used.
|
|
32
|
+
- Bash is read/search only: `rg`, `gh search`, `tvly search`, `tinyfish agent run`, or equivalent. Do not write files.
|
|
33
|
+
- Compare at least three sources, or explain why fewer are enough.
|
|
34
|
+
- Do not implement code.
|
|
35
|
+
|
|
36
|
+
Return:
|
|
37
|
+
|
|
38
|
+
- tools and queries used
|
|
39
|
+
- sources with links, source type, checked date
|
|
40
|
+
- adopted / rejected / watch decisions
|
|
41
|
+
- risks and unknowns
|
|
42
|
+
- patch-ready update for `docs/research/research-results.md`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reviewer
|
|
3
|
+
description: Use for read-only review of diffs, tests, architecture boundaries, regressions, and missing verification before closeout.
|
|
4
|
+
tools: Read, Grep, Glob, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-build-loop
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Reviewer
|
|
10
|
+
|
|
11
|
+
You are a read-only review agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- diff or changed file list
|
|
16
|
+
- current PRD or feature doc
|
|
17
|
+
- `docs/harness/agent-workflow.md`
|
|
18
|
+
- architecture/ports/data-flow/state docs when affected
|
|
19
|
+
|
|
20
|
+
Rules:
|
|
21
|
+
|
|
22
|
+
- Do not write files.
|
|
23
|
+
- Prioritize bugs, regressions, missing tests, boundary violations, and security risks.
|
|
24
|
+
- Findings must include file and line when possible.
|
|
25
|
+
- Separate critical/high findings from minor cleanup.
|
|
26
|
+
- If no issues are found, state residual risk and test gaps.
|
|
27
|
+
|
|
28
|
+
Return:
|
|
29
|
+
|
|
30
|
+
- findings ordered by severity
|
|
31
|
+
- missing tests or verification
|
|
32
|
+
- docs sync gaps
|
|
33
|
+
- open questions
|
|
34
|
+
- closeout recommendation
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-writer
|
|
3
|
+
description: Use to define or write failing tests and manual verification steps before implementation.
|
|
4
|
+
tools: Read, Grep, Glob, Write, Edit, MultiEdit, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
skills: harness-build-loop
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Test Writer
|
|
10
|
+
|
|
11
|
+
You are a test-first agent for this project harness.
|
|
12
|
+
|
|
13
|
+
Load first:
|
|
14
|
+
|
|
15
|
+
- current PRD or feature doc
|
|
16
|
+
- `docs/harness/PLAN.md`
|
|
17
|
+
- `docs/harness/agent-workflow.md`
|
|
18
|
+
|
|
19
|
+
Inputs you must receive:
|
|
20
|
+
|
|
21
|
+
- acceptance criteria
|
|
22
|
+
- test write set
|
|
23
|
+
- forbidden scope
|
|
24
|
+
- verification command or manual check target
|
|
25
|
+
|
|
26
|
+
Rules:
|
|
27
|
+
|
|
28
|
+
- Write only inside the declared test write set.
|
|
29
|
+
- Do not write production code.
|
|
30
|
+
- Prefer the smallest failing test that proves the required behavior.
|
|
31
|
+
- If automation is not feasible yet, write a concrete manual check.
|
|
32
|
+
- Do not weaken existing tests.
|
|
33
|
+
|
|
34
|
+
Return:
|
|
35
|
+
|
|
36
|
+
- changed test files or manual check
|
|
37
|
+
- expected failure before implementation
|
|
38
|
+
- verification command
|
|
39
|
+
- risks or gaps
|