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,659 @@
1
+ # Bootstrap Deep Template
2
+
3
+ > Scaffold instructions for the Deep tier.
4
+ > Called from `skills/bootstrap/SKILL.md` Phase 3 when `CONFIRMED_TIER = deep`.
5
+
6
+ Deep tier is a strict superset of Standard tier. Execute all Standard-tier steps first, then the Deep-specific steps below.
7
+
8
+ ## Step 1–8: Execute Standard Tier
9
+
10
+ Read and execute `skills/bootstrap/standard-template.md` Steps 1–8 in full. Do not skip any step.
11
+
12
+ **Exception to standard-template Step 6 (bootstrap.lock):** Do not write `.orchestrator/bootstrap.lock` yet. The lock is written with `tier: deep` at Deep Step 6.
13
+
14
+ **Exception to standard-template Step 7 (git commit):** Do not run the git commit in standard-template Step 7. All files (Fast + Standard + Deep) are committed together at Deep Step 7.
15
+
16
+ ---
17
+
18
+ ## VCS Detection
19
+
20
+ Before executing the Deep-specific steps, resolve the `VCS` value from Session Config:
21
+
22
+ ```bash
23
+ VCS=$(grep -m1 "^vcs:" "$REPO_ROOT/CLAUDE.md" 2>/dev/null | awk '{print $2}')
24
+ # Expected values: gitlab | github | none
25
+ ```
26
+
27
+ If `VCS` is empty or `none`, skip CI pipeline, issue templates, MR/PR template, and branch protection. Log: "VCS not configured — CI and templates skipped."
28
+
29
+ ---
30
+
31
+ ## Step D1: CI Pipeline
32
+
33
+ Create the CI pipeline file. Mutually exclusive — create exactly one based on `VCS`.
34
+
35
+ ### If `VCS = gitlab`: `.gitlab-ci.yml`
36
+
37
+ Write `.gitlab-ci.yml`:
38
+
39
+ ```yaml
40
+ # .gitlab-ci.yml — generated by session-orchestrator bootstrap (deep)
41
+
42
+ stages:
43
+ - test
44
+
45
+ default:
46
+ image: node:22-alpine # replace with python:3.12-slim for python-uv archetype
47
+
48
+ variables:
49
+ FF_USE_FASTZIP: "true"
50
+
51
+ cache:
52
+ key: "${CI_COMMIT_REF_SLUG}"
53
+ paths:
54
+ - node_modules/ # replace with .venv/ for python-uv
55
+
56
+ test:
57
+ stage: test
58
+ before_script:
59
+ - corepack enable
60
+ - pnpm install --frozen-lockfile
61
+ # python-uv: replace above two lines with: pip install uv && uv sync
62
+ script:
63
+ - pnpm run build
64
+ - pnpm run lint
65
+ - pnpm run test
66
+ # python-uv: replace above with: uv run ruff check . && uv run pytest
67
+ coverage: '/Lines\s*:\s*(\d+\.?\d*)%/'
68
+ artifacts:
69
+ reports:
70
+ coverage_report:
71
+ coverage_format: cobertura
72
+ path: coverage/cobertura-coverage.xml
73
+ expire_in: 1 week
74
+ ```
75
+
76
+ **Archetype adjustment:** If `CONFIRMED_ARCHETYPE = python-uv`, the LLM must substitute the Python variants of the `image`, `cache`, `before_script`, and `script` entries (comments in the template above mark the substitution points). If `CONFIRMED_ARCHETYPE = static-html`, replace `script` with a simple `echo "Static project — no build step."` and remove the `before_script`.
77
+
78
+ ### If `VCS = github`: `.github/workflows/ci.yml`
79
+
80
+ ```bash
81
+ mkdir -p "$REPO_ROOT/.github/workflows"
82
+ ```
83
+
84
+ Write `.github/workflows/ci.yml`:
85
+
86
+ ```yaml
87
+ # .github/workflows/ci.yml — generated by session-orchestrator bootstrap (deep)
88
+
89
+ name: CI
90
+
91
+ on:
92
+ push:
93
+ branches: [main]
94
+ pull_request:
95
+ branches: [main]
96
+
97
+ jobs:
98
+ test:
99
+ runs-on: ubuntu-latest
100
+ steps:
101
+ - uses: actions/checkout@v4
102
+
103
+ - uses: pnpm/action-setup@v4
104
+ with:
105
+ version: latest
106
+ # python-uv: replace above two steps with: uses: astral-sh/setup-uv@v5
107
+
108
+ - uses: actions/setup-node@v4
109
+ with:
110
+ node-version: "22"
111
+ cache: "pnpm"
112
+ # python-uv: replace above with: uses: actions/setup-python@v5 with python-version: "3.12"
113
+
114
+ - name: Install dependencies
115
+ run: pnpm install --frozen-lockfile
116
+ # python-uv: replace with: uv sync
117
+
118
+ - name: Build
119
+ run: pnpm run build
120
+ # python-uv: remove this step
121
+
122
+ - name: Lint
123
+ run: pnpm run lint
124
+ # python-uv: replace with: uv run ruff check .
125
+
126
+ - name: Test
127
+ run: pnpm run test
128
+ # python-uv: replace with: uv run pytest
129
+ ```
130
+
131
+ **Archetype adjustment:** Same rules as the GitLab template above. Apply the Python/static-html variants where indicated by comments.
132
+
133
+ ---
134
+
135
+ ## Step D2: CODEOWNERS
136
+
137
+ Detect the repo owner from git config or Session Config:
138
+
139
+ ```bash
140
+ OWNER=$(git config user.email 2>/dev/null || echo "PLACEHOLDER_OWNER")
141
+ ```
142
+
143
+ ### If `VCS = gitlab`
144
+
145
+ ```bash
146
+ mkdir -p "$REPO_ROOT"
147
+ ```
148
+
149
+ Write `CODEOWNERS`:
150
+
151
+ ```
152
+ # CODEOWNERS — generated by session-orchestrator bootstrap (deep)
153
+ # Format: <pattern> <@user-or-group>
154
+ # GitLab docs: https://docs.gitlab.com/ee/user/project/codeowners/
155
+
156
+ * @<OWNER or PLACEHOLDER_OWNER>
157
+ ```
158
+
159
+ ### If `VCS = github`
160
+
161
+ Write `.github/CODEOWNERS`:
162
+
163
+ ```bash
164
+ mkdir -p "$REPO_ROOT/.github"
165
+ ```
166
+
167
+ ```
168
+ # CODEOWNERS — generated by session-orchestrator bootstrap (deep)
169
+ # Format: <pattern> @<github-username>
170
+ # GitHub docs: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
171
+
172
+ * @<OWNER or PLACEHOLDER_OWNER>
173
+ ```
174
+
175
+ Replace `<OWNER or PLACEHOLDER_OWNER>` with the detected `git config user.email` or the literal string `PLACEHOLDER_OWNER` if detection fails. Add an inline comment: `# Replace PLACEHOLDER_OWNER with your GitLab/GitHub username`.
176
+
177
+ ---
178
+
179
+ ## Step D3: CHANGELOG.md
180
+
181
+ Write `CHANGELOG.md` in the repo root:
182
+
183
+ ```markdown
184
+ # Changelog
185
+
186
+ All notable changes to this project will be documented in this file.
187
+
188
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
189
+
190
+ ## [Unreleased]
191
+
192
+ ## [0.1.0] — <YYYY-MM-DD>
193
+
194
+ ### Added
195
+
196
+ - Initial bootstrap via /plan (deep)
197
+ ```
198
+
199
+ Replace `<YYYY-MM-DD>` with today's date in ISO 8601 format (e.g., `2026-04-16`).
200
+
201
+ ---
202
+
203
+ ## Step D4: Issue Templates
204
+
205
+ ### If `VCS = gitlab`
206
+
207
+ ```bash
208
+ mkdir -p "$REPO_ROOT/.gitlab/issue_templates"
209
+ ```
210
+
211
+ Write `.gitlab/issue_templates/Bug.md`:
212
+
213
+ ```markdown
214
+ ## Summary
215
+
216
+ <!-- One-sentence description of the bug -->
217
+
218
+ ## Steps to Reproduce
219
+
220
+ 1.
221
+ 2.
222
+ 3.
223
+
224
+ ## Expected Behaviour
225
+
226
+ <!-- What should happen -->
227
+
228
+ ## Actual Behaviour
229
+
230
+ <!-- What happens instead -->
231
+
232
+ ## Environment
233
+
234
+ - Version / branch:
235
+ - OS / platform:
236
+
237
+ ## Additional Context
238
+
239
+ <!-- Screenshots, logs, related issues -->
240
+ ```
241
+
242
+ Write `.gitlab/issue_templates/Feature.md`:
243
+
244
+ ```markdown
245
+ ## Summary
246
+
247
+ <!-- One-sentence description of the feature request -->
248
+
249
+ ## Motivation
250
+
251
+ <!-- Why is this feature valuable? Who benefits? -->
252
+
253
+ ## Proposed Solution
254
+
255
+ <!-- Describe how you envision the implementation -->
256
+
257
+ ## Acceptance Criteria
258
+
259
+ - [ ]
260
+ - [ ]
261
+
262
+ ## Additional Context
263
+ ```
264
+
265
+ ### If `VCS = github`
266
+
267
+ ```bash
268
+ mkdir -p "$REPO_ROOT/.github/ISSUE_TEMPLATE"
269
+ ```
270
+
271
+ Write `.github/ISSUE_TEMPLATE/bug_report.md`:
272
+
273
+ ```markdown
274
+ ---
275
+ name: Bug Report
276
+ about: Report a bug or unexpected behaviour
277
+ labels: bug
278
+ ---
279
+
280
+ ## Summary
281
+
282
+ <!-- One-sentence description of the bug -->
283
+
284
+ ## Steps to Reproduce
285
+
286
+ 1.
287
+ 2.
288
+ 3.
289
+
290
+ ## Expected Behaviour
291
+
292
+ ## Actual Behaviour
293
+
294
+ ## Environment
295
+
296
+ - Version / branch:
297
+ - OS / platform:
298
+
299
+ ## Additional Context
300
+ ```
301
+
302
+ Write `.github/ISSUE_TEMPLATE/feature_request.md`:
303
+
304
+ ```markdown
305
+ ---
306
+ name: Feature Request
307
+ about: Propose a new feature or improvement
308
+ labels: enhancement
309
+ ---
310
+
311
+ ## Summary
312
+
313
+ <!-- One-sentence description of the feature request -->
314
+
315
+ ## Motivation
316
+
317
+ ## Proposed Solution
318
+
319
+ ## Acceptance Criteria
320
+
321
+ - [ ]
322
+ - [ ]
323
+
324
+ ## Additional Context
325
+ ```
326
+
327
+ ---
328
+
329
+ ## Step D5: MR / PR Template
330
+
331
+ ### If `VCS = gitlab`
332
+
333
+ ```bash
334
+ mkdir -p "$REPO_ROOT/.gitlab/merge_request_templates"
335
+ ```
336
+
337
+ Write `.gitlab/merge_request_templates/Default.md`:
338
+
339
+ ```markdown
340
+ ## Summary
341
+
342
+ <!-- What does this MR do and why? -->
343
+
344
+ ## Changes
345
+
346
+ -
347
+ -
348
+
349
+ ## Test Plan
350
+
351
+ - [ ] Existing tests pass (`pnpm test` / `uv run pytest`)
352
+ - [ ] New tests added where appropriate
353
+ - [ ] Manually tested
354
+
355
+ ## Related Issues
356
+
357
+ Closes #
358
+
359
+ ## Checklist
360
+
361
+ - [ ] Code follows project conventions
362
+ - [ ] No secrets or credentials committed
363
+ - [ ] CHANGELOG updated if user-facing change
364
+ ```
365
+
366
+ ### If `VCS = github`
367
+
368
+ Write `.github/pull_request_template.md`:
369
+
370
+ ```markdown
371
+ ## Summary
372
+
373
+ <!-- What does this PR do and why? -->
374
+
375
+ ## Changes
376
+
377
+ -
378
+ -
379
+
380
+ ## Test Plan
381
+
382
+ - [ ] Existing tests pass (`pnpm test` / `uv run pytest`)
383
+ - [ ] New tests added where appropriate
384
+ - [ ] Manually tested
385
+
386
+ ## Related Issues
387
+
388
+ Closes #
389
+
390
+ ## Checklist
391
+
392
+ - [ ] Code follows project conventions
393
+ - [ ] No secrets or credentials committed
394
+ - [ ] CHANGELOG updated if user-facing change
395
+ ```
396
+
397
+ ---
398
+
399
+ ## Step D5.5: GitHub Mirror Remote
400
+
401
+ Establishes the `github` remote convention at repo-creation time, so that later mirror-push (session-end §4.4) and mirror-drift auditing (repo-audit `github-mirror-sync`, see below) have something to work against from day one. Skip this step if `VCS = none`.
402
+
403
+ Run this step when either condition holds:
404
+ - `VCS = gitlab` (GitHub is the natural mirror target for a GitLab-primary repo), OR
405
+ - `mirror: github` is already set in Session Config (an explicit mirror signal, regardless of primary VCS).
406
+
407
+ Otherwise (`VCS = github` with no mirror signal), skip — the repo's primary remote already IS GitHub, so no mirror is needed.
408
+
409
+ ```bash
410
+ if ! git remote | grep -q '^github$'; then
411
+ git remote add github https://github.com/<org>/<repo>.git
412
+ echo "GitHub mirror remote added: github -> https://github.com/<org>/<repo>.git"
413
+ else
414
+ echo "GitHub mirror remote already present — skipping."
415
+ fi
416
+
417
+ # Best-effort: establish github/HEAD so repo-audit's github-mirror-sync check can
418
+ # resolve the mirror's default branch. No-op while the mirror is still empty (the
419
+ # GitHub repo may not exist yet); becomes effective once the mirror has content.
420
+ # Never abort bootstrap on failure.
421
+ git fetch github --quiet 2>/dev/null || true
422
+ git remote set-head github --auto 2>/dev/null || true
423
+ ```
424
+
425
+ Replace `<org>/<repo>` with the actual mirror's org/repo slug before running — this step only records the remote pointer, it does not create the GitHub repo itself (that is an out-of-band operator action, e.g. `gh repo create`). No push happens here: the first (and every subsequent) `git push github HEAD` happens at session-end Step 4.4 (`skills/session-end/SKILL.md` § "4.4 GitHub Mirror"), gated on the same `mirror: github` Session Config key. If the remote add fails (e.g. `github` already points elsewhere), log and continue — do not abort bootstrap. The `git fetch`/`set-head` lines are best-effort: until the mirror actually has commits, `github/HEAD` will not resolve and the `github-mirror-sync` audit check simply skips-as-pass (it never false-fails). The `github-mirror-sync` check also falls back to the local default branch, so it works after the first push even if `set-head` was skipped.
426
+
427
+ **See also:** repo-audit's `github-mirror-sync` check (`scripts/lib/harness-audit/categories/category6.mjs`, Category 6 / Config Hygiene) WARNS post-hoc when local commits have not reached this `github` remote. This step establishes the convention; the audit check is its enforcement counterpart.
428
+
429
+ ---
430
+
431
+ ## Step D6: Branch Protection
432
+
433
+ Invoke exactly ONE API call to set branch protection on `main`. Skip this step if `VCS = none`.
434
+
435
+ ### If `VCS = gitlab`
436
+
437
+ Detect the project path from the git remote:
438
+
439
+ ```bash
440
+ REMOTE_URL=$(git remote get-url origin 2>/dev/null)
441
+ # Extract namespace/project from URL, e.g. "mygroup/myrepo"
442
+ PROJECT_PATH=$(echo "$REMOTE_URL" | sed 's|.*gitlab[^/]*/||; s|\.git$||')
443
+ ENCODED_PATH=$(python3 -c "import sys,urllib.parse; print(urllib.parse.quote(sys.argv[1],safe=''))" "$PROJECT_PATH" 2>/dev/null || \
444
+ node -e "process.stdout.write(encodeURIComponent(process.argv[1]))" "$PROJECT_PATH" 2>/dev/null || \
445
+ echo "$PROJECT_PATH" | sed 's|/|%2F|g')
446
+ ```
447
+
448
+ ```bash
449
+ _API_ERR=$(mktemp)
450
+ if glab api "projects/$ENCODED_PATH/protected_branches" \
451
+ --method POST \
452
+ -f name="main" \
453
+ -f push_access_level=40 \
454
+ -f merge_access_level=40 \
455
+ -f allow_force_push=false >/dev/null 2>"$_API_ERR"; then
456
+ echo "Branch protection on main: OK"
457
+ else
458
+ echo "Branch protection on main: failed (branch may already be protected or insufficient permissions)"
459
+ fi
460
+ rm -f "$_API_ERR"
461
+ ```
462
+
463
+ Access level 40 = Maintainer. If the call fails (e.g., branch already protected, insufficient permissions), log the structured message above and continue — do not abort bootstrap. Raw API response bodies are never echoed to avoid leaking token or header information.
464
+
465
+ ### If `VCS = github`
466
+
467
+ ```bash
468
+ REPO_SLUG=$(git remote get-url origin 2>/dev/null | sed 's|.*github\.com[:/]||; s|\.git$||')
469
+ ```
470
+
471
+ ```bash
472
+ _API_ERR=$(mktemp)
473
+ if gh api "repos/$REPO_SLUG/branches/main/protection" \
474
+ --method PUT \
475
+ --field required_status_checks=null \
476
+ --field enforce_admins=true \
477
+ --field required_pull_request_reviews='{"required_approving_review_count":1}' \
478
+ --field restrictions=null >/dev/null 2>"$_API_ERR"; then
479
+ echo "Branch protection on main: OK"
480
+ else
481
+ echo "Branch protection on main: failed (branch may already be protected or insufficient permissions)"
482
+ fi
483
+ rm -f "$_API_ERR"
484
+ ```
485
+
486
+ If the call fails, log the structured message above and continue. Raw API response bodies are never echoed to avoid leaking token or header information.
487
+
488
+ ---
489
+
490
+ <!-- @include _shared-template.md#parallel-sessions-rule -->
491
+ ## Step 3a: Install Parallel-Sessions Rule
492
+
493
+ Canonical implementation in [`_shared-template.md#parallel-sessions-rule`](_shared-template.md).
494
+
495
+ Write the vendored rule from `$PLUGIN_ROOT/templates/_shared/rules/parallel-sessions.md` to
496
+ `$REPO_ROOT/.claude/rules/parallel-sessions.md` (idempotent: missing→create, identical→skip,
497
+ differs→overwrite). The shared partial also runs
498
+ `cp "$PLUGIN_ROOT/templates/_shared/loop.md" "$REPO_ROOT/.claude/loop.md"` so bare `/loop` gets a
499
+ repo-aware maintenance prompt. See shared partial for full shell command. Issues #155, #633.
500
+
501
+ Note: Runs before D99. If D99 (via inherited S99) fetches a newer `parallel-sessions.md` from
502
+ the baseline, the baseline version wins (acceptable — S99 is canonical).
503
+
504
+ ## Step 3b: Initialize .orchestrator/metrics/ (Deep) (#185)
505
+
506
+ Deep tier creates both learnings and sessions metrics plus a schema-linking README:
507
+
508
+ ```bash
509
+ mkdir -p "$REPO_ROOT/.orchestrator/metrics"
510
+ [[ -f "$REPO_ROOT/.orchestrator/metrics/learnings.jsonl" ]] || \
511
+ : > "$REPO_ROOT/.orchestrator/metrics/learnings.jsonl"
512
+ [[ -f "$REPO_ROOT/.orchestrator/metrics/sessions.jsonl" ]] || \
513
+ : > "$REPO_ROOT/.orchestrator/metrics/sessions.jsonl"
514
+
515
+ cat > "$REPO_ROOT/.orchestrator/metrics/README.md" <<'README'
516
+ # Metrics
517
+
518
+ - `learnings.jsonl` — session-scoped learnings (confidence-weighted patterns).
519
+ Managed by the `/evolve` skill.
520
+ - `sessions.jsonl` — per-session execution summaries.
521
+ Written by `/close` via session-end.
522
+
523
+ Schema: https://github.com/Kanevry/session-orchestrator
524
+ (see skills/evolve/SKILL.md and skills/session-end/).
525
+
526
+ **Do NOT gitignore** — these files are project artifacts intended to persist
527
+ across sessions and contributors.
528
+ README
529
+ ```
530
+
531
+ **Idempotent.** Existing files are preserved.
532
+
533
+ **Gitignore guidance:** same as Standard — `.orchestrator/metrics/*.jsonl` MUST remain tracked.
534
+
535
+ > Note: Standard tier (Step 3b) only creates `learnings.jsonl`. Deep adds `sessions.jsonl` + the `README.md`. This step is NOT a shared partial because the Deep variant is a superset, not identical.
536
+
537
+ <!-- @include _shared-template.md#baseline-fetch -->
538
+ ## Step D99: (Optional) Baseline Fetch — Inherited from Standard
539
+
540
+ Canonical implementation in [`_shared-template.md#baseline-fetch`](_shared-template.md).
541
+
542
+ Standard-template Step S99 already executed as part of "Step 1–8: Execute Standard Tier" above.
543
+ No additional fetch action is needed here.
544
+
545
+ If S99 ran successfully, `.claude/rules/*.md` and `.claude/.baseline-fetch.lock` are already written
546
+ to `$REPO_ROOT`. These files are included in the Deep commit at Step D8 via the `.claude/` entry
547
+ in `BOOTSTRAP_FILES`. If S99 was skipped, rules arrive via the legacy Clank weekly sync MR path.
548
+
549
+ ---
550
+
551
+ <!-- @include _shared-template.md#agents-scaffold -->
552
+ ## Step D6.5: .claude/agents/ Scaffold (#189)
553
+
554
+ Canonical implementation in [`_shared-template.md#agents-scaffold`](_shared-template.md).
555
+
556
+ Copy 3 opinionated agent templates (`project-discovery`, `project-code-review`,
557
+ `project-quality-gate`) into `$REPO_ROOT/.claude/agents/`. Idempotent: skip existing files.
558
+ See shared partial for full shell command. Issue #189.
559
+
560
+ ---
561
+
562
+ <!-- @include _shared-template.md#vault-registration -->
563
+ ## Step D6.6: Vault-Registration Prompt (Product Repos) (#190)
564
+
565
+ Canonical implementation in [`_shared-template.md#vault-registration`](_shared-template.md).
566
+
567
+ Mirrors standard-template Step 5.5. If standard already ran it and the user accepted,
568
+ `hasVaultConfig` returns true and this step is a no-op. See shared partial for full detection
569
+ script, prompt text, YAML block, and examples. Issue #190.
570
+
571
+ ---
572
+
573
+ ## Step D7: Write bootstrap.lock (Deep)
574
+
575
+ Write `.orchestrator/bootstrap.lock` **atomically** (mktemp + mv prevents a corrupt lock if the
576
+ process is interrupted mid-write):
577
+
578
+ ```bash
579
+ _LOCK_TMP=$(mktemp "$REPO_ROOT/.orchestrator/bootstrap.lock.XXXXXX")
580
+ cat > "$_LOCK_TMP" << LOCK
581
+ # .orchestrator/bootstrap.lock
582
+ version: 1
583
+ tier: deep
584
+ archetype: <CONFIRMED_ARCHETYPE>
585
+ timestamp: <current ISO 8601 UTC — e.g., 2026-04-16T09:30:00Z>
586
+ source: <claude-init | plugin-template | projects-baseline>
587
+ plugin-version: <session-orchestrator plugin version — read from $PLUGIN_ROOT/package.json .version field>
588
+ bootstrapped-at: <current ISO 8601 UTC — same value as timestamp; distinct field for age-validation probe>
589
+ LOCK
590
+ mv "$_LOCK_TMP" "$REPO_ROOT/.orchestrator/bootstrap.lock"
591
+ ```
592
+
593
+ Set `source` using the same logic as fast-template Step 5.
594
+
595
+ ---
596
+
597
+ ## Step D8: Git Commit
598
+
599
+ Stage all created files and commit:
600
+
601
+ ```bash
602
+ cd "$REPO_ROOT"
603
+ BOOTSTRAP_FILES=(
604
+ CLAUDE.md AGENTS.md .gitignore README.md .orchestrator/bootstrap.lock
605
+ .orchestrator/policy/quality-gates.json
606
+ package.json pyproject.toml tsconfig.json eslint.config.mjs .prettierrc
607
+ .editorconfig src/ tests/ CHANGELOG.md CODEOWNERS
608
+ .gitlab/ .github/ .claude/
609
+ )
610
+ # Add only the files bootstrap created — no sweeping -u/-A to avoid catching pre-existing files
611
+ for _f in "${BOOTSTRAP_FILES[@]}"; do
612
+ [[ -e "$_f" ]] && git add -- "$_f"
613
+ done
614
+ git commit -m "chore: bootstrap (deep)"
615
+ ```
616
+
617
+ The commit message is fixed — do not vary it.
618
+
619
+ ---
620
+
621
+ ## Step D9: Report Created Files
622
+
623
+ After the commit succeeds, output a concise summary of all files created (Fast + Standard + Deep):
624
+
625
+ ```
626
+ Bootstrap (deep, <archetype>) complete. Created:
627
+ CLAUDE.md (or AGENTS.md) — Session Config
628
+ .gitignore — stack-appropriate rules
629
+ README.md — expanded with Installation, Usage, Dev
630
+ .editorconfig — consistent editor settings
631
+ <manifest> — package.json / pyproject.toml
632
+ <tsconfig.json> — if JS/TS archetype
633
+ <eslint.config.mjs + .prettierrc> — if JS/TS archetype
634
+ <tests/sanity.test.ts or equiv> — sanity test
635
+ .claude/rules/parallel-sessions.md — vendored PSA rule (issue #155)
636
+ .claude/STATE.md — idle placeholder (issue #184)
637
+ CHANGELOG.md — initial entry
638
+ CODEOWNERS (or .github/CODEOWNERS) — placeholder owner
639
+ <.gitlab-ci.yml or .github/workflows/ci.yml> — CI pipeline
640
+ <issue templates> — Bug + Feature templates
641
+ <MR/PR template> — Default merge/pull request template
642
+ .orchestrator/bootstrap.lock — version: 1, tier: deep
643
+ .orchestrator/policy/quality-gates.json — test/typecheck/lint commands (issue #183)
644
+ Branch protection on main — via glab/gh api (result logged above)
645
+ Committed: "chore: bootstrap (deep)"
646
+ ```
647
+
648
+ Then return control to `SKILL.md` Phase 5.
649
+
650
+ ---
651
+
652
+ ## Not in Deep
653
+
654
+ The following are intentionally excluded from the Deep tier per the YAGNI-trim in the spec. They add value but are not in the 10-minute-Grundstruktur scope:
655
+
656
+ - **Renovate / Dependabot** — opt-in via `plan-baseline-path` templates or manual add
657
+ - **`docker-compose.yml`** — archetype concern, not tier concern; bring it when the feature needs it
658
+ - **Vault-Sync integration** — Meta-Vault is a separate system, integrated via its own skill
659
+ - **Pre-commit hooks / husky / lefthook** — personal-preference layer; opt-in manually