@pieerry/harness-kit 3.0.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/.claude/agents/product-manager.md +20 -0
- package/.claude/agents/staff-software-engineer.md +25 -0
- package/.claude/commands/product-manager/prd.md +31 -0
- package/.claude/commands/product-manager/prp.md +35 -0
- package/.claude/commands/product-manager/run.md +31 -0
- package/.claude/commands/sse/dev.md +47 -0
- package/.claude/commands/sse/plan.md +33 -0
- package/.claude/commands/sse/pr.md +43 -0
- package/.claude/commands/sse/run.md +39 -0
- package/.claude/commands/sse/test.md +38 -0
- package/.claude/hooks/status-line.sh +103 -0
- package/.claude/plugins/product-manager/README.md +120 -0
- package/.claude/plugins/product-manager/evals/prd-quality.md +88 -0
- package/.claude/plugins/product-manager/evals/prd-readiness.md +66 -0
- package/.claude/plugins/product-manager/evals/prp-context-readiness.md +51 -0
- package/.claude/plugins/product-manager/evals/prp-quality.md +88 -0
- package/.claude/plugins/product-manager/guides/examples/good-prd-example.md +121 -0
- package/.claude/plugins/product-manager/guides/examples/good-prp-example.md +128 -0
- package/.claude/plugins/product-manager/guides/pipeline.md +84 -0
- package/.claude/plugins/product-manager/guides/prd-guidelines.md +27 -0
- package/.claude/plugins/product-manager/guides/product-guidelines.md +75 -0
- package/.claude/plugins/product-manager/guides/prp-guidelines.md +64 -0
- package/.claude/plugins/product-manager/guides/templates/prd.md +89 -0
- package/.claude/plugins/product-manager/guides/templates/prp.md +98 -0
- package/.claude/plugins/product-manager/guides/writing-style.md +71 -0
- package/.claude/plugins/product-manager/hooks/post-eval-prd.sh +77 -0
- package/.claude/plugins/product-manager/hooks/post-eval-prp.sh +70 -0
- package/.claude/plugins/product-manager/hooks/post-write-prd.sh +56 -0
- package/.claude/plugins/product-manager/hooks/post-write-prp.sh +61 -0
- package/.claude/plugins/product-manager/hooks/pre-prp-check.sh +48 -0
- package/.claude/plugins/product-manager/outputs/.markers/.gitkeep +0 -0
- package/.claude/plugins/product-manager/scripts/confluence-publish.py +205 -0
- package/.claude/plugins/product-manager/scripts/link-validator.py +87 -0
- package/.claude/plugins/product-manager/scripts/sensor-runner.py +140 -0
- package/.claude/plugins/product-manager/scripts/token-phase.py +208 -0
- package/.claude/plugins/product-manager/sensors/prd-acceptance-criteria.md +39 -0
- package/.claude/plugins/product-manager/sensors/prd-structure.md +39 -0
- package/.claude/plugins/product-manager/sensors/prp-context-quality.md +42 -0
- package/.claude/plugins/product-manager/sensors/prp-links.md +24 -0
- package/.claude/plugins/product-manager/sensors/prp-structure.md +52 -0
- package/.claude/plugins/product-manager/skills/prd/SKILL.md +33 -0
- package/.claude/plugins/product-manager/skills/prp/SKILL.md +37 -0
- package/.claude/plugins/staff-software-engineer/README.md +90 -0
- package/.claude/plugins/staff-software-engineer/evals/plan-quality.md +48 -0
- package/.claude/plugins/staff-software-engineer/guides/coding-style.md +51 -0
- package/.claude/plugins/staff-software-engineer/guides/commit-style.md +44 -0
- package/.claude/plugins/staff-software-engineer/guides/conventions-override.md +79 -0
- package/.claude/plugins/staff-software-engineer/guides/pipeline.md +69 -0
- package/.claude/plugins/staff-software-engineer/hooks/post-eval-plan.sh +43 -0
- package/.claude/plugins/staff-software-engineer/hooks/post-write-plan.sh +49 -0
- package/.claude/plugins/staff-software-engineer/outputs/.markers/.gitkeep +0 -0
- package/.claude/plugins/staff-software-engineer/sensors/code-conventions.md +37 -0
- package/.claude/plugins/staff-software-engineer/sensors/plan-structure.md +37 -0
- package/.claude/plugins/staff-software-engineer/sensors/test-coverage.md +28 -0
- package/.claude/plugins/staff-software-engineer/skills/backend/SKILL.md +80 -0
- package/.claude/plugins/staff-software-engineer/skills/devops/SKILL.md +58 -0
- package/.claude/plugins/staff-software-engineer/skills/mobile/SKILL.md +52 -0
- package/.claude/plugins/staff-software-engineer/skills/web/SKILL.md +64 -0
- package/.claude/settings.local.json +61 -0
- package/CLAUDE.md +90 -0
- package/LICENSE +21 -0
- package/README.md +192 -0
- package/VERSION +1 -0
- package/bin/hk.js +141 -0
- package/context-library/README.md +38 -0
- package/context-library/business-info-template.md +39 -0
- package/context-library/decisions/README.md +3 -0
- package/context-library/example-prds/README.md +3 -0
- package/context-library/meetings/.gitkeep +0 -0
- package/context-library/metrics/.gitkeep +0 -0
- package/context-library/personal-context-template.md +31 -0
- package/context-library/research/.gitkeep +0 -0
- package/context-library/squads/README.md +32 -0
- package/context-library/strategy/README.md +3 -0
- package/package.json +43 -0
- package/setup/install.sh +154 -0
- package/setup/update.sh +17 -0
package/README.md
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# harness-kit
|
|
4
|
+
|
|
5
|
+
Claude Code harness for product + engineering delivery.
|
|
6
|
+
From idea to merged PR, one pipeline.
|
|
7
|
+
|
|
8
|
+
[](VERSION)
|
|
9
|
+
[](https://claude.ai/code)
|
|
10
|
+
[](#layout)
|
|
11
|
+
[](#usage)
|
|
12
|
+
[](LICENSE)
|
|
13
|
+
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Table of Contents
|
|
19
|
+
|
|
20
|
+
- [Getting Started](#getting-started)
|
|
21
|
+
- [Install](#install)
|
|
22
|
+
- [Update](#update)
|
|
23
|
+
- [Usage](#usage)
|
|
24
|
+
- [Workflow](#workflow)
|
|
25
|
+
- [Samples](#samples)
|
|
26
|
+
- [Layout](#layout)
|
|
27
|
+
- [Project conventions](#project-conventions)
|
|
28
|
+
- [Status bar](#status-bar)
|
|
29
|
+
- [Tooling](#tooling)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Getting Started
|
|
34
|
+
|
|
35
|
+
### Install
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm i -g @pieerry/harness-kit
|
|
39
|
+
hk install
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`hk install` writes plugins into `.claude/plugins/`, drops the status-line hook in `.claude/hooks/`, generates `.claude/settings.json`, and scaffolds `.claude/conventions/` for your project overrides. Run it from the target repo (or pass an explicit `[target]`). Restart Claude Code after.
|
|
43
|
+
|
|
44
|
+
CLI subcommands:
|
|
45
|
+
|
|
46
|
+
| Command | What it does |
|
|
47
|
+
|---------|--------------|
|
|
48
|
+
| `hk install [target]` | install plugins into target repo (default: cwd) |
|
|
49
|
+
| `hk update [target]` | pull latest source and reinstall |
|
|
50
|
+
| `hk uninstall [target]` | remove plugins, hooks, settings, agents (keeps `outputs/` and `conventions/`) |
|
|
51
|
+
| `hk status [target]` | installed version + active pipeline stage |
|
|
52
|
+
| `hk version` | source version |
|
|
53
|
+
|
|
54
|
+
No-npm path (if you don't want a Node dep):
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git clone https://github.com/space-metrics-ai/harness-kit ~/.harness-kit
|
|
58
|
+
bash ~/.harness-kit/setup/install.sh
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Update
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
hk update
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Pulls latest source and reinstalls. Idempotent. Version is read from the package `VERSION` and recorded in your target at `.claude/.hk-version`.
|
|
68
|
+
|
|
69
|
+
### Usage
|
|
70
|
+
|
|
71
|
+
| Command | What it does |
|
|
72
|
+
|---------|--------------|
|
|
73
|
+
| `/product-manager:prd` | Draft a PRD |
|
|
74
|
+
| `/product-manager:prp` | Draft a PRP (needs an approved PRD) |
|
|
75
|
+
| `/product-manager:run` | Full PM pipeline (PRD then PRP) |
|
|
76
|
+
| `/sse:plan` | Generate plan from an approved PRP |
|
|
77
|
+
| `/sse:dev` | Implement the plan, run convention gates |
|
|
78
|
+
| `/sse:test` | Run the project test suite |
|
|
79
|
+
| `/sse:pr` | Open the draft PR |
|
|
80
|
+
| `/sse:run` | Full SSE pipeline (plan, dev, test, pr) |
|
|
81
|
+
|
|
82
|
+
Pipeline order: `prd → prp → plan → dev → test → pr`. Each stage gets an approval marker. The status bar tracks the current one.
|
|
83
|
+
|
|
84
|
+
### Workflow
|
|
85
|
+
|
|
86
|
+
PM session in this workspace:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
$ /product-manager:run
|
|
90
|
+
> squad? billing
|
|
91
|
+
> problem? invoice generation fails for multi-currency customers
|
|
92
|
+
> ...
|
|
93
|
+
PRD saved at outputs/prd/2026-05-12-billing-multi-currency.md. Score: 8.6/10.
|
|
94
|
+
PRP saved at outputs/prp/2026-05-12-billing-multi-currency.md. Score: 8.4/10.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Engineering session in the target service repo:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
$ /sse:run
|
|
101
|
+
> source PRP? outputs/prp/2026-05-12-billing-multi-currency.md
|
|
102
|
+
> area? backend
|
|
103
|
+
Plan saved at outputs/plan/2026-05-12-billing-multi-currency.md. Score: 8.3/10.
|
|
104
|
+
Dev complete. 5 files changed, 3 commits.
|
|
105
|
+
Tests: 24 passed, 0 failed.
|
|
106
|
+
PR opened: https://github.com/your-org/billing-service/pull/567
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Token usage is logged per phase to a shared JSON across both plugins. See the [product-manager README](.claude/plugins/product-manager/README.md#token-accounting) for the schema and query examples.
|
|
110
|
+
|
|
111
|
+
### Samples
|
|
112
|
+
|
|
113
|
+
Reference artifacts ship inside the plugins:
|
|
114
|
+
|
|
115
|
+
- [good PRD example](.claude/plugins/product-manager/guides/examples/good-prd-example.md)
|
|
116
|
+
- [good PRP example](.claude/plugins/product-manager/guides/examples/good-prp-example.md)
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Layout
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
.
|
|
124
|
+
├── .claude/
|
|
125
|
+
│ ├── plugins/
|
|
126
|
+
│ │ ├── product-manager/ PRD + PRP plugin
|
|
127
|
+
│ │ └── staff-software-engineer/ plan, dev, test, pr plugin
|
|
128
|
+
│ ├── commands/ slash commands per plugin namespace
|
|
129
|
+
│ ├── agents/ Task-tool-invokable orchestrators
|
|
130
|
+
│ ├── hooks/
|
|
131
|
+
│ │ └── status-line.sh pipeline status indicator
|
|
132
|
+
│ └── settings.json hooks wiring + permissions
|
|
133
|
+
├── context-library/ reusable org/squad context
|
|
134
|
+
├── setup/
|
|
135
|
+
│ ├── install.sh target-repo installer
|
|
136
|
+
│ └── update.sh pull + reinstall
|
|
137
|
+
└── VERSION source of truth for installer
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Plugin documentation:
|
|
141
|
+
|
|
142
|
+
- [product-manager](.claude/plugins/product-manager/README.md): PRD and PRP generation, sensor and eval gates, retry loop, token accounting, optional Confluence publish.
|
|
143
|
+
- [staff-software-engineer](.claude/plugins/staff-software-engineer/README.md): plan, dev, test, pr stages with per-project conventions override.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Project conventions
|
|
148
|
+
|
|
149
|
+
Each target repo can override the SSE plugin defaults with its own files:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
{repo}/.claude/conventions/
|
|
153
|
+
├── backend.md
|
|
154
|
+
├── web.md
|
|
155
|
+
├── mobile.md
|
|
156
|
+
└── devops.md
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
The installer scaffolds `.claude/conventions/README.md` to remind you of the contract. Fill only the area files relevant to the repo. Plugin reads them on top of its defaults. See [conventions-override.md](.claude/plugins/staff-software-engineer/guides/conventions-override.md) for the override mechanics and examples.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Status bar
|
|
164
|
+
|
|
165
|
+
The status line follows the active feature through the 6-stage pipeline. Examples:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
idle · start /product-manager:run or /sse:run
|
|
169
|
+
multi-currency · prd drafting · next /product-manager:prd
|
|
170
|
+
multi-currency · prd approved · prp pending · next /product-manager:prp
|
|
171
|
+
multi-currency · prp approved · plan pending · next /sse:plan
|
|
172
|
+
multi-currency · plan approved · dev pending · next /sse:dev
|
|
173
|
+
multi-currency · complete
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
State derives from artifact files plus the `<!-- approved: -->` marker. A feature is "active" when any of its artifacts was modified in the last hour. With no recent activity, the bar shows the idle prompt.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Tooling
|
|
181
|
+
|
|
182
|
+
| Tool | Why |
|
|
183
|
+
|------|-----|
|
|
184
|
+
| [Claude Code](https://claude.ai/code) | the agent runtime |
|
|
185
|
+
| [git](https://git-scm.com/) | version control + status bar branch detection |
|
|
186
|
+
| [python3](https://www.python.org/) | sensor runner, token accounting, optional Confluence publish |
|
|
187
|
+
| [gh CLI](https://cli.github.com/) | install, update, opening PRs via `/sse:pr` |
|
|
188
|
+
|
|
189
|
+
Optional:
|
|
190
|
+
|
|
191
|
+
- [jq](https://stedolan.github.io/jq/) for querying the token JSON files
|
|
192
|
+
- `JIRA_USERNAME` and `JIRA_API_TOKEN` env vars to enable Confluence publish (details in the [product-manager README](.claude/plugins/product-manager/README.md#confluence-publish))
|
package/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.0.0
|
package/bin/hk.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// harness-kit CLI. Thin Node wrapper around setup/*.sh and helpers.
|
|
3
|
+
// Subcommands: install, update, uninstall, status, version, help.
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const { spawnSync } = require('child_process');
|
|
8
|
+
|
|
9
|
+
const PKG_ROOT = path.resolve(__dirname, '..');
|
|
10
|
+
|
|
11
|
+
function pkgVersion() {
|
|
12
|
+
try {
|
|
13
|
+
return fs.readFileSync(path.join(PKG_ROOT, 'VERSION'), 'utf8').trim();
|
|
14
|
+
} catch {
|
|
15
|
+
return '0.0.0';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function targetVersion(target) {
|
|
20
|
+
try {
|
|
21
|
+
return fs.readFileSync(path.join(target, '.claude/.hk-version'), 'utf8').trim();
|
|
22
|
+
} catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function resolveTarget(arg) {
|
|
28
|
+
return path.resolve(arg || process.cwd());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function runBash(scriptName, target) {
|
|
32
|
+
const script = path.join(PKG_ROOT, 'setup', scriptName);
|
|
33
|
+
if (!fs.existsSync(script)) {
|
|
34
|
+
console.error(`setup script missing: ${script}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const r = spawnSync('bash', [script, target], { stdio: 'inherit' });
|
|
38
|
+
process.exit(r.status ?? 1);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function cmdInstall(target) {
|
|
42
|
+
runBash('install.sh', target);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function cmdUpdate(target) {
|
|
46
|
+
runBash('update.sh', target);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function cmdUninstall(target) {
|
|
50
|
+
const claudeDir = path.join(target, '.claude');
|
|
51
|
+
if (!fs.existsSync(claudeDir)) {
|
|
52
|
+
console.log(`nothing to remove at ${target}`);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const v = targetVersion(target);
|
|
56
|
+
if (!v) {
|
|
57
|
+
console.log(`no .hk-version found at ${target}. refusing to delete .claude/ blindly.`);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
const toRemove = [
|
|
61
|
+
'.claude/plugins/product-manager',
|
|
62
|
+
'.claude/plugins/staff-software-engineer',
|
|
63
|
+
'.claude/commands/product-manager',
|
|
64
|
+
'.claude/commands/sse',
|
|
65
|
+
'.claude/agents/product-manager.md',
|
|
66
|
+
'.claude/agents/staff-software-engineer.md',
|
|
67
|
+
'.claude/hooks/status-line.sh',
|
|
68
|
+
'.claude/settings.json',
|
|
69
|
+
'.claude/.hk-version',
|
|
70
|
+
];
|
|
71
|
+
for (const rel of toRemove) {
|
|
72
|
+
const p = path.join(target, rel);
|
|
73
|
+
if (fs.existsSync(p)) {
|
|
74
|
+
fs.rmSync(p, { recursive: true, force: true });
|
|
75
|
+
console.log(`removed ${rel}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
console.log(`uninstalled harness-kit v${v} from ${target}`);
|
|
79
|
+
console.log(`note: .claude/conventions/ and outputs/ kept. delete manually if desired.`);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function cmdStatus(target) {
|
|
83
|
+
const v = targetVersion(target);
|
|
84
|
+
const srcV = pkgVersion();
|
|
85
|
+
if (!v) {
|
|
86
|
+
console.log(`not installed at ${target}`);
|
|
87
|
+
console.log(`source version: ${srcV}`);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
console.log(`installed: v${v}`);
|
|
91
|
+
console.log(`source: v${srcV}${v === srcV ? '' : ' (run: hk update)'}`);
|
|
92
|
+
const statusLine = path.join(target, '.claude/hooks/status-line.sh');
|
|
93
|
+
if (fs.existsSync(statusLine)) {
|
|
94
|
+
const r = spawnSync('bash', [statusLine], { cwd: target, encoding: 'utf8' });
|
|
95
|
+
if (r.stdout) console.log(`pipeline: ${r.stdout.trim()}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function cmdVersion() {
|
|
100
|
+
console.log(pkgVersion());
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function cmdHelp() {
|
|
104
|
+
console.log(`hk - harness-kit CLI (v${pkgVersion()})
|
|
105
|
+
|
|
106
|
+
usage:
|
|
107
|
+
hk install [target] install plugins into target repo (default: cwd)
|
|
108
|
+
hk update [target] pull latest source and reinstall
|
|
109
|
+
hk uninstall [target] remove installed plugins from target
|
|
110
|
+
hk status [target] show installed version + active pipeline stage
|
|
111
|
+
hk version source version
|
|
112
|
+
hk help this message
|
|
113
|
+
|
|
114
|
+
after install, restart Claude Code and use:
|
|
115
|
+
/product-manager:prd | :prp | :run
|
|
116
|
+
/sse:plan | :dev | :test | :pr | :run`);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function main() {
|
|
120
|
+
const [, , cmd, arg] = process.argv;
|
|
121
|
+
const target = resolveTarget(arg);
|
|
122
|
+
switch (cmd) {
|
|
123
|
+
case 'install': return cmdInstall(target);
|
|
124
|
+
case 'update': return cmdUpdate(target);
|
|
125
|
+
case 'uninstall': return cmdUninstall(target);
|
|
126
|
+
case 'status': return cmdStatus(target);
|
|
127
|
+
case 'version':
|
|
128
|
+
case '--version':
|
|
129
|
+
case '-v': return cmdVersion();
|
|
130
|
+
case 'help':
|
|
131
|
+
case '--help':
|
|
132
|
+
case '-h':
|
|
133
|
+
case undefined: return cmdHelp();
|
|
134
|
+
default:
|
|
135
|
+
console.error(`unknown command: ${cmd}`);
|
|
136
|
+
cmdHelp();
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
main();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Context Library
|
|
2
|
+
|
|
3
|
+
Reference material the plugins consult before generating PRDs, PRPs, plans, and PRs. Public-template by default. Fill these in per-org.
|
|
4
|
+
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
context-library/
|
|
9
|
+
├── business-info.md company snapshot (mission, customers, segments)
|
|
10
|
+
├── personal-context.md per-user role, style, constraints (gitignored)
|
|
11
|
+
├── stakeholder-template.md stakeholder map template
|
|
12
|
+
├── writing-style.md internal writing voice (drop pleasantries, etc)
|
|
13
|
+
├── squads/ per-team folders with squad-specific context
|
|
14
|
+
│ └── README.md
|
|
15
|
+
├── strategy/ OKRs, roadmaps, frameworks
|
|
16
|
+
│ └── README.md
|
|
17
|
+
├── decisions/ ADR-style records
|
|
18
|
+
│ └── README.md
|
|
19
|
+
├── meetings/ raw notes that may inform later artifacts
|
|
20
|
+
├── metrics/ dashboards, baselines, north stars
|
|
21
|
+
├── research/ customer research, interviews, synthesis
|
|
22
|
+
└── example-prds/ reference artifacts the PM agent reads
|
|
23
|
+
└── README.md
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Only the templated files ship. Add your own content inside each folder. The plugins read whatever is there.
|
|
27
|
+
|
|
28
|
+
## How plugins use this
|
|
29
|
+
|
|
30
|
+
- `product-manager` agent reads `business-info.md`, `writing-style.md`, `squads/{squad}/`, and `example-prds/` before drafting a PRD or PRP.
|
|
31
|
+
- `staff-software-engineer` agent reads `decisions/` (for ADRs), `metrics/` (for SLO context), and `squads/{squad}/` (for domain terms).
|
|
32
|
+
- Personal files (`personal-context-*.md`, `writing-style-customer.md`, etc) are gitignored. Each user keeps their own copy locally.
|
|
33
|
+
|
|
34
|
+
## Conventions
|
|
35
|
+
|
|
36
|
+
- One topic per file. Short, scannable.
|
|
37
|
+
- Real numbers, real names. Avoid generic prose.
|
|
38
|
+
- Mark unknowns with `NOT FOUND - NEEDS REVIEW: {detail}`.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Business Info
|
|
2
|
+
|
|
3
|
+
> Template. Rename to `business-info.md` and fill in. Keep it short — agents read this on every PRD/PRP.
|
|
4
|
+
|
|
5
|
+
## Company
|
|
6
|
+
|
|
7
|
+
- **Name:** {Company}
|
|
8
|
+
- **What we do:** {one-sentence pitch}
|
|
9
|
+
- **Customers:** {segments}
|
|
10
|
+
- **Stage:** {e.g. series B, public, bootstrapped}
|
|
11
|
+
|
|
12
|
+
## Product surface
|
|
13
|
+
|
|
14
|
+
- **Core product:** {what the buyer pays for}
|
|
15
|
+
- **Key flows:** {top 3 user journeys}
|
|
16
|
+
- **Distribution:** {self-serve, sales-led, marketplace, etc}
|
|
17
|
+
|
|
18
|
+
## Teams / Squads
|
|
19
|
+
|
|
20
|
+
| Squad | Domain |
|
|
21
|
+
|-------|--------|
|
|
22
|
+
| {squad-1} | {what it owns} |
|
|
23
|
+
| {squad-2} | {what it owns} |
|
|
24
|
+
|
|
25
|
+
## Vocabulary
|
|
26
|
+
|
|
27
|
+
Internal terms that agents should keep native (don't translate):
|
|
28
|
+
|
|
29
|
+
- {term-1}: {meaning}
|
|
30
|
+
- {term-2}: {meaning}
|
|
31
|
+
|
|
32
|
+
## Current bets
|
|
33
|
+
|
|
34
|
+
- {bet 1, with link to the bet doc if any}
|
|
35
|
+
- {bet 2}
|
|
36
|
+
|
|
37
|
+
## Out of scope
|
|
38
|
+
|
|
39
|
+
What the team is explicitly not doing right now. Use to push back on scope creep in PRDs.
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Personal Context
|
|
2
|
+
|
|
3
|
+
> Template. Copy to `personal-context-{your-name}.md` (gitignored). Used by agents to tailor tone, depth, and references to you.
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- **Title:** {e.g. Senior PM, Staff SWE, EM}
|
|
8
|
+
- **Squad:** {squad}
|
|
9
|
+
- **Tenure:** {how long at the org}
|
|
10
|
+
- **Background:** {prior roles, domains}
|
|
11
|
+
|
|
12
|
+
## Working preferences
|
|
13
|
+
|
|
14
|
+
- **Output length:** {short / medium / detailed}
|
|
15
|
+
- **Writing voice:** {formal / casual / technical}
|
|
16
|
+
- **Mermaid vs ASCII:** mermaid only
|
|
17
|
+
- **Language:** {English, Portuguese, etc}
|
|
18
|
+
|
|
19
|
+
## What I care about
|
|
20
|
+
|
|
21
|
+
- {priority 1}
|
|
22
|
+
- {priority 2}
|
|
23
|
+
- {priority 3}
|
|
24
|
+
|
|
25
|
+
## What I don't care about
|
|
26
|
+
|
|
27
|
+
Things you don't want agents to spend tokens on (e.g. excessive intro paragraphs, restating context, exhaustive alternatives).
|
|
28
|
+
|
|
29
|
+
## Recurring asks
|
|
30
|
+
|
|
31
|
+
Patterns you ask for often (e.g. "always include a rollback plan", "always link the related ADR").
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Squads
|
|
2
|
+
|
|
3
|
+
One folder per squad. Each folder contains squad-specific context the agents will read when drafting artifacts owned by that squad.
|
|
4
|
+
|
|
5
|
+
## Per-squad layout
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
squads/
|
|
9
|
+
└── {squad-slug}/
|
|
10
|
+
├── domain.md what the squad owns, key entities, lifecycle
|
|
11
|
+
├── stack.md languages, frameworks, infra, datastores
|
|
12
|
+
├── owners.md tech lead, EM, PM, on-call rotation
|
|
13
|
+
├── runbooks/ common incident playbooks
|
|
14
|
+
└── decisions/ squad-level ADRs
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Slug rules
|
|
18
|
+
|
|
19
|
+
- kebab-case, short (e.g. `billing`, `checkout`, `growth`).
|
|
20
|
+
- The status-line hook uses the slug as a prefix on artifact filenames: `YYYY-MM-DD-{squad}-{slug}.md`.
|
|
21
|
+
|
|
22
|
+
## Example
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
squads/
|
|
26
|
+
├── billing/
|
|
27
|
+
│ ├── domain.md
|
|
28
|
+
│ ├── stack.md
|
|
29
|
+
│ └── owners.md
|
|
30
|
+
└── checkout/
|
|
31
|
+
└── domain.md
|
|
32
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pieerry/harness-kit",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Claude Code harness for product + engineering delivery. From idea to merged PR, one pipeline.",
|
|
5
|
+
"author": "Space Metrics AI",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/space-metrics-ai/harness-kit.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/space-metrics-ai/harness-kit",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"claude-code",
|
|
14
|
+
"claude",
|
|
15
|
+
"ai",
|
|
16
|
+
"harness",
|
|
17
|
+
"agent",
|
|
18
|
+
"prd",
|
|
19
|
+
"prp",
|
|
20
|
+
"engineering",
|
|
21
|
+
"product-management",
|
|
22
|
+
"delivery",
|
|
23
|
+
"pipeline",
|
|
24
|
+
"plugin"
|
|
25
|
+
],
|
|
26
|
+
"bin": {
|
|
27
|
+
"hk": "bin/hk.js",
|
|
28
|
+
"harness-kit": "bin/hk.js"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"bin",
|
|
32
|
+
"setup",
|
|
33
|
+
".claude",
|
|
34
|
+
"context-library",
|
|
35
|
+
"VERSION",
|
|
36
|
+
"README.md",
|
|
37
|
+
"LICENSE",
|
|
38
|
+
"CLAUDE.md"
|
|
39
|
+
],
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=14.0.0"
|
|
42
|
+
}
|
|
43
|
+
}
|