shapeup-sdlc 3.18.3 → 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.
Files changed (141) hide show
  1. package/.claude/settings.local.example.json +2 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/AGENTS.md +115 -56
  4. package/README.md +101 -143
  5. package/SECURITY.md +16 -25
  6. package/agents/orient.md +14 -0
  7. package/agents/qa-edge-hunter.md +13 -0
  8. package/agents/spec-evaluator.md +14 -0
  9. package/agents/task-executor.md +14 -0
  10. package/bin/init.mjs +13 -16
  11. package/bin/lib/grant.mjs +8 -19
  12. package/commands/build.md +9 -14
  13. package/commands/eval.md +3 -3
  14. package/commands/hammer.md +9 -5
  15. package/commands/retro.md +12 -11
  16. package/commands/scopes.md +1 -12
  17. package/commands/ship.md +45 -88
  18. package/commands/wire.md +1 -8
  19. package/hooks/dispatch-receipt.mjs +94 -8
  20. package/hooks/hooks.json +0 -41
  21. package/hooks/lib/decision.mjs +6 -9
  22. package/hooks/lib/tier.mjs +50 -0
  23. package/hooks/sandbox-guard.mjs +140 -64
  24. package/kernel/gate.mjs +203 -22
  25. package/kernel/harness.mjs +20 -67
  26. package/kernel/init/run.mjs +175 -523
  27. package/kernel/lib/contract.mjs +9 -93
  28. package/kernel/lib/floor.mjs +64 -0
  29. package/kernel/lib/paths.mjs +39 -112
  30. package/kernel/order.mjs +157 -0
  31. package/kernel/probe/digest.mjs +2 -38
  32. package/kernel/schemas/domain.schema.json +146 -1125
  33. package/kernel/schemas/work-order.schema.json +8 -4
  34. package/kernel/schemas/work-result.schema.json +1 -1
  35. package/kernel/verify/envelope.mjs +2 -2
  36. package/kernel/verify/skills.mjs +27 -8
  37. package/kernel/verify/t0.mjs +2 -2
  38. package/package.json +4 -2
  39. package/skills/building/SKILL.md +144 -0
  40. package/skills/building/resources/gates.md +76 -0
  41. package/skills/building/resources/guidance.md +23 -0
  42. package/skills/{translator/references/preservation-rules.md → building/resources/intake-preservation.md} +1 -1
  43. package/skills/building/resources/intake.md +157 -0
  44. package/skills/building/resources/orders.md +69 -0
  45. package/skills/{ba-pitch-analyzer/references → building/resources/plan-references}/doc-schemas.md +1 -1
  46. package/skills/{ba-pitch-analyzer/references → building/resources/plan-references}/task-generation.md +13 -13
  47. package/skills/{ba-pitch-analyzer/references → building/resources/plan-references}/test-surface.md +6 -7
  48. package/skills/building/resources/plan-scopes.md +95 -0
  49. package/skills/building/resources/plan-spec.md +102 -0
  50. package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/_index.tmpl.md +1 -1
  51. package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/assess-report.tmpl.md +10 -11
  52. package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/run-state.tmpl.md +4 -4
  53. package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/scope-summary.tmpl.md +2 -2
  54. package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/synthesis.tmpl.md +4 -4
  55. package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/usecase.tmpl.md +2 -2
  56. package/skills/building/resources/plan-wire.md +82 -0
  57. package/skills/building/resources/plan.md +98 -0
  58. package/skills/building/resources/retro-research.md +60 -0
  59. package/skills/building/resources/retro-scan.md +49 -0
  60. package/skills/building/resources/retro.md +225 -0
  61. package/skills/building/resources/rounds.md +78 -0
  62. package/skills/building/resources/stop.md +127 -0
  63. package/skills/orient/SKILL.md +37 -37
  64. package/skills/qa-edge-hunter/SKILL.md +14 -14
  65. package/skills/shapeup/SKILL.md +5 -5
  66. package/skills/shapeup/resources/breadboarding.md +1 -1
  67. package/skills/shapeup/resources/context-compaction.md +5 -5
  68. package/skills/shapeup/resources/shaping.md +1 -1
  69. package/skills/spec-evaluator/SKILL.md +17 -21
  70. package/skills/spec-evaluator/references/dimension-contract.md +1 -1
  71. package/skills/spec-evaluator/references/dimensions/completeness.md +3 -3
  72. package/skills/spec-evaluator/references/dimensions/spec-conformance.md +1 -1
  73. package/skills/spec-evaluator/references/dimensions/test-surface-conformance.md +5 -5
  74. package/skills/task-executor/SKILL.md +11 -15
  75. package/commands/hill.md +0 -10
  76. package/hooks/gate-intake.mjs +0 -109
  77. package/hooks/gate-zerowork.mjs +0 -349
  78. package/hooks/tier-guard.mjs +0 -162
  79. package/kernel/compile.mjs +0 -1419
  80. package/kernel/init/fit.mjs +0 -199
  81. package/kernel/init/run-args.mjs +0 -206
  82. package/kernel/lib/breadboard.mjs +0 -165
  83. package/kernel/probe/attempts.mjs +0 -161
  84. package/kernel/probe/concurrency.mjs +0 -535
  85. package/kernel/probe/eval.mjs +0 -405
  86. package/kernel/probe/hunt.mjs +0 -104
  87. package/kernel/probe/leg.mjs +0 -229
  88. package/kernel/probe/owner.mjs +0 -142
  89. package/kernel/probe/requirements.mjs +0 -328
  90. package/kernel/probe/resume.mjs +0 -1110
  91. package/kernel/probe/rounds.mjs +0 -115
  92. package/kernel/probe/staged.mjs +0 -83
  93. package/kernel/probe/stats.mjs +0 -477
  94. package/kernel/probe/t0.mjs +0 -115
  95. package/kernel/reduce/board.mjs +0 -350
  96. package/kernel/reduce/graph.mjs +0 -482
  97. package/kernel/reduce/hill.mjs +0 -322
  98. package/kernel/reduce/ingest.mjs +0 -767
  99. package/kernel/reduce/leftovers.mjs +0 -159
  100. package/kernel/reduce/ship.mjs +0 -529
  101. package/kernel/reduce/snapshot.mjs +0 -291
  102. package/kernel/reduce/verdict.mjs +0 -172
  103. package/kernel/report/export.mjs +0 -384
  104. package/kernel/report/facts.mjs +0 -234
  105. package/kernel/verify/budget.mjs +0 -153
  106. package/kernel/verify/build.mjs +0 -428
  107. package/kernel/verify/dispatch.mjs +0 -114
  108. package/kernel/verify/spec.mjs +0 -975
  109. package/kernel/verify/trace.mjs +0 -604
  110. package/skills/ba-pitch-analyzer/SKILL.md +0 -204
  111. package/skills/coach/SKILL.md +0 -397
  112. package/skills/hill-chart/SKILL.md +0 -154
  113. package/skills/hill-chart/assets/dashboard.template.html +0 -1432
  114. package/skills/scope-architect/SKILL.md +0 -174
  115. package/skills/scope-hammer/SKILL.md +0 -231
  116. package/skills/solution-architect/SKILL.md +0 -158
  117. package/skills/tech-lead/SKILL.md +0 -151
  118. package/skills/tech-lead/references/gates.md +0 -605
  119. package/skills/tech-lead/references/protocol.md +0 -889
  120. package/skills/tech-lead/references/tiny-lane.md +0 -53
  121. package/skills/tech-lead/workflows/shapeup-run.js +0 -2187
  122. package/skills/translator/SKILL.md +0 -258
  123. /package/skills/{ba-pitch-analyzer/references → building/resources/plan-references}/contract-patterns.md +0 -0
  124. /package/skills/{ba-pitch-analyzer/references → building/resources/plan-references}/ddd-patterns.md +0 -0
  125. /package/skills/{ba-pitch-analyzer/references → building/resources/plan-references}/integration-analysis.md +0 -0
  126. /package/skills/{ba-pitch-analyzer/references → building/resources/plan-references}/ux-behavior-patterns.md +0 -0
  127. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/api-feasibility.tmpl.md +0 -0
  128. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/contracts/be-service.contract.tmpl.md +0 -0
  129. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/contracts/offline-storage.contract.tmpl.md +0 -0
  130. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/contracts/third-party-api.contract.tmpl.md +0 -0
  131. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/cross-context/context-map.tmpl.md +0 -0
  132. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/cross-context/event-choreography.tmpl.md +0 -0
  133. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/cross-context/migration-plan.tmpl.md +0 -0
  134. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/cross-context/team-handoff.tmpl.md +0 -0
  135. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/domain-model.tmpl.md +0 -0
  136. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/feedback.tmpl.md +0 -0
  137. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/integration.tmpl.md +0 -0
  138. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/task-board.tmpl.md +0 -0
  139. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/task-spike.tmpl.md +0 -0
  140. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/task.tmpl.md +0 -0
  141. /package/skills/{ba-pitch-analyzer/assets/templates → building/resources/plan-templates}/ux-behavior.tmpl.md +0 -0
@@ -1,154 +0,0 @@
1
- ---
2
- name: hill-chart
3
- description: "Use this skill whenever the user wants to see how their Shape Up build(s) are progressing — a Hill Chart, a build dashboard, or a portfolio view across pitches. Triggers on: \"show me the hill chart\", \"how's my build doing\", \"how are my pitches doing\", \"visualize my pitches\", \"render the dashboard\", \"what's the status of my runs\", \"build portfolio\", or any request to see a Shape Up run's progress visually rather than read as prose. Renders a self-contained HTML dashboard: a portfolio card per pitch, and per-pitch detail with a mechanical Hill Chart, an attention list, a scope board, round history, and the full run graph one click deeper."
4
- ---
5
-
6
- # Hill Chart
7
-
8
- **Renders what the harness already derives mechanically — never invents a position, never
9
- re-runs a computation that would erase true history.**
10
-
11
- You are not a worker: no WorkOrder, no WorkResult, invoked directly by the user (or by `/hill`)
12
- exactly like `shapeup` is. There is nothing to declare in
13
- `kernel/schemas/domain.schema.json` and nothing to teach `harness compile` or
14
- `harness reduce ingest` — those steps exist only for dispatched workers.
15
-
16
- ## What you read
17
-
18
- Two tiers, per project (`kernel/lib/paths.mjs`'s `sharedRoot`/`localRoot`):
19
-
20
- - **COMMITTED** — `shapeup/<slug>/hill/<scope-id>.yml`, one file per scope, two fields
21
- (`scope_id:`, `phase:`), a 4-value enum: `UPHILL_UNKNOWN → UPHILL_SOLVED →
22
- DOWNHILL_EXECUTION → FINISHED`. Written by `harness reduce hill`. Survives even after a
23
- project's local run trace is cleaned up post-ship.
24
- - **LOCAL** — `.shapeup/<slug>/graph.jsonl`, the run graph (see `kernel/reduce/graph.mjs`).
25
- Written by `harness reduce graph`. Supplies everything else: current-round verdict health,
26
- gates, orders, rounds, dangling references.
27
-
28
- ## Discovery
29
-
30
- Do not `readdir` either root bare — both hold non-pitch entries (`shapeup/knowledge-base/`,
31
- `.shapeup/metrics/`, `.shapeup/exports/`, `.shapeup/pitch-archive/`, loose files). A directory
32
- counts as a pitch when:
33
-
34
- - **Committed**: `shapeup/<slug>/` contains `hill/`, `scopes/`, or `shaping/`.
35
- - **Local**: `.shapeup/<slug>/` contains `receipt.json` (the mechanical "a run started" fact).
36
-
37
- Union the two; track `hasCommitted` / `hasLocal` per slug independently. A slug can be
38
- committed-only (shipped, local trace cleaned up), local-only (very early, before scoping), or
39
- both.
40
-
41
- ## Freshness — read this before shelling out
42
-
43
- For every slug where `hasLocal` is true, freshen before reading:
44
-
45
- ```bash
46
- node "${CLAUDE_PLUGIN_ROOT}/kernel/harness.mjs" reduce hill --slug <slug>
47
- node "${CLAUDE_PLUGIN_ROOT}/kernel/harness.mjs" reduce graph --slug <slug>
48
- ```
49
-
50
- **For a committed-only slug (`hasCommitted && !hasLocal`), NEVER call `reduce hill`.**
51
- `deriveHill()` folds whatever T0 verdicts, evaluation results and ledger rows exist in the LOCAL
52
- run trace; a committed-only pitch has none, because that trace was cleaned up after shipping.
53
-
54
- The runtime no longer takes that silence for an answer: a derivation whose run trace is absent
55
- declines to write anything and reports every scope as underived (`derived: false`), so the
56
- committed shards survive a call made in error. Treat that as a backstop, not a licence — an
57
- underived report is not a refresh, and rendering it as one would show a pitch's true `FINISHED`
58
- as freshly confirmed when nothing confirmed it. Read `shapeup/<slug>/hill/*.yml` for those slugs
59
- exactly as committed, and render them with the archived state the template already implements
60
- (see below). Same reasoning applies to `reduce graph` — there is no local trace to append from.
61
-
62
- ## Reading the hill shards
63
-
64
- Each `shapeup/<slug>/hill/<scope-id>.yml` is two lines:
65
-
66
- ```yaml
67
- scope_id: <scope-id>
68
- phase: <UPHILL_UNKNOWN|UPHILL_SOLVED|DOWNHILL_EXECUTION|FINISHED>
69
- ```
70
-
71
- Parse this yourself while reading it (it is two flat string fields — no YAML library needed and
72
- none should be added; the shipped template's browser-side JS stays dependency-free by construction).
73
- Build one `{ scope_id, phase }` object per file.
74
-
75
- ## Rendering — the injection contract
76
-
77
- The engine ships at `assets/dashboard.template.html` — a complete, self-contained HTML page
78
- (inline CSS/JS, no external fetch beyond Google Fonts, no build step). Do not rewrite it from a
79
- text description; read it, fill in real data, and write the result.
80
-
81
- 1. For each discovered slug, build one entry:
82
-
83
- ```js
84
- {
85
- slug: "<slug>",
86
- hasLocal: <bool>,
87
- hasCommitted: <bool>,
88
- hill: [ { scope_id: "...", phase: "..." }, ... ], // parsed from the *.yml shards, [] if none
89
- graphJsonl: "<the raw text of .shapeup/<slug>/graph.jsonl, or '' when hasLocal is false>"
90
- }
91
- ```
92
-
93
- 2. Collect all entries into an array, `entries`.
94
- 3. Compute `injected = JSON.stringify(JSON.stringify(entries))` — stringifying twice yields a
95
- JS string literal (its own quotes and escapes included) safe to splice into the template
96
- verbatim.
97
- 4. In the template text, replace the exact substring `"__HILL_CHART_EMBEDDED_DATA__"`
98
- (quotes included) with `injected`. Exactly one replacement, exactly that token.
99
- 5. Write the result. See "Where to write it" below for the required mechanism.
100
-
101
- The template's own boot code checks whether that constant still equals the literal placeholder
102
- (meaning nothing was injected) and falls back to an empty portfolio — the same state a project
103
- with no pitches yet would show. That fallback is what lets you smoke-test the un-injected
104
- template directly: it never throws, it just renders empty.
105
-
106
- ## Where to write it
107
-
108
- Write via `Bash`, **not** the `Write` or `Edit` tool:
109
-
110
- ```bash
111
- cat > ".shapeup/<slug>/dashboard/hill-chart-<UTC-stamp>.html" <<'HTML'
112
- <contents>
113
- HTML
114
- ```
115
-
116
- `hooks/sandbox-guard.mjs` gates `Edit`/`Write`/`MultiEdit` by substrate and only exempts paths
117
- under the *active order's own slug* (`.shapeup/<active-slug>/...`); a cross-slug portfolio file
118
- would not match that exemption if a build happens to be mid-dispatch in the same repo when you
119
- run, and would get hook-denied. The guard does not inspect `Bash`, so writing the file with a
120
- shell heredoc is unaffected by whichever order (if any) is currently active. Use:
121
-
122
- - `.shapeup/<slug>/dashboard/hill-chart-<stamp>.html` for a single pitch's dashboard.
123
- - `.shapeup/dashboard/portfolio-<stamp>.html` for the multi-pitch portfolio.
124
-
125
- Both are LOCAL and already covered by this project's `.shapeup/` gitignore rule — no new ignore
126
- entry needed.
127
-
128
- **If the current session's tool surface includes an Artifact-publishing tool** (as Claude Code /
129
- claude.ai sessions with artifacts enabled do), also publish the same file through it, following
130
- this repo's own `artifact-design` and `artifact-capabilities` skill guidance — the template is
131
- already self-contained and theme-aware, so this is a strictly additive step. The local file write
132
- above is the one guaranteed path in any host; treat the Artifact publish as a bonus, never the
133
- only way the user gets the result.
134
-
135
- ## Why the Hill Chart and the scope board are not redundant
136
-
137
- `hill.mjs`'s `hasGreen` is set by *any* T0-green verdict a scope has *ever* produced, and never
138
- resets. A scope can therefore sit at `DOWNHILL_EXECUTION` on the Hill Chart while its *current*
139
- attempt is red. The Hill Chart answers "how much uncertainty has been burned down, ever"; the
140
- scope board and round matrix answer "is the current attempt green, right now." The template
141
- renders both for exactly this reason — do not "simplify" one away later.
142
-
143
- ## Invocation
144
-
145
- ```bash
146
- # Whole portfolio, default
147
- /hill-chart
148
-
149
- # One pitch only
150
- /hill-chart envlint
151
- ```
152
-
153
- Standalone: discover, freshen, render, write, and (when available) publish — no flags beyond an
154
- optional slug filter. There is no `--order` form; this skill is never dispatched.