create-harness-vibe-coding 0.1.3 → 0.1.5

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.
Files changed (40) hide show
  1. package/README.md +96 -79
  2. package/package.json +2 -2
  3. package/src/generator.js +3 -5
  4. package/src/index.js +51 -15
  5. package/templates/common/.claude/agents/architect.md +35 -0
  6. package/templates/common/.claude/agents/debugger.md +42 -0
  7. package/templates/common/.claude/agents/docs-researcher.md +43 -0
  8. package/templates/common/.claude/agents/implementer.md +41 -0
  9. package/templates/common/.claude/agents/planner.md +35 -0
  10. package/templates/common/.claude/agents/researcher.md +42 -0
  11. package/templates/common/.claude/agents/reviewer.md +34 -0
  12. package/templates/common/.claude/agents/test-writer.md +39 -0
  13. package/templates/common/.claude/agents/verifier.md +33 -0
  14. package/templates/common/.claude/rules/ecc/common.md +25 -22
  15. package/templates/common/.claude/skills/harness-build-loop/SKILL.md +21 -0
  16. package/templates/common/.claude/skills/harness-context/SKILL.md +24 -0
  17. package/templates/common/.claude/skills/harness-lifecycle/SKILL.md +19 -0
  18. package/templates/common/.claude/skills/harness-research/SKILL.md +29 -0
  19. package/templates/common/.claude/skills/harness-router/SKILL.md +14 -0
  20. package/templates/common/AGENTS.md +3 -1
  21. package/templates/common/CLAUDE.md +30 -33
  22. package/templates/common/MEMORY.md +30 -7
  23. package/templates/common/SETUP.md +56 -59
  24. package/templates/common/docs/README.md +81 -96
  25. package/templates/common/docs/domain/ports.md +26 -26
  26. package/templates/common/docs/features/_template.md +34 -25
  27. package/templates/common/docs/harness/PLAN.md +80 -0
  28. package/templates/common/docs/harness/agent-workflow.md +57 -116
  29. package/templates/common/docs/harness/architecture.md +51 -48
  30. package/templates/common/docs/harness/context-loading.md +93 -0
  31. package/templates/common/docs/harness/data-flow.md +20 -20
  32. package/templates/common/docs/harness/dispatch.md +82 -0
  33. package/templates/common/docs/harness/extension.md +67 -0
  34. package/templates/common/docs/harness/lifecycle.md +33 -0
  35. package/templates/common/docs/harness/state-machines.md +15 -15
  36. package/templates/common/docs/research/PRD.md +25 -23
  37. package/templates/common/docs/research/README.md +121 -0
  38. package/templates/common/docs/research/research-results.md +66 -0
  39. package/templates/common/scripts/validate-harness.mjs +207 -0
  40. 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">⚡ create-harness-vibe-coding</h1>
8
+ <h1 align="center">create-harness-vibe-coding</h1>
9
9
  <p align="center">
10
- <b>4 seconds from zero to a production-grade agentic harness.</b><br>
11
- <sub>CLAUDE.md docs/ .claude/ tests/ ECC-ready, Superpowers-compatible.</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
- ## 🎯 One Command
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 | Count |
23
- |-------------|-------|
24
- | Architecture docs (layers, data flow, state machines, port contracts) | 9 docs |
25
- | Agent definitions (code-reviewer, risk-auditor, etc.) | ECC-ready skeleton |
26
- | Workflow skills (TDD, backtest, data pipeline) | ECC-ready skeleton |
27
- | Coding rules (universal + language-specific) | common.md included |
28
- | Settings & hooks (permissions, automation) | pre-configured |
29
- | **Total files provisioned** | **17 docs + configs** |
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
- ## 🚀 Why This Exists
39
+ ## Why This Exists
34
40
 
35
- Every Claude Code project has the same cold-start problem:
41
+ Most 0-1 AI coding projects fail before code quality matters:
36
42
 
37
- | Without Harness | With `create-harness-vibe-coding` |
43
+ | Without Harness | With This Scaffold |
38
44
  |---|---|
39
- | Agents skip docs, hallucinate behavior | CLAUDE.md routes agents to exact docs by role |
40
- | No TDD enforcement agents ship untested code | agent-workflow.md enforces RED-GREEN-REFACTOR |
41
- | Architecture boundaries blur over time | domain/ports.md locks layer contracts |
42
- | State machines live in someone's head | state-machines.md documents every transition |
43
- | Cross-session memory lost | MEMORY.md + self-learning system |
44
- | 2+ hours to set up project structure | **4 seconds** |
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
- ## 🧠 How It Works
54
+ ## How It Works
49
55
 
50
- ```mermaid
51
- graph LR
52
- A[npx scaffold] --> B[CLAUDE.md + docs/ + .claude/]
53
- B --> C[Start Claude Code]
54
- C --> D[Claude reads SETUP.md]
55
- D --> E[Pulls agents/skills/rules from ECC]
56
- E --> F[Project ready TDD loop active]
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
- ### What happens after `npx`:
65
+ ### Harness idea
60
66
 
61
- 1. **CLAUDE.md** Agent reads this first. Role-based routing table sends each agent to the right docs.
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
- ## 📦 What's Inside
71
+ ## What's Inside
72
72
 
73
73
  ```
74
74
  my-project/
75
- ├── CLAUDE.md ← Role-based doc navigation + memory/self-learning
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 ← Project doc entry point
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,81 +94,93 @@ 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
- │ └── scaffolds.md ← Tech research & decision record
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 ← Permissions + hooks
96
- │ ├── agents/ ← Pull from ECC
97
- │ ├── skills/ ← Pull from ECC
98
- │ ├── hooks/ ← Configure as needed
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 (always active)
108
+ │ └── common.md ← Universal coding rules
101
109
  └── tests/ ← Your test suite goes here
102
110
  ```
103
111
 
104
112
  ---
105
113
 
106
- ## 🌐 Ecosystem Compatibility
114
+ ## Ecosystem Compatibility
107
115
 
108
- | Platform | Status |
109
- |----------|--------|
110
- | [ECC](https://github.com/affaan-m/ECC) (206K+ ★) | Agents, skills, rules auto-pull |
111
- | [Superpowers](https://github.com/obra/superpowers) (185K+ ★) | `/plugin install superpowers` |
112
- | [awesome-claude-code-config](https://github.com/Mizoreww/awesome-claude-code-config) | Rules & self-learning configs |
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
- ## 🔧 Usage
124
+ ## Usage
125
+
126
+ ### Human
120
127
 
121
128
  ```bash
122
- # Interactive mode
129
+ # Interactive mode — prompts for project name and directory
123
130
  npx create-harness-vibe-coding@latest
131
+ ```
124
132
 
125
- # Non-interactive (CI/CD)
126
- npx create-harness-vibe-coding@latest my-app ./dist/my-app
133
+ ### Agent / CI/CD
127
134
 
128
- # Always get the latest version
129
- npx create-harness-vibe-coding@latest my-project
135
+ Agents and automation can skip all prompts with `-y`:
136
+
137
+ ```bash
138
+ # One-liner with defaults (project name = my-vibe-project)
139
+ npx create-harness-vibe-coding@latest -y
140
+
141
+ # Named project, auto directory
142
+ npx create-harness-vibe-coding@latest my-app -y
143
+
144
+ # Named project, explicit directory
145
+ npx create-harness-vibe-coding@latest my-app ./dist/my-app -y
130
146
  ```
131
147
 
148
+ | Flag | Purpose |
149
+ |------|---------|
150
+ | `-y`, `--yes` | Skip all prompts. Uses positional args or defaults. |
151
+ | `-h`, `--help` | Print usage and exit. |
152
+
153
+ > [!TIP]
154
+ > Agents should always pass `-y` to avoid hanging on interactive prompts.
155
+ > If the agent needs to discover the CLI surface first, run with `--help`.
156
+
132
157
  ### After scaffolding, tell Claude:
133
158
 
134
159
  ```
135
- "Read SETUP.md. This is a Python quant project. Pull agents, skills, and rules from ECC."
136
- "Read SETUP.md. This is a React TypeScript app. I need TDD workflow and code review."
137
- "Read SETUP.md. This is a Go microservice. Set up matching agents and testing skills."
160
+ "Read SETUP.md. Bootstrap this project from idea to first vertical slice."
161
+ "Read SETUP.md. This is a React TypeScript SaaS idea. Clarify PRD first, then plan the first slice."
162
+ "Read SETUP.md. This is a Python data product. Research the stack, define the MVP, then create docs/harness/PLAN.md."
138
163
  ```
139
164
 
140
165
  ---
141
166
 
142
- ## 📊 Performance
167
+ ## Footprint
143
168
 
144
169
  | Metric | Value |
145
170
  |--------|-------|
146
- | Cold install + scaffold | < 4s |
147
- | Package size | 19.9 kB |
148
- | Unpacked | 49.4 kB |
149
- | Dependencies | 2 (@clack/prompts, picocolors) |
150
- | Node requirement | ≥ 18 |
151
- | Zero runtime deps after scaffold | ✅ |
171
+ | Runtime after scaffold | none |
172
+ | Dependencies | 2 (`@clack/prompts`, `picocolors`) |
173
+ | Node requirement | >= 18 |
174
+ | Generated code | none until the product stack is chosen |
152
175
 
153
176
  ---
154
177
 
155
- ## 👥 Contributing
178
+ ## Contributing
156
179
 
157
180
  PRs welcome. The template docs live in `templates/common/` — edit them to change what gets scaffolded.
158
181
 
159
182
  ---
160
183
 
161
- ## 📄 License
184
+ ## License
162
185
 
163
186
  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.3",
4
- "description": "Scaffold a vibe-coding agentic harness CLAUDE.md, docs/, .claude skeleton ready for ECC agents/skills/rules",
3
+ "version": "0.1.5",
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(`⚠ Directory "${targetDir}" already exists and is not empty. Files may be overwritten.`));
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('📋 Copying templates...'));
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('📁 Creating placeholder directories...'));
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
@@ -4,29 +4,65 @@ import pc from 'picocolors';
4
4
  import { askProjectName, askTargetDir } from './prompts.js';
5
5
  import { generate } from './generator.js';
6
6
 
7
- // Parse CLI args for non-interactive mode
8
- const args = process.argv.slice(2);
9
- const argName = args[0];
10
- const argDir = args[1];
7
+ // ── CLI flags ──────────────────────────────────────────────
8
+ const raw = process.argv.slice(2);
9
+ const flags = new Set(raw.filter(a => a.startsWith('-')));
10
+ const has = name => flags.has(name) || flags.has(`--${name}`);
11
+ const showHelp = has('h') || has('help');
12
+ const skipPrompts = has('y') || has('yes');
13
+
14
+ if (showHelp) {
15
+ console.log('');
16
+ console.log(' create-harness-vibe-coding');
17
+ console.log('');
18
+ console.log(' Usage:');
19
+ console.log(' npx create-harness-vibe-coding@latest [project-name] [target-dir] [flags]');
20
+ console.log('');
21
+ console.log(' Arguments:');
22
+ console.log(' project-name Name for the new project (default: my-vibe-project)');
23
+ console.log(' target-dir Directory to create the project in (default: ./<project-name>)');
24
+ console.log('');
25
+ console.log(' Flags:');
26
+ console.log(' -y, --yes Skip all prompts, use defaults or provided args');
27
+ console.log(' -h, --help Show this help');
28
+ console.log('');
29
+ console.log(' Examples:');
30
+ console.log(' npx create-harness-vibe-coding@latest');
31
+ console.log(' npx create-harness-vibe-coding@latest -y');
32
+ console.log(' npx create-harness-vibe-coding@latest my-project');
33
+ console.log(' npx create-harness-vibe-coding@latest my-project ./dist/my-project -y');
34
+ console.log('');
35
+ process.exit(0);
36
+ }
37
+
38
+ // Positional args (non-flag)
39
+ const positional = raw.filter(a => !a.startsWith('-'));
40
+ const argName = positional[0];
41
+ const argDir = positional[1];
42
+
43
+ const DEFAULT_NAME = 'my-vibe-project';
11
44
 
12
45
  console.log('');
13
46
  console.log(pc.magenta('╔══════════════════════════════════════════╗'));
14
- console.log(pc.magenta('║ 🎯 create-harness-vibe-coding ║'));
15
- console.log(pc.magenta('║ Agentic Harness — Vibe Coding Ready ║'));
47
+ console.log(pc.magenta('║ create-harness-vibe-coding ║'));
48
+ console.log(pc.magenta('║ 0-1 Product Harness Scaffold ║'));
16
49
  console.log(pc.magenta('╚══════════════════════════════════════════╝'));
17
50
  console.log('');
18
51
 
19
52
  let projectName, targetDir;
20
53
 
21
- // Non-interactive mode: use CLI args or defaults
22
- if (argName) {
23
- projectName = argName;
54
+ // Non-interactive: positionals provided OR -y/--yes flag set
55
+ if (argName || skipPrompts) {
56
+ projectName = argName || DEFAULT_NAME;
24
57
  targetDir = argDir || `./${projectName}`;
25
58
 
26
59
  console.log(pc.dim('────────────────────────────────────────────'));
27
60
  console.log(` Project ${pc.green(projectName)}`);
28
61
  console.log(` Directory ${pc.green(targetDir)}`);
29
- console.log(` Creates ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
62
+ console.log(` Creates ${pc.cyan('CLAUDE.md, docs/harness/PLAN.md, docs/, scripts/, .claude/, SETUP.md, tests/')}`);
63
+ if (skipPrompts) {
64
+ console.log(` Mode ${pc.dim('non-interactive (-y)')}`);
65
+ }
30
66
  console.log(pc.dim('────────────────────────────────────────────'));
31
67
  console.log('');
32
68
 
@@ -52,7 +88,7 @@ if (argName) {
52
88
  console.log(pc.dim('────────────────────────────────────────────'));
53
89
  console.log(` Project ${pc.green(projectName)}`);
54
90
  console.log(` Directory ${pc.green(targetDir)}`);
55
- console.log(` Creates ${pc.cyan('CLAUDE.md, docs/, .claude/, SETUP.md, tests/')}`);
91
+ console.log(` Creates ${pc.cyan('CLAUDE.md, docs/harness/PLAN.md, docs/, scripts/, .claude/, SETUP.md, tests/')}`);
56
92
  console.log(pc.dim('────────────────────────────────────────────'));
57
93
  console.log('');
58
94
 
@@ -79,24 +115,24 @@ if (argName) {
79
115
 
80
116
  function printResult(result, targetDir) {
81
117
  if (result.success) {
82
- console.log(pc.green(`\n✅ Project created! ${result.created.length} files\n`));
118
+ console.log(pc.green(`\nProject created: ${result.created.length} files\n`));
83
119
 
84
120
  console.log(pc.bold('Next steps:'));
85
121
  console.log(` ${pc.cyan(`cd ${targetDir}`)}`);
86
122
  console.log(` ${pc.cyan('claude')} # Start Claude Code`);
87
- console.log(` Tell Claude: "${pc.yellow('Read SETUP.md and initialize this project')}"`);
123
+ console.log(` Tell Claude: "${pc.yellow('Read SETUP.md. Bootstrap this project from idea to first vertical slice.')}"`);
88
124
  console.log('');
89
125
  console.log(pc.dim(' SETUP.md is temporary. Delete it after initialization.'));
90
126
  console.log('');
91
127
 
92
128
  if (result.errors.length > 0) {
93
- console.log(pc.red(`\n${result.errors.length} warning(s):`));
129
+ console.log(pc.red(`\n${result.errors.length} warning(s):`));
94
130
  for (const err of result.errors) {
95
131
  console.log(pc.red(` - ${err}`));
96
132
  }
97
133
  }
98
134
  } else {
99
- console.log(pc.red('\n❌ Generation failed:'));
135
+ console.log(pc.red('\nGeneration failed:'));
100
136
  for (const err of result.errors) {
101
137
  console.log(pc.red(` - ${err}`));
102
138
  }
@@ -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`