@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.
Files changed (77) hide show
  1. package/.claude/agents/product-manager.md +20 -0
  2. package/.claude/agents/staff-software-engineer.md +25 -0
  3. package/.claude/commands/product-manager/prd.md +31 -0
  4. package/.claude/commands/product-manager/prp.md +35 -0
  5. package/.claude/commands/product-manager/run.md +31 -0
  6. package/.claude/commands/sse/dev.md +47 -0
  7. package/.claude/commands/sse/plan.md +33 -0
  8. package/.claude/commands/sse/pr.md +43 -0
  9. package/.claude/commands/sse/run.md +39 -0
  10. package/.claude/commands/sse/test.md +38 -0
  11. package/.claude/hooks/status-line.sh +103 -0
  12. package/.claude/plugins/product-manager/README.md +120 -0
  13. package/.claude/plugins/product-manager/evals/prd-quality.md +88 -0
  14. package/.claude/plugins/product-manager/evals/prd-readiness.md +66 -0
  15. package/.claude/plugins/product-manager/evals/prp-context-readiness.md +51 -0
  16. package/.claude/plugins/product-manager/evals/prp-quality.md +88 -0
  17. package/.claude/plugins/product-manager/guides/examples/good-prd-example.md +121 -0
  18. package/.claude/plugins/product-manager/guides/examples/good-prp-example.md +128 -0
  19. package/.claude/plugins/product-manager/guides/pipeline.md +84 -0
  20. package/.claude/plugins/product-manager/guides/prd-guidelines.md +27 -0
  21. package/.claude/plugins/product-manager/guides/product-guidelines.md +75 -0
  22. package/.claude/plugins/product-manager/guides/prp-guidelines.md +64 -0
  23. package/.claude/plugins/product-manager/guides/templates/prd.md +89 -0
  24. package/.claude/plugins/product-manager/guides/templates/prp.md +98 -0
  25. package/.claude/plugins/product-manager/guides/writing-style.md +71 -0
  26. package/.claude/plugins/product-manager/hooks/post-eval-prd.sh +77 -0
  27. package/.claude/plugins/product-manager/hooks/post-eval-prp.sh +70 -0
  28. package/.claude/plugins/product-manager/hooks/post-write-prd.sh +56 -0
  29. package/.claude/plugins/product-manager/hooks/post-write-prp.sh +61 -0
  30. package/.claude/plugins/product-manager/hooks/pre-prp-check.sh +48 -0
  31. package/.claude/plugins/product-manager/outputs/.markers/.gitkeep +0 -0
  32. package/.claude/plugins/product-manager/scripts/confluence-publish.py +205 -0
  33. package/.claude/plugins/product-manager/scripts/link-validator.py +87 -0
  34. package/.claude/plugins/product-manager/scripts/sensor-runner.py +140 -0
  35. package/.claude/plugins/product-manager/scripts/token-phase.py +208 -0
  36. package/.claude/plugins/product-manager/sensors/prd-acceptance-criteria.md +39 -0
  37. package/.claude/plugins/product-manager/sensors/prd-structure.md +39 -0
  38. package/.claude/plugins/product-manager/sensors/prp-context-quality.md +42 -0
  39. package/.claude/plugins/product-manager/sensors/prp-links.md +24 -0
  40. package/.claude/plugins/product-manager/sensors/prp-structure.md +52 -0
  41. package/.claude/plugins/product-manager/skills/prd/SKILL.md +33 -0
  42. package/.claude/plugins/product-manager/skills/prp/SKILL.md +37 -0
  43. package/.claude/plugins/staff-software-engineer/README.md +90 -0
  44. package/.claude/plugins/staff-software-engineer/evals/plan-quality.md +48 -0
  45. package/.claude/plugins/staff-software-engineer/guides/coding-style.md +51 -0
  46. package/.claude/plugins/staff-software-engineer/guides/commit-style.md +44 -0
  47. package/.claude/plugins/staff-software-engineer/guides/conventions-override.md +79 -0
  48. package/.claude/plugins/staff-software-engineer/guides/pipeline.md +69 -0
  49. package/.claude/plugins/staff-software-engineer/hooks/post-eval-plan.sh +43 -0
  50. package/.claude/plugins/staff-software-engineer/hooks/post-write-plan.sh +49 -0
  51. package/.claude/plugins/staff-software-engineer/outputs/.markers/.gitkeep +0 -0
  52. package/.claude/plugins/staff-software-engineer/sensors/code-conventions.md +37 -0
  53. package/.claude/plugins/staff-software-engineer/sensors/plan-structure.md +37 -0
  54. package/.claude/plugins/staff-software-engineer/sensors/test-coverage.md +28 -0
  55. package/.claude/plugins/staff-software-engineer/skills/backend/SKILL.md +80 -0
  56. package/.claude/plugins/staff-software-engineer/skills/devops/SKILL.md +58 -0
  57. package/.claude/plugins/staff-software-engineer/skills/mobile/SKILL.md +52 -0
  58. package/.claude/plugins/staff-software-engineer/skills/web/SKILL.md +64 -0
  59. package/.claude/settings.local.json +61 -0
  60. package/CLAUDE.md +90 -0
  61. package/LICENSE +21 -0
  62. package/README.md +192 -0
  63. package/VERSION +1 -0
  64. package/bin/hk.js +141 -0
  65. package/context-library/README.md +38 -0
  66. package/context-library/business-info-template.md +39 -0
  67. package/context-library/decisions/README.md +3 -0
  68. package/context-library/example-prds/README.md +3 -0
  69. package/context-library/meetings/.gitkeep +0 -0
  70. package/context-library/metrics/.gitkeep +0 -0
  71. package/context-library/personal-context-template.md +31 -0
  72. package/context-library/research/.gitkeep +0 -0
  73. package/context-library/squads/README.md +32 -0
  74. package/context-library/strategy/README.md +3 -0
  75. package/package.json +43 -0
  76. package/setup/install.sh +154 -0
  77. 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](https://img.shields.io/badge/version-3.0.0-blue.svg)](VERSION)
9
+ [![Claude Code](https://img.shields.io/badge/Claude%20Code-plugin-8b5cf6.svg)](https://claude.ai/code)
10
+ [![Plugins](https://img.shields.io/badge/plugins-2-success.svg)](#layout)
11
+ [![Pipeline](https://img.shields.io/badge/stages-6-informational.svg)](#usage)
12
+ [![License](https://img.shields.io/badge/license-MIT-lightgrey.svg)](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.
@@ -0,0 +1,3 @@
1
+ # Decisions
2
+
3
+ ADR-style records. One file per decision: context, options, decision, consequences. SSE agent reads these before proposing technical plans.
@@ -0,0 +1,3 @@
1
+ # Example PRDs
2
+
3
+ Reference artifacts the PM agent reads to calibrate voice and structure. Drop your best 3-5 PRDs here. The plugin guides also ship with one canonical good example.
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
+ ```
@@ -0,0 +1,3 @@
1
+ # Strategy
2
+
3
+ OKRs, roadmaps, bet docs, north-star framing. Files here are read by the PM agent when drafting PRDs/PRPs to anchor scope to current bets.
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
+ }