session-orchestrator 3.16.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 (762) hide show
  1. package/.claude-plugin/marketplace.json +29 -0
  2. package/.claude-plugin/plugin.json +18 -0
  3. package/.codex-plugin/agents/explorer.toml +14 -0
  4. package/.codex-plugin/agents/session-reviewer.toml +23 -0
  5. package/.codex-plugin/agents/wave-worker.toml +15 -0
  6. package/.codex-plugin/config.toml +20 -0
  7. package/.codex-plugin/plugin.json +37 -0
  8. package/.cursor/rules/000-session-orchestrator.mdc +73 -0
  9. package/.cursor/rules/010-session-workflow.mdc +170 -0
  10. package/.cursor/rules/020-quality-gates.mdc +128 -0
  11. package/.cursor/rules/030-wave-execution.mdc +216 -0
  12. package/.cursor/rules/040-discovery.mdc +242 -0
  13. package/.cursor/rules/050-plan.mdc +235 -0
  14. package/.cursor/rules/060-evolve.mdc +232 -0
  15. package/.cursor/rules/070-gitlab-ops.mdc +246 -0
  16. package/.cursor/rules/080-ecosystem-health.mdc +145 -0
  17. package/.mcp.json +8 -0
  18. package/CHANGELOG.md +1544 -0
  19. package/LICENSE +21 -0
  20. package/NOTICE +64 -0
  21. package/README.md +242 -0
  22. package/SECURITY.md +90 -0
  23. package/agents/AGENTS.md +136 -0
  24. package/agents/analyst.md +99 -0
  25. package/agents/architect-reviewer.md +93 -0
  26. package/agents/code-implementer.md +106 -0
  27. package/agents/db-specialist.md +104 -0
  28. package/agents/dialectic-deriver.md +139 -0
  29. package/agents/docs-writer.md +113 -0
  30. package/agents/eval-judge.md +146 -0
  31. package/agents/memory-proposal-collector.md +297 -0
  32. package/agents/qa-strategist.md +102 -0
  33. package/agents/schemas/analyst.schema.json +46 -0
  34. package/agents/schemas/architect-reviewer.schema.json +50 -0
  35. package/agents/schemas/code-implementer.schema.json +61 -0
  36. package/agents/schemas/db-specialist.schema.json +80 -0
  37. package/agents/schemas/docs-writer.schema.json +56 -0
  38. package/agents/schemas/persona-panel-sidecar.schema.json +245 -0
  39. package/agents/schemas/qa-strategist.schema.json +46 -0
  40. package/agents/schemas/security-reviewer.schema.json +86 -0
  41. package/agents/schemas/session-reviewer.schema.json +69 -0
  42. package/agents/schemas/test-writer.schema.json +69 -0
  43. package/agents/schemas/ui-developer.schema.json +90 -0
  44. package/agents/schemas/ux-evaluator.schema.json +51 -0
  45. package/agents/security-reviewer.md +236 -0
  46. package/agents/session-reviewer.md +201 -0
  47. package/agents/skill-applied-judge.md +122 -0
  48. package/agents/test-writer.md +123 -0
  49. package/agents/ui-developer.md +109 -0
  50. package/agents/ux-evaluator.md +161 -0
  51. package/assets/icon.svg +11 -0
  52. package/assets/og-card.png +0 -0
  53. package/assets/og-card.svg +47 -0
  54. package/commands/autopilot-multi.md +74 -0
  55. package/commands/autopilot.md +80 -0
  56. package/commands/bootstrap.md +56 -0
  57. package/commands/brainstorm.md +48 -0
  58. package/commands/close.md +24 -0
  59. package/commands/debug.md +36 -0
  60. package/commands/discovery.md +32 -0
  61. package/commands/dispatcher.md +59 -0
  62. package/commands/eval.md +28 -0
  63. package/commands/evolve.md +10 -0
  64. package/commands/go.md +41 -0
  65. package/commands/grill.md +45 -0
  66. package/commands/harness-audit.md +26 -0
  67. package/commands/memory-cleanup.md +25 -0
  68. package/commands/persona-panel.md +121 -0
  69. package/commands/plan.md +15 -0
  70. package/commands/portfolio.md +97 -0
  71. package/commands/reconcile.md +23 -0
  72. package/commands/repo-audit.md +24 -0
  73. package/commands/session.md +30 -0
  74. package/commands/spinout.md +15 -0
  75. package/commands/sunset-review.md +27 -0
  76. package/commands/templates-ack.md +96 -0
  77. package/commands/test.md +97 -0
  78. package/docs/README.md +105 -0
  79. package/docs/USER-GUIDE.md +1403 -0
  80. package/docs/ci-setup.md +81 -0
  81. package/docs/codex-setup.md +142 -0
  82. package/docs/components.md +74 -0
  83. package/docs/cursor-setup.md +104 -0
  84. package/docs/events-schema.md +81 -0
  85. package/docs/migration-v3.md +148 -0
  86. package/docs/owner-config-schema.md +154 -0
  87. package/docs/persona-panel.md +433 -0
  88. package/docs/pi-setup.md +115 -0
  89. package/docs/plugin-architecture-v3.md +296 -0
  90. package/docs/pm-skills-marketplace.md +114 -0
  91. package/docs/policy-cache-validation-2026-04-28.md +118 -0
  92. package/docs/rule-authoring.md +316 -0
  93. package/docs/session-config-reference.md +1439 -0
  94. package/docs/session-config-template.md +961 -0
  95. package/docs/vault-docs-architecture.md +297 -0
  96. package/hooks/_lib/lock-bootstrap.mjs +272 -0
  97. package/hooks/_lib/lock-reconcile.mjs +93 -0
  98. package/hooks/_lib/profile-gate.mjs +95 -0
  99. package/hooks/_lib/transcript-history.mjs +211 -0
  100. package/hooks/agent-teams-h3-test.sh +362 -0
  101. package/hooks/config-protection.mjs +0 -0
  102. package/hooks/cwd-change-restore.mjs +131 -0
  103. package/hooks/enforce-commands.mjs +179 -0
  104. package/hooks/enforce-scope.mjs +273 -0
  105. package/hooks/hooks-codex.json +60 -0
  106. package/hooks/hooks-cursor.json +15 -0
  107. package/hooks/hooks-pi.json +115 -0
  108. package/hooks/hooks.json +215 -0
  109. package/hooks/loop-guard.mjs +260 -0
  110. package/hooks/on-session-end.mjs +217 -0
  111. package/hooks/on-session-start.mjs +660 -0
  112. package/hooks/on-stop.mjs +294 -0
  113. package/hooks/operator-steer.mjs +64 -0
  114. package/hooks/post-edit-validate.mjs +225 -0
  115. package/hooks/post-subagent-discovery-validator.mjs +398 -0
  116. package/hooks/post-tool-batch-wave-signal.mjs +328 -0
  117. package/hooks/post-tool-failure-corrective-context.mjs +248 -0
  118. package/hooks/post-tooluse-frontend-slop.mjs +184 -0
  119. package/hooks/pre-bash-destructive-guard.mjs +515 -0
  120. package/hooks/pre-bash-memory-propose-audit.mjs +206 -0
  121. package/hooks/pre-bash-staging-fence.mjs +223 -0
  122. package/hooks/pre-bash-templates-first.mjs +404 -0
  123. package/hooks/run-node.sh +72 -0
  124. package/hooks/skill-invocation-telemetry.mjs +99 -0
  125. package/hooks/subagent-telemetry.mjs +249 -0
  126. package/hooks/wave-scope-commit-guard.mjs +191 -0
  127. package/monitors/monitors.json +14 -0
  128. package/output-styles/finding-report.md +48 -0
  129. package/output-styles/session-report.md +53 -0
  130. package/output-styles/wave-summary.md +38 -0
  131. package/package.json +94 -0
  132. package/pi/extensions/session-orchestrator.ts +25 -0
  133. package/pi/prompts/autopilot-multi.md +12 -0
  134. package/pi/prompts/autopilot.md +12 -0
  135. package/pi/prompts/bootstrap.md +12 -0
  136. package/pi/prompts/brainstorm.md +12 -0
  137. package/pi/prompts/close.md +11 -0
  138. package/pi/prompts/debug.md +12 -0
  139. package/pi/prompts/discovery.md +12 -0
  140. package/pi/prompts/dispatcher.md +12 -0
  141. package/pi/prompts/eval.md +12 -0
  142. package/pi/prompts/evolve.md +12 -0
  143. package/pi/prompts/go.md +12 -0
  144. package/pi/prompts/grill.md +12 -0
  145. package/pi/prompts/harness-audit.md +12 -0
  146. package/pi/prompts/memory-cleanup.md +12 -0
  147. package/pi/prompts/persona-panel.md +12 -0
  148. package/pi/prompts/plan.md +12 -0
  149. package/pi/prompts/portfolio.md +12 -0
  150. package/pi/prompts/reconcile.md +12 -0
  151. package/pi/prompts/repo-audit.md +12 -0
  152. package/pi/prompts/session.md +12 -0
  153. package/pi/prompts/spinout.md +12 -0
  154. package/pi/prompts/sunset-review.md +12 -0
  155. package/pi/prompts/templates-ack.md +12 -0
  156. package/pi/prompts/test.md +12 -0
  157. package/rules/_index.md +51 -0
  158. package/rules/always-on/commit-discipline.md +26 -0
  159. package/rules/always-on/npm-quality-gates.md +26 -0
  160. package/rules/always-on/parallel-sessions.md +43 -0
  161. package/rules/opt-in-domain/prompt-caching.md +270 -0
  162. package/rules/opt-in-stack/backend-data.md +188 -0
  163. package/rules/opt-in-stack/backend.md +390 -0
  164. package/rules/opt-in-stack/frontend.md +98 -0
  165. package/rules/opt-in-stack/security-web.md +194 -0
  166. package/rules/opt-in-stack/swift.md +65 -0
  167. package/scripts/archive-closed-prds.mjs +416 -0
  168. package/scripts/autopilot-multi.mjs +802 -0
  169. package/scripts/autopilot.mjs +383 -0
  170. package/scripts/backfill-abandoned-sessions.mjs +265 -0
  171. package/scripts/backfill-learnings-expires.mjs +196 -0
  172. package/scripts/backfill-learnings.mjs +203 -0
  173. package/scripts/backfill-sessions.mjs +282 -0
  174. package/scripts/check-doc-consistency.sh +279 -0
  175. package/scripts/check-package-manager.mjs +445 -0
  176. package/scripts/ci/assert-vitest-green.mjs +267 -0
  177. package/scripts/codex-install.mjs +435 -0
  178. package/scripts/compute-grounding-injection.sh +186 -0
  179. package/scripts/cursor-install.mjs +113 -0
  180. package/scripts/dialectic-deriver.mjs +573 -0
  181. package/scripts/emit-event.mjs +160 -0
  182. package/scripts/emit-session.mjs +212 -0
  183. package/scripts/eval-session.mjs +262 -0
  184. package/scripts/export-hw-learnings.mjs +437 -0
  185. package/scripts/gc-stale-worktrees.mjs +666 -0
  186. package/scripts/generate-pi-prompts.mjs +127 -0
  187. package/scripts/harness-audit.mjs +287 -0
  188. package/scripts/lib/agent-frontmatter.mjs +266 -0
  189. package/scripts/lib/agent-output-schema.mjs +166 -0
  190. package/scripts/lib/agent-status.mjs +303 -0
  191. package/scripts/lib/ajv-loader.mjs +34 -0
  192. package/scripts/lib/auto-dialectic.mjs +382 -0
  193. package/scripts/lib/auto-dream.mjs +471 -0
  194. package/scripts/lib/autonomy/suitability.mjs +212 -0
  195. package/scripts/lib/autopilot/dep-graph.mjs +417 -0
  196. package/scripts/lib/autopilot/durable-telemetry.mjs +121 -0
  197. package/scripts/lib/autopilot/flags.mjs +104 -0
  198. package/scripts/lib/autopilot/kill-switches.mjs +174 -0
  199. package/scripts/lib/autopilot/loop.mjs +320 -0
  200. package/scripts/lib/autopilot/mr-draft.mjs +520 -0
  201. package/scripts/lib/autopilot/multi-killswitch.mjs +184 -0
  202. package/scripts/lib/autopilot/recent-runs.mjs +106 -0
  203. package/scripts/lib/autopilot/stall-sampler.mjs +97 -0
  204. package/scripts/lib/autopilot/telemetry.mjs +224 -0
  205. package/scripts/lib/autopilot/worktree-pipeline.mjs +605 -0
  206. package/scripts/lib/autopilot-telemetry.mjs +11 -0
  207. package/scripts/lib/autopilot.mjs +39 -0
  208. package/scripts/lib/backlog-scan.mjs +179 -0
  209. package/scripts/lib/bootstrap-lock-freshness.mjs +260 -0
  210. package/scripts/lib/bootstrap-lock-refresh.mjs +186 -0
  211. package/scripts/lib/build-live-signals.mjs +150 -0
  212. package/scripts/lib/ci-status-banner.mjs +425 -0
  213. package/scripts/lib/claude-md-budget-lint.mjs +246 -0
  214. package/scripts/lib/cli-flags.mjs +158 -0
  215. package/scripts/lib/codex/plugin-contract.mjs +610 -0
  216. package/scripts/lib/cold-start-detector.mjs +240 -0
  217. package/scripts/lib/command-blocker.mjs +458 -0
  218. package/scripts/lib/common.mjs +333 -0
  219. package/scripts/lib/config/auto-dream.mjs +77 -0
  220. package/scripts/lib/config/block-header.mjs +94 -0
  221. package/scripts/lib/config/broken-window.mjs +114 -0
  222. package/scripts/lib/config/coercers.mjs +248 -0
  223. package/scripts/lib/config/cold-start.mjs +92 -0
  224. package/scripts/lib/config/config-protection.mjs +120 -0
  225. package/scripts/lib/config/cross-repo.mjs +104 -0
  226. package/scripts/lib/config/custom-phases.mjs +213 -0
  227. package/scripts/lib/config/dialectic.mjs +92 -0
  228. package/scripts/lib/config/discovery-validator.mjs +75 -0
  229. package/scripts/lib/config/dispatcher-autonomy-capture.mjs +240 -0
  230. package/scripts/lib/config/dispatcher-autonomy.mjs +152 -0
  231. package/scripts/lib/config/docs-orchestrator.mjs +90 -0
  232. package/scripts/lib/config/docs-staleness.mjs +96 -0
  233. package/scripts/lib/config/drift-check.mjs +155 -0
  234. package/scripts/lib/config/eval.mjs +130 -0
  235. package/scripts/lib/config/events-rotation.mjs +74 -0
  236. package/scripts/lib/config/evolve.mjs +308 -0
  237. package/scripts/lib/config/frontend-slop-hook.mjs +104 -0
  238. package/scripts/lib/config/gitlab-portfolio.mjs +150 -0
  239. package/scripts/lib/config/handover-gate.mjs +106 -0
  240. package/scripts/lib/config/host-paths.mjs +76 -0
  241. package/scripts/lib/config/io.mjs +54 -0
  242. package/scripts/lib/config/loop-guard.mjs +117 -0
  243. package/scripts/lib/config/memory.mjs +150 -0
  244. package/scripts/lib/config/persona-gate-wave.mjs +258 -0
  245. package/scripts/lib/config/reconcile.mjs +205 -0
  246. package/scripts/lib/config/section-extractor.mjs +100 -0
  247. package/scripts/lib/config/skill-evolution.mjs +112 -0
  248. package/scripts/lib/config/slopcheck.mjs +99 -0
  249. package/scripts/lib/config/state-md-lock.mjs +83 -0
  250. package/scripts/lib/config/templates-first.mjs +94 -0
  251. package/scripts/lib/config/test.mjs +113 -0
  252. package/scripts/lib/config/vault-integration.mjs +201 -0
  253. package/scripts/lib/config/vault-mirror-quality.mjs +99 -0
  254. package/scripts/lib/config/vault-staleness.mjs +84 -0
  255. package/scripts/lib/config/vault-sync.mjs +96 -0
  256. package/scripts/lib/config/verification-auto-fix.mjs +84 -0
  257. package/scripts/lib/config/wave-reviewers.mjs +133 -0
  258. package/scripts/lib/config-schema.mjs +345 -0
  259. package/scripts/lib/config.mjs +474 -0
  260. package/scripts/lib/convergence-monitor.mjs +389 -0
  261. package/scripts/lib/coordinator-snapshot.mjs +371 -0
  262. package/scripts/lib/crypto-digest-utils.mjs +91 -0
  263. package/scripts/lib/discovery/helpers.mjs +127 -0
  264. package/scripts/lib/discovery/triage-state.mjs +279 -0
  265. package/scripts/lib/dispatcher/cli.mjs +257 -0
  266. package/scripts/lib/dispatcher/enumerate.mjs +243 -0
  267. package/scripts/lib/dispatcher/rank.mjs +363 -0
  268. package/scripts/lib/ecosystem-health.mjs +224 -0
  269. package/scripts/lib/ecosystem-wizard/ci-detector.mjs +18 -0
  270. package/scripts/lib/ecosystem-wizard/config-parser.mjs +54 -0
  271. package/scripts/lib/ecosystem-wizard/config-writer.mjs +287 -0
  272. package/scripts/lib/ecosystem-wizard/package-manager-detector.mjs +42 -0
  273. package/scripts/lib/ecosystem-wizard/wizard-prompt.mjs +246 -0
  274. package/scripts/lib/ecosystem-wizard.mjs +48 -0
  275. package/scripts/lib/env-check.mjs +89 -0
  276. package/scripts/lib/eval/engine.mjs +605 -0
  277. package/scripts/lib/eval/judge.mjs +433 -0
  278. package/scripts/lib/eval/report.mjs +367 -0
  279. package/scripts/lib/eval/schema.mjs +618 -0
  280. package/scripts/lib/eval/session-resolve.mjs +137 -0
  281. package/scripts/lib/eval/sink.mjs +77 -0
  282. package/scripts/lib/events-rotation.mjs +86 -0
  283. package/scripts/lib/events-schema.mjs +81 -0
  284. package/scripts/lib/events.mjs +80 -0
  285. package/scripts/lib/evolve/autonomy-verdict.mjs +461 -0
  286. package/scripts/lib/evolve/autopilot-effectiveness.mjs +293 -0
  287. package/scripts/lib/exclusivity-matrix.mjs +68 -0
  288. package/scripts/lib/fetch-baseline.mjs +311 -0
  289. package/scripts/lib/file-lock.mjs +512 -0
  290. package/scripts/lib/frontend-detect/detect.mjs +138 -0
  291. package/scripts/lib/frontend-detect/rules.mjs +295 -0
  292. package/scripts/lib/frontmatter-guard.mjs +241 -0
  293. package/scripts/lib/gates/echo-stub-detect.mjs +39 -0
  294. package/scripts/lib/gates/gate-baseline.mjs +42 -0
  295. package/scripts/lib/gates/gate-full.mjs +85 -0
  296. package/scripts/lib/gates/gate-helpers.mjs +231 -0
  297. package/scripts/lib/gates/gate-incremental.mjs +76 -0
  298. package/scripts/lib/gates/gate-per-file.mjs +55 -0
  299. package/scripts/lib/gitlab-ops/stale-mr-sweep.mjs +447 -0
  300. package/scripts/lib/gitlab-portfolio/aggregator.mjs +383 -0
  301. package/scripts/lib/gitlab-portfolio/cli.mjs +428 -0
  302. package/scripts/lib/gitlab-portfolio/markdown-writer.mjs +289 -0
  303. package/scripts/lib/gitlab-portfolio/vcs-detect.mjs +182 -0
  304. package/scripts/lib/handover-gate.mjs +222 -0
  305. package/scripts/lib/hardening.mjs +43 -0
  306. package/scripts/lib/hardware-pattern-detector.mjs +238 -0
  307. package/scripts/lib/harness-audit/categories/category1.mjs +123 -0
  308. package/scripts/lib/harness-audit/categories/category2.mjs +145 -0
  309. package/scripts/lib/harness-audit/categories/category3.mjs +143 -0
  310. package/scripts/lib/harness-audit/categories/category4.mjs +202 -0
  311. package/scripts/lib/harness-audit/categories/category5.mjs +152 -0
  312. package/scripts/lib/harness-audit/categories/category6.mjs +211 -0
  313. package/scripts/lib/harness-audit/categories/category7.mjs +125 -0
  314. package/scripts/lib/harness-audit/categories/category8.mjs +328 -0
  315. package/scripts/lib/harness-audit/categories/category9.mjs +294 -0
  316. package/scripts/lib/harness-audit/categories/helpers.mjs +165 -0
  317. package/scripts/lib/harness-audit/categories.mjs +19 -0
  318. package/scripts/lib/historical-guard.mjs +15 -0
  319. package/scripts/lib/host-identity.mjs +262 -0
  320. package/scripts/lib/instruction-budget-guard.mjs +332 -0
  321. package/scripts/lib/io.mjs +304 -0
  322. package/scripts/lib/issue-close-strip-labels.mjs +161 -0
  323. package/scripts/lib/language-mappers/README.md +57 -0
  324. package/scripts/lib/language-mappers/index.mjs +165 -0
  325. package/scripts/lib/language-mappers/markdown.mjs +149 -0
  326. package/scripts/lib/language-mappers/python.mjs +249 -0
  327. package/scripts/lib/language-mappers/swift.mjs +201 -0
  328. package/scripts/lib/language-mappers/typescript.mjs +433 -0
  329. package/scripts/lib/learnings/expiry-sweep.mjs +164 -0
  330. package/scripts/lib/learnings/filters.mjs +43 -0
  331. package/scripts/lib/learnings/io.mjs +255 -0
  332. package/scripts/lib/learnings/schema.mjs +518 -0
  333. package/scripts/lib/learnings/surface.mjs +207 -0
  334. package/scripts/lib/learnings.mjs +42 -0
  335. package/scripts/lib/lock-reaper.mjs +648 -0
  336. package/scripts/lib/locks/index.mjs +31 -0
  337. package/scripts/lib/locks/lock-body.mjs +62 -0
  338. package/scripts/lib/locks/staging-fence-lock.mjs +267 -0
  339. package/scripts/lib/locks/state-md-lock.mjs +351 -0
  340. package/scripts/lib/loop-readiness-banner.mjs +144 -0
  341. package/scripts/lib/memory-banner.mjs +478 -0
  342. package/scripts/lib/memory-cleanup/worktree-sweep.mjs +108 -0
  343. package/scripts/lib/memory-cleanup-stamp.mjs +56 -0
  344. package/scripts/lib/memory-paths.mjs +31 -0
  345. package/scripts/lib/memory-proposals/collector.mjs +334 -0
  346. package/scripts/lib/memory-proposals/schema.mjs +289 -0
  347. package/scripts/lib/memory-proposals/sink.mjs +507 -0
  348. package/scripts/lib/memory-proposals/store.mjs +441 -0
  349. package/scripts/lib/mission-status-schema.mjs +114 -0
  350. package/scripts/lib/mode-selector/alternatives.mjs +64 -0
  351. package/scripts/lib/mode-selector/constants.mjs +29 -0
  352. package/scripts/lib/mode-selector/context-pressure.mjs +157 -0
  353. package/scripts/lib/mode-selector/rationale.mjs +55 -0
  354. package/scripts/lib/mode-selector/scoring.mjs +221 -0
  355. package/scripts/lib/mode-selector-accuracy.mjs +121 -0
  356. package/scripts/lib/mode-selector.mjs +160 -0
  357. package/scripts/lib/multi-provider-build/providers.mjs +64 -0
  358. package/scripts/lib/multi-provider-build/templating.mjs +130 -0
  359. package/scripts/lib/named-baseline-resolver.mjs +233 -0
  360. package/scripts/lib/named-vault-resolver.mjs +433 -0
  361. package/scripts/lib/owner-config/coerce.mjs +29 -0
  362. package/scripts/lib/owner-config/constants.mjs +21 -0
  363. package/scripts/lib/owner-config/defaults.mjs +50 -0
  364. package/scripts/lib/owner-config/error.mjs +19 -0
  365. package/scripts/lib/owner-config/index.mjs +13 -0
  366. package/scripts/lib/owner-config/merge.mjs +52 -0
  367. package/scripts/lib/owner-config/validate.mjs +259 -0
  368. package/scripts/lib/owner-config-banner.mjs +126 -0
  369. package/scripts/lib/owner-config-loader.mjs +159 -0
  370. package/scripts/lib/owner-config.example.yaml +72 -0
  371. package/scripts/lib/owner-config.mjs +28 -0
  372. package/scripts/lib/owner-interview.mjs +243 -0
  373. package/scripts/lib/owner-yaml.mjs +571 -0
  374. package/scripts/lib/package-manager.mjs +160 -0
  375. package/scripts/lib/path-utils.mjs +217 -0
  376. package/scripts/lib/peer-cards/merger.mjs +310 -0
  377. package/scripts/lib/peer-cards/reader.mjs +125 -0
  378. package/scripts/lib/peer-cards/schema.mjs +230 -0
  379. package/scripts/lib/peer-cards/staleness-banner.mjs +86 -0
  380. package/scripts/lib/peer-cards/writer.mjs +138 -0
  381. package/scripts/lib/peer-discovery.mjs +200 -0
  382. package/scripts/lib/persona-panel/catalog-loader.mjs +577 -0
  383. package/scripts/lib/persona-panel/consolidator.mjs +370 -0
  384. package/scripts/lib/persona-panel/persona-runner.mjs +375 -0
  385. package/scripts/lib/persona-panel/threshold.mjs +130 -0
  386. package/scripts/lib/pi-hook-bridge.mjs +328 -0
  387. package/scripts/lib/platform.mjs +266 -0
  388. package/scripts/lib/playwright-driver/runner.mjs +297 -0
  389. package/scripts/lib/plugin-root.mjs +210 -0
  390. package/scripts/lib/pre-dispatch-check.mjs +126 -0
  391. package/scripts/lib/product-repo-detect.mjs +121 -0
  392. package/scripts/lib/profiles/registry.mjs +176 -0
  393. package/scripts/lib/profiles/schema.mjs +209 -0
  394. package/scripts/lib/qg-command-drift-banner.mjs +88 -0
  395. package/scripts/lib/quality-gate/diagnostics.mjs +92 -0
  396. package/scripts/lib/quality-gate.mjs +536 -0
  397. package/scripts/lib/quality-gates-cache.mjs +228 -0
  398. package/scripts/lib/quality-gates-policy.mjs +95 -0
  399. package/scripts/lib/recommendations-v0.mjs +156 -0
  400. package/scripts/lib/reconcile/eligibility.mjs +203 -0
  401. package/scripts/lib/reconcile/emitter.mjs +244 -0
  402. package/scripts/lib/reconcile/engine.mjs +412 -0
  403. package/scripts/lib/reconcile/idempotency.mjs +239 -0
  404. package/scripts/lib/reconcile/renderer.mjs +211 -0
  405. package/scripts/lib/reconcile/writer.mjs +293 -0
  406. package/scripts/lib/reconcile-nudge-banner.mjs +284 -0
  407. package/scripts/lib/resource-probe/evaluate.mjs +190 -0
  408. package/scripts/lib/resource-probe/parsers.mjs +181 -0
  409. package/scripts/lib/resource-probe/probe-platform.mjs +300 -0
  410. package/scripts/lib/resource-probe.mjs +95 -0
  411. package/scripts/lib/rule-loader.mjs +552 -0
  412. package/scripts/lib/rules-sync.mjs +439 -0
  413. package/scripts/lib/scope-gate.mjs +496 -0
  414. package/scripts/lib/session-close-backfill.mjs +539 -0
  415. package/scripts/lib/session-discovery.mjs +256 -0
  416. package/scripts/lib/session-end/phase-skip.mjs +357 -0
  417. package/scripts/lib/session-end/worktree-cleanup.mjs +112 -0
  418. package/scripts/lib/session-id.mjs +362 -0
  419. package/scripts/lib/session-lock.mjs +703 -0
  420. package/scripts/lib/session-registry.mjs +355 -0
  421. package/scripts/lib/session-schema/aliases.mjs +71 -0
  422. package/scripts/lib/session-schema/constants.mjs +115 -0
  423. package/scripts/lib/session-schema/normalizer.mjs +66 -0
  424. package/scripts/lib/session-schema/timestamps.mjs +64 -0
  425. package/scripts/lib/session-schema/validator.mjs +453 -0
  426. package/scripts/lib/session-schema.mjs +71 -0
  427. package/scripts/lib/session-token-rollup.mjs +137 -0
  428. package/scripts/lib/sessions-staleness-banner.mjs +247 -0
  429. package/scripts/lib/skill-evolution/blast-radius-classifier.mjs +114 -0
  430. package/scripts/lib/skill-evolution/candidate-intake.mjs +270 -0
  431. package/scripts/lib/skill-evolution/config-validation-gate.mjs +279 -0
  432. package/scripts/lib/skill-evolution/engine.mjs +719 -0
  433. package/scripts/lib/skill-evolution/idempotency.mjs +279 -0
  434. package/scripts/lib/skill-evolution/mr-opener.mjs +507 -0
  435. package/scripts/lib/skill-health/join.mjs +181 -0
  436. package/scripts/lib/skill-health/score.mjs +123 -0
  437. package/scripts/lib/skill-invocations-schema.mjs +214 -0
  438. package/scripts/lib/skill-judge.mjs +348 -0
  439. package/scripts/lib/skill-judgments-schema.mjs +264 -0
  440. package/scripts/lib/slopcheck.mjs +501 -0
  441. package/scripts/lib/soul-resolve.mjs +118 -0
  442. package/scripts/lib/spiral-carryover.mjs +495 -0
  443. package/scripts/lib/state-md/body-sections.mjs +851 -0
  444. package/scripts/lib/state-md/frontmatter-mutators.mjs +453 -0
  445. package/scripts/lib/state-md/mission-status.mjs +247 -0
  446. package/scripts/lib/state-md/recommendations.mjs +57 -0
  447. package/scripts/lib/state-md/yaml-parser.mjs +234 -0
  448. package/scripts/lib/state-md-peer-guard.mjs +232 -0
  449. package/scripts/lib/state-md.mjs +53 -0
  450. package/scripts/lib/subagents-schema.mjs +309 -0
  451. package/scripts/lib/sunset/walker.mjs +1192 -0
  452. package/scripts/lib/test-runner/artifact-paths.mjs +94 -0
  453. package/scripts/lib/test-runner/fingerprint.mjs +33 -0
  454. package/scripts/lib/test-runner/issue-reconcile.mjs +770 -0
  455. package/scripts/lib/tmux-layout/layouts.mjs +224 -0
  456. package/scripts/lib/tmux-layout/telemetry-stats.mjs +100 -0
  457. package/scripts/lib/tmux-layout/telemetry.mjs +88 -0
  458. package/scripts/lib/tmux-layout/tmux-shell.mjs +82 -0
  459. package/scripts/lib/tmux-layout/vcs-detector.mjs +88 -0
  460. package/scripts/lib/validate/check-agents.mjs +457 -0
  461. package/scripts/lib/validate/check-codex-plugin.mjs +37 -0
  462. package/scripts/lib/validate/check-commands.mjs +148 -0
  463. package/scripts/lib/validate/check-component-paths.mjs +112 -0
  464. package/scripts/lib/validate/check-dead-bridge.mjs +180 -0
  465. package/scripts/lib/validate/check-hooks-symmetry.mjs +258 -0
  466. package/scripts/lib/validate/check-json-files.mjs +116 -0
  467. package/scripts/lib/validate/check-owner-leakage.mjs +1011 -0
  468. package/scripts/lib/validate/check-path-utils-canary.mjs +175 -0
  469. package/scripts/lib/validate/check-peekaboo-driver-canary.mjs +201 -0
  470. package/scripts/lib/validate/check-pi-package.mjs +110 -0
  471. package/scripts/lib/validate/check-pi-prompts.mjs +43 -0
  472. package/scripts/lib/validate/check-playwright-mcp-canary.mjs +154 -0
  473. package/scripts/lib/validate/check-plugin-json.mjs +96 -0
  474. package/scripts/lib/validate/check-plugin-monitors.mjs +206 -0
  475. package/scripts/lib/validate/check-plugin-schema.mjs +137 -0
  476. package/scripts/lib/validate/check-rules.mjs +143 -0
  477. package/scripts/lib/validate/check-session-plan-routing.mjs +154 -0
  478. package/scripts/lib/validate/check-test-fixture-shapes.mjs +280 -0
  479. package/scripts/lib/validate/check-unicode-safety.mjs +533 -0
  480. package/scripts/lib/validate/confidential-names.mjs +169 -0
  481. package/scripts/lib/validate/dead-bridge-corpus.mjs +141 -0
  482. package/scripts/lib/validate/dead-bridge-detectors.mjs +568 -0
  483. package/scripts/lib/validate/tier-inference.mjs +100 -0
  484. package/scripts/lib/validate-vendored-rules.mjs +519 -0
  485. package/scripts/lib/vault-archive.mjs +404 -0
  486. package/scripts/lib/vault-backfill/glab.mjs +164 -0
  487. package/scripts/lib/vault-backfill/manifest.mjs +75 -0
  488. package/scripts/lib/vault-backfill/template.mjs +130 -0
  489. package/scripts/lib/vault-consolidate-fs.mjs +331 -0
  490. package/scripts/lib/vault-migration-rules.mjs +155 -0
  491. package/scripts/lib/vault-mirror/auto-commit.mjs +203 -0
  492. package/scripts/lib/vault-mirror/namespace.mjs +152 -0
  493. package/scripts/lib/vault-mirror/process.mjs +567 -0
  494. package/scripts/lib/vault-mirror/pseudonym-map.mjs +164 -0
  495. package/scripts/lib/vault-mirror/render-learnings.mjs +201 -0
  496. package/scripts/lib/vault-mirror/render-sessions.mjs +367 -0
  497. package/scripts/lib/vault-mirror/render.mjs +8 -0
  498. package/scripts/lib/vault-mirror/utils.mjs +217 -0
  499. package/scripts/lib/vault-relocation-rules.mjs +555 -0
  500. package/scripts/lib/vault-repo-backfill.mjs +235 -0
  501. package/scripts/lib/vault-staleness-banner.mjs +142 -0
  502. package/scripts/lib/vault-status/board-writer.mjs +769 -0
  503. package/scripts/lib/vault-status/narrative-mirror.mjs +544 -0
  504. package/scripts/lib/vault-sync-baseline.mjs +152 -0
  505. package/scripts/lib/wave-context.mjs +29 -0
  506. package/scripts/lib/wave-executor/pool.mjs +248 -0
  507. package/scripts/lib/wave-resource-gate.mjs +204 -0
  508. package/scripts/lib/wave-sizing.mjs +75 -0
  509. package/scripts/lib/webhook-url.mjs +105 -0
  510. package/scripts/lib/workspace.mjs +198 -0
  511. package/scripts/lib/worktree/constants.mjs +35 -0
  512. package/scripts/lib/worktree/index.mjs +17 -0
  513. package/scripts/lib/worktree/lifecycle.mjs +287 -0
  514. package/scripts/lib/worktree/listing.mjs +118 -0
  515. package/scripts/lib/worktree/meta.mjs +64 -0
  516. package/scripts/lib/worktree-freshness.mjs +313 -0
  517. package/scripts/lib/worktree.mjs +15 -0
  518. package/scripts/lifecycle-sim-v6.mjs +347 -0
  519. package/scripts/lock-reaper.mjs +185 -0
  520. package/scripts/mcp-server.sh +241 -0
  521. package/scripts/measure-policy-cache-effectiveness.mjs +427 -0
  522. package/scripts/memory-propose.mjs +464 -0
  523. package/scripts/migrate-cold-start-seed.mjs +404 -0
  524. package/scripts/migrate-learnings-jsonl.mjs +189 -0
  525. package/scripts/migrate-legacy-learnings.sh +61 -0
  526. package/scripts/migrate-sessions-jsonl.mjs +448 -0
  527. package/scripts/migrate-subagents-jsonl.mjs +196 -0
  528. package/scripts/migrate-vault-paths.mjs +796 -0
  529. package/scripts/parse-config.mjs +149 -0
  530. package/scripts/pi-install.mjs +117 -0
  531. package/scripts/print-applicable-rules.mjs +247 -0
  532. package/scripts/promote-vault-strict.mjs +496 -0
  533. package/scripts/relocate-vault-corpus.mjs +1178 -0
  534. package/scripts/run-migrate-v2-cross-repo.mjs +385 -0
  535. package/scripts/run-quality-gate.mjs +216 -0
  536. package/scripts/spikes/h3-agent-teams/preflight.sh +53 -0
  537. package/scripts/spikes/h3-agent-teams/run-h3.sh +112 -0
  538. package/scripts/spikes/h3-agent-teams/setup.sh +137 -0
  539. package/scripts/spikes/h3-agent-teams/toggle.sh +38 -0
  540. package/scripts/sweep-expired-learnings.mjs +135 -0
  541. package/scripts/sync-vault-schema.mjs +376 -0
  542. package/scripts/tests/fixtures/fetch-baseline/sample-rule.md +8 -0
  543. package/scripts/tmux-layout.mjs +245 -0
  544. package/scripts/token-audit.sh +191 -0
  545. package/scripts/typecheck.mjs +42 -0
  546. package/scripts/upload-social-preview.mjs +316 -0
  547. package/scripts/validate-config.mjs +46 -0
  548. package/scripts/validate-plugin-manifests.mjs +163 -0
  549. package/scripts/validate-plugin.mjs +264 -0
  550. package/scripts/validate-wave-scope.mjs +289 -0
  551. package/scripts/vault-backfill.mjs +404 -0
  552. package/scripts/vault-consolidate.mjs +596 -0
  553. package/scripts/vault-integration-watcher.mjs +394 -0
  554. package/scripts/vault-mirror.mjs +430 -0
  555. package/skills/_shared/bootstrap-gate.md +111 -0
  556. package/skills/_shared/config-reading.md +226 -0
  557. package/skills/_shared/instruction-file-resolution.md +79 -0
  558. package/skills/_shared/model-selection.md +64 -0
  559. package/skills/_shared/monitor-patterns.md +300 -0
  560. package/skills/_shared/parallel-aware-auq.md +121 -0
  561. package/skills/_shared/parallel-aware-preamble.md +185 -0
  562. package/skills/_shared/platform-tools.md +96 -0
  563. package/skills/_shared/state-ownership.md +221 -0
  564. package/skills/architecture/DEEPENING.md +37 -0
  565. package/skills/architecture/INTERFACE-DESIGN.md +44 -0
  566. package/skills/architecture/LANGUAGE.md +53 -0
  567. package/skills/architecture/SKILL.md +92 -0
  568. package/skills/autopilot/SKILL.md +419 -0
  569. package/skills/bootstrap/SKILL.md +592 -0
  570. package/skills/bootstrap/STATE.md.template +24 -0
  571. package/skills/bootstrap/_shared-template.md +243 -0
  572. package/skills/bootstrap/deep-template.md +659 -0
  573. package/skills/bootstrap/fast-template.md +251 -0
  574. package/skills/bootstrap/intensity-heuristic.md +80 -0
  575. package/skills/bootstrap/public-fallback.md +342 -0
  576. package/skills/bootstrap/standard-template.md +736 -0
  577. package/skills/bootstrap/templates/agents/project-code-review.md +18 -0
  578. package/skills/bootstrap/templates/agents/project-discovery.md +18 -0
  579. package/skills/bootstrap/templates/agents/project-quality-gate.md +18 -0
  580. package/skills/brainstorm/SKILL.md +268 -0
  581. package/skills/brainstorm/soul.md +49 -0
  582. package/skills/claude-md-drift-check/SKILL.md +186 -0
  583. package/skills/claude-md-drift-check/checker.mjs +1380 -0
  584. package/skills/claude-md-drift-check/checker.sh +37 -0
  585. package/skills/claude-md-drift-check/package.json +16 -0
  586. package/skills/convergence-monitoring/README.md +39 -0
  587. package/skills/convergence-monitoring/SIGNALS.md +246 -0
  588. package/skills/convergence-monitoring/SKILL.md +285 -0
  589. package/skills/daily/SKILL.md +222 -0
  590. package/skills/daily/generate.sh +92 -0
  591. package/skills/daily/templates/daily.md.tpl +36 -0
  592. package/skills/debug/SKILL.md +188 -0
  593. package/skills/debug/soul.md +35 -0
  594. package/skills/discovery/SKILL.md +567 -0
  595. package/skills/discovery/issue-templates.md +237 -0
  596. package/skills/discovery/probes/docs-staleness.mjs +195 -0
  597. package/skills/discovery/probes/frontend-slop.mjs +186 -0
  598. package/skills/discovery/probes/ssot-code-diff.mjs +310 -0
  599. package/skills/discovery/probes/supply-chain-slopcheck.mjs +440 -0
  600. package/skills/discovery/probes/vault-narrative-staleness.mjs +355 -0
  601. package/skills/discovery/probes/vault-staleness.mjs +272 -0
  602. package/skills/discovery/probes-arch.md +252 -0
  603. package/skills/discovery/probes-audit.md +95 -0
  604. package/skills/discovery/probes-code.md +329 -0
  605. package/skills/discovery/probes-docs.md +76 -0
  606. package/skills/discovery/probes-feature.md +150 -0
  607. package/skills/discovery/probes-infra.md +138 -0
  608. package/skills/discovery/probes-intro.md +25 -0
  609. package/skills/discovery/probes-session.md +495 -0
  610. package/skills/discovery/probes-supply-chain.md +94 -0
  611. package/skills/discovery/probes-ui.md +147 -0
  612. package/skills/discovery/probes-vault.md +64 -0
  613. package/skills/discovery/slop-patterns.md +115 -0
  614. package/skills/dispatcher/SKILL.md +173 -0
  615. package/skills/docs-orchestrator/SKILL.md +362 -0
  616. package/skills/docs-orchestrator/audience-mapping.md +140 -0
  617. package/skills/domain-model/ADR-FORMAT.md +47 -0
  618. package/skills/domain-model/CONTEXT-FORMAT.md +77 -0
  619. package/skills/domain-model/SKILL.md +85 -0
  620. package/skills/ecosystem-health/SKILL.md +119 -0
  621. package/skills/ecosystem-health/wizard.md +193 -0
  622. package/skills/eval/SKILL.md +293 -0
  623. package/skills/eval/rubric-v1.md +218 -0
  624. package/skills/evolve/SKILL.md +546 -0
  625. package/skills/frontmatter-guard/SKILL.md +126 -0
  626. package/skills/gitlab-ops/SKILL.md +368 -0
  627. package/skills/gitlab-portfolio/SKILL.md +196 -0
  628. package/skills/grill/SKILL.md +185 -0
  629. package/skills/grill/soul.md +55 -0
  630. package/skills/hook-development/SKILL.md +413 -0
  631. package/skills/mcp-builder/SKILL.md +260 -0
  632. package/skills/memory-cleanup/SKILL.md +310 -0
  633. package/skills/mode-selector/SKILL.md +226 -0
  634. package/skills/peekaboo-driver/SKILL.md +237 -0
  635. package/skills/peekaboo-driver/soul.md +32 -0
  636. package/skills/persona-panel/SKILL.md +365 -0
  637. package/skills/persona-panel/persona-format.md +205 -0
  638. package/skills/persona-panel/presets/designer-lens.md +87 -0
  639. package/skills/persona-panel/presets/engineer-lens.md +88 -0
  640. package/skills/persona-panel/presets/pm-lens.md +86 -0
  641. package/skills/plan/SKILL.md +496 -0
  642. package/skills/plan/mode-feature.md +141 -0
  643. package/skills/plan/mode-new.md +297 -0
  644. package/skills/plan/mode-retro.md +271 -0
  645. package/skills/plan/prd-feature-template.md +132 -0
  646. package/skills/plan/prd-full-template.md +151 -0
  647. package/skills/plan/prd-reviewer-prompt.md +103 -0
  648. package/skills/plan/retro-template.md +75 -0
  649. package/skills/plan/soul.md +62 -0
  650. package/skills/playwright-driver/SKILL.md +226 -0
  651. package/skills/playwright-driver/soul.md +30 -0
  652. package/skills/quality-gates/SKILL.md +212 -0
  653. package/skills/reconcile/SKILL.md +324 -0
  654. package/skills/repo-audit/SKILL.md +272 -0
  655. package/skills/session-end/SKILL.md +1044 -0
  656. package/skills/session-end/discovery-scan.md +37 -0
  657. package/skills/session-end/drift-operations.md +97 -0
  658. package/skills/session-end/learning-patterns.md +78 -0
  659. package/skills/session-end/metrics-collection.md +175 -0
  660. package/skills/session-end/phase-3-2-docs-verification.md +148 -0
  661. package/skills/session-end/phase-3-6-tail.md +344 -0
  662. package/skills/session-end/phase-3-7a-recommendations.md +86 -0
  663. package/skills/session-end/plan-verification.md +288 -0
  664. package/skills/session-end/session-metrics-write.md +223 -0
  665. package/skills/session-end/vault-operations.md +50 -0
  666. package/skills/session-end/verification-checklist.md +20 -0
  667. package/skills/session-plan/SKILL.md +554 -0
  668. package/skills/session-plan/wave-template.md +37 -0
  669. package/skills/session-start/SKILL.md +1043 -0
  670. package/skills/session-start/phase-2-5-docs-planning.md +119 -0
  671. package/skills/session-start/phase-4-5-resource-health.md +49 -0
  672. package/skills/session-start/phase-7-1-premise-check.md +47 -0
  673. package/skills/session-start/phase-7-5-mode-selector.md +237 -0
  674. package/skills/session-start/phase-8-5-express-path.md +61 -0
  675. package/skills/session-start/presentation-format.md +81 -0
  676. package/skills/session-start/soul.md +57 -0
  677. package/skills/skill-creator/SKILL.md +168 -0
  678. package/skills/spinout/SKILL.md +76 -0
  679. package/skills/sunset-review/SKILL.md +96 -0
  680. package/skills/test-runner/SKILL.md +362 -0
  681. package/skills/test-runner/rubric-v1.md +388 -0
  682. package/skills/test-runner/soul.md +46 -0
  683. package/skills/tmux-layout/SKILL.md +104 -0
  684. package/skills/ubiquitous-language/SKILL.md +97 -0
  685. package/skills/using-orchestrator/SKILL.md +144 -0
  686. package/skills/vault-mirror/SKILL.md +234 -0
  687. package/skills/vault-sync/SKILL.md +319 -0
  688. package/skills/vault-sync/package-lock.json +40 -0
  689. package/skills/vault-sync/package.json +11 -0
  690. package/skills/vault-sync/tests/fixtures/archive-test-vault/90-archive/bad-archived.md +8 -0
  691. package/skills/vault-sync/tests/fixtures/archive-test-vault/_meta/.gitkeep +0 -0
  692. package/skills/vault-sync/tests/fixtures/archive-test-vault/live-note.md +8 -0
  693. package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/_meta/.gitkeep +0 -0
  694. package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/bad-type.md +8 -0
  695. package/skills/vault-sync/tests/fixtures/broken-frontmatter-vault/good-note.md +8 -0
  696. package/skills/vault-sync/tests/fixtures/clean-vault/.obsidian/config.md +8 -0
  697. package/skills/vault-sync/tests/fixtures/clean-vault/01-projects/foo/projects-baseline.md +10 -0
  698. package/skills/vault-sync/tests/fixtures/clean-vault/03-daily/daily-2026-04-13.md +8 -0
  699. package/skills/vault-sync/tests/fixtures/clean-vault/README.md +3 -0
  700. package/skills/vault-sync/tests/fixtures/clean-vault/hello-world.md +11 -0
  701. package/skills/vault-sync/tests/fixtures/dangling-link-vault/_meta/.gitkeep +0 -0
  702. package/skills/vault-sync/tests/fixtures/dangling-link-vault/has-dangling.md +9 -0
  703. package/skills/vault-sync/tests/fixtures/dangling-link-vault/real-target.md +8 -0
  704. package/skills/vault-sync/tests/fixtures/empty-vault/_meta/.gitkeep +0 -0
  705. package/skills/vault-sync/tests/fixtures/missing-field-vault/_meta/.gitkeep +0 -0
  706. package/skills/vault-sync/tests/fixtures/missing-field-vault/missing-id.md +7 -0
  707. package/skills/vault-sync/tests/fixtures/nested-tag-vault/03-daily/daily-2026-04-13.md +9 -0
  708. package/skills/vault-sync/tests/fixtures/nested-tag-vault/_meta/.gitkeep +0 -0
  709. package/skills/vault-sync/tests/fixtures/nested-tag-vault/nested-tags-note.md +11 -0
  710. package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/README.md +3 -0
  711. package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/_MOC.md +3 -0
  712. package/skills/vault-sync/tests/fixtures/no-frontmatter-vault/_meta/.gitkeep +0 -0
  713. package/skills/vault-sync/tests/fixtures/with-moc-vault/_MOC.md +11 -0
  714. package/skills/vault-sync/tests/fixtures/with-moc-vault/_meta/.gitkeep +0 -0
  715. package/skills/vault-sync/tests/fixtures/with-moc-vault/hello-world.md +11 -0
  716. package/skills/vault-sync/tests/schema-drift.test.mjs +133 -0
  717. package/skills/vault-sync/validator.mjs +658 -0
  718. package/skills/vault-sync/validator.sh +55 -0
  719. package/skills/wave-executor/SKILL.md +496 -0
  720. package/skills/wave-executor/circuit-breaker.md +169 -0
  721. package/skills/wave-executor/wave-loop.md +1043 -0
  722. package/skills/write-executable-plan/SKILL.md +237 -0
  723. package/skills/write-executable-plan/plan-template.md +154 -0
  724. package/templates/_minimal/CLAUDE.md.tmpl +41 -0
  725. package/templates/_minimal/README.md.tmpl +15 -0
  726. package/templates/_minimal/gitignore.tmpl +47 -0
  727. package/templates/_shared/harte-regeln.md +16 -0
  728. package/templates/_shared/loop.md +90 -0
  729. package/templates/_shared/rules/parallel-sessions.md +77 -0
  730. package/templates/nextjs-minimal/README.md +30 -0
  731. package/templates/nextjs-minimal/app/layout.tsx +18 -0
  732. package/templates/nextjs-minimal/app/page.tsx +7 -0
  733. package/templates/nextjs-minimal/eslint.config.mjs +16 -0
  734. package/templates/nextjs-minimal/next.config.mjs +4 -0
  735. package/templates/nextjs-minimal/package.json +27 -0
  736. package/templates/nextjs-minimal/tsconfig.json +23 -0
  737. package/templates/node-minimal/README.md +33 -0
  738. package/templates/node-minimal/eslint.config.mjs +10 -0
  739. package/templates/node-minimal/package.json +21 -0
  740. package/templates/node-minimal/src/index.ts +1 -0
  741. package/templates/node-minimal/tests/sanity.test.ts +5 -0
  742. package/templates/node-minimal/tsconfig.json +17 -0
  743. package/templates/personas/README.md +150 -0
  744. package/templates/personas/accounting-compliance.v1.md +120 -0
  745. package/templates/personas/accounting-tax-advisor.v1.md +116 -0
  746. package/templates/personas/buyer-p1-cto.v1.md +125 -0
  747. package/templates/personas/buyer-p2-kanzlei.v1.md +134 -0
  748. package/templates/personas/buyer-p3-build.v1.md +130 -0
  749. package/templates/personas/buyer-p4-tech-veto.v1.md +130 -0
  750. package/templates/personas/buyer-p5-solo.v1.md +132 -0
  751. package/templates/personas/buyer-p6-ld.v1.md +130 -0
  752. package/templates/personas/klima-ai-expert.v1.md +114 -0
  753. package/templates/personas/klima-physicist.v1.md +117 -0
  754. package/templates/python-uv/README.md +28 -0
  755. package/templates/python-uv/pyproject.toml +32 -0
  756. package/templates/python-uv/src/__PROJECT_NAME__/__init__.py +0 -0
  757. package/templates/python-uv/src/__PROJECT_NAME__/main.py +6 -0
  758. package/templates/python-uv/tests/test_sanity.py +2 -0
  759. package/templates/static-html/README.md +19 -0
  760. package/templates/static-html/index.html +15 -0
  761. package/templates/static-html/script.js +1 -0
  762. package/templates/static-html/styles.css +26 -0
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: write-executable-plan
3
+ description: Use when you have a PRD or design spec and need a bite-sized, executable implementation plan that any agent can follow without re-deriving structure. Produces `docs/plans/YYYY-MM-DD-<feature>.md` with per-task Files block, complete code per step (no placeholders), and exact verification commands. Rejects "TBD", "TODO", "add error handling", "similar to Task N".
4
+ model: inherit
5
+ color: green
6
+ tools: Read, Grep, Glob, Bash, Write
7
+ ---
8
+
9
+ # Write Executable Plan
10
+
11
+ > Bite-sized plans for parallel agents. No placeholders. No vague steps.
12
+
13
+ ## When to use
14
+
15
+ - A PRD from `/plan feature` exists but you need a step-by-step implementation plan
16
+ - A `/brainstorm` design is approved and you want to skip the PRD layer
17
+ - Multiple agents will execute the plan in parallel and need conflict-free task boundaries
18
+ - The work is complex enough that describing it to an agent loses fidelity
19
+
20
+ ## When NOT to use
21
+
22
+ - Trivial 1-file changes (just do them; no plan needed)
23
+ - Pure exploration (use `/brainstorm` instead)
24
+ - Bug investigation (use `/debug` instead)
25
+ - The source PRD is vague or unapproved (get PRD approval before planning execution)
26
+
27
+ ## Phase 0: Bootstrap Gate
28
+
29
+ Read `skills/_shared/bootstrap-gate.md` and execute the gate check. If the gate is CLOSED, invoke `skills/bootstrap/SKILL.md` and wait for completion before proceeding. If the gate is OPEN, continue to Phase 1.
30
+
31
+ <HARD-GATE>
32
+ Do NOT proceed past Phase 0 if GATE_CLOSED. There is no bypass. Refer to `skills/_shared/bootstrap-gate.md` for the full HARD-GATE constraints.
33
+ </HARD-GATE>
34
+
35
+ ## Phase 1: Source Selection
36
+
37
+ Accept ONE of the following inputs (in order of preference):
38
+
39
+ 1. **PRD path** — `docs/prd/YYYY-MM-DD-<feature>.md` produced by `/plan feature`
40
+ 2. **Design spec path** — `docs/specs/YYYY-MM-DD-<slug>-design.md` produced by `/brainstorm`
41
+ 3. **Inline description** — user provides a free-text description; prompt for elaboration via AUQ before proceeding
42
+
43
+ If no source is provided and `$ARGUMENTS` is empty, ask via AUQ:
44
+
45
+ ```
46
+ AskUserQuestion({
47
+ questions: [{
48
+ question: "Which source should this plan be based on?",
49
+ header: "Plan Source",
50
+ options: [
51
+ { label: "Existing PRD (Recommended)", description: "Point me to docs/prd/YYYY-MM-DD-<feature>.md — most precise decomposition." },
52
+ { label: "Design spec from /brainstorm", description: "Point me to docs/specs/YYYY-MM-DD-<slug>-design.md — skips formal PRD." },
53
+ { label: "Describe inline", description: "Paste or describe the feature — I will ask follow-up questions before planning." }
54
+ ],
55
+ multiSelect: false
56
+ }]
57
+ })
58
+ ```
59
+
60
+ Read the source file and extract:
61
+ - **Feature title** (for filename slug and plan header)
62
+ - **Acceptance criteria** or equivalent (drives Task decomposition)
63
+ - **Explicit out-of-scope items** (excludes from plan)
64
+ - **File inventory** if present (seeds the whole-plan Files block)
65
+
66
+ ## Phase 2: Decomposition
67
+
68
+ Break the source into Tasks. Each Task MUST satisfy all of these constraints:
69
+
70
+ - **Single owner** — one agent role (e.g., `code-implementer`, `test-writer`), not "the team"
71
+ - **Bounded file set** — lists every file it creates, modifies, or tests; no file appears in two Tasks
72
+ - **Independently testable** — after Step 4 the task stands on its own; no cross-task dependencies in the test command
73
+ - **2-5 minute wall-clock estimate** — if the estimate exceeds 5 minutes, split the Task; if two Tasks share a file, merge or re-scope
74
+
75
+ Before writing Tasks, output a brief decomposition plan in plain text:
76
+
77
+ ```
78
+ ## Decomposition (draft)
79
+ - Task 1: <title> — <owner> — ~<N> min — Files: <list>
80
+ - Task 2: <title> — <owner> — ~<N> min — Files: <list>
81
+ ...
82
+ ```
83
+
84
+ If any task's file set overlaps another, surface the conflict and resolve it before writing Steps.
85
+
86
+ ## Phase 3: Step Authoring (per Task)
87
+
88
+ Each Task gets exactly 5 steps in this order. All 5 steps are mandatory.
89
+
90
+ ### Step 1: Write the failing test
91
+
92
+ **EARS seam:** If the source PRD/spec carries an `## Acceptance Criteria (EARS)` (or `## 3.A`) section, apply the EARS→vitest 1:1 mapping below to emit per-clause test stubs. If no EARS section is present, fall back to manual derivation from prose.
93
+
94
+ #### EARS → vitest mapping (1:1)
95
+
96
+ | EARS pattern | vitest construct | example skeleton |
97
+ |---|---|---|
98
+ | **Ubiquitous** ("The S shall R.") | invariant `it()` — no setup branching | `it('S shall R', () => { /* assert invariant */ })` |
99
+ | **State-driven** ("While P, the S shall R.") | `describe()` for state context, nested `it()` for assertion | `describe('while P', () => { it('S shall R', () => { /* enter P; expect R */ }) })` |
100
+ | **Event-driven** ("When T, the S shall R.") | arrange/trigger/expect inside `it()` | `it('when T, S shall R', () => { /* arrange; trigger T; expect R */ })` |
101
+ | **Optional feature** ("Where F, the S shall R.") | `it.skipIf(!F)` (vitest conditional) | `it.skipIf(!F)('where F, S shall R', () => { /* expect R */ })` |
102
+ | **Unwanted behaviour** ("If C, then the S shall R.") | error-path `it()` with negative assertion or `toThrow()` | `it('if C, then S shall R', () => { /* induce C; expect R */ })` |
103
+
104
+ Reference test exemplifying this pattern: `tests/lib/wave-executor/persona-gate-hook.test.mjs` (shipped at #481).
105
+
106
+ Follow `.claude/rules/testing.md` § "Test Quality — False-Positive Prevention": one meaningful assertion per `it`, behaviour not implementation, no branching, hardcoded expected values.
107
+
108
+ Provide:
109
+ - Exact file path (absolute from project root)
110
+ - Complete, runnable test code — no `// ...`, no placeholders, no `// implement later`
111
+ - One sentence explaining why this test verifies the intended behavior
112
+
113
+ The test MUST fail before Step 3 is applied. If the behavior already exists and cannot fail, pick a harder assertion or a new edge case.
114
+
115
+ ### Step 2: Run the test to confirm it fails
116
+
117
+ Provide:
118
+ - Exact command (e.g., `npm test -- tests/unit/my-module.test.mjs`)
119
+ - Expected terminal output — the specific assertion failure line that proves the test exercises missing code (not a generic "FAIL" — copy the actual error shape)
120
+
121
+ ### Step 3: Implement the minimal code
122
+
123
+ Provide:
124
+ - Exact file paths labeled `Create:` or `Modify:`
125
+ - Complete code — every function, every import, every export. No `// add appropriate logic`, no `// similar to above`, no `...`
126
+ - DRY constraint: reuse existing utilities; do not duplicate logic that already exists in the codebase
127
+ - YAGNI constraint: implement exactly what makes Step 2's test pass; no speculative features
128
+
129
+ ### Step 4: Run the test to verify it passes
130
+
131
+ Provide:
132
+ - Same command as Step 2 (copy verbatim)
133
+ - Expected terminal output showing the test suite PASS line with the test name visible
134
+
135
+ ### Step 5: Commit
136
+
137
+ Provide:
138
+ - Exact commit message in Conventional Commits format: `type(scope): subject`
139
+ - Scope: the primary module or directory affected by this Task
140
+ - Subject: imperative mood, max 72 characters, no period
141
+ - Files staged: only this Task's files (list them)
142
+
143
+ ## Phase 4: Placeholder Linter
144
+
145
+ Before writing the plan to disk, scan every Step in every Task for forbidden strings. Any match is a rejection — fix before writing.
146
+
147
+ **Forbidden strings (case-insensitive):**
148
+
149
+ | Pattern | Why forbidden |
150
+ |---------|---------------|
151
+ | `TBD`, `TODO`, `FIXME`, `XXX` | Deferred decisions defeat the plan's purpose |
152
+ | `add appropriate error handling` | Vague — specify the exact error type and handling code |
153
+ | `add error handling` | Same — write the catch block |
154
+ | `similar to Task N`, `same as above`, `like Task N` | Forces the executor to cross-reference; defeats file-disjoint execution |
155
+ | `etc.` | Incomplete enumeration — list every item |
156
+ | `[fill in]`, `<placeholder>`, `<YOUR_VALUE>` | Template leftovers — fill them in |
157
+ | `...` inside a code block | Ellipsis in implementation code means incomplete code |
158
+
159
+ Prose ellipsis (e.g., "Phase 1... Phase 2...") is acceptable. Only code-block ellipsis is forbidden.
160
+
161
+ Any hit → surface to user via AUQ:
162
+
163
+ ```
164
+ AskUserQuestion({
165
+ questions: [{
166
+ question: "The placeholder linter found forbidden strings in the draft plan:\n\n[list each hit with Task number, Step number, and matched text]\n\nHow do you want to proceed?",
167
+ header: "Placeholder Linter",
168
+ options: [
169
+ { label: "Fix automatically (Recommended)", description: "I will resolve each hit by filling in the missing specifics before writing the plan." },
170
+ { label: "Show me each hit interactively", description: "Walk me through each one so I can provide the missing detail." }
171
+ ],
172
+ multiSelect: false
173
+ }]
174
+ })
175
+ ```
176
+
177
+ Fix all hits before Phase 5.
178
+
179
+ ## Phase 5: Write Plan
180
+
181
+ Ensure the target directory exists:
182
+
183
+ ```bash
184
+ mkdir -p docs/plans
185
+ ```
186
+
187
+ Generate today's date via `date +%Y-%m-%d`. Derive `<feature-slug>` from the feature title (lowercase, hyphens, no special characters, max 40 characters).
188
+
189
+ Write to: `docs/plans/YYYY-MM-DD-<feature-slug>.md`
190
+
191
+ Use the template in `plan-template.md` (same directory as this SKILL.md) as the structural guide. Fill every slot. The written plan must:
192
+
193
+ - Open with `# Plan: <feature title>` and a `Source:` / `Created:` / `Status: draft` header block. The `Source:` line MUST carry the tracking Issue/Epic reference inline as `#NNN` (e.g. `Source: docs/prd/2026-07-09-foo.md (#786)`). This `#NNN` is load-bearing: it is the anchor the `archive-closed-plans` custom-phase reads (via `scripts/archive-closed-prds.mjs`) to detect that a plan's feature/Epic is closed and archive the plan into the Meta-Vault. A plan with no `#NNN` in its header is never archived (fail-closed `no-epic-ref`) — it lingers in `docs/plans/` indefinitely.
194
+ - Include a whole-plan `## Files` section listing all Create / Modify / Test paths across all Tasks
195
+ - Contain one `## Task N: <title>` section per Task, each with its per-task `### Files` block and Steps 1-5
196
+ - Pass the Phase 4 linter with zero hits
197
+
198
+ ## Phase 6: Hand-off
199
+
200
+ Present the plan path and task count to the user via AUQ:
201
+
202
+ ```
203
+ AskUserQuestion({
204
+ questions: [{
205
+ question: "Executable plan written to docs/plans/YYYY-MM-DD-<slug>.md ([N] tasks, ~[total] min estimated).\n\nHow do you want to execute it?",
206
+ header: "Plan Hand-off",
207
+ options: [
208
+ { label: "Dispatch via wave-executor (Recommended)", description: "Parallel agents execute all tasks simultaneously. Fastest for file-disjoint tasks." },
209
+ { label: "Execute coordinator-direct", description: "One task at a time in this session. Safer for tasks with shared state." },
210
+ { label: "Revise the plan first", description: "I have feedback — describe what to change and I will update the plan." },
211
+ { label: "Done for now", description: "Keep the plan as a reference; no immediate execution." }
212
+ ],
213
+ multiSelect: false
214
+ }]
215
+ })
216
+ ```
217
+
218
+ If the user selects "Revise the plan first", incorporate the feedback, update the plan file, re-run the Phase 4 linter, and re-present Phase 6.
219
+
220
+ If the user selects "Dispatch via wave-executor", hand off to `skills/wave-executor/SKILL.md` with the plan path as input.
221
+
222
+ ## Anti-Patterns
223
+
224
+ - **Steps that say "implement the feature"** without exact file paths and complete code — this is the most common failure mode; reject it at Phase 4
225
+ - **Tasks with overlapping file scopes** — agents executing in parallel will conflict; the decomposition must be file-disjoint
226
+ - **Plans without a per-Task Files block** — forces agents to grep the codebase to discover their scope, which loses the speed advantage of planning
227
+ - **Skipping Phase 4** — placeholders in a plan silently cascade into every agent that executes it; one "TBD" can stall an entire wave
228
+ - **Estimating tasks at >5 minutes** — if a task is that large, it contains multiple logical changes; split it
229
+ - **Vague commit messages in Step 5** — `feat(core): update things` is not acceptable; the scope and subject must be derivable from the Task's file set without reading the diff
230
+
231
+ ## See Also
232
+
233
+ - `skills/plan/SKILL.md` — produces the PRD this skill consumes
234
+ - `skills/brainstorm/SKILL.md` — alternative source (design spec)
235
+ - `skills/wave-executor/SKILL.md` — consumes the plan for parallel execution
236
+ - `.claude/rules/testing.md` § "Test Quality — False-Positive Prevention" — test conventions to follow in Step 1
237
+ - `skills/write-executable-plan/plan-template.md` — structural template used in Phase 5
@@ -0,0 +1,154 @@
1
+ # Plan: <FEATURE_TITLE>
2
+ Source: <SOURCE_PATH> (#<ISSUE_OR_EPIC_NUMBER>)
3
+ Created: <ISO_TIMESTAMP>
4
+ Status: draft
5
+
6
+ ## Summary
7
+
8
+ <ONE_PARAGRAPH_SUMMARY_OF_WHAT_THIS_PLAN_IMPLEMENTS_AND_WHY>
9
+
10
+ ## Files (whole-plan)
11
+
12
+ - Create:
13
+ - <PATH_TO_NEW_FILE_1>
14
+ - <PATH_TO_NEW_FILE_2>
15
+ - Modify:
16
+ - <PATH_TO_EXISTING_FILE_1>
17
+ - <PATH_TO_EXISTING_FILE_2>
18
+ - Test:
19
+ - <PATH_TO_TEST_FILE_1>
20
+ - <PATH_TO_TEST_FILE_2>
21
+
22
+ ---
23
+
24
+ ## Task 1: <TASK_1_TITLE>
25
+
26
+ Owner: <AGENT_ROLE>
27
+ Estimated: <MINUTES> min
28
+
29
+ ### Files
30
+
31
+ - Create: <PATHS_OR_NONE>
32
+ - Modify: <PATHS_OR_NONE>
33
+ - Test: <PATHS_OR_NONE>
34
+
35
+ ### Step 1: Write the failing test
36
+
37
+ File: `<TEST_FILE_PATH>`
38
+
39
+ ```<LANG>
40
+ <COMPLETE_TEST_CODE>
41
+ // All imports, describe blocks, and assertions included.
42
+ // No placeholders. Runnable as-is.
43
+ ```
44
+
45
+ Why: <ONE_SENTENCE_EXPLAINING_WHAT_BEHAVIOR_THIS_TEST_VERIFIES>
46
+
47
+ **EARS seam:** if the source PRD/spec carries an EARS Acceptance Criteria section (`## 3.A` or `## Acceptance Criteria (EARS)`), apply the 5-pattern mapping from `SKILL.md § EARS → vitest mapping` to emit the test skeleton. Do not manually re-derive from prose when EARS is present — the mapping is deterministic.
48
+
49
+ ### Step 2: Run to confirm failure
50
+
51
+ Command: `<EXACT_COMMAND>`
52
+
53
+ Expected output:
54
+ ```
55
+ <EXPECTED_FAILURE_OUTPUT>
56
+ // The specific assertion error line that proves the test exercises missing code.
57
+ // Example: AssertionError: expected undefined to equal 'value'
58
+ ```
59
+
60
+ ### Step 3: Implement
61
+
62
+ Files:
63
+ - Create: `<PATH>` / Modify: `<PATH>`
64
+
65
+ ```<LANG>
66
+ <COMPLETE_IMPLEMENTATION_CODE>
67
+ // All imports, exports, and logic included.
68
+ // No placeholders. No "// add error handling". No "...".
69
+ ```
70
+
71
+ ### Step 4: Run to verify pass
72
+
73
+ Command: `<EXACT_COMMAND>` (same as Step 2)
74
+
75
+ Expected output:
76
+ ```
77
+ <EXPECTED_PASS_OUTPUT>
78
+ // Example: ✓ Task 1 description (12ms)
79
+ // 1 passed
80
+ ```
81
+
82
+ ### Step 5: Commit
83
+
84
+ Message:
85
+ ```
86
+ <TYPE>(<SCOPE>): <SUBJECT_IN_IMPERATIVE_MOOD_MAX_72_CHARS>
87
+ ```
88
+
89
+ Files staged: <LIST_ONLY_THIS_TASKS_FILES>
90
+
91
+ ---
92
+
93
+ ## Task 2: <TASK_2_TITLE>
94
+
95
+ Owner: <AGENT_ROLE>
96
+ Estimated: <MINUTES> min
97
+
98
+ ### Files
99
+
100
+ - Create: <PATHS_OR_NONE>
101
+ - Modify: <PATHS_OR_NONE>
102
+ - Test: <PATHS_OR_NONE>
103
+
104
+ ### Step 1: Write the failing test
105
+
106
+ File: `<TEST_FILE_PATH>`
107
+
108
+ ```<LANG>
109
+ <COMPLETE_TEST_CODE>
110
+ ```
111
+
112
+ Why: <ONE_SENTENCE_EXPLAINING_WHAT_BEHAVIOR_THIS_TEST_VERIFIES>
113
+
114
+ ### Step 2: Run to confirm failure
115
+
116
+ Command: `<EXACT_COMMAND>`
117
+
118
+ Expected output:
119
+ ```
120
+ <EXPECTED_FAILURE_OUTPUT>
121
+ ```
122
+
123
+ ### Step 3: Implement
124
+
125
+ Files:
126
+ - Create: `<PATH>` / Modify: `<PATH>`
127
+
128
+ ```<LANG>
129
+ <COMPLETE_IMPLEMENTATION_CODE>
130
+ ```
131
+
132
+ ### Step 4: Run to verify pass
133
+
134
+ Command: `<EXACT_COMMAND>` (same as Step 2)
135
+
136
+ Expected output:
137
+ ```
138
+ <EXPECTED_PASS_OUTPUT>
139
+ ```
140
+
141
+ ### Step 5: Commit
142
+
143
+ Message:
144
+ ```
145
+ <TYPE>(<SCOPE>): <SUBJECT_IN_IMPERATIVE_MOOD_MAX_72_CHARS>
146
+ ```
147
+
148
+ Files staged: <LIST_ONLY_THIS_TASKS_FILES>
149
+
150
+ ---
151
+
152
+ <!-- Add Task N sections following the same structure as Task 1 and Task 2 above. -->
153
+ <!-- Every task must have exactly 5 steps in the order: test → fail-run → implement → pass-run → commit. -->
154
+ <!-- No task may share a file path with another task. -->
@@ -0,0 +1,41 @@
1
+ <!-- source: session-orchestrator plugin (canonical: templates/_minimal/CLAUDE.md.tmpl) — customize freely; this header records provenance only -->
2
+ # {{PROJECT_TITLE}}
3
+
4
+ {{PROJECT_DESCRIPTION}}
5
+
6
+ ## Stack Defaults
7
+
8
+ - Language / runtime: {{STACK_LANGUAGE}}
9
+ - Package manager: {{STACK_PACKAGE_MANAGER}}
10
+ - Test runner: {{STACK_TEST_RUNNER}}
11
+ - Linter: {{STACK_LINTER}}
12
+
13
+ ## Commands
14
+
15
+ - Dev: `{{CMD_DEV}}`
16
+ - Test: `{{CMD_TEST}}`
17
+ - Build: `{{CMD_BUILD}}`
18
+ - Lint: `{{CMD_LINT}}`
19
+
20
+ ## Conventions
21
+
22
+ {{CONVENTIONS}}
23
+
24
+ ## Harte Regeln
25
+
26
+ {{HARD_RULES_TABLE}}
27
+
28
+ ## Session Config
29
+
30
+ project-name: {{PROJECT_NAME}}
31
+ vcs: {{VCS}}
32
+ persistence: true
33
+ enforcement: warn # strict | warn | off
34
+ waves: 5
35
+ agents-per-wave: 6
36
+ test-command: {{TEST_COMMAND}}
37
+ typecheck-command: {{TYPECHECK_COMMAND}}
38
+ lint-command: {{LINT_COMMAND}}
39
+ plan-baseline-path: {{PLAN_BASELINE_PATH}}
40
+ recent-commits: 20
41
+ stale-branch-days: 7
@@ -0,0 +1,15 @@
1
+ # {{PROJECT_TITLE}}
2
+
3
+ {{PROJECT_DESCRIPTION}}
4
+
5
+ ## Usage
6
+
7
+ {{USAGE_INSTRUCTIONS}}
8
+
9
+ ## Development
10
+
11
+ {{DEVELOPMENT_INSTRUCTIONS}}
12
+
13
+ ## License
14
+
15
+ {{LICENSE}}
@@ -0,0 +1,47 @@
1
+ # Dependencies
2
+ node_modules/
3
+ .pnp
4
+ .pnp.js
5
+
6
+ # Environment
7
+ .env
8
+ .env.local
9
+ .env.*.local
10
+
11
+ # Build output
12
+ dist/
13
+ build/
14
+ out/
15
+ .next/
16
+ .nuxt/
17
+
18
+ # Python
19
+ __pycache__/
20
+ *.py[cod]
21
+ *.pyo
22
+ .venv/
23
+ venv/
24
+ env/
25
+ .pytest_cache/
26
+ *.egg-info/
27
+ dist/
28
+ *.dist-info/
29
+
30
+ # IDE
31
+ .idea/
32
+ .vscode/
33
+ *.swp
34
+ *.swo
35
+ .DS_Store
36
+ Thumbs.db
37
+
38
+ # Logs
39
+ *.log
40
+ logs/
41
+ npm-debug.log*
42
+ yarn-debug.log*
43
+ pnpm-debug.log*
44
+
45
+ # Testing
46
+ coverage/
47
+ .nyc_output/
@@ -0,0 +1,16 @@
1
+ <!-- source: session-orchestrator plugin (canonical: templates/_shared/harte-regeln.md) -->
2
+ ## Harte Regeln
3
+
4
+ Nicht verhandelbar — gilt unabhängig vom Wachstum dieses Repos, auch unterhalb
5
+ der `.claude/rules/`-Graduationsschwelle (#730/H6):
6
+
7
+ 1. Keine Secrets/API-Keys committen (auch nicht in `.env.example`-Kommentaren).
8
+ 2. Kein `git push --force` auf den Default-Branch ohne explizite Rückfrage.
9
+ 3. Kein `git add -A` / `git add .` — Dateien einzeln stagen.
10
+ 4. Destruktive Kommandos (`rm -rf`, `git reset --hard`, `git checkout -- <file>`)
11
+ nur nach expliziter Bestätigung.
12
+ 5. Status-Dokumente (STATE.md, README-Status-Sections, Dashboards) sind INDEX,
13
+ nie HISTORIE — CCU-009 (see `skills/_shared/state-ownership.md` in the plugin).
14
+ 6. Test-/Typecheck-/Lint-Commands in Session Config müssen echte Checks sein,
15
+ keine Stubs (`echo`/`noop`).
16
+ 7. Kein `console.log`/`debugger` in committeten Production-Files.
@@ -0,0 +1,90 @@
1
+ # Bare `/loop` — Maintenance Prompt
2
+
3
+ > Vendored from session-orchestrator `templates/_shared/loop.md`. Bare `/loop`
4
+ > (no prompt) picks this file up automatically as `.claude/loop.md` per
5
+ > https://code.claude.com/docs/en/scheduled-tasks#customize-the-default-prompt-with-loop-md.
6
+ > A user-level `~/.claude/loop.md` is the host-wide fallback; this project file
7
+ > takes precedence when present.
8
+ > Content beyond 25,000 bytes is truncated (scheduled-tasks#customize-the-default-prompt-with-loop-md).
9
+
10
+ You are tending this working tree. Each iteration, walk through the checks below
11
+ in order and report findings in **one short summary** at the end. Skip a check
12
+ silently when it has nothing to surface — do **not** narrate empty sections. Do
13
+ **not** start new initiatives outside this checklist; do **not** push, delete, or
14
+ amend without explicit authorisation in the conversation transcript.
15
+
16
+ ## 1. Active-session check
17
+
18
+ If a `STATE.md` exists under the platform state dir (`.claude/STATE.md` on Claude
19
+ Code, `.codex/STATE.md` on Codex CLI):
20
+
21
+ - Read its frontmatter `status`. If not `completed`, the session is live.
22
+ - Inspect the `## Deviations` section. Surface **only entries added since the last
23
+ iteration that are not yet acknowledged in the transcript** — older or
24
+ already-discussed deviations stay silent.
25
+ - If `status: active` and `current-wave` is set, mention current wave + total.
26
+
27
+ If no `STATE.md` exists, skip this check silently.
28
+
29
+ ## 2. Branch / MR-PR babysitting
30
+
31
+ If `git rev-parse --abbrev-ref HEAD` is not `main`:
32
+
33
+ - Detect the host from `git remote -v`: a GitLab remote → use `glab`, a GitHub
34
+ remote → use `gh`. Let the CLI infer the project from the remote — do **not**
35
+ pass `-R`/owner flags.
36
+ - GitLab: `glab mr list --source-branch "$(git rev-parse --abbrev-ref HEAD)" --output json`
37
+ - GitHub: `gh pr list --head "$(git rev-parse --abbrev-ref HEAD)"`
38
+ - For the matching MR/PR: pipeline status, unresolved review threads, merge conflicts.
39
+ - If a pipeline is running, prefer **Monitor** over re-polling next iteration —
40
+ see `.claude/rules/loop-and-monitor.md` if the repo carries it.
41
+ - If the CLI errors or is unavailable, skip this check silently — never fail the
42
+ iteration on a tooling error.
43
+
44
+ If on `main`: list any commits ahead of `origin/main` via
45
+ `git log origin/main..HEAD --oneline`. Mention only — do **not** push.
46
+
47
+ ## 3. Vault-mirror backlog
48
+
49
+ Run this check **only** if the repo's CLAUDE.md (or AGENTS.md) `## Session Config`
50
+ declares `vault-integration.enabled: true` with a `vault-dir`. If that key is
51
+ absent, skip silently — do not assume any host path.
52
+
53
+ - Resolve `vault-dir` from Session Config (expand `~` to `$HOME`).
54
+ - If the directory exists, count uncommitted changes in its learnings/sessions
55
+ folders, e.g. `git -C "<vault-dir>" status --short | wc -l`.
56
+ - If `> 0`, surface the count and remind that the session-end auto-commit and
57
+ `/evolve` handle catch-up. Do **not** commit the vault yourself.
58
+
59
+ ## 4. Top-3 priority:high backlog
60
+
61
+ Detect the host from `git remote -v` (as in check 2) and query, without `-R`/owner flags:
62
+
63
+ - GitLab: `glab issue list --label priority:high --state opened --per-page 3 --output json`
64
+ - GitHub: `gh issue list --label priority:high --state open --limit 3`
65
+
66
+ Surface the issue id + title — up to three lines. Skip silently when the query
67
+ returns zero results or the CLI errors. Surface any `priority:high` issue that
68
+ exists, even a single one.
69
+
70
+ ## 5. Idle path
71
+
72
+ If checks 1–4 produced nothing: emit one line —
73
+ `Everything quiet; no live session, no MRs/PRs, no vault backlog, no high-priority issues.`
74
+ Then end.
75
+
76
+ ## Constraints
77
+
78
+ - **No destructive actions.** No `git push`, `git reset`, `git stash`, `rm`,
79
+ `glab mr merge`, `glab issue close`, `gh pr merge`, `gh issue close` unless the
80
+ conversation transcript already authorised the specific action.
81
+ - **Read-only by default.** When unsure, observe and report — let the operator decide.
82
+ - **PSA-aware.** This file is loaded into a coordinator session that may run in
83
+ parallel with other sessions. Do not touch files you do not own.
84
+ - **Token discipline.** One short summary per iteration. No headers, no bullet
85
+ lists in the output unless a check found ≥ 2 distinct items.
86
+
87
+ ## See also
88
+
89
+ - `.claude/rules/loop-and-monitor.md` — when to use `/loop` vs `Monitor` vs `Routines` (if vendored)
90
+ - `.claude/rules/parallel-sessions.md` — PSA discipline (if vendored)
@@ -0,0 +1,77 @@
1
+ # Parallel Session Awareness (Always-on)
2
+
3
+ Multiple Claude Code sessions may be active in the same working directory simultaneously. Another agent may be editing files, creating commits, or running builds right now. Treat the repo as a shared workspace, not a private sandbox.
4
+
5
+ ## PSA Scope Axes — Operator-Session vs In-Run
6
+
7
+ PSA rules span two distinct axes. Naming them keeps the durable moat clear when
8
+ native multi-agent primitives (the experimental `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`)
9
+ overlap parts of this surface.
10
+
11
+ - **Operator-session axis (the durable moat):** independent parallel operator /
12
+ Claude sessions in the **same working copy**. PSA-001..004, plus the per-repo
13
+ session lock (`scripts/lib/session-lock.mjs` `acquire()` / `session.lock`,
14
+ heartbeat-liveness schema v2), guard this domain. **Agent Teams structurally
15
+ cannot enter it** — Teams is per-process / in-run only ("one team per
16
+ session"), NOT per-repo. Its graduation to native affects **only the in-run
17
+ multi-agent coordination slice**, never the operator-session slice.
18
+ - **In-run axis:** multiple agents coordinated inside a single session/run. Even
19
+ here our own machinery remains necessary because Agent Teams provides **no
20
+ automatic isolation**: file-scope deconfliction (`skills/session-plan/SKILL.md` —
21
+ "verify that NO two agents in the same wave modify the same file") plus
22
+ `withStateMdLock` STATE.md serialization still do the work Teams does not.
23
+
24
+ PSA-005 spans **both** axes; only its session-lock half is purely
25
+ operator-scoped. PSA-006 is **orthogonal** to both (Discovery grep-discipline).
26
+ See ADR-0010 § Native-Overlap Refresh (Agent Teams = Adapter; PSA re-scoped).
27
+
28
+ ## Recognizing Parallel Work (PSA-001: Detect Before Acting)
29
+
30
+ *Axis: operator-session safety — the durable moat Agent Teams structurally cannot enter (per-process / in-run only).*
31
+
32
+ - **Unexpected git status changes:** Files modified or staged that are not part of your current task likely belong to another session.
33
+ - **Unfamiliar commits:** New entries in `git log` that you did not create mean another agent (or the user manually) committed work.
34
+ - **Spontaneous errors:** Build failures, type errors, or test failures in code you did not touch may be in-progress work from another session — not pre-existing bugs.
35
+ - **Files changed between reads:** If a file's content differs from what you read moments ago, another session likely edited it.
36
+ - **New untracked files:** Files appearing in `git status` that you did not create belong to someone else's work.
37
+
38
+ ## Behavioral Guidance (PSA-002: Ask, Don't Assume)
39
+
40
+ *Axis: operator-session safety — the durable moat Agent Teams structurally cannot enter (per-process / in-run only).*
41
+
42
+ - **When you detect signs of parallel work, stop and ask the user:** "I notice changes I didn't make (e.g., modified files in git status, new commits). Is another session active?"
43
+ - **Never "fix" code outside your task scope.** Errors in files you are not working on may be intentional intermediate states from another session.
44
+ - **Stay in your lane.** Only read, create, modify, and delete files directly relevant to your assigned task.
45
+ - **If blocked by external changes, ask the user** rather than reverting, resetting, or working around them.
46
+ - **Track your own footprint.** Be aware of which files you have created or modified. Your commits should contain only your changes.
47
+
48
+ ## Destructive Action Safeguards (PSA-003: Never Destroy What You Didn't Create)
49
+
50
+ *Axis: operator-session safety — the durable moat Agent Teams structurally cannot enter (per-process / in-run only).*
51
+
52
+ These commands require explicit user confirmation even in normal operation. When parallel work is suspected, they are **forbidden** without user approval:
53
+ - **`git reset` (any form)** — destroys staged or committed work that may belong to another session.
54
+ - **`git checkout -- <file>`** — discards uncommitted changes another session is actively building.
55
+ - **`git clean -f`** — deletes untracked files another session created.
56
+ - **`git stash`** — captures another session's changes into a stash they cannot find.
57
+ - **`rm` / delete of files you did not create** — may remove work-in-progress from another session.
58
+ - **`git revert` of commits you did not make** — undoes another session's completed work.
59
+ - **`git push --force`** — rewrites shared history (dangerous even without parallel sessions).
60
+
61
+ Before running any of the above, ask: "Did I create this file/commit/change? If not, it is not mine to touch."
62
+
63
+ ## Commit Discipline (PSA-004: Isolate Your Changes)
64
+
65
+ *Axis: operator-session safety — the durable moat Agent Teams structurally cannot enter (per-process / in-run only).*
66
+
67
+ - **Stage files individually** (`git add <file>`) rather than `git add .` or `git add -A`, which may sweep in another session's work.
68
+ - **Review `git diff --cached` before committing** to verify every staged change is yours.
69
+ - **If you see unfamiliar changes in the diff, unstage them** and ask the user.
70
+ - **Never amend a commit you did not create.**
71
+
72
+ ## Anti-Patterns
73
+ - Seeing unfamiliar changes and assuming they are "leftover mess" to clean up — they are likely active work.
74
+ - Running `git reset --hard` to "start fresh" — this destroys all uncommitted work across all sessions.
75
+ - Fixing type errors or lint issues in files outside your scope — the other session will handle their own files.
76
+ - Using `git add .` in a shared workspace — you will commit another session's partial work.
77
+ - Reverting "broken" commits without asking — another session may have intentionally pushed incremental progress.