@pieerry/harness-kit 3.1.0 → 3.1.2
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/commands/product-manager/prd.md +10 -1
- package/.claude/commands/product-manager/prp.md +10 -1
- package/.claude/commands/product-manager/run.md +12 -6
- package/.claude/commands/sse/dev.md +11 -1
- package/.claude/commands/sse/plan.md +10 -1
- package/.claude/commands/sse/pr.md +10 -1
- package/.claude/commands/sse/run.md +18 -7
- package/.claude/commands/sse/test.md +13 -1
- package/.claude/scripts/pipeline.py +10 -0
- package/.claude/settings.local.json +2 -1
- package/README.md +54 -10
- package/VERSION +1 -1
- package/package.json +1 -1
|
@@ -30,4 +30,13 @@ Sensors: .claude/plugins/product-manager/sensors/prd-structure.md, .claude/plugi
|
|
|
30
30
|
|
|
31
31
|
Evals: .claude/plugins/product-manager/evals/prd-quality.md, .claude/plugins/product-manager/evals/prd-readiness.md.
|
|
32
32
|
|
|
33
|
-
After save reply
|
|
33
|
+
After save, reply with this exact shape (name the actual sensors/evals/guides that ran, do not abbreviate):
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
PRD saved at {path}.
|
|
37
|
+
sensors: prd-structure ok, prd-acceptance-criteria ok
|
|
38
|
+
eval: prd-quality {N}/10, prd-readiness {N}/10
|
|
39
|
+
guides: product-guidelines.md, prd-guidelines.md, writing-style.md, templates/prd.md
|
|
40
|
+
refs: business-info.md, squads/{squad}/context.md
|
|
41
|
+
next: /product-manager:prp
|
|
42
|
+
```
|
|
@@ -34,4 +34,13 @@ Sensors: .claude/plugins/product-manager/sensors/prp-structure.md, .claude/plugi
|
|
|
34
34
|
|
|
35
35
|
Evals: .claude/plugins/product-manager/evals/prp-quality.md, .claude/plugins/product-manager/evals/prp-context-readiness.md.
|
|
36
36
|
|
|
37
|
-
After save reply
|
|
37
|
+
After save, reply with this exact shape (name the actual sensors/evals/guides that ran):
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
PRP saved at {path}.
|
|
41
|
+
sensors: prp-structure ok, prp-context-quality ok, prp-links ok
|
|
42
|
+
eval: prp-quality {N}/10, prp-context-readiness {N}/10
|
|
43
|
+
guides: prp-guidelines.md, writing-style.md, templates/prp.md
|
|
44
|
+
refs: prd/{feature_id}.md, {target repo paths probed}
|
|
45
|
+
next: /sse:plan (ready for handoff)
|
|
46
|
+
```
|
|
@@ -11,21 +11,27 @@ Run end to end.
|
|
|
11
11
|
|
|
12
12
|
Follow .claude/plugins/product-manager/guides/pipeline.md. Read .claude/agents/product-manager.md for inputs and rules.
|
|
13
13
|
|
|
14
|
-
Return format
|
|
14
|
+
Return format. Name every sensor, eval, and guide that ran. Generic summaries are not acceptable — list specifics so the user sees what was checked and what was loaded.
|
|
15
15
|
|
|
16
16
|
```
|
|
17
17
|
Pipeline complete.
|
|
18
18
|
|
|
19
19
|
PRD: .claude/plugins/product-manager/outputs/prd/{path}
|
|
20
|
-
sensors:
|
|
21
|
-
eval: {score}/10
|
|
20
|
+
sensors: prd-structure ok, prd-acceptance-criteria ok ({sub-checks})
|
|
21
|
+
eval: prd-quality {score}/10, prd-readiness {score}/10 (attempts: N)
|
|
22
|
+
guides: product-guidelines.md, prd-guidelines.md, writing-style.md, templates/prd.md
|
|
23
|
+
refs: business-info.md, squads/{squad}/context.md
|
|
22
24
|
|
|
23
25
|
PRP: .claude/plugins/product-manager/outputs/prp/{path}
|
|
24
|
-
sensors:
|
|
25
|
-
eval: {score}/10
|
|
26
|
+
sensors: prp-structure ok, prp-context-quality ok, prp-links ok
|
|
27
|
+
eval: prp-quality {score}/10, prp-context-readiness {score}/10 (attempts: N)
|
|
28
|
+
guides: prp-guidelines.md, writing-style.md, templates/prp.md
|
|
29
|
+
refs: prd/{feature_id}.md, target repo paths probed
|
|
26
30
|
|
|
27
|
-
Confluence: {published | skipped, reason}
|
|
31
|
+
Confluence: {published to {space-key}: {url} | skipped, reason}
|
|
28
32
|
|
|
29
33
|
Blockers:
|
|
30
34
|
- {file:line, issue, fix}
|
|
31
35
|
```
|
|
36
|
+
|
|
37
|
+
If a phase has no sensors/eval/guides/refs, omit that line rather than printing an empty one.
|
|
@@ -46,4 +46,14 @@ Append approval marker when all gates pass:
|
|
|
46
46
|
<!-- approved: {YYYY-MM-DD} -->
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
After approval, reply with this exact shape (name the actual sensors/guides that ran):
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Dev complete. branch {branch}.
|
|
53
|
+
files changed: {N}
|
|
54
|
+
commits: {M} ({short-sha}, {short-sha}, ...)
|
|
55
|
+
sensors: code-conventions ok, test-coverage ok
|
|
56
|
+
guides: coding-style.md, commit-style.md, skills/{area}/SKILL.md
|
|
57
|
+
refs: plan/{feature_id}.md, conventions/{area}.md
|
|
58
|
+
next: /sse:test
|
|
59
|
+
```
|
|
@@ -32,4 +32,13 @@ Sensors: .claude/plugins/staff-software-engineer/sensors/plan-structure.md.
|
|
|
32
32
|
|
|
33
33
|
Evals: .claude/plugins/staff-software-engineer/evals/plan-quality.md.
|
|
34
34
|
|
|
35
|
-
After save reply
|
|
35
|
+
After save, reply with this exact shape (name the actual sensors/evals/guides that ran):
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Plan saved at {path}.
|
|
39
|
+
sensors: plan-structure ok ({sub-checks: problem, files, gates, scope})
|
|
40
|
+
eval: plan-quality {N}/10
|
|
41
|
+
guides: pipeline.md, coding-style.md, skills/{area}/SKILL.md
|
|
42
|
+
refs: prp/{feature_id}.md, conventions/{area}.md
|
|
43
|
+
next: /sse:dev
|
|
44
|
+
```
|
|
@@ -42,4 +42,13 @@ Append approval marker:
|
|
|
42
42
|
<!-- approved: {YYYY-MM-DD} ready-for-handoff: true -->
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Reply
|
|
45
|
+
Reply with this exact shape:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
PR opened: {url}
|
|
49
|
+
title: {title}
|
|
50
|
+
draft: {yes|no}
|
|
51
|
+
guides: pr-template.md, commit-style.md
|
|
52
|
+
refs: plan/{feature_id}.md, dev/{feature_id}.md
|
|
53
|
+
next: request review (if draft, mark ready when checks pass)
|
|
54
|
+
```
|
|
@@ -12,28 +12,39 @@ Run end to end.
|
|
|
12
12
|
|
|
13
13
|
Follow .claude/plugins/staff-software-engineer/guides/pipeline.md for retry, approval markers, token accounting, and publish behavior.
|
|
14
14
|
|
|
15
|
-
Return format
|
|
15
|
+
Return format. Name every sensor, eval, and guide that ran. Generic summaries are not acceptable — list specifics so the user sees what was checked and what was loaded.
|
|
16
16
|
|
|
17
17
|
```
|
|
18
18
|
Engineering pipeline complete.
|
|
19
19
|
|
|
20
20
|
Plan: .claude/plugins/staff-software-engineer/outputs/plan/{path}
|
|
21
|
-
sensors:
|
|
22
|
-
eval: {score}/10
|
|
21
|
+
sensors: {sensor-name} ok ({sub-check, sub-check, ...}), {sensor-name} ok
|
|
22
|
+
eval: {eval-name} {score}/10 (attempts: N)
|
|
23
|
+
guides: {guide-1.md}, {guide-2.md}, skills/{area}/SKILL.md
|
|
24
|
+
refs: prp/{feature_id}.md, conventions/{area}.md
|
|
23
25
|
|
|
24
26
|
Dev: branch {branch}
|
|
25
27
|
files changed: N
|
|
26
|
-
commits: N
|
|
27
|
-
|
|
28
|
+
commits: N ({short-sha}, {short-sha}, ...)
|
|
29
|
+
sensors: code-conventions ok, test-coverage ok
|
|
30
|
+
guides: coding-style.md, commit-style.md, skills/{area}/SKILL.md
|
|
31
|
+
refs: plan/{feature_id}.md, conventions/{area}.md
|
|
28
32
|
|
|
29
33
|
Test: .claude/plugins/staff-software-engineer/outputs/test/{path}
|
|
30
|
-
|
|
34
|
+
command: {detected-test-command}
|
|
35
|
+
passed: N, failed: M
|
|
36
|
+
duration: {seconds}s
|
|
31
37
|
|
|
32
38
|
PR: {url}
|
|
39
|
+
title: {title}
|
|
33
40
|
draft: yes|no
|
|
41
|
+
guides: pr-template.md, commit-style.md
|
|
42
|
+
refs: plan/{feature_id}.md, dev/{feature_id}.md
|
|
34
43
|
|
|
35
|
-
Confluence: {published | skipped, reason}
|
|
44
|
+
Confluence: {published to {space-key}: {url} | skipped, reason}
|
|
36
45
|
|
|
37
46
|
Blockers:
|
|
38
47
|
- {file:line, issue, fix}
|
|
39
48
|
```
|
|
49
|
+
|
|
50
|
+
If a phase has no sensors/eval/guides/refs, omit that line for that phase rather than printing an empty one.
|
|
@@ -37,4 +37,16 @@ Append approval marker when exit code is 0:
|
|
|
37
37
|
|
|
38
38
|
If tests fail, return a blocker with the failing test names and a snippet of the failure output. Do not retry automatically; let the user decide.
|
|
39
39
|
|
|
40
|
-
Reply
|
|
40
|
+
Reply with this exact shape:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Tests {passed|failed}.
|
|
44
|
+
command: {detected-test-command}
|
|
45
|
+
passed: {N}
|
|
46
|
+
failed: {M}
|
|
47
|
+
duration: {seconds}s
|
|
48
|
+
output: {path/to/test/output.md}
|
|
49
|
+
next: /sse:pr (if passed) | fix failing tests (if failed)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If failed, append a `failures:` block listing each failing test name with a one-line snippet from the failure output.
|
|
@@ -162,6 +162,16 @@ def render_line():
|
|
|
162
162
|
next_cmd = STAGE_TO_COMMAND.get(current, "?")
|
|
163
163
|
|
|
164
164
|
shape = "+".join(pipeline)
|
|
165
|
+
|
|
166
|
+
# No work started yet: show full menu instead of locking to next stage
|
|
167
|
+
no_work_started = (
|
|
168
|
+
not fid
|
|
169
|
+
and not prev
|
|
170
|
+
and all(stages.get(s) == "pending" for s in pipeline)
|
|
171
|
+
)
|
|
172
|
+
if no_work_started:
|
|
173
|
+
return f"{name} [{shape}] · /product-manager:run · /sse:run · /pipeline:continue · /pipeline:reset"
|
|
174
|
+
|
|
165
175
|
if prev:
|
|
166
176
|
return f"{name} [{shape}] · {prev} approved · {current} {cur_state} · next {next_cmd}"
|
|
167
177
|
return f"{name} [{shape}] · {current} {cur_state} · next {next_cmd}"
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
Claude Code harness for product + engineering delivery.
|
|
6
6
|
From idea to merged PR, one pipeline.
|
|
7
7
|
|
|
8
|
-
[](VERSION)
|
|
9
9
|
[](https://claude.ai/code)
|
|
10
10
|
[](#layout)
|
|
11
11
|
[](#usage)
|
|
@@ -15,7 +15,7 @@ From idea to merged PR, one pipeline.
|
|
|
15
15
|
|
|
16
16
|

|
|
17
17
|
|
|
18
|
-
<sub>
|
|
18
|
+
<sub>110s walkthrough · install → 6 commands → final summary → resume. Each command scene shows the active **guide · ref · sensor · eval**. Dedicated scenes for the dynamic status bar, the named-everything final summary, and `/pipeline:continue` resume flow.</sub>
|
|
19
19
|
|
|
20
20
|
</div>
|
|
21
21
|
|
|
@@ -46,7 +46,9 @@ npm i -g @pieerry/harness-kit
|
|
|
46
46
|
hk install
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
`hk install` writes plugins into `.claude/plugins/`, drops the status-line
|
|
49
|
+
`hk install` writes plugins into `.claude/plugins/`, drops the status-line + pipeline-tracking hooks in `.claude/hooks/`, copies the pipeline state manager to `.claude/scripts/`, registers slash commands under `.claude/commands/`, 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.
|
|
50
|
+
|
|
51
|
+
Reinstalling on top of an existing setup backs up the previous `settings.json` to `.claude/settings.json.bak.{timestamp}` before overwriting, so manual customizations are recoverable.
|
|
50
52
|
|
|
51
53
|
CLI subcommands:
|
|
52
54
|
|
|
@@ -67,11 +69,20 @@ bash ~/.harness-kit/setup/install.sh
|
|
|
67
69
|
|
|
68
70
|
### Update
|
|
69
71
|
|
|
72
|
+
For npm installs:
|
|
73
|
+
|
|
70
74
|
```bash
|
|
75
|
+
npm i -g @pieerry/harness-kit@latest
|
|
71
76
|
hk update
|
|
72
77
|
```
|
|
73
78
|
|
|
74
|
-
|
|
79
|
+
For git-clone installs:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
hk update
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`hk update` pulls latest source (git installs only) and reinstalls. Idempotent. Version is read from the package `VERSION` and recorded in your target at `.claude/.hk-version`. npm users must bump the package first — `hk update` alone won't reach the registry.
|
|
75
86
|
|
|
76
87
|
### Usage
|
|
77
88
|
|
|
@@ -107,8 +118,19 @@ $ /product-manager:run
|
|
|
107
118
|
> squad? billing
|
|
108
119
|
> problem? invoice generation fails for multi-currency customers
|
|
109
120
|
> ...
|
|
110
|
-
PRD saved at outputs/prd/2026-05-12-billing-multi-currency.md.
|
|
111
|
-
|
|
121
|
+
PRD saved at outputs/prd/2026-05-12-billing-multi-currency.md.
|
|
122
|
+
sensors: prd-structure ok, prd-acceptance-criteria ok
|
|
123
|
+
eval: prd-quality 8.6/10, prd-readiness 8.9/10
|
|
124
|
+
guides: prd-guidelines.md, writing-style.md, templates/prd.md
|
|
125
|
+
refs: business-info.md, squads/billing/context.md
|
|
126
|
+
next: /product-manager:prp
|
|
127
|
+
|
|
128
|
+
PRP saved at outputs/prp/2026-05-12-billing-multi-currency.md.
|
|
129
|
+
sensors: prp-structure ok, prp-context-quality ok, prp-links ok
|
|
130
|
+
eval: prp-quality 8.4/10, prp-context-readiness 9.0/10
|
|
131
|
+
guides: prp-guidelines.md, templates/prp.md
|
|
132
|
+
refs: prd/2026-05-12-billing-multi-currency.md
|
|
133
|
+
next: /sse:plan (ready for handoff)
|
|
112
134
|
```
|
|
113
135
|
|
|
114
136
|
Engineering session in the target service repo:
|
|
@@ -117,12 +139,34 @@ Engineering session in the target service repo:
|
|
|
117
139
|
$ /sse:run
|
|
118
140
|
> source PRP? outputs/prp/2026-05-12-billing-multi-currency.md
|
|
119
141
|
> area? backend
|
|
120
|
-
Plan saved at outputs/plan/2026-05-12-billing-multi-currency.md.
|
|
121
|
-
|
|
122
|
-
|
|
142
|
+
Plan saved at outputs/plan/2026-05-12-billing-multi-currency.md.
|
|
143
|
+
sensors: plan-structure ok (problem, files, gates, scope)
|
|
144
|
+
eval: plan-quality 8.3/10
|
|
145
|
+
guides: pipeline.md, coding-style.md, skills/backend/SKILL.md
|
|
146
|
+
refs: prp/2026-05-12-billing-multi-currency.md, conventions/backend.md
|
|
147
|
+
next: /sse:dev
|
|
148
|
+
|
|
149
|
+
Dev complete. branch feat/PROJ-123-multi-currency.
|
|
150
|
+
files changed: 5
|
|
151
|
+
commits: 3 (a1b2c3d, d4e5f6g, h7i8j9k)
|
|
152
|
+
sensors: code-conventions ok, test-coverage ok
|
|
153
|
+
guides: coding-style.md, commit-style.md, skills/backend/SKILL.md
|
|
154
|
+
next: /sse:test
|
|
155
|
+
|
|
156
|
+
Tests passed.
|
|
157
|
+
command: ./mvnw test
|
|
158
|
+
passed: 24, failed: 0
|
|
159
|
+
duration: 12.4s
|
|
160
|
+
next: /sse:pr
|
|
161
|
+
|
|
123
162
|
PR opened: https://github.com/your-org/billing-service/pull/567
|
|
163
|
+
title: feat(PROJ-123): timezone-aware deadline check
|
|
164
|
+
draft: yes
|
|
165
|
+
guides: pr-template.md, commit-style.md
|
|
124
166
|
```
|
|
125
167
|
|
|
168
|
+
Every reply names the actual sensors that ran, evals with scores, and guides loaded — no generic "ok" lines. The `/sse:run` and `/product-manager:run` summaries aggregate the same shape across phases.
|
|
169
|
+
|
|
126
170
|
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.
|
|
127
171
|
|
|
128
172
|
### Samples
|
|
@@ -197,7 +241,7 @@ Every stage in the pipeline runs the same loop. Same four ingredients, every tim
|
|
|
197
241
|
|
|
198
242
|
Sensors are pass/fail (deterministic, fast). Evals are scored (LLM-judged, retried until ≥ threshold or max attempts). Approval markers (`<!-- approved: -->`) gate the next stage.
|
|
199
243
|
|
|
200
|
-
The
|
|
244
|
+
The 110s demo above shows every command running with these artifacts loading live on the right panel — plus the final summary scene that names every sensor, eval, and guide per phase.
|
|
201
245
|
|
|
202
246
|
---
|
|
203
247
|
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.1.
|
|
1
|
+
3.1.2
|
package/package.json
CHANGED