@pieerry/harness-kit 3.3.0 → 4.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/{plugins → agents}/product-manager/README.md +32 -30
- package/.claude/{plugins → agents}/product-manager/guides/examples/good-prp-example.md +2 -2
- package/.claude/{plugins → agents}/product-manager/guides/pipeline.md +7 -7
- package/.claude/{plugins → agents}/product-manager/sensors/prp-links.md +1 -1
- package/.claude/{plugins → agents}/product-manager/skills/prd/SKILL.md +2 -2
- package/.claude/{plugins → agents}/product-manager/skills/prp/SKILL.md +4 -4
- package/.claude/agents/product-manager.md +2 -2
- package/.claude/agents/staff-software-engineer/README.md +87 -0
- package/.claude/{plugins → agents}/staff-software-engineer/guides/conventions-override.md +3 -3
- package/.claude/{plugins → agents}/staff-software-engineer/guides/pipeline.md +11 -7
- package/.claude/{plugins → agents}/staff-software-engineer/sensors/dev-structure.md +2 -2
- package/.claude/{plugins → agents}/staff-software-engineer/sensors/pr-structure.md +3 -3
- package/.claude/{plugins → agents}/staff-software-engineer/sensors/test-structure.md +2 -2
- package/.claude/agents/staff-software-engineer.md +4 -4
- package/.claude/commands/pipeline/reset.md +1 -1
- package/.claude/commands/product-manager/prd.md +11 -11
- package/.claude/commands/product-manager/prp.md +12 -12
- package/.claude/commands/product-manager/run.md +8 -4
- package/.claude/commands/sse/dev.md +11 -11
- package/.claude/commands/sse/plan.md +11 -12
- package/.claude/commands/sse/pr.md +6 -7
- package/.claude/commands/sse/run.md +12 -5
- package/.claude/commands/sse/test.md +5 -5
- package/.claude/conventions/README.md +1 -1
- package/.claude/hooks/activity-pre-read.sh +4 -4
- package/.claude/hooks/status-line.sh +11 -11
- package/.claude/{plugins/product-manager/hooks → runtime/hooks/product-manager}/post-eval-prd.sh +11 -9
- package/.claude/{plugins/product-manager/hooks → runtime/hooks/product-manager}/post-eval-prp.sh +11 -9
- package/.claude/{plugins/product-manager/hooks → runtime/hooks/product-manager}/post-write-prd.sh +7 -5
- package/.claude/{plugins/product-manager/hooks → runtime/hooks/product-manager}/post-write-prp.sh +8 -6
- package/.claude/{plugins/product-manager/hooks → runtime/hooks/product-manager}/pre-prp-check.sh +5 -3
- package/.claude/{plugins/staff-software-engineer/hooks → runtime/hooks/staff-software-engineer}/post-eval-sse.sh +13 -11
- package/.claude/{plugins/staff-software-engineer/hooks → runtime/hooks/staff-software-engineer}/post-write-sse.sh +11 -9
- package/.claude/runtime/scripts/product-manager/__pycache__/confluence-publish.cpython-314.pyc +0 -0
- package/.claude/runtime/scripts/product-manager/__pycache__/link-validator.cpython-314.pyc +0 -0
- package/.claude/runtime/scripts/product-manager/__pycache__/sensor-runner.cpython-314.pyc +0 -0
- package/.claude/runtime/scripts/product-manager/__pycache__/token-phase.cpython-314.pyc +0 -0
- package/.claude/runtime/scripts/product-manager/confluence-publish.py +206 -0
- package/.claude/{plugins/product-manager/scripts → runtime/scripts/product-manager}/link-validator.py +1 -1
- package/.claude/{plugins/product-manager/scripts → runtime/scripts/product-manager}/token-phase.py +2 -2
- package/.claude/scripts/__pycache__/activity.cpython-314.pyc +0 -0
- package/.claude/scripts/__pycache__/pipeline.cpython-314.pyc +0 -0
- package/.claude/scripts/__pycache__/pr-monitor.cpython-314.pyc +0 -0
- package/.claude/scripts/pipeline.py +6 -6
- package/.claude/settings.json +7 -7
- package/.claude/settings.local.json +11 -3
- package/AGENTS.md +141 -0
- package/CLAUDE.md +9 -7
- package/README.md +88 -290
- package/VERSION +1 -1
- package/bin/hk.js +16 -8
- package/package.json +5 -3
- package/setup/install.sh +59 -40
- package/setup/update.sh +5 -0
- package/.claude/plugins/product-manager/scripts/confluence-publish.py +0 -205
- package/.claude/plugins/staff-software-engineer/README.md +0 -90
- /package/.claude/{plugins → agents}/product-manager/evals/prd-quality.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/evals/prd-readiness.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/evals/prp-context-readiness.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/evals/prp-quality.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/guides/examples/good-prd-example.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/guides/prd-guidelines.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/guides/product-guidelines.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/guides/prp-guidelines.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/guides/templates/prd.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/guides/templates/prp.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/guides/writing-style.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/sensors/prd-acceptance-criteria.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/sensors/prd-structure.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/sensors/prp-context-quality.md +0 -0
- /package/.claude/{plugins → agents}/product-manager/sensors/prp-structure.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/evals/dev-quality.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/evals/plan-quality.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/evals/pr-quality.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/evals/test-quality.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/guides/coding-style.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/guides/commit-style.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/sensors/code-conventions.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/sensors/plan-structure.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/sensors/test-coverage.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/skills/backend/SKILL.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/skills/devops/SKILL.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/skills/mobile/SKILL.md +0 -0
- /package/.claude/{plugins → agents}/staff-software-engineer/skills/web/SKILL.md +0 -0
- /package/.claude/{plugins/product-manager/outputs → runtime/outputs/pm}/.markers/.gitkeep +0 -0
- /package/.claude/{plugins/staff-software-engineer/outputs → runtime/outputs/sse}/.markers/.gitkeep +0 -0
- /package/.claude/{plugins/product-manager/scripts → runtime/scripts/product-manager}/sensor-runner.py +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
# Product Manager
|
|
1
|
+
# Product Manager Agent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Drafts PRDs and PRPs with sensor + eval gates, retry loop, token accounting per phase, and optional Confluence publish via hooks.
|
|
4
|
+
|
|
5
|
+
Registered in [`AGENTS.md`](../../../AGENTS.md). Agent definition: [`product-manager.md`](../product-manager.md).
|
|
4
6
|
|
|
5
7
|
## Slash commands
|
|
6
8
|
|
|
@@ -13,30 +15,30 @@ Also invokable as sub-agent via Task tool with `subagent_type: "product-manager"
|
|
|
13
15
|
## Tree
|
|
14
16
|
|
|
15
17
|
```
|
|
16
|
-
.claude/
|
|
17
|
-
├── .
|
|
18
|
-
├── agents/product-manager.md sub-agent
|
|
19
|
-
├── commands/run.md orchestrator (calls the two skills)
|
|
18
|
+
.claude/agents/product-manager/ ← definitions
|
|
19
|
+
├── README.md this file
|
|
20
20
|
├── skills/
|
|
21
|
-
│
|
|
22
|
-
│
|
|
23
|
-
├── hooks/ 5 .sh, registered in .claude/settings.json
|
|
24
|
-
├── scripts/ 4 .py, called by hooks
|
|
21
|
+
│ ├── prd/SKILL.md workflow PRD
|
|
22
|
+
│ └── prp/SKILL.md workflow PRP
|
|
25
23
|
├── guides/
|
|
26
|
-
│
|
|
27
|
-
│
|
|
28
|
-
│
|
|
29
|
-
│
|
|
30
|
-
│
|
|
31
|
-
│
|
|
32
|
-
│
|
|
33
|
-
├── sensors/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
24
|
+
│ ├── pipeline.md retry, approval marker, publish, token accounting
|
|
25
|
+
│ ├── product-guidelines.md team product rules
|
|
26
|
+
│ ├── prd-guidelines.md PRD-specific rules
|
|
27
|
+
│ ├── prp-guidelines.md PRP-specific rules
|
|
28
|
+
│ ├── writing-style.md voice, banned words
|
|
29
|
+
│ ├── templates/{prd,prp}.md artifact templates
|
|
30
|
+
│ └── examples/ reference PRDs and PRPs
|
|
31
|
+
├── sensors/ deterministic checks (markdown)
|
|
32
|
+
└── evals/ LLM-judge rubrics (markdown)
|
|
33
|
+
|
|
34
|
+
.claude/runtime/ ← state + outputs
|
|
35
|
+
├── hooks/product-manager/ 5 .sh, registered in .claude/settings.json
|
|
36
|
+
├── scripts/product-manager/ 4 .py, called by hooks
|
|
37
|
+
└── outputs/pm/
|
|
38
|
+
├── prd/ generated PRDs
|
|
39
|
+
├── prp/ generated PRPs
|
|
40
|
+
├── tokens/ per-feature phase tokens JSON
|
|
41
|
+
└── .markers/ phase start/end markers (transient)
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
## Where to edit
|
|
@@ -63,30 +65,30 @@ Also invokable as sub-agent via Task tool with `subagent_type: "product-manager"
|
|
|
63
65
|
4. PostToolUse hook fires sensor-runner.py with real regex. Blocks on failure, returns feedback. On pass, writes `prd-generate.end` and `prd-validate.start` markers.
|
|
64
66
|
5. Claude applies eval rubric. Retry up to 3 times if score below threshold (rules in guides/pipeline.md).
|
|
65
67
|
6. On pass, Claude appends approval marker. Hook fires: writes `prd-validate.end`, calls token-phase.py for both phases, then confluence-publish.py if creds set.
|
|
66
|
-
7. Token data lands in outputs/tokens/{feature_id}.json. Inline summary comment is appended to the artifact.
|
|
68
|
+
7. Token data lands in .claude/runtime/outputs/pm/tokens/{feature_id}.json. Inline summary comment is appended to the artifact.
|
|
67
69
|
|
|
68
70
|
## Token accounting
|
|
69
71
|
|
|
70
72
|
Per phase: prd-generate, prd-validate, prp-generate, prp-validate.
|
|
71
73
|
|
|
72
|
-
Per feature, a single file
|
|
74
|
+
Per feature, a single file `.claude/runtime/outputs/pm/tokens/{feature_id}.json` collects all phase entries, with `totals` aggregated. Future workflows (dev, code review) can append their own phases to the same file by reusing feature_id.
|
|
73
75
|
|
|
74
76
|
Query examples:
|
|
75
77
|
|
|
76
78
|
```
|
|
77
79
|
# total tokens across all features
|
|
78
|
-
jq -s 'map(.totals.input + .totals.output) | add' outputs/tokens/*.json
|
|
80
|
+
jq -s 'map(.totals.input + .totals.output) | add' .claude/runtime/outputs/pm/tokens/*.json
|
|
79
81
|
|
|
80
82
|
# tokens for one feature, by phase
|
|
81
|
-
jq '.phases[] | {phase, tokens}' outputs/tokens/2026-05-12-billing-tz-fix.json
|
|
83
|
+
jq '.phases[] | {phase, tokens}' .claude/runtime/outputs/pm/tokens/2026-05-12-billing-tz-fix.json
|
|
82
84
|
|
|
83
85
|
# features touched by dispatch squad
|
|
84
|
-
jq -s '.[] | select(.feature_id | contains("dispatch"))' outputs/tokens/*.json
|
|
86
|
+
jq -s '.[] | select(.feature_id | contains("dispatch"))' .claude/runtime/outputs/pm/tokens/*.json
|
|
85
87
|
```
|
|
86
88
|
|
|
87
89
|
## Engineering handoff
|
|
88
90
|
|
|
89
|
-
After a PRP is approved, engineering picks it up via the [staff-software-engineer plugin](../staff-software-engineer/README.md). The SSE plugin reads
|
|
91
|
+
After a PRP is approved, engineering picks it up via the [staff-software-engineer plugin](../staff-software-engineer/README.md). The SSE plugin reads `.claude/runtime/outputs/pm/prp/{feature_id}.md` and runs plan → dev → test → pr stages, all writing to the same `.claude/runtime/outputs/pm/tokens/{feature_id}.json` file. Full feature lifecycle in one token log.
|
|
90
92
|
|
|
91
93
|
## Status bar
|
|
92
94
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PRP: Invoice Deadline Timezone Fix
|
|
2
2
|
|
|
3
|
-
**Source PRD:**
|
|
3
|
+
**Source PRD:** `.claude/runtime/outputs/pm/prd/2026-05-08-billing-invoice-deadline-tz-fix.md`
|
|
4
4
|
**Target executor:** coding-agent
|
|
5
5
|
**Squad:** Billing | **Tech lead:** @tech-lead | **Date:** 2026-05-10
|
|
6
6
|
|
|
@@ -122,7 +122,7 @@ psql $STAGING_DB_URL -f src/main/resources/scripts/backfill/invoice_deadline_tz_
|
|
|
122
122
|
|
|
123
123
|
## 9) References
|
|
124
124
|
|
|
125
|
-
- PRD:
|
|
125
|
+
- PRD: `.claude/runtime/outputs/pm/prd/2026-05-08-billing-invoice-deadline-tz-fix.md`
|
|
126
126
|
- ADR feature flags: `docs/adr/0014-feature-flags.md`
|
|
127
127
|
- Deadline dashboard: https://grafana.example.com/d/billing-deadline-health
|
|
128
128
|
- Pattern reference: `billing-service/src/main/java/com/example/billing/dunning/DunningService.java:67`
|
|
@@ -40,7 +40,7 @@ Triggers hooks/post-eval-{prd|prp}.sh.
|
|
|
40
40
|
|
|
41
41
|
## Publish
|
|
42
42
|
|
|
43
|
-
Local: file stays in outputs/{prd|prp}/.
|
|
43
|
+
Local: file stays in .claude/runtime/outputs/pm/{prd|prp}/.
|
|
44
44
|
|
|
45
45
|
Confluence: fires if JIRA_USERNAME and JIRA_API_TOKEN set. Calls scripts/confluence-publish.py. Missing creds skips silently.
|
|
46
46
|
|
|
@@ -52,21 +52,21 @@ After publish, hook appends:
|
|
|
52
52
|
## Token accounting
|
|
53
53
|
|
|
54
54
|
Each phase brackets measurable token window. Phases:
|
|
55
|
-
- prd-generate: from skill invocation to first save in outputs/prd/
|
|
55
|
+
- prd-generate: from skill invocation to first save in .claude/runtime/outputs/pm/prd/
|
|
56
56
|
- prd-validate: from first save to approval marker (sensors + evals)
|
|
57
|
-
- prp-generate: from skill invocation to first save in outputs/prp/
|
|
57
|
+
- prp-generate: from skill invocation to first save in .claude/runtime/outputs/pm/prp/
|
|
58
58
|
- prp-validate: from first save to approval marker
|
|
59
59
|
|
|
60
|
-
Markers in outputs/.markers/{feature_id}.{phase}.{start|end}, each `{"timestamp": ISO, "session_id": ""}`. Skill writes .start; hooks write .end.
|
|
60
|
+
Markers in .claude/runtime/outputs/pm/.markers/{feature_id}.{phase}.{start|end}, each `{"timestamp": ISO, "session_id": ""}`. Skill writes .start; hooks write .end.
|
|
61
61
|
|
|
62
|
-
After eval passes, publish hook runs scripts/token-phase.py for both phases. Script reads Claude transcript JSONL, sums usage tokens (input, output, cache_read, cache_creation) within each window, appends phase entry to outputs/tokens/{feature_id}.json. Markers deleted after consumption.
|
|
62
|
+
After eval passes, publish hook runs scripts/token-phase.py for both phases. Script reads Claude transcript JSONL, sums usage tokens (input, output, cache_read, cache_creation) within each window, appends phase entry to .claude/runtime/outputs/pm/tokens/{feature_id}.json. Markers deleted after consumption.
|
|
63
63
|
|
|
64
64
|
Post-eval hook also appends inline summary to artifact:
|
|
65
65
|
```
|
|
66
|
-
<!-- tokens: outputs/tokens/{feature_id}.json in={N} out={N} cache_r={N} -->
|
|
66
|
+
<!-- tokens: .claude/runtime/outputs/pm/tokens/{feature_id}.json in={N} out={N} cache_r={N} -->
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
Future phases (dev, code review, launch) append entries to same outputs/tokens/{feature_id}.json by reusing feature_id slug.
|
|
69
|
+
Future phases (dev, code review, launch) append entries to same .claude/runtime/outputs/pm/tokens/{feature_id}.json by reusing feature_id slug.
|
|
70
70
|
|
|
71
71
|
If transcript not readable, script logs warning and exits 0. Token accounting never blocks publish.
|
|
72
72
|
|
|
@@ -7,7 +7,7 @@ Implemented in scripts/link-validator.py. Same rules when agent self-checks.
|
|
|
7
7
|
|
|
8
8
|
## Hard checks (block)
|
|
9
9
|
|
|
10
|
-
Source PRD resolvable. "Source PRD:" line must point to path existing under outputs/prd/, relative to PRP file, or relative to repo root.
|
|
10
|
+
Source PRD resolvable. "Source PRD:" line must point to path existing under .claude/runtime/outputs/pm/prd/, relative to PRP file, or relative to repo root.
|
|
11
11
|
|
|
12
12
|
No localhost URLs. `http://localhost` or `http://127.0.0.1` not allowed as pinned references.
|
|
13
13
|
|
|
@@ -11,7 +11,7 @@ Ask once if missing: squad, problem in 1-2 sentences, customers, hypothesis, bet
|
|
|
11
11
|
Compute feature_id = {YYYY-MM-DD}-{squad}-{slug}. Before generating, write the phase start marker:
|
|
12
12
|
|
|
13
13
|
```
|
|
14
|
-
outputs/.markers/{feature_id}.prd-generate.start
|
|
14
|
+
.claude/runtime/outputs/pm/.markers/{feature_id}.prd-generate.start
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Content: `{"timestamp": "<ISO-8601 UTC now>", "session_id": ""}`
|
|
@@ -24,7 +24,7 @@ Read:
|
|
|
24
24
|
- guides/pipeline.md
|
|
25
25
|
- guides/examples/good-prd-example.md
|
|
26
26
|
|
|
27
|
-
Save to outputs/prd/{feature_id}.md.
|
|
27
|
+
Save to .claude/runtime/outputs/pm/prd/{feature_id}.md.
|
|
28
28
|
|
|
29
29
|
Sensors: sensors/prd-structure.md, sensors/prd-acceptance-criteria.md.
|
|
30
30
|
|
|
@@ -6,14 +6,14 @@ user_invocable: true
|
|
|
6
6
|
|
|
7
7
|
Generate a PRP. Follow guides/pipeline.md for retry, approval, and publish.
|
|
8
8
|
|
|
9
|
-
Source PRD: if user passes a path, use it. Else pick the most recent in outputs/prd/. None found, abort. Tell user to run /product-manager:prd first. hooks/pre-prp-check.sh blocks if the PRD lacks the approved marker.
|
|
9
|
+
Source PRD: if user passes a path, use it. Else pick the most recent in .claude/runtime/outputs/pm/prd/. None found, abort. Tell user to run /product-manager:prd first. hooks/pre-prp-check.sh blocks if the PRD lacks the approved marker.
|
|
10
10
|
|
|
11
|
-
Compute feature_id from the source PRD filename (basename without .md). Save the PRP to outputs/prp/{feature_id}.md so it matches.
|
|
11
|
+
Compute feature_id from the source PRD filename (basename without .md). Save the PRP to .claude/runtime/outputs/pm/prp/{feature_id}.md so it matches.
|
|
12
12
|
|
|
13
13
|
Before generating, write the phase start marker:
|
|
14
14
|
|
|
15
15
|
```
|
|
16
|
-
outputs/.markers/{feature_id}.prp-generate.start
|
|
16
|
+
.claude/runtime/outputs/pm/.markers/{feature_id}.prp-generate.start
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Content: `{"timestamp": "<ISO-8601 UTC now>", "session_id": ""}`
|
|
@@ -28,7 +28,7 @@ Read:
|
|
|
28
28
|
|
|
29
29
|
Explore target repos. Ask user for repo paths if not provided. Use Grep and Read to map files. Capture file:line. Never invent paths.
|
|
30
30
|
|
|
31
|
-
Save to outputs/prp/{feature_id}.md.
|
|
31
|
+
Save to .claude/runtime/outputs/pm/prp/{feature_id}.md.
|
|
32
32
|
|
|
33
33
|
Sensors: sensors/prp-structure.md, sensors/prp-context-quality.md, sensors/prp-links.md.
|
|
34
34
|
|
|
@@ -7,14 +7,14 @@ model: opus
|
|
|
7
7
|
|
|
8
8
|
Product Manager.
|
|
9
9
|
|
|
10
|
-
When invoked, run /product-manager:run end to end. Follow .claude/
|
|
10
|
+
When invoked, run /product-manager:run end to end. Follow .claude/agents/product-manager/guides/pipeline.md.
|
|
11
11
|
|
|
12
12
|
Ask once if missing: team or squad, problem in 1-2 sentences, customers, hypothesis, bet link.
|
|
13
13
|
|
|
14
14
|
Operating rules:
|
|
15
15
|
- English by default. Domain terms stay native if team uses them.
|
|
16
16
|
- Never invent. Mark gaps with `NOT FOUND - NEEDS REVIEW: {detail}`.
|
|
17
|
-
- Voice: read .claude/
|
|
17
|
+
- Voice: read .claude/agents/product-manager/guides/writing-style.md. No em-dashes. Mermaid not ASCII.
|
|
18
18
|
- Specific over generic. Real numbers, names, quotes.
|
|
19
19
|
|
|
20
20
|
Return format: see .claude/commands/product-manager/run.md. Include paths, scores, attempts, publish status, blockers.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Staff Software Engineer Agent
|
|
2
|
+
|
|
3
|
+
Drives plan, dev, test, and pr stages across backend, web, mobile, and devops. Per-project conventions in each repo's `.claude/conventions/` override defaults.
|
|
4
|
+
|
|
5
|
+
Registered in [`AGENTS.md`](../../../AGENTS.md). Agent definition: [`staff-software-engineer.md`](../staff-software-engineer.md).
|
|
6
|
+
|
|
7
|
+
## Slash commands
|
|
8
|
+
|
|
9
|
+
- `/sse:plan`: generate an implementation plan from an approved PRP
|
|
10
|
+
- `/sse:dev`: implement the plan in code, run convention gates
|
|
11
|
+
- `/sse:test`: run the project test suite
|
|
12
|
+
- `/sse:pr`: open the draft PR
|
|
13
|
+
- `/sse:run`: full pipeline, plan to pr
|
|
14
|
+
|
|
15
|
+
Also invokable as sub-agent via Task tool with `subagent_type: "staff-software-engineer"`.
|
|
16
|
+
|
|
17
|
+
## Tree
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
.claude/agents/staff-software-engineer/ ← definitions
|
|
21
|
+
├── README.md this file
|
|
22
|
+
├── skills/
|
|
23
|
+
│ ├── backend/SKILL.md Java/Spring defaults
|
|
24
|
+
│ ├── web/SKILL.md Vue/React defaults
|
|
25
|
+
│ ├── mobile/SKILL.md iOS/Android defaults
|
|
26
|
+
│ └── devops/SKILL.md CI/IaC defaults
|
|
27
|
+
├── guides/
|
|
28
|
+
│ ├── pipeline.md retry, approval, token accounting
|
|
29
|
+
│ ├── coding-style.md team code style
|
|
30
|
+
│ ├── commit-style.md Conventional Commits with TICKET
|
|
31
|
+
│ └── conventions-override.md how project overrides work
|
|
32
|
+
├── sensors/ plan, dev, test, pr structure + conventions
|
|
33
|
+
└── evals/ plan/dev/test/pr quality rubrics
|
|
34
|
+
|
|
35
|
+
.claude/runtime/ ← state + outputs
|
|
36
|
+
├── hooks/staff-software-engineer/ phase markers, sensor gates
|
|
37
|
+
├── scripts/staff-software-engineer/ symlinks to PM scripts (sensor-runner, token-phase)
|
|
38
|
+
└── outputs/sse/
|
|
39
|
+
├── plan/ generated plans
|
|
40
|
+
├── dev/ dev summaries
|
|
41
|
+
├── test/ test results
|
|
42
|
+
├── pr/ opened PR records
|
|
43
|
+
├── tokens/ per-feature phase tokens JSON
|
|
44
|
+
└── .markers/ phase start/end markers (transient)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## How conventions work
|
|
48
|
+
|
|
49
|
+
The plugin holds team defaults per area. Each project repo can override by adding:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
{repo-root}/.claude/conventions/{area}.md
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Example for the `recon-service` repo:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
recon-service/.claude/conventions/backend.md
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Plugin skills read both. Project rules win. See `guides/conventions-override.md`.
|
|
62
|
+
|
|
63
|
+
## Where to edit
|
|
64
|
+
|
|
65
|
+
| Change | File |
|
|
66
|
+
|--------|------|
|
|
67
|
+
| Pipeline order | guides/pipeline.md |
|
|
68
|
+
| Retry count | guides/pipeline.md (Max attempts) |
|
|
69
|
+
| Plan template/rules | skills/backend/SKILL.md (etc per area), commands/plan.md |
|
|
70
|
+
| Eval threshold | evals/plan-quality.md (Threshold) |
|
|
71
|
+
| Code style | guides/coding-style.md |
|
|
72
|
+
| Commit format | guides/commit-style.md |
|
|
73
|
+
| Test command detection | commands/test.md |
|
|
74
|
+
| PR template | commands/pr.md, hooks/post-eval-pr.sh |
|
|
75
|
+
| Sensors | sensors/*.md |
|
|
76
|
+
|
|
77
|
+
## Connects to PM plugin
|
|
78
|
+
|
|
79
|
+
`/sse:run` reads the latest approved PRP from `.claude/runtime/outputs/pm/prp/`. The feature_id flows through: PM plugin creates `2026-05-12-billing-tz-fix`, SSE plugin reuses the same id and writes its phases to the same `.claude/runtime/outputs/sse/tokens/{feature_id}.json` file (per `guides/pipeline.md`).
|
|
80
|
+
|
|
81
|
+
Full lifecycle in one JSON: PRD generate, PRD validate, PRP generate, PRP validate, plan generate, plan validate, dev, test, pr.
|
|
82
|
+
|
|
83
|
+
## Setup
|
|
84
|
+
|
|
85
|
+
Hooks registered in `.claude/settings.json` under PostToolUse. Token script reused from the PM plugin via symlinks in `scripts/`.
|
|
86
|
+
|
|
87
|
+
PR opening requires the `gh` CLI authenticated. `pr.md` command details ticket detection and template.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Conventions Override
|
|
2
2
|
|
|
3
|
-
How project-specific conventions override
|
|
3
|
+
How project-specific conventions override agent defaults.
|
|
4
4
|
|
|
5
5
|
## Path
|
|
6
6
|
|
|
@@ -26,7 +26,7 @@ When skill or command generates code:
|
|
|
26
26
|
2. Check if `cwd/.claude/conventions/{area}.md` exists.
|
|
27
27
|
3. If yes, read it. Rules override or add to defaults.
|
|
28
28
|
4. On conflict, project wins.
|
|
29
|
-
5. No project file, use
|
|
29
|
+
5. No project file, use agent defaults only.
|
|
30
30
|
|
|
31
31
|
## What goes in project conventions file
|
|
32
32
|
|
|
@@ -58,7 +58,7 @@ Keep short. Document what is DIFFERENT, not what is shared with defaults.
|
|
|
58
58
|
|
|
59
59
|
## Avoiding drift
|
|
60
60
|
|
|
61
|
-
If convention you wrote for repo applies to others, consider promoting to
|
|
61
|
+
If convention you wrote for repo applies to others, consider promoting to agent defaults (skills/{area}/SKILL.md). Per-repo files hold genuine repo-specific decisions.
|
|
62
62
|
|
|
63
63
|
## Versioning
|
|
64
64
|
|
|
@@ -40,15 +40,19 @@ Triggers hooks/post-eval-{stage}.sh.
|
|
|
40
40
|
|
|
41
41
|
Phases tracked per feature_id (matches PRD/PRP feature_id from PM plugin):
|
|
42
42
|
- plan-generate, plan-validate
|
|
43
|
-
- dev
|
|
44
|
-
- test
|
|
45
|
-
- pr
|
|
43
|
+
- dev-generate, dev-validate
|
|
44
|
+
- test-generate, test-validate
|
|
45
|
+
- pr-generate, pr-validate
|
|
46
46
|
|
|
47
|
-
Markers in outputs/.markers/{feature_id}.{phase}.{start|end}, each `{"timestamp": ISO, "session_id": ""}`.
|
|
47
|
+
Markers in .claude/runtime/outputs/sse/.markers/{feature_id}.{phase}.{start|end}, each `{"timestamp": ISO, "session_id": ""}`.
|
|
48
|
+
Flow per stage:
|
|
49
|
+
1. Skill writes `{stage}-generate.start` before drafting artifact.
|
|
50
|
+
2. Write tool fires post-write-sse.sh → writes `{stage}-generate.end` + `{stage}-validate.start`.
|
|
51
|
+
3. Skill appends approval marker via Edit → fires post-eval-sse.sh → writes `{stage}-validate.end` + runs scripts/token-phase.py for both phases.
|
|
48
52
|
|
|
49
|
-
Tokens land in shared file with PM plugin:
|
|
53
|
+
Tokens land in shared file with PM plugin: `.claude/runtime/outputs/sse/tokens/{feature_id}.json`. Same file collects PM phases (prd-generate, prd-validate, prp-generate, prp-validate) and SSE phases (plan-generate, plan-validate, dev, test, pr). Totals cover full feature lifecycle.
|
|
50
54
|
|
|
51
|
-
To merge with PM tokens file, SSE token-phase.py writes to same path under this plugin's outputs/tokens/, then small step in commands/run.md syncs (or symlinks) with PM tokens dir. v1: SSE keeps own outputs/tokens/{feature_id}.json. v2: merge.
|
|
55
|
+
To merge with PM tokens file, SSE token-phase.py writes to same path under this plugin's .claude/runtime/outputs/sse/tokens/, then small step in commands/run.md syncs (or symlinks) with PM tokens dir. v1: SSE keeps own .claude/runtime/outputs/sse/tokens/{feature_id}.json. v2: merge.
|
|
52
56
|
|
|
53
57
|
## Orchestrator order
|
|
54
58
|
|
|
@@ -66,4 +70,4 @@ To merge with PM tokens file, SSE token-phase.py writes to same path under this
|
|
|
66
70
|
|
|
67
71
|
## Conventions override
|
|
68
72
|
|
|
69
|
-
Before any code generation, read `guides/conventions-override.md` and check `cwd/.claude/conventions/{area}.md`. Project-specific rules win over
|
|
73
|
+
Before any code generation, read `guides/conventions-override.md` and check `cwd/.claude/conventions/{area}.md`. Project-specific rules win over agent defaults.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Type: deterministic
|
|
4
4
|
Mode: hard gate
|
|
5
5
|
|
|
6
|
-
Validates dev summary doc at
|
|
6
|
+
Validates dev summary doc at `.claude/runtime/outputs/sse/dev/{feature_id}.md`.
|
|
7
7
|
|
|
8
8
|
## Required sections
|
|
9
9
|
|
|
@@ -30,7 +30,7 @@ Validates dev summary doc at `outputs/dev/{feature_id}.md`.
|
|
|
30
30
|
## Required metadata
|
|
31
31
|
|
|
32
32
|
Header must declare:
|
|
33
|
-
- Source plan (path to
|
|
33
|
+
- Source plan (path to `.claude/runtime/outputs/sse/plan/{feature_id}.md`)
|
|
34
34
|
- Branch
|
|
35
35
|
- Area (backend | web | mobile | devops)
|
|
36
36
|
- Date
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Type: deterministic
|
|
4
4
|
Mode: hard gate
|
|
5
5
|
|
|
6
|
-
Validates PR record at
|
|
6
|
+
Validates PR record at `.claude/runtime/outputs/sse/pr/{feature_id}.md`.
|
|
7
7
|
|
|
8
8
|
## Required sections
|
|
9
9
|
|
|
@@ -29,8 +29,8 @@ Validates PR record at `outputs/pr/{feature_id}.md`.
|
|
|
29
29
|
## Required metadata
|
|
30
30
|
|
|
31
31
|
Header must declare:
|
|
32
|
-
- Source plan (path to
|
|
33
|
-
- Source dev (path to
|
|
32
|
+
- Source plan (path to `.claude/runtime/outputs/sse/plan/{feature_id}.md`)
|
|
33
|
+
- Source dev (path to `.claude/runtime/outputs/sse/dev/{feature_id}.md`)
|
|
34
34
|
- Branch
|
|
35
35
|
- Date
|
|
36
36
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Type: deterministic
|
|
4
4
|
Mode: hard gate
|
|
5
5
|
|
|
6
|
-
Validates test report at
|
|
6
|
+
Validates test report at `.claude/runtime/outputs/sse/test/{feature_id}.md`.
|
|
7
7
|
|
|
8
8
|
## Required sections
|
|
9
9
|
|
|
@@ -28,7 +28,7 @@ Validates test report at `outputs/test/{feature_id}.md`.
|
|
|
28
28
|
## Required metadata
|
|
29
29
|
|
|
30
30
|
Header must declare:
|
|
31
|
-
- Source dev (path to
|
|
31
|
+
- Source dev (path to `.claude/runtime/outputs/sse/dev/{feature_id}.md`)
|
|
32
32
|
- Framework (maven | gradle | npm | pytest | other)
|
|
33
33
|
- Date
|
|
34
34
|
|
|
@@ -7,19 +7,19 @@ model: opus
|
|
|
7
7
|
|
|
8
8
|
Staff Software Engineer.
|
|
9
9
|
|
|
10
|
-
When invoked, run /sse:run end to end. Follow .claude/
|
|
10
|
+
When invoked, run /sse:run end to end. Follow .claude/agents/staff-software-engineer/guides/pipeline.md.
|
|
11
11
|
|
|
12
12
|
Ask once if missing:
|
|
13
|
-
- source PRP path (or read latest from .claude/
|
|
13
|
+
- source PRP path (or read latest from .claude/runtime/outputs/pm/prp/)
|
|
14
14
|
- target repo path
|
|
15
15
|
- area: backend, web, mobile, or devops (auto-detect from repo files if possible)
|
|
16
16
|
|
|
17
17
|
Operating rules:
|
|
18
18
|
- English by default. Domain terms stay native if team uses them.
|
|
19
|
-
- Read project conventions first. Repo's .claude/conventions/{area}.md (if present) overrides
|
|
19
|
+
- Read project conventions first. Repo's .claude/conventions/{area}.md (if present) overrides agent defaults. See .claude/agents/staff-software-engineer/guides/conventions-override.md.
|
|
20
20
|
- Match repo style. Read 3+ similar files before writing.
|
|
21
21
|
- Never invent class names, file paths, helpers. If unknown, `TBD - verify with tech lead`.
|
|
22
|
-
- Voice: read .claude/
|
|
22
|
+
- Voice: read .claude/agents/staff-software-engineer/guides/coding-style.md and .claude/agents/staff-software-engineer/guides/commit-style.md. No em-dashes. Mermaid not ASCII.
|
|
23
23
|
- Tests for every feature/bugfix.
|
|
24
24
|
|
|
25
25
|
Return format: see .claude/commands/sse/run.md. Include paths, scores, gates, PR url, blockers.
|
|
@@ -6,6 +6,6 @@ Reset pipeline.
|
|
|
6
6
|
|
|
7
7
|
1. Confirm user wants to abandon active pipeline. Show `python3 .claude/scripts/pipeline.py render` so they see what they drop.
|
|
8
8
|
2. On confirmation: `python3 .claude/scripts/pipeline.py clear`.
|
|
9
|
-
3. Output files under `.claude/
|
|
9
|
+
3. Output files under `.claude/runtime/outputs/` not deleted. Only in-memory state cleared.
|
|
10
10
|
|
|
11
11
|
Status bar returns to idle after reset.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
description: Generate a Product Requirements Document for an team squad. Business-facing artifact. Sensors and evals gate.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
Generate PRD. Follow .claude/
|
|
5
|
+
Generate PRD. Follow .claude/agents/product-manager/guides/pipeline.md for retry, approval, publish.
|
|
6
6
|
|
|
7
7
|
Print header card before drafting and footer card after gates run. Format: .claude/scripts/stage-card.md.
|
|
8
8
|
|
|
@@ -11,24 +11,24 @@ Ask once if missing: squad, problem in 1-2 sentences, customers, hypothesis, bet
|
|
|
11
11
|
Compute feature_id = {YYYY-MM-DD}-{squad}-{slug}. Before generating, write phase start marker:
|
|
12
12
|
|
|
13
13
|
```
|
|
14
|
-
.claude/
|
|
14
|
+
.claude/runtime/outputs/pm/.markers/{feature_id}.prd-generate.start
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Content: `{"timestamp": "<ISO-8601 UTC now>", "session_id": ""}`
|
|
18
18
|
|
|
19
19
|
Read:
|
|
20
|
-
- .claude/
|
|
21
|
-
- .claude/
|
|
22
|
-
- .claude/
|
|
23
|
-
- .claude/
|
|
24
|
-
- .claude/
|
|
25
|
-
- .claude/
|
|
20
|
+
- .claude/agents/product-manager/guides/product-guidelines.md
|
|
21
|
+
- .claude/agents/product-manager/guides/prd-guidelines.md
|
|
22
|
+
- .claude/agents/product-manager/guides/writing-style.md
|
|
23
|
+
- .claude/agents/product-manager/guides/templates/prd.md
|
|
24
|
+
- .claude/agents/product-manager/guides/pipeline.md
|
|
25
|
+
- .claude/agents/product-manager/guides/examples/good-prd-example.md
|
|
26
26
|
|
|
27
|
-
Save to .claude/
|
|
27
|
+
Save to .claude/runtime/outputs/pm/prd/{feature_id}.md.
|
|
28
28
|
|
|
29
|
-
Sensors: .claude/
|
|
29
|
+
Sensors: .claude/agents/product-manager/sensors/prd-structure.md, .claude/agents/product-manager/sensors/prd-acceptance-criteria.md.
|
|
30
30
|
|
|
31
|
-
Evals: .claude/
|
|
31
|
+
Evals: .claude/agents/product-manager/evals/prd-quality.md, .claude/agents/product-manager/evals/prd-readiness.md.
|
|
32
32
|
|
|
33
33
|
After save, reply with this exact shape (name actual sensors/evals/guides that ran, don't abbreviate):
|
|
34
34
|
|
|
@@ -2,37 +2,37 @@
|
|
|
2
2
|
description: Generate a Product Requirements Prompt for engineering handoff. Needs an approved PRD. Sensors, link validation, and eval gates.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
Generate PRP. Follow .claude/
|
|
5
|
+
Generate PRP. Follow .claude/agents/product-manager/guides/pipeline.md for retry, approval, publish.
|
|
6
6
|
|
|
7
7
|
Print header card before drafting and footer card after gates run. Format: .claude/scripts/stage-card.md.
|
|
8
8
|
|
|
9
|
-
Source PRD: user passes path, use it. Else pick most recent in .claude/
|
|
9
|
+
Source PRD: user passes path, use it. Else pick most recent in .claude/runtime/outputs/pm/prd/. None found, abort. Tell user to run /product-manager:prd first. .claude/runtime/hooks/product-manager/pre-prp-check.sh blocks if PRD lacks approved marker.
|
|
10
10
|
|
|
11
|
-
Compute feature_id from source PRD filename (basename without .md). Save PRP to .claude/
|
|
11
|
+
Compute feature_id from source PRD filename (basename without .md). Save PRP to .claude/runtime/outputs/pm/prp/{feature_id}.md so it matches.
|
|
12
12
|
|
|
13
13
|
Before generating, write phase start marker:
|
|
14
14
|
|
|
15
15
|
```
|
|
16
|
-
.claude/
|
|
16
|
+
.claude/runtime/outputs/pm/.markers/{feature_id}.prp-generate.start
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Content: `{"timestamp": "<ISO-8601 UTC now>", "session_id": ""}`
|
|
20
20
|
|
|
21
21
|
Read:
|
|
22
22
|
- source PRD
|
|
23
|
-
- .claude/
|
|
24
|
-
- .claude/
|
|
25
|
-
- .claude/
|
|
26
|
-
- .claude/
|
|
27
|
-
- .claude/
|
|
23
|
+
- .claude/agents/product-manager/guides/prp-guidelines.md
|
|
24
|
+
- .claude/agents/product-manager/guides/writing-style.md
|
|
25
|
+
- .claude/agents/product-manager/guides/templates/prp.md
|
|
26
|
+
- .claude/agents/product-manager/guides/pipeline.md
|
|
27
|
+
- .claude/agents/product-manager/guides/examples/good-prp-example.md
|
|
28
28
|
|
|
29
29
|
Explore target repos. Ask user for repo paths if not provided. Use Grep and Read to map files. Capture file:line. Never invent paths.
|
|
30
30
|
|
|
31
|
-
Save to .claude/
|
|
31
|
+
Save to .claude/runtime/outputs/pm/prp/{feature_id}.md.
|
|
32
32
|
|
|
33
|
-
Sensors: .claude/
|
|
33
|
+
Sensors: .claude/agents/product-manager/sensors/prp-structure.md, .claude/agents/product-manager/sensors/prp-context-quality.md, .claude/agents/product-manager/sensors/prp-links.md.
|
|
34
34
|
|
|
35
|
-
Evals: .claude/
|
|
35
|
+
Evals: .claude/agents/product-manager/evals/prp-quality.md, .claude/agents/product-manager/evals/prp-context-readiness.md.
|
|
36
36
|
|
|
37
37
|
After save, reply with this exact shape (name actual sensors/evals/guides that ran):
|
|
38
38
|
|
|
@@ -5,29 +5,33 @@ description: Run the full PM pipeline. PRD then PRP, with sensor and eval gates
|
|
|
5
5
|
Run end to end.
|
|
6
6
|
|
|
7
7
|
1. Invoke /product-manager:prd. Wait for approval marker.
|
|
8
|
-
2. .claude/
|
|
8
|
+
2. .claude/runtime/hooks/product-manager/pre-prp-check.sh validates PRD.
|
|
9
9
|
3. Invoke /product-manager:prp using just-approved PRD.
|
|
10
10
|
4. Return summary.
|
|
11
11
|
|
|
12
|
-
Follow .claude/
|
|
12
|
+
Follow .claude/agents/product-manager/guides/pipeline.md. Read .claude/agents/product-manager.md for inputs and rules.
|
|
13
13
|
|
|
14
14
|
Return format. Name every sensor, eval, guide that ran. Generic summaries not acceptable — list specifics so user sees what was checked and loaded.
|
|
15
15
|
|
|
16
16
|
```
|
|
17
17
|
Pipeline complete.
|
|
18
18
|
|
|
19
|
-
PRD: .claude/
|
|
19
|
+
PRD: .claude/runtime/outputs/pm/prd/{path}
|
|
20
20
|
sensors: prd-structure ok, prd-acceptance-criteria ok ({sub-checks})
|
|
21
21
|
eval: prd-quality {score}/10, prd-readiness {score}/10 (attempts: N)
|
|
22
22
|
guides: product-guidelines.md, prd-guidelines.md, writing-style.md, templates/prd.md
|
|
23
23
|
refs: business-info.md, squads/{squad}/context.md
|
|
24
24
|
|
|
25
|
-
PRP: .claude/
|
|
25
|
+
PRP: .claude/runtime/outputs/pm/prp/{path}
|
|
26
26
|
sensors: prp-structure ok, prp-context-quality ok, prp-links ok
|
|
27
27
|
eval: prp-quality {score}/10, prp-context-readiness {score}/10 (attempts: N)
|
|
28
28
|
guides: prp-guidelines.md, writing-style.md, templates/prp.md
|
|
29
29
|
refs: prd/{feature_id}.md, target repo paths probed
|
|
30
30
|
|
|
31
|
+
Tokens: outputs/tokens/{feature_id}.json
|
|
32
|
+
totals: in={N} out={N} cache_r={N}
|
|
33
|
+
phases: prd-generate, prd-validate, prp-generate, prp-validate
|
|
34
|
+
|
|
31
35
|
Confluence: {published to {space-key}: {url} | skipped, reason}
|
|
32
36
|
|
|
33
37
|
Blockers:
|