mandrel 1.93.0 → 2.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 (463) hide show
  1. package/.agents/README.md +59 -73
  2. package/.agents/agents/acceptance-critic.md +129 -0
  3. package/.agents/agents/story-worker.md +161 -0
  4. package/.agents/docs/SDLC.md +489 -1285
  5. package/.agents/docs/agentrc-reference.json +177 -67
  6. package/.agents/docs/configuration.md +108 -136
  7. package/.agents/docs/execution-reference.md +44 -22
  8. package/.agents/docs/quality-gates.md +13 -19
  9. package/.agents/docs/workflows.md +3 -3
  10. package/.agents/instructions.md +107 -108
  11. package/.agents/rules/ci-remediation.md +8 -12
  12. package/.agents/rules/git-conventions-reference.md +224 -0
  13. package/.agents/rules/git-conventions.md +42 -223
  14. package/.agents/rules/security-baseline.md +5 -0
  15. package/.agents/rules/testing-standards.md +106 -13
  16. package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
  17. package/.agents/schemas/agentrc.schema.json +71 -201
  18. package/.agents/schemas/lifecycle/ledger-record.schema.json +1 -1
  19. package/.agents/schemas/lifecycle/retro.end.schema.json +1 -1
  20. package/.agents/schemas/risk-verdict.schema.json +0 -13
  21. package/.agents/scripts/acceptance-eval.js +62 -18
  22. package/.agents/scripts/agents-bootstrap-github.js +1 -1
  23. package/.agents/scripts/analyze-execution.js +1 -1
  24. package/.agents/scripts/audit-to-stories.js +7 -7
  25. package/.agents/scripts/boot-sweep.js +1 -1
  26. package/.agents/scripts/check-context-budget.js +62 -5
  27. package/.agents/scripts/check-lifecycle-lint.js +6 -9
  28. package/.agents/scripts/check-prepush-recovery.js +1 -1
  29. package/.agents/scripts/cleanup-repo-test-temp.js +6 -1
  30. package/.agents/scripts/diagnose-friction.js +0 -6
  31. package/.agents/scripts/lib/Logger.js +6 -10
  32. package/.agents/scripts/lib/audit-suite/runner.js +2 -2
  33. package/.agents/scripts/lib/audit-suite/selector.js +5 -5
  34. package/.agents/scripts/lib/audit-to-stories/{seed-epic-from-findings.js → seed-from-findings.js} +9 -9
  35. package/.agents/scripts/lib/baselines/kernel.js +206 -18
  36. package/.agents/scripts/lib/baselines/kinds/maintainability.js +0 -4
  37. package/.agents/scripts/lib/baselines/reader.js +1 -6
  38. package/.agents/scripts/lib/bdd-runner-detect.js +5 -9
  39. package/.agents/scripts/lib/bootstrap/issue-forms-template.js +32 -33
  40. package/.agents/scripts/lib/bootstrap/project-bootstrap.js +56 -18
  41. package/.agents/scripts/lib/checks/core-bare-clean.js +2 -2
  42. package/.agents/scripts/lib/checks/index.js +2 -1
  43. package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +23 -21
  44. package/.agents/scripts/lib/cli/standard-args.js +13 -22
  45. package/.agents/scripts/lib/cli-args.js +16 -7
  46. package/.agents/scripts/lib/close-validation/gates.js +160 -22
  47. package/.agents/scripts/lib/config/acceptance-eval.js +52 -5
  48. package/.agents/scripts/lib/config/ci.js +6 -31
  49. package/.agents/scripts/lib/config/delivery-routing.js +103 -0
  50. package/.agents/scripts/lib/config/explain.js +57 -36
  51. package/.agents/scripts/lib/config/limits.js +17 -58
  52. package/.agents/scripts/lib/config/paths.js +0 -2
  53. package/.agents/scripts/lib/config/quality.js +1 -1
  54. package/.agents/scripts/lib/config/runners.js +17 -50
  55. package/.agents/scripts/lib/config/temp-paths.js +19 -14
  56. package/.agents/scripts/lib/config/worktree-isolation.js +0 -5
  57. package/.agents/scripts/lib/config-resolver.js +3 -8
  58. package/.agents/scripts/lib/config-settings-schema-delivery.js +46 -136
  59. package/.agents/scripts/lib/config-settings-schema-quality.js +17 -14
  60. package/.agents/scripts/lib/config-settings-schema.js +52 -38
  61. package/.agents/scripts/lib/dependency-parser.js +3 -2
  62. package/.agents/scripts/lib/doc-tiers.js +39 -4
  63. package/.agents/scripts/lib/duplicate-search.js +211 -41
  64. package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +1 -1
  65. package/.agents/scripts/lib/findings/promote-finding.js +5 -5
  66. package/.agents/scripts/lib/framework-version.js +2 -3
  67. package/.agents/scripts/lib/git-branch-cleanup.js +1 -10
  68. package/.agents/scripts/lib/git-branch-lifecycle.js +17 -22
  69. package/.agents/scripts/lib/git-utils.js +32 -6
  70. package/.agents/scripts/lib/github/framework-repo.js +6 -0
  71. package/.agents/scripts/lib/label-constants.js +10 -23
  72. package/.agents/scripts/lib/label-taxonomy.js +9 -43
  73. package/.agents/scripts/lib/observability/active-story-env.js +112 -3
  74. package/.agents/scripts/lib/observability/hook-heartbeat.js +187 -0
  75. package/.agents/scripts/lib/observability/source-classifier.js +3 -3
  76. package/.agents/scripts/lib/observability/tool-trace-hook.js +15 -4
  77. package/.agents/scripts/lib/onboard/init-tail.js +1 -3
  78. package/.agents/scripts/lib/orchestration/acceptance-clusters.js +111 -0
  79. package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +32 -4
  80. package/.agents/scripts/lib/orchestration/audit-lens-routing.js +128 -0
  81. package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +273 -0
  82. package/.agents/scripts/lib/orchestration/ceremony-routing.js +204 -0
  83. package/.agents/scripts/lib/orchestration/code-review.js +20 -268
  84. package/.agents/scripts/lib/orchestration/column-sync.js +1 -1
  85. package/.agents/scripts/lib/orchestration/consolidation-precondition.js +1 -1
  86. package/.agents/scripts/lib/orchestration/context-envelope.js +2 -5
  87. package/.agents/scripts/lib/orchestration/docs-digest.js +8 -8
  88. package/.agents/scripts/lib/orchestration/file-assumptions.js +7 -13
  89. package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +1 -1
  90. package/.agents/scripts/lib/orchestration/lifecycle/emit-loop-tick.js +8 -8
  91. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +2 -2
  92. package/.agents/scripts/lib/orchestration/lifecycle/ledger-writer.js +6 -3
  93. package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +17 -43
  94. package/.agents/scripts/lib/orchestration/lint-baseline-service.js +4 -4
  95. package/.agents/scripts/lib/orchestration/merge-block-class.js +1 -1
  96. package/.agents/scripts/lib/orchestration/phase-runner.js +3 -2
  97. package/.agents/scripts/lib/orchestration/plan-context.js +248 -266
  98. package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +3 -2
  99. package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +1 -1
  100. package/.agents/scripts/lib/orchestration/plan-navigation.js +92 -0
  101. package/.agents/scripts/lib/orchestration/plan-persist/fan-out-gate.js +61 -0
  102. package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +97 -0
  103. package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +223 -854
  104. package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +361 -0
  105. package/.agents/scripts/lib/orchestration/plan-persist/summary.js +35 -108
  106. package/.agents/scripts/lib/orchestration/plan-reachability.js +9 -14
  107. package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +1 -1
  108. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/authoring-context.js +14 -14
  109. package/.agents/scripts/lib/orchestration/planning/decomposer-context.js +27 -0
  110. package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/risk-verdict.js +3 -4
  111. package/.agents/scripts/lib/orchestration/post-merge/phases/branch-cleanup.js +2 -2
  112. package/.agents/scripts/lib/orchestration/post-merge/phases/dashboard-refresh.js +8 -20
  113. package/.agents/scripts/lib/orchestration/post-merge/phases/worktree-reap.js +3 -2
  114. package/.agents/scripts/lib/orchestration/pr-base-guard.js +18 -28
  115. package/.agents/scripts/lib/orchestration/preflight-cache.js +5 -5
  116. package/.agents/scripts/lib/orchestration/remote-verifier.js +1 -1
  117. package/.agents/scripts/lib/orchestration/resolve-plan-run.js +155 -0
  118. package/.agents/scripts/lib/orchestration/resolves-token.js +1 -1
  119. package/.agents/scripts/lib/orchestration/retro-perf-heuristics.js +8 -8
  120. package/.agents/scripts/lib/orchestration/retro-proposals.js +140 -79
  121. package/.agents/scripts/lib/orchestration/review-depth.js +26 -12
  122. package/.agents/scripts/lib/orchestration/review-providers/codex.js +2 -2
  123. package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +21 -56
  124. package/.agents/scripts/lib/orchestration/run-epilogue.js +426 -0
  125. package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +1 -1
  126. package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +1 -0
  127. package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +95 -41
  128. package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +16 -13
  129. package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +40 -0
  130. package/.agents/scripts/lib/orchestration/single-story-close/runner.js +11 -3
  131. package/.agents/scripts/lib/orchestration/spec-freshness.js +14 -205
  132. package/.agents/scripts/lib/orchestration/spec-section-validator.js +4 -5
  133. package/.agents/scripts/lib/orchestration/spec-spill.js +60 -0
  134. package/.agents/scripts/lib/orchestration/split-policy-validator.js +188 -0
  135. package/.agents/scripts/lib/orchestration/story-close/emit-blocked.js +49 -0
  136. package/.agents/scripts/lib/orchestration/story-close/phases/code-review.js +15 -12
  137. package/.agents/scripts/lib/orchestration/story-follow-ups.js +237 -0
  138. package/.agents/scripts/lib/orchestration/story-init-remote.js +47 -0
  139. package/.agents/scripts/lib/orchestration/story-plan-state.js +48 -0
  140. package/.agents/scripts/lib/orchestration/{epic-runner → story-progress}/story-run-progress-writer.js +3 -3
  141. package/.agents/scripts/lib/orchestration/structured-comment-parser.js +1 -1
  142. package/.agents/scripts/lib/orchestration/task-body-validator.js +8 -18
  143. package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +11 -61
  144. package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +189 -373
  145. package/.agents/scripts/lib/orchestration/ticket-validator.js +3 -8
  146. package/.agents/scripts/lib/orchestration/ticketing/bulk.js +0 -25
  147. package/.agents/scripts/lib/orchestration/ticketing/reads.js +29 -26
  148. package/.agents/scripts/lib/orchestration/ticketing/transition.js +5 -5
  149. package/.agents/scripts/lib/planning-corpus.js +16 -11
  150. package/.agents/scripts/lib/preflight-runner.js +2 -2
  151. package/.agents/scripts/lib/provider-factory.js +1 -1
  152. package/.agents/scripts/lib/qa/coverage-verdict.js +5 -5
  153. package/.agents/scripts/lib/single-story/confirm-merge-follow-ups.js +36 -0
  154. package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +1 -1
  155. package/.agents/scripts/lib/story-adjacency.js +11 -14
  156. package/.agents/scripts/lib/story-body/story-body.js +124 -70
  157. package/.agents/scripts/lib/story-plan.js +2 -4
  158. package/.agents/scripts/lib/templates/decomposer-prompts.js +46 -45
  159. package/.agents/scripts/lib/templates/spec-author-prompts.js +47 -45
  160. package/.agents/scripts/lib/{epic-body-sections.js → ticket-body-sections.js} +26 -26
  161. package/.agents/scripts/lib/validation-evidence.js +1 -1
  162. package/.agents/scripts/lib/wave-runner/ready-set.js +6 -6
  163. package/.agents/scripts/lib/workspace-provisioner.js +1 -1
  164. package/.agents/scripts/lib/worktree/lifecycle/reap.js +5 -7
  165. package/.agents/scripts/lint-issue-body.js +71 -40
  166. package/.agents/scripts/mandrel-update-preflight.js +1 -1
  167. package/.agents/scripts/notify.js +4 -3
  168. package/.agents/scripts/plan-context.js +64 -74
  169. package/.agents/scripts/plan-persist.js +121 -280
  170. package/.agents/scripts/plan-run-epilogue.js +97 -0
  171. package/.agents/scripts/post-structured-comment.js +38 -0
  172. package/.agents/scripts/providers/github/issues.js +17 -33
  173. package/.agents/scripts/providers/github/mappers.js +0 -12
  174. package/.agents/scripts/providers/github/tickets.js +2 -5
  175. package/.agents/scripts/resolve-plan-run.js +117 -0
  176. package/.agents/scripts/signals-view.js +24 -19
  177. package/.agents/scripts/single-story-close.js +11 -14
  178. package/.agents/scripts/single-story-confirm-merge.js +39 -23
  179. package/.agents/scripts/single-story-init.js +29 -20
  180. package/.agents/scripts/stories-wave-tick.js +6 -6
  181. package/.agents/scripts/story-plan.js +26 -47
  182. package/.agents/scripts/sync-claude-agents.js +165 -0
  183. package/.agents/scripts/update-ticket-state.js +37 -15
  184. package/.agents/skills/core/analyze-execution/SKILL.md +21 -18
  185. package/.agents/skills/core/api-and-interface-design/SKILL.md +5 -3
  186. package/.agents/skills/core/code-review-and-quality/SKILL.md +63 -7
  187. package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +1 -1
  188. package/.agents/skills/core/gates-and-baselines/SKILL.md +149 -0
  189. package/.agents/skills/core/idea-refinement/SKILL.md +8 -14
  190. package/.agents/skills/core/qa-coverage-mapping/SKILL.md +7 -7
  191. package/.agents/skills/core/scope-triage/SKILL.md +28 -172
  192. package/.agents/skills/skills.index.json +8 -418
  193. package/.agents/starter-agentrc.json +0 -5
  194. package/.agents/templates/agent-protocol.md +9 -10
  195. package/.agents/workflows/audit-architecture.md +3 -3
  196. package/.agents/workflows/audit-clean-code.md +3 -3
  197. package/.agents/workflows/audit-dependencies.md +3 -3
  198. package/.agents/workflows/audit-devops.md +3 -3
  199. package/.agents/workflows/audit-documentation.md +5 -5
  200. package/.agents/workflows/audit-lighthouse.md +3 -3
  201. package/.agents/workflows/audit-navigability.md +3 -2
  202. package/.agents/workflows/audit-performance.md +3 -3
  203. package/.agents/workflows/audit-privacy.md +3 -3
  204. package/.agents/workflows/audit-quality.md +3 -3
  205. package/.agents/workflows/audit-security.md +3 -3
  206. package/.agents/workflows/audit-seo.md +3 -3
  207. package/.agents/workflows/audit-sre.md +3 -3
  208. package/.agents/workflows/audit-to-stories.md +20 -20
  209. package/.agents/workflows/audit-ux-ui.md +3 -3
  210. package/.agents/workflows/deliver.md +122 -131
  211. package/.agents/workflows/git-cleanup.md +3 -4
  212. package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
  213. package/.agents/workflows/helpers/acceptance-self-eval.md +52 -40
  214. package/.agents/workflows/helpers/code-review.md +70 -193
  215. package/.agents/workflows/helpers/{single-story-deliver-reference.md → deliver-story-reference.md} +12 -14
  216. package/.agents/workflows/helpers/{single-story-deliver.md → deliver-story.md} +113 -139
  217. package/.agents/workflows/helpers/diagnose.md +10 -10
  218. package/.agents/workflows/helpers/mandrel-sync-config.md +1 -1
  219. package/.agents/workflows/helpers/parallel-tooling.md +1 -1
  220. package/.agents/workflows/helpers/signals.md +16 -16
  221. package/.agents/workflows/helpers/worktree-lifecycle.md +48 -64
  222. package/.agents/workflows/mandrel-update.md +3 -2
  223. package/.agents/workflows/plan.md +112 -145
  224. package/.agents/workflows/qa-assist.md +24 -30
  225. package/.agents/workflows/qa-explore.md +29 -38
  226. package/.agents/workflows/qa-run.md +2 -2
  227. package/README.md +9 -8
  228. package/docs/CHANGELOG.md +46 -0
  229. package/lib/cli/registry.js +95 -0
  230. package/lib/migrations/index.js +6 -5
  231. package/package.json +5 -3
  232. package/.agents/personas/architect.md +0 -113
  233. package/.agents/personas/devops-engineer.md +0 -38
  234. package/.agents/personas/engineer-mobile.md +0 -120
  235. package/.agents/personas/engineer-web.md +0 -111
  236. package/.agents/personas/engineer.md +0 -119
  237. package/.agents/personas/product.md +0 -94
  238. package/.agents/personas/project-manager.md +0 -114
  239. package/.agents/personas/qa-engineer.md +0 -95
  240. package/.agents/personas/refactorer.md +0 -113
  241. package/.agents/personas/security-engineer.md +0 -112
  242. package/.agents/personas/sre.md +0 -86
  243. package/.agents/personas/technical-writer.md +0 -101
  244. package/.agents/personas/ux-designer.md +0 -95
  245. package/.agents/schemas/dispatch-manifest.json +0 -232
  246. package/.agents/schemas/epic-spec.schema.json +0 -153
  247. package/.agents/scripts/acceptance-spec-reconciler.js +0 -642
  248. package/.agents/scripts/dispatcher.js +0 -295
  249. package/.agents/scripts/epic-audit-prepare.js +0 -497
  250. package/.agents/scripts/epic-audit-recheck.js +0 -274
  251. package/.agents/scripts/epic-deliver-note-intervention.js +0 -192
  252. package/.agents/scripts/epic-deliver-preflight.js +0 -462
  253. package/.agents/scripts/epic-deliver-prepare.js +0 -590
  254. package/.agents/scripts/epic-execute-record-wave.js +0 -449
  255. package/.agents/scripts/epic-plan-clarity.js +0 -211
  256. package/.agents/scripts/epic-plan-decompose.js +0 -54
  257. package/.agents/scripts/epic-plan-healthcheck.js +0 -581
  258. package/.agents/scripts/epic-plan-spec.js +0 -64
  259. package/.agents/scripts/epic-reconcile.js +0 -625
  260. package/.agents/scripts/lib/baseline-snapshot.js +0 -979
  261. package/.agents/scripts/lib/checks/epic-merge-lock-stale.js +0 -54
  262. package/.agents/scripts/lib/checks/stale-origin-epic.js +0 -49
  263. package/.agents/scripts/lib/config/lifecycle.js +0 -40
  264. package/.agents/scripts/lib/config/preflight.js +0 -58
  265. package/.agents/scripts/lib/config/retro.js +0 -77
  266. package/.agents/scripts/lib/epic-merge-lock.js +0 -322
  267. package/.agents/scripts/lib/epic-plan-clarity.js +0 -181
  268. package/.agents/scripts/lib/epic-plan-ideation.js +0 -261
  269. package/.agents/scripts/lib/orchestration/context-hydration-engine.js +0 -660
  270. package/.agents/scripts/lib/orchestration/dispatch-engine.js +0 -134
  271. package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +0 -183
  272. package/.agents/scripts/lib/orchestration/epic-cleanup.js +0 -801
  273. package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +0 -310
  274. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/context.js +0 -163
  275. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +0 -140
  276. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +0 -64
  277. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +0 -72
  278. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist-helpers.js +0 -156
  279. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/persist.js +0 -345
  280. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/planning-artifacts.js +0 -41
  281. package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/reconcile-spawn.js +0 -86
  282. package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +0 -391
  283. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/drain.js +0 -94
  284. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +0 -236
  285. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +0 -307
  286. package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/spec-freshness.js +0 -117
  287. package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +0 -117
  288. package/.agents/scripts/lib/orchestration/epic-run-state-store.js +0 -388
  289. package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +0 -186
  290. package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +0 -50
  291. package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +0 -129
  292. package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +0 -103
  293. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +0 -267
  294. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +0 -210
  295. package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +0 -238
  296. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/_bullet-format.js +0 -32
  297. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/component-drift.js +0 -203
  298. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/crap-drift.js +0 -227
  299. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/maintainability-drift.js +0 -117
  300. package/.agents/scripts/lib/orchestration/epic-runner/progress-signals/stalled-worktree.js +0 -37
  301. package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +0 -127
  302. package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +0 -276
  303. package/.agents/scripts/lib/orchestration/epic-runner/wave-scheduler.js +0 -66
  304. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +0 -789
  305. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +0 -676
  306. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-discriminator.js +0 -389
  307. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-format.js +0 -230
  308. package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +0 -361
  309. package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +0 -306
  310. package/.agents/scripts/lib/orchestration/finalize/post-handoff-comment.js +0 -489
  311. package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +0 -88
  312. package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +0 -147
  313. package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +0 -384
  314. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +0 -501
  315. package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +0 -984
  316. package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +0 -264
  317. package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +0 -278
  318. package/.agents/scripts/lib/orchestration/lifecycle/listeners/cleaner.js +0 -355
  319. package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +0 -673
  320. package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +0 -378
  321. package/.agents/scripts/lib/orchestration/lifecycle/listeners/intervention-recorder.js +0 -140
  322. package/.agents/scripts/lib/orchestration/lifecycle/listeners/label-transitioner.js +0 -144
  323. package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +0 -174
  324. package/.agents/scripts/lib/orchestration/manifest-builder.js +0 -222
  325. package/.agents/scripts/lib/orchestration/plan-persist/amend.js +0 -359
  326. package/.agents/scripts/lib/orchestration/plan-persist/delivery-mode.js +0 -127
  327. package/.agents/scripts/lib/orchestration/post-merge-pipeline.js +0 -205
  328. package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +0 -152
  329. package/.agents/scripts/lib/orchestration/retro/phases/checks.js +0 -94
  330. package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +0 -571
  331. package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +0 -450
  332. package/.agents/scripts/lib/orchestration/retro/phases/post-and-mirror.js +0 -191
  333. package/.agents/scripts/lib/orchestration/retro-heuristics.js +0 -57
  334. package/.agents/scripts/lib/orchestration/retro-runner.js +0 -197
  335. package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +0 -109
  336. package/.agents/scripts/lib/orchestration/spec-renderer.js +0 -447
  337. package/.agents/scripts/lib/orchestration/story-close/auto-refresh-runner.js +0 -747
  338. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/gate-failure.js +0 -211
  339. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/pre-merge-attribution.js +0 -158
  340. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +0 -446
  341. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/regression-projection.js +0 -297
  342. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/scope-discovery.js +0 -48
  343. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution-wiring.js +0 -67
  344. package/.agents/scripts/lib/orchestration/story-close/baseline-attribution.js +0 -161
  345. package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +0 -117
  346. package/.agents/scripts/lib/orchestration/story-close/cd-out-guard.js +0 -86
  347. package/.agents/scripts/lib/orchestration/story-close/cleanup-reconciler.js +0 -147
  348. package/.agents/scripts/lib/orchestration/story-close/close-inputs.js +0 -142
  349. package/.agents/scripts/lib/orchestration/story-close/comment-bodies.js +0 -62
  350. package/.agents/scripts/lib/orchestration/story-close/merge-runner.js +0 -658
  351. package/.agents/scripts/lib/orchestration/story-close/merge-subject.js +0 -198
  352. package/.agents/scripts/lib/orchestration/story-close/phases/branch-restore.js +0 -105
  353. package/.agents/scripts/lib/orchestration/story-close/phases/close.js +0 -222
  354. package/.agents/scripts/lib/orchestration/story-close/phases/gates.js +0 -292
  355. package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +0 -270
  356. package/.agents/scripts/lib/orchestration/story-close/phases/preflight.js +0 -110
  357. package/.agents/scripts/lib/orchestration/story-close/phases/refresh.js +0 -86
  358. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked-emitter.js +0 -112
  359. package/.agents/scripts/lib/orchestration/story-close/phases/timeout-blocked.js +0 -157
  360. package/.agents/scripts/lib/orchestration/story-close/post-merge-close.js +0 -421
  361. package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +0 -301
  362. package/.agents/scripts/lib/orchestration/story-close/shared-checkout-guard.js +0 -163
  363. package/.agents/scripts/lib/orchestration/story-close-recovery.js +0 -690
  364. package/.agents/scripts/lib/orchestration/wave-marker.js +0 -28
  365. package/.agents/scripts/lib/orchestration/wave-record-io.js +0 -218
  366. package/.agents/scripts/lib/orchestration/wave-record-notifications.js +0 -145
  367. package/.agents/scripts/lib/orchestration/wave-record-projection.js +0 -212
  368. package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +0 -111
  369. package/.agents/scripts/lib/presentation/manifest-builder.js +0 -239
  370. package/.agents/scripts/lib/presentation/manifest-formatter.js +0 -242
  371. package/.agents/scripts/lib/presentation/manifest-helpers.js +0 -213
  372. package/.agents/scripts/lib/presentation/manifest-persistence.js +0 -261
  373. package/.agents/scripts/lib/presentation/manifest-procedures.js +0 -55
  374. package/.agents/scripts/lib/presentation/manifest-render-waves.js +0 -306
  375. package/.agents/scripts/lib/presentation/manifest-renderer.js +0 -188
  376. package/.agents/scripts/lib/presentation/manifest-story-views.js +0 -110
  377. package/.agents/scripts/lib/push-epic-retry.js +0 -209
  378. package/.agents/scripts/lib/spec/index.js +0 -36
  379. package/.agents/scripts/lib/spec/loader.js +0 -425
  380. package/.agents/scripts/lib/spec/state.js +0 -208
  381. package/.agents/scripts/lib/story-init/blocker-validator.js +0 -68
  382. package/.agents/scripts/lib/story-init/branch-initializer.js +0 -408
  383. package/.agents/scripts/lib/story-init/context-resolver.js +0 -92
  384. package/.agents/scripts/lib/story-init/donor-precheck.js +0 -207
  385. package/.agents/scripts/lib/story-init/state-transitioner.js +0 -80
  386. package/.agents/scripts/lib/story-init/task-graph-builder.js +0 -124
  387. package/.agents/scripts/lib/story-init/transition-summary.js +0 -34
  388. package/.agents/scripts/lib/test-reserved-epic-temp-ids.js +0 -35
  389. package/.agents/scripts/lib/wave-runner/tick.js +0 -754
  390. package/.agents/scripts/lib/wave-runner/wave-runner-error.js +0 -20
  391. package/.agents/scripts/lifecycle-emit-story-dispatch.js +0 -194
  392. package/.agents/scripts/lifecycle-emit.js +0 -510
  393. package/.agents/scripts/plan-critics.js +0 -199
  394. package/.agents/scripts/retro-run.js +0 -218
  395. package/.agents/scripts/standalone-feedback-rollup.js +0 -188
  396. package/.agents/scripts/story-close.js +0 -294
  397. package/.agents/scripts/story-init.js +0 -599
  398. package/.agents/scripts/story-phase.js +0 -369
  399. package/.agents/scripts/wave-tick.js +0 -335
  400. package/.agents/skills/core/baseline-refresh/SKILL.md +0 -181
  401. package/.agents/skills/core/ci-cd-and-automation/SKILL.md +0 -274
  402. package/.agents/skills/core/ci-cd-and-automation/examples.md +0 -211
  403. package/.agents/skills/core/code-simplification/SKILL.md +0 -389
  404. package/.agents/skills/core/context-engineering/SKILL.md +0 -309
  405. package/.agents/skills/core/context-engineering/examples.md +0 -58
  406. package/.agents/skills/core/deprecation-and-migration/SKILL.md +0 -250
  407. package/.agents/skills/core/epic-plan-consolidate/SKILL.md +0 -172
  408. package/.agents/skills/core/epic-plan-consolidate/examples.md +0 -51
  409. package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +0 -441
  410. package/.agents/skills/core/epic-plan-decompose-author/examples.md +0 -47
  411. package/.agents/skills/core/epic-plan-premortem/SKILL.md +0 -146
  412. package/.agents/skills/core/epic-plan-premortem/examples.md +0 -53
  413. package/.agents/skills/core/epic-plan-spec-author/SKILL.md +0 -413
  414. package/.agents/skills/core/epic-plan-spec-author/examples.md +0 -91
  415. package/.agents/skills/core/frontend-ui-engineering/SKILL.md +0 -357
  416. package/.agents/skills/core/hydrate-context/SKILL.md +0 -123
  417. package/.agents/skills/core/idea-refinement/examples.md +0 -437
  418. package/.agents/skills/core/idea-refinement/frameworks.md +0 -135
  419. package/.agents/skills/core/incremental-implementation/SKILL.md +0 -271
  420. package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +0 -213
  421. package/.agents/skills/core/knowledge-transfer/SKILL.md +0 -180
  422. package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +0 -117
  423. package/.agents/skills/core/performance-optimization/SKILL.md +0 -314
  424. package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +0 -277
  425. package/.agents/skills/core/property-based-testing/SKILL.md +0 -148
  426. package/.agents/skills/core/refactoring-discipline/SKILL.md +0 -111
  427. package/.agents/skills/core/shipping-and-launch/SKILL.md +0 -328
  428. package/.agents/skills/core/spec-driven-development/SKILL.md +0 -252
  429. package/.agents/skills/core/test-driven-development/SKILL.md +0 -475
  430. package/.agents/skills/core/using-agent-skills/SKILL.md +0 -232
  431. package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +0 -31
  432. package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +0 -51
  433. package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +0 -76
  434. package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +0 -31
  435. package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +0 -33
  436. package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +0 -31
  437. package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +0 -51
  438. package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +0 -54
  439. package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +0 -29
  440. package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +0 -30
  441. package/.agents/skills/stack/backend/stripe-integration/SKILL.md +0 -57
  442. package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +0 -9
  443. package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +0 -48
  444. package/.agents/skills/stack/frontend/astro/SKILL.md +0 -62
  445. package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +0 -30
  446. package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +0 -29
  447. package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +0 -50
  448. package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +0 -58
  449. package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +0 -34
  450. package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +0 -51
  451. package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +0 -199
  452. package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +0 -68
  453. package/.agents/workflows/helpers/deliver-epic-reference.md +0 -534
  454. package/.agents/workflows/helpers/deliver-epic.md +0 -955
  455. package/.agents/workflows/helpers/deliver-stories.md +0 -440
  456. package/.agents/workflows/helpers/epic-audit.md +0 -189
  457. package/.agents/workflows/helpers/epic-deliver-story.md +0 -427
  458. package/.agents/workflows/helpers/epic-testing.md +0 -125
  459. package/.agents/workflows/helpers/plan-epic-reference.md +0 -160
  460. package/.agents/workflows/helpers/plan-epic.md +0 -351
  461. package/.agents/workflows/helpers/plan-story.md +0 -251
  462. package/.agents/workflows/helpers/scope-triage-gate.md +0 -108
  463. /package/.agents/scripts/lib/orchestration/{epic-plan-spec/phases → planning}/spec-authoring-grounding.js +0 -0
@@ -1,271 +0,0 @@
1
- ---
2
- name: incremental-implementation
3
- description:
4
- Delivers changes incrementally. Use when implementing any feature or change
5
- that touches more than one file. Use when you're about to write a large amount
6
- of code at once, or when a task feels too big to land in one step.
7
- ---
8
-
9
- # Incremental Implementation
10
-
11
- ## Policy Capsule
12
-
13
- - Deliver in thin vertical slices: **Implement → Test → Verify → Commit → Next slice**. Never write more than ~100 lines before testing.
14
- - Each slice MUST leave the system in a working, testable state — build green, existing tests pass, type-check and lint clean.
15
- - Each commit changes one logical thing; never mix refactors with features or formatting with behavior.
16
- - Apply Simplicity First: write the naive, obviously-correct version. Three similar lines beats a premature abstraction; do not build for hypothetical future requirements.
17
- - Enforce Scope Discipline: touch only what the task requires. No drive-by cleanups, import re-orderings, comment deletions, or syntax modernizations in files you're "just reading" — note them instead.
18
- - Gate incomplete work behind a feature flag rather than holding a long-lived branch; default new behaviour to safe / opt-in.
19
- - Keep increments rollback-friendly: prefer additive changes, ship DB migrations with rollbacks, and never delete + replace in the same commit.
20
- - Prefer vertical slices that deliver end-to-end functionality; use contract-first slicing only when backend/frontend must develop in parallel, and risk-first slicing when the riskiest piece dominates the plan.
21
- - Verify the increment checklist before moving on: tests pass, build succeeds, types check, lint clean, change committed with a descriptive message.
22
-
23
- ## Overview
24
-
25
- Build in thin vertical slices — implement one piece, test it, verify it, then
26
- expand. Avoid implementing an entire feature in one pass. Each increment should
27
- leave the system in a working, testable state. This is the execution discipline
28
- that makes large features manageable.
29
-
30
- ## When to Use
31
-
32
- - Implementing any multi-file change
33
- - Building a new feature from a task breakdown
34
- - Refactoring existing code
35
- - Any time you're tempted to write more than ~100 lines before testing
36
-
37
- **When NOT to use:** Single-file, single-function changes where the scope is
38
- already minimal.
39
-
40
- ## The Increment Cycle
41
-
42
- ```text
43
- ┌──────────────────────────────────────┐
44
- │ │
45
- │ Implement ──→ Test ──→ Verify ──┐ │
46
- │ ▲ │ │
47
- │ └───── Commit ◄─────────────┘ │
48
- │ │ │
49
- │ ▼ │
50
- │ Next slice │
51
- │ │
52
- └──────────────────────────────────────┘
53
- ```
54
-
55
- For each slice:
56
-
57
- 1. **Implement** the smallest complete piece of functionality
58
- 2. **Test** — run the test suite (or write a test if none exists)
59
- 3. **Verify** — confirm the slice works as expected (tests pass, build succeeds,
60
- manual check)
61
- 4. **Commit** -- save your progress with a descriptive message (see
62
- `git-workflow-and-versioning` for atomic commit guidance)
63
- 5. **Move to the next slice** — carry forward, don't restart
64
-
65
- ## Slicing Strategies
66
-
67
- ### Vertical Slices (Preferred)
68
-
69
- Build one complete path through the stack:
70
-
71
- ```text
72
- Slice 1: Create a task (DB + API + basic UI)
73
- → Tests pass, user can create a task via the UI
74
-
75
- Slice 2: List tasks (query + API + UI)
76
- → Tests pass, user can see their tasks
77
-
78
- Slice 3: Edit a task (update + API + UI)
79
- → Tests pass, user can modify tasks
80
-
81
- Slice 4: Delete a task (delete + API + UI + confirmation)
82
- → Tests pass, full CRUD complete
83
- ```
84
-
85
- Each slice delivers working end-to-end functionality.
86
-
87
- ### Contract-First Slicing
88
-
89
- When backend and frontend need to develop in parallel:
90
-
91
- ```text
92
- Slice 0: Define the API contract (types, interfaces, OpenAPI spec)
93
- Slice 1a: Implement backend against the contract + API tests
94
- Slice 1b: Implement frontend against mock data matching the contract
95
- Slice 2: Integrate and test end-to-end
96
- ```
97
-
98
- ### Risk-First Slicing
99
-
100
- Tackle the riskiest or most uncertain piece first:
101
-
102
- ```text
103
- Slice 1: Prove the WebSocket connection works (highest risk)
104
- Slice 2: Build real-time task updates on the proven connection
105
- Slice 3: Add offline support and reconnection
106
- ```
107
-
108
- If Slice 1 fails, you discover it before investing in Slices 2 and 3.
109
-
110
- ## Implementation Rules
111
-
112
- ### Rule 0: Simplicity First
113
-
114
- Before writing any code, ask: "What is the simplest thing that could work?"
115
-
116
- After writing code, review it against these checks:
117
-
118
- - Can this be done in fewer lines?
119
- - Are these abstractions earning their complexity?
120
- - Would a staff engineer look at this and say "why didn't you just..."?
121
- - Am I building for hypothetical future requirements, or the current task?
122
-
123
- ```text
124
- SIMPLICITY CHECK:
125
- ✗ Generic EventBus with middleware pipeline for one notification
126
- ✓ Simple function call
127
-
128
- ✗ Abstract factory pattern for two similar components
129
- ✓ Two straightforward components with shared utilities
130
-
131
- ✗ Config-driven form builder for three forms
132
- ✓ Three form components
133
- ```
134
-
135
- Three similar lines of code is better than a premature abstraction. Implement
136
- the naive, obviously-correct version first. Optimize only after correctness is
137
- proven with tests.
138
-
139
- ### Rule 0.5: Scope Discipline
140
-
141
- Touch only what the task requires.
142
-
143
- Do NOT:
144
-
145
- - "Clean up" code adjacent to your change
146
- - Refactor imports in files you're not modifying
147
- - Remove comments you don't fully understand
148
- - Add features not in the spec because they "seem useful"
149
- - Modernize syntax in files you're only reading
150
-
151
- If you notice something worth improving outside your task scope, note it — don't
152
- fix it:
153
-
154
- ```text
155
- NOTICED BUT NOT TOUCHING:
156
- - src/utils/format.ts has an unused import (unrelated to this task)
157
- - The auth middleware could use better error messages (separate task)
158
- → Want me to create tasks for these?
159
- ```
160
-
161
- ### Rule 1: One Thing at a Time
162
-
163
- Each increment changes one logical thing. Don't mix concerns:
164
-
165
- **Bad:** One commit that adds a new component, refactors an existing one, and
166
- updates the build config.
167
-
168
- **Good:** Three separate commits — one for each change.
169
-
170
- ### Rule 2: Keep It Compilable
171
-
172
- After each increment, the project must build and existing tests must pass. Don't
173
- leave the codebase in a broken state between slices.
174
-
175
- ### Rule 3: Feature Flags for Incomplete Features
176
-
177
- If a feature isn't ready for users but you need to merge increments:
178
-
179
- ```typescript
180
- // Feature flag for work-in-progress
181
- const ENABLE_TASK_SHARING = process.env.FEATURE_TASK_SHARING === 'true';
182
-
183
- if (ENABLE_TASK_SHARING) {
184
- // New sharing UI
185
- }
186
- ```
187
-
188
- This lets you merge small increments to the main branch without exposing
189
- incomplete work.
190
-
191
- ### Rule 4: Safe Defaults
192
-
193
- New code should default to safe, conservative behavior:
194
-
195
- ```typescript
196
- // Safe: disabled by default, opt-in
197
- export function createTask(data: TaskInput, options?: { notify?: boolean }) {
198
- const shouldNotify = options?.notify ?? false;
199
- // ...
200
- }
201
- ```
202
-
203
- ### Rule 5: Rollback-Friendly
204
-
205
- Each increment should be independently revertable:
206
-
207
- - Additive changes (new files, new functions) are easy to revert
208
- - Modifications to existing code should be minimal and focused
209
- - Database migrations should have corresponding rollback migrations
210
- - Avoid deleting something in one commit and replacing it in the same commit —
211
- separate them
212
-
213
- ## Working with Agents
214
-
215
- When directing an agent to implement incrementally:
216
-
217
- ```text
218
- "Let's implement Task 3 from the plan.
219
-
220
- Start with just the database schema change and the API endpoint.
221
- Don't touch the UI yet — we'll do that in the next increment.
222
-
223
- After implementing, run `npm test` and `npm run build` to verify
224
- nothing is broken."
225
- ```
226
-
227
- Be explicit about what's in scope and what's NOT in scope for each increment.
228
-
229
- ## Increment Checklist
230
-
231
- After each increment, verify:
232
-
233
- - [ ] The change does one thing and does it completely
234
- - [ ] All existing tests still pass (`npm test`)
235
- - [ ] The build succeeds (`npm run build`)
236
- - [ ] Type checking passes (`npx tsc --noEmit`)
237
- - [ ] Linting passes (`npm run lint`)
238
- - [ ] The new functionality works as expected
239
- - [ ] The change is committed with a descriptive message
240
-
241
- ## Common Rationalizations
242
-
243
- | Rationalization | Reality |
244
- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
245
- | "I'll test it all at the end" | Bugs compound. A bug in Slice 1 makes Slices 2-5 wrong. Test each slice. |
246
- | "It's faster to do it all at once" | It _feels_ faster until something breaks and you can't find which of 500 changed lines caused it. |
247
- | "These changes are too small to commit separately" | Small commits are free. Large commits hide bugs and make rollbacks painful. |
248
- | "I'll add the feature flag later" | If the feature isn't complete, it shouldn't be user-visible. Add the flag now. |
249
- | "This refactor is small enough to include" | Refactors mixed with features make both harder to review and debug. Separate them. |
250
-
251
- ## Red Flags
252
-
253
- - More than 100 lines of code written without running tests
254
- - Multiple unrelated changes in a single increment
255
- - "Let me just quickly add this too" scope expansion
256
- - Skipping the test/verify step to move faster
257
- - Build or tests broken between increments
258
- - Large uncommitted changes accumulating
259
- - Building abstractions before the third use case demands it
260
- - Touching files outside the task scope "while I'm here"
261
- - Creating new utility files for one-time operations
262
-
263
- ## Verification
264
-
265
- After completing all increments for a task:
266
-
267
- - [ ] Each increment was individually tested and committed
268
- - [ ] The full test suite passes
269
- - [ ] The build is clean
270
- - [ ] The feature works end-to-end as specified
271
- - [ ] No uncommitted changes remain
@@ -1,213 +0,0 @@
1
- ---
2
- name: introducing-a-baseline-gate
3
- description:
4
- Land a new CI check that asserts on a body of pre-existing state
5
- (doc-drift, lint-vocabulary, dependency-cycle, missing-test-coverage,
6
- unused-export). Use when introducing a gate whose first run would
7
- surface latent findings — the introducing Story MUST guarantee the
8
- gate exits 0 at merge, not just that the cited discrepancies pass.
9
- ---
10
-
11
- # Skill: Introducing a Baseline-Style Gate
12
-
13
- ## Policy Capsule
14
-
15
- - A new check that asserts on pre-existing state MUST exit 0 at merge time. Wiring the gate into CI without proving it's green ships a red gate that blocks every downstream Story.
16
- - "The cited discrepancies are fixed" is **not** the AC. The AC is **"the gate exits 0 against the full repository on the merge commit"** — write it in the Story body in those words.
17
- - Choose one of two landing shapes before you write the AC: **advisory-first** (gate exits 0 with warnings; a follow-up Story flips it to blocking) or **populate-the-baseline** (the introducing Story fixes every existing finding in the same PR, or writes them to an ignore-list / baseline snapshot the gate respects).
18
- - Run the gate against `main` (or `epic/<id>`) **before** writing the AC. The findings count it surfaces is the scope of what landing-green will cost.
19
- - Wire the gate into `.agentrc.json` `github.branchProtection.requiredChecks` in the **same PR** that ships the gate's first green run — never split "add the check script" from "make it required".
20
- - Never land a gate red and rely on a follow-up Story to populate the baseline. The window between merge and the follow-up landing blocks every Story in flight.
21
-
22
- ## When to reach for this
23
-
24
- Reach for this skill whenever you're introducing a check whose **first
25
- run on the existing codebase would surface findings you didn't author**.
26
- That includes (but is not limited to):
27
-
28
- - **Doc-drift gates** — `check-lifecycle-doc-drift.js`, "docs/X.md must
29
- enumerate every Y in `src/Y/`", "README badge list must match the CI
30
- workflow file list".
31
- - **Lint-vocabulary gates** — "no `TODO` without an issue link", "every
32
- exported function must have a JSDoc summary", "every `agent::*` label
33
- must appear in `label-constants.js`".
34
- - **Dependency-cycle / boundary gates** — "no import from `app/` into
35
- `lib/`", "no cycle in module graph", "every workspace dep declared at
36
- the right `package.json` level".
37
- - **Coverage-shape gates** — "every public API surface in
38
- `tests/contract/**` has at least one negative-path test", "every
39
- feature flag defined in `flags.ts` is referenced".
40
- - **Baseline-numeric gates** — Lighthouse / bundle-size / CRAP first
41
- introduction. (For the numeric-ratchet shape specifically, also read
42
- `stack/qa/lighthouse-baseline`.)
43
-
44
- If the check only fires on **new** code (e.g. a lint rule wired with
45
- `--cache` against the diff, or a hook scoped to staged files), this
46
- skill is not required — there's no latent-state landmine.
47
-
48
- ## The Trap (Why This Skill Exists)
49
-
50
- **Epic #2880, Wave 1.** Story #2895 introduced
51
- `check-lifecycle-doc-drift.js` — a gate that asserts every entry in the
52
- project's lifecycle event registry has a matching row in
53
- `docs/LIFECYCLE.md`. The Story's AC required correcting 3 cited
54
- discrepancies and adding 2 new event rows. The gate landed wired into
55
- CI. The first CI run on the **next** Story (#2898) reported **11
56
- pre-existing drift findings** — drift that had been latent for months,
57
- silent because no gate enforced it.
58
-
59
- Stories #2898 and #2900 were both blocked. A hotfix commit on
60
- `epic/2880` (5e3ef962) had to populate the full listener table before
61
- wave 1 could merge. The cost was a half-day of wave-1 wall-clock and
62
- two interrupted Stories.
63
-
64
- **The diagnosis:** the introducing Story's AC was scoped to "fix what
65
- we cited", not "the gate is green". Those are different ACs. The
66
- second one is the load-bearing one.
67
-
68
- This skill exists so the next drift-style gate doesn't replay that
69
- pattern.
70
-
71
- ## Two Landing Shapes — Pick One Before AC Authoring
72
-
73
- ### Shape A: Advisory-First (exit 0 + warnings)
74
-
75
- Land the gate as **non-blocking** in the introducing Story. The script
76
- exits 0 even when findings exist, but prints them as warnings (and
77
- optionally posts them as a PR comment). A follow-up Story drives the
78
- findings count to zero, then flips the gate to blocking
79
- (`process.exit(1)` on finding-count > 0) and adds it to
80
- `requiredChecks`.
81
-
82
- **When to choose this shape:**
83
-
84
- - The existing-state findings are numerous (10+) and a one-shot fix
85
- would balloon the introducing Story's scope.
86
- - The findings need per-finding owner triage (each row is a different
87
- module's bug).
88
- - You want the warnings to surface in PRs immediately so contributors
89
- can fix-as-they-touch.
90
-
91
- **Required AC line:**
92
-
93
- > "The gate runs in advisory mode (exits 0 with warnings on the full
94
- > repo). The follow-up Story #<NNN> flips it to blocking."
95
-
96
- The follow-up Story MUST exist as a real ticket on the board before the
97
- introducing Story closes — otherwise "follow-up" is a euphemism for
98
- "never".
99
-
100
- ### Shape B: Populate-the-Baseline (exit 0 from day one)
101
-
102
- The introducing Story includes the work to drive existing findings to
103
- zero. Two sub-shapes:
104
-
105
- 1. **Fix-them-all.** Edit the docs / add the missing tests / break the
106
- cycles. The PR diff includes the gate code **and** the
107
- findings-resolution diff. The first CI run is green.
108
- 2. **Snapshot-as-baseline.** Write the current findings to a committed
109
- ignore-list (`baselines/<gate>-ignore.json`) that the gate reads at
110
- startup. The gate exits 0 when the only failures are in the ignore
111
- list, and exits non-zero on any **new** finding. A follow-up Story
112
- shrinks the ignore list to empty.
113
-
114
- **When to choose this shape:**
115
-
116
- - The findings count is small (≤ 10) and tractable in one PR.
117
- - Or: the findings reflect real bugs that should be fixed, not papered
118
- over.
119
- - Or: an ignore-list snapshot is a meaningful artifact (it answers
120
- "what's our drift debt right now?").
121
-
122
- **Required AC line:**
123
-
124
- > "On the merge commit, `<gate-script>` exits 0 against the full
125
- > repository. The gate is wired into `requiredChecks` in this PR."
126
-
127
- ## Pre-Authoring Step: Run the Gate Against `main`
128
-
129
- **Before** writing the AC, run the gate script against `main` (or
130
- `epic/<id>`) locally and count the findings.
131
-
132
- ```bash
133
- # In the introducing Story's worktree, with the gate script written:
134
- node .agents/scripts/<new-gate>.js
135
- echo "exit=$?"
136
- ```
137
-
138
- That number — the **pre-existing finding count** — is the budget the
139
- Story is choosing to spend. Write it in the Story body:
140
-
141
- ```text
142
- ## Pre-existing finding count (as of <SHA>)
143
- - N findings on main / epic/<id>
144
- - Landing shape: <Advisory-First | Populate-the-Baseline:fix |
145
- Populate-the-Baseline:snapshot>
146
- ```
147
-
148
- If you skip this step you are gambling that the count is zero. It
149
- isn't, that's why you're adding the gate.
150
-
151
- ## AC Checklist for a Drift-Style Gate Story
152
-
153
- Copy this checklist into the Story body. Every line MUST appear:
154
-
155
- - [ ] The gate script (`<path>`) exists and runs locally.
156
- - [ ] The pre-existing finding count on `<base-branch>` is documented
157
- in the Story body.
158
- - [ ] The landing shape (Advisory-First / Populate-fix /
159
- Populate-snapshot) is named in the Story body.
160
- - [ ] If Advisory-First: the follow-up Story (#<NNN>) exists on the
161
- board with `type::story` and a link from this Story.
162
- - [ ] On the merge commit, the gate exits 0 against the full
163
- repository (logs attached to the close comment).
164
- - [ ] The gate is wired into `.agentrc.json`
165
- `github.branchProtection.requiredChecks` (Populate-shape) **or**
166
- explicitly marked advisory (Advisory-First).
167
- - [ ] CI on the introducing PR shows the gate green.
168
-
169
- ## Anti-patterns
170
-
171
- - **"The AC just says fix the cited cases."** The cited cases are the
172
- spark that surfaced the need for the gate. The AC must cover the
173
- whole forest, not just the tree the operator was standing under.
174
- - **"We'll wire it in now and clean up the drift in a follow-up."**
175
- Every Story merged between "wire in" and "clean up" is blocked.
176
- That's a wave-stopper, not a follow-up. Either populate-now or
177
- advisory-now — never blocking-now-with-debt.
178
- - **"It's green locally, ship it."** Local environments routinely have
179
- uncommitted state that the gate accepts. Verify against the **base
180
- branch tip**, not `git status`-clean working tree.
181
- - **"The hotfix commit on the integration branch counts as cleanup."**
182
- It counts as a Story-2895-class debt: the gate is green on
183
- `epic/<id>` only because someone manually populated the gap.
184
- Codify the populate work as scope of the introducing Story instead.
185
- - **No follow-up Story for Advisory-First.** "Advisory forever" means
186
- the gate is decoration. Either commit to flipping it or don't ship
187
- the advisory version.
188
-
189
- ## Cross-references
190
-
191
- - **`stack/qa/lighthouse-baseline`** — for the **numeric-ratchet**
192
- flavour of baseline gate (a number with a tolerance band that
193
- ratchets only with intent). That skill's `--self-test` and
194
- weekly-cadence patterns complement this one's landing-shape
195
- patterns; the two skills cover orthogonal concerns (number-shape
196
- vs. land-green).
197
- - **`core/baseline-refresh`** — once the gate exists and is blocking,
198
- this skill governs how an intentional drift in the baseline is
199
- refreshed without bypassing the gate.
200
- - **`core/ci-cd-and-automation`** — generic CI-pipeline conventions
201
- (gate ordering, no-skip rule, branch-protection wiring) that this
202
- skill specialises for the latent-state case.
203
- - **`.agents/rules/git-conventions.md` § Contract Cutovers** — a
204
- drift-style gate is itself a contract cutover (the contract is "the
205
- artifact and the source agree"). The hard-cutover policy applies:
206
- land green in one PR, don't ship two-shape tolerance.
207
- - **Source incident:** Epic #2880 friction note **F-W1-1**
208
- (LIFECYCLE.md drift exposure), hotfix
209
- [`5e3ef962`](https://github.com/dsj1984/mandrel/commit/5e3ef962),
210
- Stories
211
- [#2895](https://github.com/dsj1984/mandrel/issues/2895),
212
- [#2898](https://github.com/dsj1984/mandrel/issues/2898),
213
- [#2900](https://github.com/dsj1984/mandrel/issues/2900).
@@ -1,180 +0,0 @@
1
- ---
2
- name: knowledge-transfer
3
- description:
4
- Verifies that a human operator actually understands a plan or a code change
5
- through restate-first probing, a why-ladder, incremental mastery gates, and a
6
- persistent comprehension checklist. Use "explain", "walk me through", "help
7
- me understand", "teach me this change/plan", or "do I understand this?" to
8
- trigger. Operator-facing and interactive only.
9
- ---
10
-
11
- # Knowledge Transfer
12
-
13
- ## Policy Capsule
14
-
15
- - **Restate-first, always.** Open every layer by asking the operator to
16
- state their current understanding **before** you explain anything. You
17
- are filling gaps in their model, not lecturing from a blank slate. Never
18
- lead with the answer.
19
- - **Confirm mastery before advancing.** Walk the why-ladder one layer at a
20
- time and verify comprehension of the current layer (high-level *and*
21
- low-level) before moving to the next. Do not dump the whole picture at the
22
- end.
23
- - **The operator can stop at any point.** Every checkpoint MUST offer an
24
- explicit exit ("I'm good — proceed"). When the operator takes it, stop
25
- immediately and hand back. This is a comprehension *aid*, never a gate
26
- that traps the operator. This deliberately overrides any "do not end
27
- until verified" framing — operator control wins.
28
- - **Drive the why-ladder in order:** problem → why the problem existed →
29
- branches considered → chosen solution → design decisions → edge cases →
30
- broader impact / blast radius. Drill into *why* repeatedly; cover *what*
31
- and *how* alongside it.
32
- - **Keep a persistent checklist artifact.** Write a running markdown
33
- checklist to `temp/comprehension-<subject>.md` and update it incrementally
34
- as each item is mastered — so even a skipped or interrupted session leaves
35
- a readable summary. Artifacts over chat.
36
- - **Adapt depth on request.** Support ELI5 (explain like I'm five), intern
37
- (explain like I'm a new engineer), and peer (explain like I'm a colleague)
38
- levels; switch when the operator asks.
39
- - **Quiz with the host's structured-question mechanism when it sharpens
40
- understanding.** Randomize the position of the correct answer, ask one
41
- focused question at a time, and do not reveal the answer until the
42
- operator has submitted. Quizzing is optional — gate it behind the
43
- operator's appetite, never force it.
44
- - **Interactive only.** This skill MUST NOT run inside a non-interactive
45
- delivery sub-agent (`helpers/single-story-deliver`,
46
- `helpers/epic-deliver-story`, or any headless parent). There is no
47
- operator to teach; skip it entirely.
48
- - **Be honest, not flattering.** If the operator's restatement is wrong,
49
- say so plainly and correct it. A false "you've got it" defeats the
50
- purpose.
51
-
52
- ## What this skill is for
53
-
54
- Mandrel drives autonomous delivery: agents plan an Epic and then write and
55
- merge code the operator merges through the GitHub UI. That leaves two moments
56
- where the operator may not actually understand what they are authorizing or
57
- what they now own:
58
-
59
- 1. **Before delivery** — does the operator understand the **plan** (the Tech
60
- Spec, the decomposition, the wave roadmap, the risk) before authorizing a
61
- fan-out of subagents?
62
- 2. **After delivery** — does the operator understand the **realized change**
63
- (the diff, the design decisions, the edge cases) they just merged?
64
-
65
- This skill is the reusable comprehension engine for both. The *subject*
66
- differs (a plan vs. a diff); the *method* is identical.
67
-
68
- ## The subject
69
-
70
- Before starting, identify the comprehension subject and gather it:
71
-
72
- - **A plan** — the Epic body (whose managed sections carry the folded Tech
73
- Spec and Acceptance Table), the
74
- decomposition (Stories with inline `acceptance[]` / `verify[]`),
75
- and the dispatch/wave roadmap.
76
- - **A change** — a PR, a branch, or a working-tree diff. Read the diff, the
77
- PR/issue description, and the surrounding code the change touches.
78
-
79
- Ground every explanation in the actual artifact. Do not generalize from the
80
- title — read the real content first (`Glob` / `Grep` / `Read`, `gh pr view`,
81
- `git diff`).
82
-
83
- ## The loop
84
-
85
- 1. **Frame & gather.** State the subject in one sentence and load it. Write
86
- the initial checklist to `temp/comprehension-<subject>.md` with one
87
- unchecked item per why-ladder layer.
88
- 2. **Restate-first.** Ask the operator to explain, in their own words, what
89
- they currently understand about the subject. Listen for the gaps — this
90
- sets where you start.
91
- 3. **Fill gaps, one layer at a time.** For each why-ladder layer the operator
92
- has not mastered:
93
- - Explain at the requested depth, grounded in the artifact (show the code,
94
- the spec section, or the diff hunk).
95
- - Probe understanding: a short open question, or a quiz item via the host's
96
- structured-question mechanism.
97
- - Mark the checklist item only when the operator demonstrates
98
- understanding — not when you have merely explained it.
99
- - Offer the stop exit before moving on.
100
- 4. **Cover both altitudes.** High-level (motivation, why it matters, what it
101
- impacts) and low-level (business logic, specific edge cases). A confident
102
- high-level summary with no grasp of the edge cases is not mastery.
103
- 5. **Close.** When every checklist item is mastered — or the operator stops —
104
- summarize what was covered, note any unchecked items, and leave the
105
- checklist artifact in place.
106
-
107
- ## The why-ladder (comprehension checklist)
108
-
109
- The default checklist. Adapt the wording to the subject; keep the
110
- progression.
111
-
112
- - [ ] **The problem** — what is being solved, in one sentence.
113
- - [ ] **Why the problem existed** — the root cause or the gap, not just the
114
- symptom.
115
- - [ ] **The branches** — what alternatives were considered and set aside.
116
- - [ ] **The solution** — what was chosen (the plan, or the realized change).
117
- - [ ] **Why this solution** — the reasoning that selected it over the
118
- branches.
119
- - [ ] **Design decisions** — the specific choices inside the solution and
120
- their trade-offs.
121
- - [ ] **Edge cases** — the boundaries, failure modes, and what is explicitly
122
- *not* handled.
123
- - [ ] **Broader impact** — the blast radius: what this affects downstream,
124
- who is impacted, what to watch.
125
-
126
- ## Depth levels
127
-
128
- - **ELI5** — plain-language analogy, no jargon. For orienting before detail.
129
- - **Intern** — assumes general engineering literacy, explains the
130
- project-specific context and conventions.
131
- - **Peer** — assumes domain fluency; focuses on the non-obvious decisions and
132
- trade-offs.
133
-
134
- Default to *intern* and adjust when the operator's restatement or an explicit
135
- request tells you to go shallower or deeper.
136
-
137
- ## Quizzing
138
-
139
- When a quick check would sharpen understanding, pose a question through the
140
- host's structured-question mechanism. In Claude Code the reference
141
- implementation is the `AskUserQuestion` tool; on another host, use that
142
- host's equivalent structured-choice surface.
143
-
144
- - Ask **one** question at a time.
145
- - For multiple-choice, **randomize** which option is correct across questions.
146
- - Do **not** reveal or hint at the answer until the operator submits.
147
- - Follow a wrong answer with a targeted re-explanation of just that gap, then
148
- re-probe — do not move on.
149
-
150
- ## Activation
151
-
152
- This skill is the engine behind two operator-facing entry points:
153
-
154
- - **An ad-hoc conversational walkthrough** of a realized change (a PR,
155
- branch, or diff) — the host's native mode. Read this skill and run the
156
- loop directly when the operator asks to be walked through a change.
157
- (The former `/explain` workflow wrapper was retired in #4482.)
158
- - **A post-plan backlog walkthrough** — run the loop over a freshly planned
159
- backlog (the Epic body's Tech Spec sections, the Stories, the wave table)
160
- before the operator hands off to `/deliver`. Offer it by LM judgment on
161
- non-trivial plans; it is no longer a wired phase of
162
- [`/plan`](../../../workflows/helpers/plan-epic.md) (the comprehension gate
163
- was unwired from the pipeline in Epic #4474), always advisory, and never
164
- blocks the hand-off.
165
-
166
- It is discovered through the standard skill-activation contract in
167
- [`.agents/instructions.md` § 1.B](../../../instructions.md) — no separate
168
- always-on directive is required.
169
-
170
- ## Constraints
171
-
172
- - **Never** run in a non-interactive / headless delivery sub-agent.
173
- - **Never** advance past a checklist item the operator has not demonstrated
174
- understanding of (unless they explicitly stop).
175
- - **Never** reveal a quiz answer before submission, and never keep the
176
- correct choice in a fixed position across questions.
177
- - **Always** offer an explicit "proceed / stop" exit at every checkpoint.
178
- - **Always** ground explanations in the real artifact, not the title.
179
- - **Always** leave the `temp/comprehension-<subject>.md` checklist in place
180
- on exit.