@event4u/agent-config 7.4.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/.claude-plugin/marketplace.json +11 -1
  2. package/AGENTS.md +9 -9
  3. package/CHANGELOG.md +373 -0
  4. package/README.md +35 -5
  5. package/dist/agent-src/commands/analytics/prune.md +1 -1
  6. package/dist/agent-src/commands/analytics/show.md +1 -1
  7. package/dist/agent-src/commands/analyze/decision.md +2 -2
  8. package/dist/agent-src/commands/analyze/incident.md +2 -2
  9. package/dist/agent-src/commands/analyze/near-miss.md +2 -2
  10. package/dist/agent-src/commands/analyze/postmortem.md +2 -2
  11. package/dist/agent-src/commands/analyze/premortem.md +2 -2
  12. package/dist/agent-src/commands/cost-report.md +25 -0
  13. package/dist/agent-src/commands/evals/analyze.json +30 -0
  14. package/dist/agent-src/commands/evals/mission-upgrade.json +30 -0
  15. package/dist/agent-src/commands/implement-ticket.md +1 -1
  16. package/dist/agent-src/commands/knowledge/forget.md +1 -1
  17. package/dist/agent-src/commands/knowledge/ingest.md +1 -1
  18. package/dist/agent-src/commands/knowledge/list.md +1 -1
  19. package/dist/agent-src/commands/memory/load.md +12 -11
  20. package/dist/agent-src/commands/memory/promote.md +30 -0
  21. package/dist/agent-src/commands/memory/propose.md +16 -2
  22. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  23. package/dist/agent-src/commands/module/explore.md +11 -7
  24. package/dist/agent-src/commands/optimize-project.md +243 -0
  25. package/dist/agent-src/commands/optimize.md +5 -0
  26. package/dist/agent-src/commands/pr/create.md +37 -8
  27. package/dist/agent-src/commands/prediction-pool.md +2 -2
  28. package/dist/agent-src/commands/profile/activate.md +3 -3
  29. package/dist/agent-src/commands/profile/deactivate.md +2 -2
  30. package/dist/agent-src/commands/profile/show.md +3 -3
  31. package/dist/agent-src/commands/research/deep.md +5 -0
  32. package/dist/agent-src/commands/research/report.md +2 -1
  33. package/dist/agent-src/commands/review-changes.md +14 -7
  34. package/dist/agent-src/commands/roadmap/create.md +88 -10
  35. package/dist/agent-src/commands/roadmap/materialize.md +1 -1
  36. package/dist/agent-src/commands/roadmap/process-full.md +15 -2
  37. package/dist/agent-src/commands/roadmap/process-phase.md +18 -6
  38. package/dist/agent-src/commands/roadmap/process-step.md +4 -0
  39. package/dist/agent-src/commands/roadmap.md +1 -1
  40. package/dist/agent-src/commands/security-audit-config.md +1 -1
  41. package/dist/agent-src/commands/sync-agent-settings.md +1 -1
  42. package/dist/agent-src/commands/sync-gitignore/fix.md +42 -6
  43. package/dist/agent-src/commands/team-knowledge/bootstrap.md +106 -0
  44. package/dist/agent-src/commands/team-knowledge/consolidate.md +105 -0
  45. package/dist/agent-src/commands/team-knowledge.md +64 -0
  46. package/dist/agent-src/contexts/authority/commit-mechanics.md +8 -0
  47. package/dist/agent-src/contexts/authority/destructive-mechanics.md +11 -0
  48. package/dist/agent-src/contexts/authority/scope-mechanics.md +25 -0
  49. package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +43 -0
  50. package/dist/agent-src/contexts/contracts/agents-md-anatomy.md +1 -1
  51. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +2 -2
  52. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -0
  53. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +14 -4
  54. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +11 -0
  55. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +32 -8
  56. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +107 -0
  57. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +71 -15
  58. package/dist/agent-src/contexts/execution/subagent-steering.md +41 -1
  59. package/dist/agent-src/contexts/override-system.md +1 -1
  60. package/dist/agent-src/personas/brand-strategist.md +0 -1
  61. package/dist/agent-src/personas/data-integrity.md +66 -0
  62. package/dist/agent-src/personas/design-director.md +0 -1
  63. package/dist/agent-src/personas/performance-engineer.md +66 -0
  64. package/dist/agent-src/personas/production-validator.md +73 -0
  65. package/dist/agent-src/rules/agent-authority.md +3 -4
  66. package/dist/agent-src/rules/analysis-skill-routing.md +3 -5
  67. package/dist/agent-src/rules/architecture.md +2 -4
  68. package/dist/agent-src/rules/artifact-drafting-protocol.md +35 -6
  69. package/dist/agent-src/rules/artifact-engagement-recording.md +11 -4
  70. package/dist/agent-src/rules/ask-when-uncertain.md +10 -14
  71. package/dist/agent-src/rules/augment-edit-discipline.md +3 -5
  72. package/dist/agent-src/rules/autonomous-execution.md +3 -5
  73. package/dist/agent-src/rules/brand-consistency.md +3 -5
  74. package/dist/agent-src/rules/brand-source-of-truth.md +3 -5
  75. package/dist/agent-src/rules/cli-output-handling.md +4 -6
  76. package/dist/agent-src/rules/command-suggestion-policy.md +3 -5
  77. package/dist/agent-src/rules/commit-conventions.md +3 -5
  78. package/dist/agent-src/rules/commit-policy.md +8 -10
  79. package/dist/agent-src/rules/content-quoting-floor.md +88 -0
  80. package/dist/agent-src/rules/context-hygiene.md +3 -5
  81. package/dist/agent-src/rules/copilot-routing.md +4 -6
  82. package/dist/agent-src/rules/decision-revisit-gate.md +120 -0
  83. package/dist/agent-src/rules/delegation-policy.md +10 -6
  84. package/dist/agent-src/rules/design-fidelity.md +3 -5
  85. package/dist/agent-src/rules/devcontainer-routing.md +4 -6
  86. package/dist/agent-src/rules/direct-answers.md +13 -17
  87. package/dist/agent-src/rules/docker-commands.md +3 -5
  88. package/dist/agent-src/rules/domain-adoption-policy.md +3 -5
  89. package/dist/agent-src/rules/domain-safety-disclaimer.md +3 -5
  90. package/dist/agent-src/rules/domain-safety-pii.md +7 -8
  91. package/dist/agent-src/rules/domain-safety-retention.md +3 -5
  92. package/dist/agent-src/rules/downstream-changes.md +3 -4
  93. package/dist/agent-src/rules/engineering-safety-floor.md +3 -5
  94. package/dist/agent-src/rules/external-reference-deep-dive.md +3 -5
  95. package/dist/agent-src/rules/fast-path-marker-visibility.md +3 -5
  96. package/dist/agent-src/rules/finance-safety-floor.md +3 -6
  97. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -5
  98. package/dist/agent-src/rules/git-history-discipline.md +3 -5
  99. package/dist/agent-src/rules/guidelines.md +2 -4
  100. package/dist/agent-src/rules/icon-consistency.md +4 -5
  101. package/dist/agent-src/rules/image-likeness-and-rights.md +3 -5
  102. package/dist/agent-src/rules/improve-before-implement.md +5 -5
  103. package/dist/agent-src/rules/invite-challenge.md +3 -5
  104. package/dist/agent-src/rules/language-and-tone.md +13 -15
  105. package/dist/agent-src/rules/laravel-routing.md +3 -5
  106. package/dist/agent-src/rules/laravel-translations.md +3 -5
  107. package/dist/agent-src/rules/legal-safety-floor.md +5 -7
  108. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -5
  109. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +4 -7
  110. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -5
  111. package/dist/agent-src/rules/markdown-safe-codeblocks.md +2 -4
  112. package/dist/agent-src/rules/media-governance-routing.md +3 -5
  113. package/dist/agent-src/rules/media-sync-ground-truth.md +3 -5
  114. package/dist/agent-src/rules/minimal-safe-diff.md +5 -5
  115. package/dist/agent-src/rules/missing-tool-handling.md +3 -5
  116. package/dist/agent-src/rules/model-recommendation.md +4 -6
  117. package/dist/agent-src/rules/no-attribution-footers.md +3 -5
  118. package/dist/agent-src/rules/no-cheap-questions.md +5 -8
  119. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +3 -6
  120. package/dist/agent-src/rules/no-pr-progress-comments.md +3 -6
  121. package/dist/agent-src/rules/no-roadmap-references.md +3 -5
  122. package/dist/agent-src/rules/non-destructive-by-default.md +11 -13
  123. package/dist/agent-src/rules/notes-first-reasoning.md +3 -5
  124. package/dist/agent-src/rules/onboarding-gate.md +4 -6
  125. package/dist/agent-src/rules/output-discipline.md +3 -5
  126. package/dist/agent-src/rules/package-ci-checks.md +3 -5
  127. package/dist/agent-src/rules/persona-governance.md +2 -4
  128. package/dist/agent-src/rules/php-coding.md +3 -5
  129. package/dist/agent-src/rules/preservation-guard.md +2 -4
  130. package/dist/agent-src/rules/provider-lifecycle-discipline.md +3 -5
  131. package/dist/agent-src/rules/reviewer-awareness.md +5 -6
  132. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +3 -5
  133. package/dist/agent-src/rules/roadmap-progress-sync.md +5 -5
  134. package/dist/agent-src/rules/role-mode-adherence.md +2 -4
  135. package/dist/agent-src/rules/rule-type-governance.md +3 -5
  136. package/dist/agent-src/rules/runtime-safety.md +2 -4
  137. package/dist/agent-src/rules/scope-control.md +10 -11
  138. package/dist/agent-src/rules/security-sensitive-stop.md +4 -5
  139. package/dist/agent-src/rules/size-enforcement.md +2 -4
  140. package/dist/agent-src/rules/skill-improvement-trigger.md +3 -5
  141. package/dist/agent-src/rules/skill-quality.md +3 -5
  142. package/dist/agent-src/rules/slash-command-routing-policy.md +3 -5
  143. package/dist/agent-src/rules/source-confidentiality.md +3 -5
  144. package/dist/agent-src/rules/source-discovery-gate.md +3 -5
  145. package/dist/agent-src/rules/source-of-truth.md +3 -5
  146. package/dist/agent-src/rules/strategy-safety-floor.md +3 -5
  147. package/dist/agent-src/rules/symfony-routing.md +4 -6
  148. package/dist/agent-src/rules/telegraph-speak.md +4 -5
  149. package/dist/agent-src/rules/think-before-action.md +7 -4
  150. package/dist/agent-src/rules/token-budget-discipline.md +29 -5
  151. package/dist/agent-src/rules/token-efficiency.md +3 -5
  152. package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -5
  153. package/dist/agent-src/rules/tool-safety.md +2 -4
  154. package/dist/agent-src/rules/ui-audit-gate.md +3 -6
  155. package/dist/agent-src/rules/untrusted-input-defense.md +11 -10
  156. package/dist/agent-src/rules/upstream-proposal.md +4 -6
  157. package/dist/agent-src/rules/user-interaction.md +7 -5
  158. package/dist/agent-src/rules/user-interrupt-priority.md +17 -8
  159. package/dist/agent-src/rules/verify-before-complete.md +12 -22
  160. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +3 -3
  161. package/dist/agent-src/scripts/update_roadmap_progress.ts +197 -7
  162. package/dist/agent-src/skills/adr-create/SKILL.md +52 -42
  163. package/dist/agent-src/skills/adversarial-review/SKILL.md +1 -1
  164. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +18 -0
  165. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  166. package/dist/agent-src/skills/ai-council/SKILL.md +14 -1
  167. package/dist/agent-src/skills/blade-ui/SKILL.md +4 -0
  168. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +0 -3
  169. package/dist/agent-src/skills/brand/SKILL.md +1 -1
  170. package/dist/agent-src/skills/brand-identity/SKILL.md +3 -3
  171. package/dist/agent-src/skills/brand-strategy/SKILL.md +1 -1
  172. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +5 -4
  173. package/dist/agent-src/skills/canvas-design/SKILL.md +6 -0
  174. package/dist/agent-src/skills/check-refs/SKILL.md +7 -4
  175. package/dist/agent-src/skills/code-review/SKILL.md +5 -0
  176. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +6 -5
  177. package/dist/agent-src/skills/condense-memory/SKILL.md +11 -11
  178. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  179. package/dist/agent-src/skills/context-document/SKILL.md +17 -0
  180. package/dist/agent-src/skills/corpus-grounding/SKILL.md +3 -3
  181. package/dist/agent-src/skills/decision-record/SKILL.md +6 -0
  182. package/dist/agent-src/skills/decision-review/SKILL.md +5 -3
  183. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +6 -1
  184. package/dist/agent-src/skills/design-intelligence/SKILL.md +45 -2
  185. package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
  186. package/dist/agent-src/skills/design-review/SKILL.md +23 -11
  187. package/dist/agent-src/skills/design-system-capture/SKILL.md +41 -0
  188. package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +62 -0
  189. package/dist/agent-src/skills/design-tokens/SKILL.md +11 -4
  190. package/dist/agent-src/skills/design-variations/SKILL.md +127 -0
  191. package/dist/agent-src/skills/design-variations/evals/triggers.json +17 -0
  192. package/dist/agent-src/skills/emit-tickets/SKILL.md +4 -4
  193. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -0
  194. package/dist/agent-src/skills/fe-design/SKILL.md +20 -0
  195. package/dist/agent-src/skills/flux/SKILL.md +4 -0
  196. package/dist/agent-src/skills/html-deck/SKILL.md +123 -0
  197. package/dist/agent-src/skills/html-deck/evals/triggers.json +17 -0
  198. package/dist/agent-src/skills/html-deck/templates/deck-shell.html +77 -0
  199. package/dist/agent-src/skills/iconography/SKILL.md +1 -0
  200. package/dist/agent-src/skills/image-editing/evals/triggers.json +13 -13
  201. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +136 -0
  202. package/dist/agent-src/skills/judge-artifact-completeness/calibration/fixtures.json +149 -0
  203. package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +17 -0
  204. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/architecture-score.json +73 -0
  205. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/pr-review-score.json +65 -0
  206. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/roadmap-score.json +73 -0
  207. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +73 -0
  208. package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -0
  209. package/dist/agent-src/skills/judge-injection-defense/SKILL.md +99 -0
  210. package/dist/agent-src/skills/judge-injection-defense/calibration/fixtures.json +24 -0
  211. package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +17 -0
  212. package/dist/agent-src/skills/judge-injection-defense/fixtures/behavioral-fixtures.json +63 -0
  213. package/dist/agent-src/skills/judge-injection-defense/fixtures/coverage-report.md +53 -0
  214. package/dist/agent-src/skills/judge-injection-defense/fixtures/perturbation-taxonomy.json +110 -0
  215. package/dist/agent-src/skills/judge-synthesis/SKILL.md +134 -0
  216. package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +17 -0
  217. package/dist/agent-src/skills/laravel/SKILL.md +0 -1
  218. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +46 -0
  219. package/dist/agent-src/skills/lint-skills/SKILL.md +6 -6
  220. package/dist/agent-src/skills/logo-generation/SKILL.md +1 -1
  221. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  222. package/dist/agent-src/skills/md-language-check/SKILL.md +3 -3
  223. package/dist/agent-src/skills/memory-consolidation/SKILL.md +66 -1
  224. package/dist/agent-src/skills/migration-architect/SKILL.md +1 -0
  225. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +2 -2
  226. package/dist/agent-src/skills/performance-analysis/SKILL.md +2 -0
  227. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +4 -4
  228. package/dist/agent-src/skills/premortem/SKILL.md +0 -3
  229. package/dist/agent-src/skills/project-analysis-core/SKILL.md +16 -0
  230. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +18 -0
  231. package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +59 -0
  232. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +3 -1
  233. package/dist/agent-src/skills/refine-ticket/SKILL.md +5 -1
  234. package/dist/agent-src/skills/release-comms/SKILL.md +47 -46
  235. package/dist/agent-src/skills/roadmap-management/SKILL.md +25 -0
  236. package/dist/agent-src/skills/roadmap-writing/SKILL.md +33 -3
  237. package/dist/agent-src/skills/root-cause-frameworks/SKILL.md +0 -3
  238. package/dist/agent-src/skills/script-writing/SKILL.md +1 -1
  239. package/dist/agent-src/skills/security-audit/SKILL.md +1 -0
  240. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -0
  241. package/dist/agent-src/skills/source-discovery/SKILL.md +22 -3
  242. package/dist/agent-src/skills/sql-writing/SKILL.md +1 -1
  243. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +33 -14
  244. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +11 -0
  245. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +8 -0
  246. package/dist/agent-src/skills/systematic-debugging/SKILL.md +30 -1
  247. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +4 -0
  248. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  249. package/dist/agent-src/skills/threat-modeling/SKILL.md +2 -2
  250. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  251. package/dist/agent-src/skills/typography-system/SKILL.md +4 -3
  252. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -0
  253. package/dist/agent-src/skills/wireframe/SKILL.md +118 -0
  254. package/dist/agent-src/skills/wireframe/evals/triggers.json +17 -0
  255. package/dist/agent-src/templates/agent-settings.md +22 -1
  256. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  257. package/dist/agent-src/templates/command.md +2 -2
  258. package/dist/agent-src/templates/contexts/knowledge-pages.md +116 -0
  259. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +1 -1
  260. package/dist/agent-src/templates/roadmaps.md +70 -2
  261. package/dist/agent-src/templates/rule.md +1 -1
  262. package/dist/agent-src/templates/scripts/README.md +3 -3
  263. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +109 -0
  264. package/dist/agent-src/templates/tickets.md +8 -8
  265. package/dist/cli/commands/recordTriggerEval.test.js +1 -1
  266. package/dist/cli/commands/recordTriggerEval.test.js.map +1 -1
  267. package/dist/cli/initRouting.js +4 -2
  268. package/dist/cli/initRouting.js.map +1 -1
  269. package/dist/cli/registry.js +1 -0
  270. package/dist/cli/registry.js.map +1 -1
  271. package/dist/discovery/deprecation-report.md +1 -1
  272. package/dist/discovery/discovery-manifest.json +802 -258
  273. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  274. package/dist/discovery/discovery-manifest.summary.md +8 -8
  275. package/dist/discovery/orphan-report.md +1 -1
  276. package/dist/discovery/packs.json +46 -28
  277. package/dist/discovery/trust-report.md +12 -11
  278. package/dist/discovery/workspaces.json +32 -18
  279. package/dist/install/preflight.js +173 -0
  280. package/dist/install/preflight.js.map +1 -0
  281. package/dist/mcp/registry-manifest.json +4 -4
  282. package/dist/router.json +1 -1
  283. package/dist/server/routes/settings.js +4 -0
  284. package/dist/server/routes/settings.js.map +1 -1
  285. package/dist/server/schemas/settings.js +6 -1
  286. package/dist/server/schemas/settings.js.map +1 -1
  287. package/docs/CLAIMS.md +108 -0
  288. package/docs/MIGRATION.md +3 -3
  289. package/docs/architecture.md +6 -6
  290. package/docs/benchmark.md +133 -2
  291. package/docs/benchmark.pinned.yml +31 -0
  292. package/docs/capability-matrix.md +1 -0
  293. package/docs/catalog.md +92 -74
  294. package/docs/command-flows.md +16 -4
  295. package/docs/comparison.yaml +35 -0
  296. package/docs/contracts/agents-layout.md +148 -0
  297. package/docs/contracts/brand-token-consumption.md +5 -0
  298. package/docs/contracts/capability-boundary.md +5 -0
  299. package/docs/contracts/command-category-governance.md +5 -0
  300. package/docs/contracts/command-clusters.md +1 -0
  301. package/docs/contracts/command-surface-tiers.md +1 -1
  302. package/docs/contracts/conformance.md +84 -0
  303. package/docs/contracts/creative-pack-boundary.md +5 -0
  304. package/docs/contracts/discovery-manifest.schema.json +5 -4
  305. package/docs/contracts/file-ownership-matrix.json +4605 -985
  306. package/docs/contracts/governance-enforcement-projection.md +5 -0
  307. package/docs/contracts/gui-wizard.md +1 -1
  308. package/docs/contracts/hook-architecture-v1.md +2 -2
  309. package/docs/contracts/implement-ticket-flow.md +1 -1
  310. package/docs/contracts/kernel-membership.md +13 -0
  311. package/docs/contracts/mcp-tool-inventory.md +23 -23
  312. package/docs/contracts/no-runtime-boundary.md +6 -1
  313. package/docs/contracts/review-lens-schema.md +5 -0
  314. package/docs/contracts/rule-router.md +102 -8
  315. package/docs/contracts/skill-bundled-assets.md +1 -1
  316. package/docs/contracts/skill-dry-run.md +1 -1
  317. package/docs/contracts/subagent-boundary.md +5 -0
  318. package/docs/contracts/ticket-bundle-format.md +9 -4
  319. package/docs/contracts/tier-3-contrib-plugin.md +2 -2
  320. package/docs/contracts/write-engine.md +3 -0
  321. package/docs/customization.md +87 -15
  322. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +1 -1
  323. package/docs/decisions/ADR-109-subagent-v1-contract.md +246 -0
  324. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +105 -0
  325. package/docs/decisions/INDEX.md +2 -0
  326. package/docs/distribution/awesome-list-submission.md +46 -0
  327. package/docs/distribution/launch-story-draft.md +58 -0
  328. package/docs/end-to-end-walkthroughs.md +2 -2
  329. package/docs/getting-started.md +2 -2
  330. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +24 -0
  331. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +1 -1
  332. package/docs/guidelines/agent-infra/linked-projects-onboarding-gate.md +2 -2
  333. package/docs/guidelines/agent-infra/missing-tool-handling.md +3 -3
  334. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +2 -2
  335. package/docs/guidelines/augment-portability-patterns.md +1 -1
  336. package/docs/guidelines/code-clarity.md +19 -0
  337. package/docs/guidelines/design-antipatterns-triggers.json +2 -1
  338. package/docs/guidelines/design-antipatterns.md +35 -0
  339. package/docs/guidelines/design-canon.md +62 -0
  340. package/docs/guidelines/design-modes.md +6 -0
  341. package/docs/guidelines/php/general.md +9 -1
  342. package/docs/guidelines/php/php-coding-patterns.md +7 -0
  343. package/docs/guides/cross-repo-retrieval.md +1 -1
  344. package/docs/guides/frontend-design-corpus-refresh.md +2 -2
  345. package/docs/guides/local-analytics.md +4 -4
  346. package/docs/guides/skill-discovery.md +1 -1
  347. package/docs/guides/skill-preview.md +1 -1
  348. package/docs/hook-payload-capture.md +6 -6
  349. package/docs/install-friction-report.md +66 -0
  350. package/docs/installation.md +1 -1
  351. package/docs/maintainers/optional-media-deps.md +50 -0
  352. package/docs/mcp-server.md +11 -12
  353. package/docs/media/proof-demo.cast +14 -0
  354. package/docs/media/proof-demo.gif +0 -0
  355. package/docs/migration/consumer-template-consumption-model.md +1 -1
  356. package/docs/migration/divergences/bench-stats-float-precision.md +1 -1
  357. package/docs/migration/node-floor.md +1 -1
  358. package/docs/migration/yaml-roundtrip-spike.md +1 -1
  359. package/docs/personas.md +16 -5
  360. package/docs/positioning-evidence.md +86 -0
  361. package/docs/proof.md +86 -0
  362. package/docs/skills-catalog.md +1 -1
  363. package/docs/troubleshooting.md +8 -8
  364. package/docs/wedge/production-validator/README.md +57 -0
  365. package/docs/wedge/production-validator/production-validator.md +56 -0
  366. package/docs/wizard.md +2 -2
  367. package/package.json +1 -1
  368. package/src/config/agent-settings.template.yml +71 -4
  369. package/src/config/agents-paths.yml +254 -0
  370. package/src/config/budgets.yml +16 -0
  371. package/src/config/discovery/packs.yml +1 -0
  372. package/src/config/discovery/unassigned-artefacts.yml +2 -0
  373. package/src/config/gitignore-block.txt +25 -0
  374. package/src/config/host-capabilities.yml +31 -0
  375. package/src/config/profiles/balanced.ini +4 -0
  376. package/src/config/profiles/full.ini +4 -0
  377. package/src/config/profiles/minimal.ini +4 -0
  378. package/src/scripts/_cli/cmd_conformance.ts +716 -0
  379. package/src/scripts/_cli/cmd_doctor.ts +23 -2
  380. package/src/scripts/_cli/cmd_fleet.ts +401 -0
  381. package/src/scripts/_cli/cmd_preflight.ts +159 -0
  382. package/src/scripts/_dispatch.bash +10 -0
  383. package/src/scripts/_lib/knowledge_events.ts +193 -0
  384. package/src/scripts/_lib/subagent_steering.ts +115 -3
  385. package/src/scripts/_lib/text_similarity.ts +75 -0
  386. package/src/scripts/ai-video/test-pipeline.sh +1 -1
  387. package/src/scripts/ai_council/clients.ts +19 -3
  388. package/src/scripts/append_contested.ts +112 -0
  389. package/src/scripts/audit_auto_rules.ts +11 -1
  390. package/src/scripts/audit_mcp_tools.ts +25 -11
  391. package/src/scripts/bench_ab_v2_run.ts +527 -40
  392. package/src/scripts/bench_ab_v2_stats.ts +6 -0
  393. package/src/scripts/bench_matrix.ts +266 -0
  394. package/src/scripts/bootstrap_knowledge.ts +267 -0
  395. package/src/scripts/build_discovery_manifest.ts +42 -2
  396. package/src/scripts/build_proof.ts +214 -0
  397. package/src/scripts/check_always_budget.ts +3 -0
  398. package/src/scripts/check_augment_description_cap.ts +2 -2
  399. package/src/scripts/check_claims.ts +270 -0
  400. package/src/scripts/check_comparison.ts +79 -0
  401. package/src/scripts/check_generated_artefact_headers.ts +109 -0
  402. package/src/scripts/check_generator_output_coverage.ts +142 -0
  403. package/src/scripts/check_gitignore_freshness.ts +127 -0
  404. package/src/scripts/check_knowledge_pages.ts +210 -0
  405. package/src/scripts/check_knowledge_sharing.ts +162 -0
  406. package/src/scripts/check_media_deps.ts +91 -0
  407. package/src/scripts/check_memory_contradiction.ts +280 -0
  408. package/src/scripts/check_memory_similarity.ts +134 -0
  409. package/src/scripts/check_quality_regression.ts +56 -10
  410. package/src/scripts/check_references.ts +3 -1
  411. package/src/scripts/check_release_pr_shape.ts +4 -0
  412. package/src/scripts/check_site_links.ts +135 -0
  413. package/src/scripts/check_skill_gaps.ts +99 -0
  414. package/src/scripts/check_token_quality_golden.ts +197 -11
  415. package/src/scripts/check_tracked_but_ignored.ts +67 -0
  416. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  417. package/src/scripts/compile_router.ts +30 -3
  418. package/src/scripts/condense.ts +350 -14
  419. package/src/scripts/consolidate_knowledge_events.ts +192 -0
  420. package/src/scripts/degrade_to_pointer.ts +136 -0
  421. package/src/scripts/design_slop_rules.test.ts +208 -0
  422. package/src/scripts/design_slop_rules.ts +530 -0
  423. package/src/scripts/emit_knowledge_event.ts +158 -0
  424. package/src/scripts/export_replay_corpus.ts +187 -0
  425. package/src/scripts/external_sources_denylist.json +14 -3
  426. package/src/scripts/fold_intake.ts +281 -0
  427. package/src/scripts/generate_capability_matrix.ts +9 -1
  428. package/src/scripts/generate_knowledge_index.ts +222 -0
  429. package/src/scripts/hook_manifest.yaml +40 -17
  430. package/src/scripts/hooks/design_slop_hook.ts +181 -0
  431. package/src/scripts/hooks/dispatch_hook.ts +18 -0
  432. package/src/scripts/hot_context_hook.ts +372 -0
  433. package/src/scripts/install +47 -0
  434. package/src/scripts/install-hooks.sh +17 -0
  435. package/src/scripts/inventory_meta_layers.ts +11 -0
  436. package/src/scripts/janitor.ts +258 -0
  437. package/src/scripts/lint_agent_security.ts +1 -0
  438. package/src/scripts/lint_agents_layout.ts +74 -15
  439. package/src/scripts/lint_bench_ab.ts +4 -1
  440. package/src/scripts/lint_confusables.ts +197 -0
  441. package/src/scripts/lint_design_slop.ts +245 -0
  442. package/src/scripts/lint_featured_skills.ts +0 -0
  443. package/src/scripts/lint_framework_leakage_allowlist.json +26 -3
  444. package/src/scripts/lint_knowledge_scale.ts +250 -0
  445. package/src/scripts/lint_legal_pack.ts +67 -0
  446. package/src/scripts/lint_persona_governance.ts +8 -3
  447. package/src/scripts/lint_regression.ts +15 -0
  448. package/src/scripts/lint_roadmap_blockers.ts +202 -0
  449. package/src/scripts/lint_roadmap_complexity.ts +81 -2
  450. package/src/scripts/lint_subagent_determinism.ts +125 -0
  451. package/src/scripts/measure_augment_budget.ts +46 -6
  452. package/src/scripts/measure_patterns.ts +4 -3
  453. package/src/scripts/measure_skill_reduction.ts +6 -6
  454. package/src/scripts/migration_status.ts +6 -2
  455. package/src/scripts/mine_missing_guardrails.ts +189 -0
  456. package/src/scripts/parity/phase_gate.ts +1 -1
  457. package/src/scripts/parity/replay.ts +21 -0
  458. package/src/scripts/project_thin_rules.ts +120 -16
  459. package/src/scripts/release.ts +39 -1
  460. package/src/scripts/render_benchmark_composite.ts +378 -0
  461. package/src/scripts/roadmap_progress_hook.ts +101 -43
  462. package/src/scripts/schemas/skill.schema.json +27 -0
  463. package/src/scripts/schemas/subagent.schema.json +106 -0
  464. package/src/scripts/skill_linter.ts +1 -0
  465. package/src/scripts/smoke/kernel.sh +5 -4
  466. package/src/scripts/surface-tiers.yml +1 -0
  467. package/src/scripts/sync_gitignore.ts +4 -0
  468. package/src/scripts/update_skill_candidates.ts +172 -0
  469. package/src/scripts/validate_frontmatter.ts +1 -0
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "3"
4
- description: "Asking a question, presenting options, summarizing progress — numbered-options Iron Law, single-recommendation rule, progress indicators"
4
+ description: "Questions, options, progress summaries — numbered-options Iron Law, single-recommendation rule"
5
5
  alwaysApply: false
6
6
  load_context:
7
7
  - ../contexts/communication/rules-auto/user-interaction-mechanics.md
@@ -9,10 +9,12 @@ triggers:
9
9
  - intent: "ask user a question"
10
10
  - intent: "numbered options"
11
11
  - intent: "summarizing progress"
12
- workspaces:
13
- - agent-config-maintainer
14
- packs:
15
- - meta
12
+ - keyword: "option"
13
+ - keyword: "recommendation"
14
+ - phrase: "what do you recommend"
15
+ - phrase: "was empfiehlst du"
16
+ workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
17
+ packs: [meta]
16
18
  ---
17
19
 
18
20
  # User Interaction
@@ -1,14 +1,23 @@
1
1
  ---
2
- type: "always"
3
- tier: "1"
4
- description: "User interrupts override the current task — STOP, complete new task in full, then ASK before resuming; never silently return to prior work"
5
- alwaysApply: true
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "New user instruction mid-flight — STOP the current task, run the new one in full, ASK before resuming"
5
+ alwaysApply: false
6
+ triggers:
7
+ - intent: "new instruction while a task is running"
8
+ - keyword: "weiter"
9
+ - keyword: "resume"
10
+ - keyword: "continue"
11
+ - phrase: "stop that"
12
+ - phrase: "mach stattdessen"
13
+ - command: "work"
14
+ - command: "roadmap:process-full"
15
+ - command: "roadmap:process-phase"
16
+ - command: "implement-ticket"
6
17
  load_context:
7
18
  - ../contexts/execution/interrupt-examples.md
8
- workspaces:
9
- - agent-config-maintainer
10
- packs:
11
- - meta
19
+ workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
20
+ packs: [meta]
12
21
  ---
13
22
 
14
23
  # User-Interrupt Priority
@@ -5,10 +5,8 @@ description: "Verify before completion — run tests and quality tools before cl
5
5
  alwaysApply: true
6
6
  load_context:
7
7
  - ../contexts/execution/verification-mechanics.md
8
- workspaces:
9
- - engineering
10
- packs:
11
- - engineering-base
8
+ workspaces: [engineering]
9
+ packs: [engineering-base]
12
10
  ---
13
11
 
14
12
  # Verify Before Completion
@@ -51,28 +49,20 @@ Skip any step = the claim is unverified.
51
49
 
52
50
  ## Verification commands
53
51
 
54
- For specific commands → see the `quality-tools` skill.
55
-
56
- For the detailed evidence-gate playbook (claim→command mapping, output
57
- inspection, end-of-work sequence) → see the `verify-completion-evidence`
58
- skill.
52
+ Specific commands → `quality-tools` skill. Evidence-gate playbook
53
+ (claim→command mapping, output inspection, end-of-work sequence) →
54
+ `verify-completion-evidence` skill.
59
55
 
60
56
  ## Mechanics — when to run what, per-task evidence, confidence, break-glass
61
57
 
62
- The decision logic for **when** to run quality tools vs. tests, the
63
- per-task-type minimum-evidence table, confidence gating (High /
64
- Medium / Low), and the break-glass reduction during live incidents
65
- all live in
66
- [`verification-mechanics`](../contexts/execution/verification-mechanics.md).
67
- The Iron Law and the Gate above are the obligation surface; the
68
- mechanics context is the lookup material the agent pulls when the
69
- gate fires.
58
+ When to run quality tools vs. tests, the per-task minimum-evidence table,
59
+ confidence gating (High/Medium/Low), and the break-glass reduction live in
60
+ [`verification-mechanics`](../contexts/execution/verification-mechanics.md) —
61
+ pull it when the Gate fires.
70
62
 
71
63
  ## Examples
72
64
 
73
- Pattern Memory — wrong / right / why demos for the Iron Law and the
74
- red-flags list:
75
- [`verify-before-complete-demos`](../docs/guidelines/agent-infra/verify-before-complete-demos.md)
76
- (hedged claims, trusting earlier runs, partial-verification creep).
77
- Outcome baseline locked at
65
+ Wrong/right/why demos (hedged claims, trusting earlier runs,
66
+ partial-verification creep): [`verify-before-complete-demos`](../docs/guidelines/agent-infra/verify-before-complete-demos.md).
67
+ Outcome baseline:
78
68
  [`tests/golden/outcomes/verify_before_complete.json`](../../tests/golden/outcomes/verify_before_complete.json).
@@ -28,9 +28,9 @@
28
28
  * annotation is required — completion is detected from the checkbox counts.
29
29
  *
30
30
  * Usage:
31
- * python3 scripts/archive_completed_roadmaps.py # --changed-only (default)
32
- * python3 scripts/archive_completed_roadmaps.py --all
33
- * python3 scripts/archive_completed_roadmaps.py --base origin/main --dry-run
31
+ * ./scripts-run src/scripts/archive_completed_roadmaps # --changed-only (default)
32
+ * ./scripts-run src/scripts/archive_completed_roadmaps --all
33
+ * ./scripts-run src/scripts/archive_completed_roadmaps --base origin/main --dry-run
34
34
  *
35
35
  * --- Parity notes (ADR-200) ---
36
36
  *
@@ -161,12 +161,28 @@ class RoadmapStats {
161
161
  rel: string;
162
162
  title: string;
163
163
  phases: PhaseStats[];
164
+ blockers: Blocker[];
164
165
 
165
- constructor(p: string, rel: string, title: string, phases: PhaseStats[] = []) {
166
+ constructor(
167
+ p: string,
168
+ rel: string,
169
+ title: string,
170
+ phases: PhaseStats[] = [],
171
+ blockers: Blocker[] = [],
172
+ ) {
166
173
  this.path = p;
167
174
  this.rel = rel;
168
175
  this.title = title;
169
176
  this.phases = phases;
177
+ this.blockers = blockers;
178
+ }
179
+
180
+ get open_blockers(): Blocker[] {
181
+ return this.blockers.filter((b) => b.status !== 'resolved');
182
+ }
183
+
184
+ get resolved_blockers(): Blocker[] {
185
+ return this.blockers.filter((b) => b.status === 'resolved');
170
186
  }
171
187
 
172
188
  get done(): number {
@@ -322,6 +338,136 @@ function count_checkboxes(text: string): CheckboxCounts {
322
338
  return [done, open_, deferred, cancelled, merge_gated, prs];
323
339
  }
324
340
 
341
+ interface Blocker {
342
+ id: string;
343
+ status: string;
344
+ owner: string;
345
+ blocks: string;
346
+ todo: string[];
347
+ resolvedWhen: string;
348
+ }
349
+
350
+ // Strip fenced code blocks before blocker detection — a roadmap that shows the
351
+ // `## Blockers` shape as a documentation example (fenced, indented or not)
352
+ // must not be mistaken for a live blocker on that roadmap.
353
+ const FENCED_CODE_RE = /^[ \t]*```[^\n]*\n[\s\S]*?^[ \t]*```[ \t]*$/gm;
354
+ const BLOCKERS_SECTION_RE = /^##[ \t]+Blockers[ \t]*$/im;
355
+ const BLOCKER_HEADING_RE = /^###[ \t]+blocker:[ \t]*(.+?)[ \t]*$/gim;
356
+ const NEXT_H2_RE = /^##[ \t]+\S/m;
357
+ const LEGACY_BLOCKED_UNTIL_RE = /^>[ \t]*Blocked until:?[ \t]*(.+)$/im;
358
+
359
+ function _stripFencedCode(text: string): string {
360
+ return text.replace(FENCED_CODE_RE, (m) => '\n'.repeat(_splitlines(m).length));
361
+ }
362
+
363
+ const BLOCKER_FIELD_RE = /^-[ \t]*\*\*(Status|Owner|Blocks|Resolved when|What to do):\*\*/i;
364
+
365
+ /** Strip an inline `<!-- comment -->` and trim. */
366
+ function _stripComment(s: string): string {
367
+ return _strip(s.replace(/<!--[\s\S]*?-->/g, ''));
368
+ }
369
+
370
+ /**
371
+ * `- **Label:** value` → trimmed `value`, joined with any wrapped
372
+ * continuation lines (non-bulleted text under the same field, e.g. a long
373
+ * "Blocks" sentence spanning two lines) up to the next `- **Field:**`
374
+ * marker, blank line, or heading.
375
+ */
376
+ function _blockerField(slice: string, label: string): string | null {
377
+ const lines = _splitlines(slice);
378
+ const re = new RegExp(`^-[ \\t]*\\*\\*${label}:\\*\\*[ \\t]*(.*)$`, 'i');
379
+ const startIdx = lines.findIndex((l) => re.test(_strip(l)));
380
+ if (startIdx === -1) {
381
+ return null;
382
+ }
383
+ const m = re.exec(_strip(lines[startIdx] as string));
384
+ const parts: string[] = [];
385
+ const first = _stripComment((m?.[1] as string) ?? '');
386
+ if (first) {
387
+ parts.push(first);
388
+ }
389
+ for (let i = startIdx + 1; i < lines.length; i++) {
390
+ const trimmed = _strip(lines[i] as string);
391
+ if (trimmed === '' || BLOCKER_FIELD_RE.test(trimmed) || trimmed.startsWith('#')) {
392
+ break;
393
+ }
394
+ parts.push(_stripComment(trimmed));
395
+ }
396
+ return parts.length ? parts.join(' ') : null;
397
+ }
398
+
399
+ /** Lines under `- **What to do:**` up to the next `- **Field:**` marker. */
400
+ function _blockerTodo(slice: string): string[] {
401
+ const lines = _splitlines(slice);
402
+ const startIdx = lines.findIndex((l) => /^-[ \t]*\*\*What to do:\*\*/i.test(_strip(l)));
403
+ if (startIdx === -1) {
404
+ return [];
405
+ }
406
+ const out: string[] = [];
407
+ for (let i = startIdx + 1; i < lines.length; i++) {
408
+ const trimmed = _strip(lines[i] as string);
409
+ if (BLOCKER_FIELD_RE.test(trimmed) || trimmed.startsWith('#')) {
410
+ break;
411
+ }
412
+ if (trimmed !== '') {
413
+ out.push(trimmed);
414
+ }
415
+ }
416
+ return out;
417
+ }
418
+
419
+ function parse_blockers(raw_text: string): Blocker[] {
420
+ const text = _stripFencedCode(raw_text);
421
+ const blockers: Blocker[] = [];
422
+ const sectionMatch = BLOCKERS_SECTION_RE.exec(text);
423
+ if (sectionMatch) {
424
+ const sectionStart = sectionMatch.index + sectionMatch[0].length;
425
+ const rest = text.slice(sectionStart);
426
+ const h2 = NEXT_H2_RE.exec(rest);
427
+ const sectionEnd = h2 ? sectionStart + h2.index : text.length;
428
+ const section = text.slice(sectionStart, sectionEnd);
429
+ BLOCKER_HEADING_RE.lastIndex = 0;
430
+ const heads: Array<{ start: number; end: number; id: string }> = [];
431
+ let hm: RegExpExecArray | null;
432
+ while ((hm = BLOCKER_HEADING_RE.exec(section)) !== null) {
433
+ heads.push({
434
+ start: hm.index,
435
+ end: hm.index + hm[0].length,
436
+ id: _strip(hm[1] as string),
437
+ });
438
+ if (hm.index === BLOCKER_HEADING_RE.lastIndex) {
439
+ BLOCKER_HEADING_RE.lastIndex++;
440
+ }
441
+ }
442
+ for (let i = 0; i < heads.length; i++) {
443
+ const cur = heads[i] as { start: number; end: number; id: string };
444
+ const bodyEnd =
445
+ i + 1 < heads.length ? (heads[i + 1] as { start: number }).start : section.length;
446
+ const body = section.slice(cur.end, bodyEnd);
447
+ blockers.push({
448
+ id: cur.id,
449
+ status: (_blockerField(body, 'Status') ?? 'open').toLowerCase(),
450
+ owner: _blockerField(body, 'Owner') ?? 'user',
451
+ blocks: _blockerField(body, 'Blocks') ?? '(unspecified)',
452
+ todo: _blockerTodo(body),
453
+ resolvedWhen: _blockerField(body, 'Resolved when') ?? '(unspecified)',
454
+ });
455
+ }
456
+ }
457
+ const legacyMatch = LEGACY_BLOCKED_UNTIL_RE.exec(text);
458
+ if (legacyMatch) {
459
+ blockers.push({
460
+ id: 'legacy',
461
+ status: 'open',
462
+ owner: 'user',
463
+ blocks: 'entire roadmap',
464
+ todo: [_strip(legacyMatch[1] as string)],
465
+ resolvedWhen: 'condition described above clears',
466
+ });
467
+ }
468
+ return blockers;
469
+ }
470
+
325
471
  function parse_roadmap(p: string, roadmap_root: string): RoadmapStats | null {
326
472
  const text = fs.readFileSync(p, { encoding: 'utf-8' });
327
473
  const phase_matches: Array<{ start: number; end: number; g2: string; g3: string | undefined }> =
@@ -345,7 +491,7 @@ function parse_roadmap(p: string, roadmap_root: string): RoadmapStats | null {
345
491
  const title_match = TITLE_RE.exec(text);
346
492
  const title = title_match ? _strip(title_match[1] as string) : _stem(p);
347
493
  const rel = _relPosix(roadmap_root, p);
348
- const stats = new RoadmapStats(p, rel, title);
494
+ const stats = new RoadmapStats(p, rel, title, [], parse_blockers(text));
349
495
  for (let i = 0; i < phase_matches.length; i++) {
350
496
  const cur = phase_matches[i] as { start: number; end: number; g2: string; g3: string | undefined };
351
497
  const start = cur.end;
@@ -370,6 +516,19 @@ function _relPosix(root: string, p: string): string {
370
516
  return path.relative(root, p).split(path.sep).join('/');
371
517
  }
372
518
 
519
+ /** Deterministic anchor slug for a roadmap's blocker section — explicit
520
+ * anchors (rather than GitHub's auto heading-slug) survive `.md` / brackets. */
521
+ function _blockerAnchor(rel: string): string {
522
+ const stem = rel.endsWith('.md') ? rel.slice(0, -3) : rel;
523
+ return (
524
+ 'blockers-' +
525
+ stem
526
+ .toLowerCase()
527
+ .replace(/[^a-z0-9]+/g, '-')
528
+ .replace(/^-+|-+$/g, '')
529
+ );
530
+ }
531
+
373
532
  function bar(pct: number, width = 10): string {
374
533
  const filled = _pyRound((pct * width) / 100);
375
534
  return '█'.repeat(filled) + '░'.repeat(width - filled);
@@ -512,13 +671,18 @@ function render(roadmaps: RoadmapStats[], bundles: Bundle[] | null = null): stri
512
671
  const overall_pct = total_active ? _pyRound((total_done * 100) / total_active) : 0;
513
672
  const pending = pending_iron_law_3(roadmaps);
514
673
  const gated = merge_gated_pending(roadmaps);
674
+ const total_open_blockers = roadmaps.reduce((s, r) => s + r.open_blockers.length, 0);
515
675
  const lines: string[] = [];
516
676
  lines.push('# Roadmap Progress\n');
517
677
  const header_meta =
518
678
  `> ${roadmaps.length} open roadmap` +
519
679
  `${roadmaps.length !== 1 ? 's' : ''}` +
520
680
  ' · [roadmaps/](roadmaps/) · [archive/](roadmaps/archive/) · ' +
521
- '[skipped/](roadmaps/skipped/) · [later/](roadmaps/later/)\n';
681
+ '[skipped/](roadmaps/skipped/) · [later/](roadmaps/later/)' +
682
+ (total_open_blockers > 0
683
+ ? ` · **${total_open_blockers}** open blocker${total_open_blockers !== 1 ? 's' : ''}`
684
+ : '') +
685
+ '\n';
522
686
  lines.push(
523
687
  // Honest provenance (road-to-roadmap-archival-robustness, gap C): name a
524
688
  // regen path that exists in EVERY install, not a hardcoded
@@ -600,13 +764,18 @@ function render(roadmaps: RoadmapStats[], bundles: Bundle[] | null = null): stri
600
764
  return lines.join('\n') + '\n';
601
765
  }
602
766
  lines.push('## Open roadmaps\n');
603
- lines.push('| # | Roadmap | Phases | Steps | Open | Done | Deferred | Cancelled | Progress |');
604
- lines.push('|---|---|---:|---:|---:|---:|---:|---:|---|');
767
+ lines.push(
768
+ '| # | Roadmap | Phases | Steps | Open | Done | Deferred | Cancelled | Blocker | Progress |',
769
+ );
770
+ lines.push('|---|---|---:|---:|---:|---:|---:|---:|---:|---|');
605
771
  roadmaps.forEach((r, idx) => {
606
772
  const i = idx + 1;
773
+ const openBlockers = r.open_blockers.length;
774
+ const blockerCell =
775
+ openBlockers > 0 ? `[${openBlockers}](#${_blockerAnchor(r.rel)})` : '0';
607
776
  lines.push(
608
777
  `| ${i} | [${r.rel}](roadmaps/${r.rel}) | ${r.phases.length} | ${r.total_all} | ` +
609
- `${r.open_} | ${r.done} | ${r.deferred} | ${r.cancelled} | ` +
778
+ `${r.open_} | ${r.done} | ${r.deferred} | ${r.cancelled} | ${blockerCell} | ` +
610
779
  `${bar(r.percent)} ${r.percent}% |`,
611
780
  );
612
781
  });
@@ -625,6 +794,26 @@ function render(roadmaps: RoadmapStats[], bundles: Bundle[] | null = null): stri
625
794
  );
626
795
  }
627
796
  lines.push('');
797
+ const openBlockers = r.open_blockers;
798
+ if (openBlockers.length) {
799
+ lines.push(`<a id="${_blockerAnchor(r.rel)}"></a>`);
800
+ lines.push('**Blockers**\n');
801
+ for (const b of openBlockers) {
802
+ lines.push(`- **${b.id}** (owner: ${b.owner}) — blocks ${b.blocks}`);
803
+ lines.push(' - **What to do:**');
804
+ for (const step of b.todo) {
805
+ lines.push(` ${step}`);
806
+ }
807
+ lines.push(` - **Resolved when:** ${b.resolvedWhen}`);
808
+ }
809
+ const resolvedCount = r.resolved_blockers.length;
810
+ if (resolvedCount > 0) {
811
+ lines.push(
812
+ `\n_${resolvedCount} blocker${resolvedCount !== 1 ? 's' : ''} resolved._`,
813
+ );
814
+ }
815
+ lines.push('');
816
+ }
628
817
  }
629
818
  if (bundles && bundles.length) {
630
819
  lines.push('---\n');
@@ -855,6 +1044,7 @@ export {
855
1044
  is_draft,
856
1045
  is_roadmap_candidate,
857
1046
  count_checkboxes,
1047
+ parse_blockers,
858
1048
  parse_roadmap,
859
1049
  bar,
860
1050
  collect,
@@ -866,4 +1056,4 @@ export {
866
1056
  main,
867
1057
  _pyRound,
868
1058
  };
869
- export type { Bundle };
1059
+ export type { Bundle, Blocker };
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: high
3
3
  name: adr-create
4
- description: "Use when capturing an architectural decision — naming the file, picking the next ADR number, filling Status / Context / Decision / Consequences, and regenerating the index — even without saying 'ADR'."
4
+ description: "Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'."
5
5
  domain: process
6
6
  execution:
7
7
  type: assisted
@@ -9,8 +9,8 @@ execution:
9
9
  timeout_seconds: 30
10
10
  allowed_tools: []
11
11
  command:
12
- - python3
13
- - scripts/adr/regenerate_index.py
12
+ - ./scripts-run
13
+ - src/scripts/adr/regenerate_index
14
14
  workspaces:
15
15
  - agent-config-maintainer
16
16
  packs:
@@ -48,16 +48,16 @@ Do NOT use when:
48
48
 
49
49
  ## Preconditions
50
50
 
51
- - ADR directory exists. Two layouts coexist (see
51
+ - An ADR directory exists. Two layouts coexist (see
52
52
  [`docs/contracts/adr-layout.md`](../../../docs/contracts/adr-layout.md)):
53
53
  - **Flat** — `docs/decisions/` (or `docs/adr/` alias): cross-cutting
54
54
  governance ADRs, 3-digit numbering (`ADR-NNN-<slug>.md`).
55
55
  - **Per-area** — `docs/adrs/<area>/`: sub-area ADRs, 4-digit
56
- numbering (`NNNN-<slug>.md`); `<area>` must match canonical
56
+ numbering (`NNNN-<slug>.md`); `<area>` must match the canonical
57
57
  inventory in [`scripts/audit_adr_coverage.py`](../../../scripts/audit_adr_coverage.py).
58
- - Decision **already made** — ADRs record outcomes, not run the
59
- decision process. For unresolved trade-offs, run council or
60
- consult `adversarial-review` first.
58
+ - The decision is **already made** — ADRs record outcomes, they do
59
+ not run the decision process. For unresolved trade-offs, run the
60
+ council or consult `adversarial-review` first.
61
61
 
62
62
  ## Procedure
63
63
 
@@ -65,31 +65,31 @@ Do NOT use when:
65
65
 
66
66
  Ask one question only if both are plausible:
67
67
 
68
- 1. **Flat surface** — decision constrains package's contract with
69
- consumers (kernel composition, rule taxonomy, package-wide
70
- architecture). Directory: `docs/decisions/` (fallback
71
- `docs/adr/`). Filename: `ADR-NNN-<slug>.md`.
72
- 2. **Per-area surface** — decision constrains code inside one area
73
- folder (one runtime module, one contract group, one CLI surface).
74
- Directory: `docs/adrs/<area>/`. Filename: `NNNN-<slug>.md`
75
- (4-digit, no `ADR-` prefix).
76
- 3. **Unknown area** — `<area>` not in inventory: refuse with hint
77
- to add area to `AREAS` in `scripts/audit_adr_coverage.py` in
78
- same PR. Do not invent.
68
+ 1. **Flat surface** — chosen when the decision constrains the
69
+ package's contract with consumers (kernel composition, rule
70
+ taxonomy, package-wide architecture). Directory: `docs/decisions/`
71
+ (fallback `docs/adr/`). Filename: `ADR-NNN-<slug>.md`.
72
+ 2. **Per-area surface** — chosen when the decision constrains code
73
+ inside one area folder (one runtime module, one contract group,
74
+ one CLI surface). Directory: `docs/adrs/<area>/`. Filename:
75
+ `NNNN-<slug>.md` (4-digit, no `ADR-` prefix).
76
+ 3. **Unknown area** — `<area>` not in the inventory: refuse with a
77
+ hint to add the area to `AREAS` in
78
+ `scripts/audit_adr_coverage.py` in the same PR. Do not invent.
79
79
  4. **In doubt** → per-area (cheaper to surface, easier to relocate).
80
80
 
81
81
  ### 2. Pick the next ADR number
82
82
 
83
83
  - **Flat surface** — scan `docs/decisions/` (or `docs/adr/`) for
84
- `ADR-*.md`, parse leading 3-digit number, take `max + 1`
85
- (zero-padded to 3). Empty directory → start at `001`.
84
+ `ADR-*.md`, parse the leading 3-digit number, take `max + 1`
85
+ (zero-padded to 3). For an empty directory, start at `001`.
86
86
  - **Per-area surface** — scan `docs/adrs/<area>/` for
87
- `[0-9][0-9][0-9][0-9]-*.md`, parse leading 4-digit number, take
88
- `max + 1` (zero-padded to 4). Empty area → start at `0001`.
89
- `README.md` is **not** an ADR — skip it.
87
+ `[0-9][0-9][0-9][0-9]-*.md`, parse the leading 4-digit number,
88
+ take `max + 1` (zero-padded to 4). For an empty area, start at
89
+ `0001`. `README.md` is **not** an ADR — skip it.
90
90
 
91
- Reject re-use of existing number — index regeneration treats
92
- duplicates as hard failure on both surfaces.
91
+ Reject re-use of an existing number — index regeneration treats
92
+ duplicates as a hard failure on both surfaces.
93
93
 
94
94
  ### 3. Pick a slug
95
95
 
@@ -100,9 +100,9 @@ directory. Examples: `kernel-swap-deferred`, `flat-cluster-subs`,
100
100
 
101
101
  ### 4. Author the ADR
102
102
 
103
- Use surface-specific template. All sections required; "—" acceptable
104
- for genuinely empty Alternatives or References blocks but never for
105
- Status, Context, Decision, or Consequences.
103
+ Use the surface-specific template. All sections are required; "—"
104
+ is acceptable for genuinely empty Alternatives or References blocks
105
+ but never for Status, Context, Decision, or Consequences.
106
106
 
107
107
  **Flat-surface template** (`docs/decisions/ADR-NNN-<slug>.md`):
108
108
 
@@ -138,7 +138,7 @@ phase: <roadmap> · <phase-id>
138
138
  ## Context / Decision / Considered alternatives / Consequences / References
139
139
  ```
140
140
 
141
- Per-area ADRs use quote-style header (no YAML frontmatter) so
141
+ Per-area ADRs use a quote-style header (no YAML frontmatter) so
142
142
  `audit_adr_coverage.py`'s permissive parser can index them. Cite
143
143
  the area's contract from the README in
144
144
  [`docs/adrs/<area>/README.md`](../../../docs/adrs/).
@@ -156,7 +156,15 @@ the area's contract from the README in
156
156
 
157
157
  - Flat: `./scripts-run src/scripts/adr/regenerate_index --check` exits 0.
158
158
  - Per-area: `./scripts-run src/scripts/audit_adr_coverage --check` exits 0.
159
- - Project's CI / quality pipeline passes locally.
159
+ - The project's CI / quality pipeline passes locally.
160
+
161
+ ## Rubric pass (optional, surfacing-only)
162
+
163
+ After drafting an ADR, run
164
+ [`judge-artifact-completeness`](../judge-artifact-completeness/SKILL.md)
165
+ with rubric `architecture-score` to confirm alternatives, consequences,
166
+ reversibility, and risk are present. Invoke when the user asks for a
167
+ completeness check — not on every ADR by default.
160
168
 
161
169
  ## Output format
162
170
 
@@ -168,17 +176,19 @@ the area's contract from the README in
168
176
  ## Gotchas
169
177
 
170
178
  - **Flat default path** is `docs/decisions/` in this package; some
171
- projects use `docs/adr/`. Pass `--dir` when running outside default.
172
- - **Per-area numbering is 4-digit** (`NNNN-<slug>.md`); flat surface
173
- stays 3-digit (`ADR-NNN-<slug>.md`). Do not mix.
174
- - **Area inventory closed** — `<area>` must already exist in `AREAS`
175
- in `scripts/audit_adr_coverage.py`. Adding new area is separate
176
- PR with explicit reviewer sign-off.
177
- - Frontmatter `adr:` (flat) is canonical number; filename prefix
178
- must match. Flat regenerator fails on mismatch.
179
- - ADRs are append-only history. To revise, write new ADR with
180
- `supersedes: ADR-MMM` (flat) or `Supersedes:` line in header
181
- quote-block (per-area) and flip old one's status to `superseded`.
179
+ projects use `docs/adr/`. Pass `--dir` when running outside the
180
+ default.
181
+ - **Per-area numbering is 4-digit** (`NNNN-<slug>.md`); the flat
182
+ surface stays 3-digit (`ADR-NNN-<slug>.md`). Do not mix.
183
+ - **Area inventory is closed** — `<area>` must already exist in
184
+ `AREAS` in `scripts/audit_adr_coverage.py`. Adding a new area is
185
+ a separate PR with explicit reviewer sign-off.
186
+ - Frontmatter `adr:` (flat) is the canonical number; the filename
187
+ prefix must match. The flat regenerator fails on mismatch.
188
+ - ADRs are append-only history. To revise a decision, write a new
189
+ ADR with `supersedes: ADR-MMM` (flat) or a `Supersedes:` line in
190
+ the header quote-block (per-area) and flip the old one's status
191
+ to `superseded`.
182
192
  - Never delete an ADR file — supersede it. Deletion breaks
183
193
  historical links and round-trips through git history checks.
184
194
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: high
3
3
  name: adversarial-review
4
- description: "ONLY when user requests adversarial review, devil's advocate, stress-test, OR honest critique of finished work ('poke holes', 'be brutal', 'was hältst du davon') — NOT for routine code/design review."
4
+ description: "ONLY on a request for adversarial review, devil's advocate, stress-test, or honest critique ('poke holes', 'be brutal', 'was hältst du davon') — NOT routine code/design review."
5
5
  personas:
6
6
  - critical-challenger
7
7
  domain: quality
@@ -253,11 +253,29 @@ to every agent-doc update you author.
253
253
  relevant rule?
254
254
  4. Is German prose present outside `DE: / EN:` anchor blocks?
255
255
 
256
+ ## User inbox workflow (agents/tmp/)
257
+
258
+ Command/skill consumes `agents/tmp/` file as INPUT (roadmap created from it,
259
+ note promoted) → move source to `agents/tmp.old/<original-name>` in the
260
+ **same reply** as the output.
261
+
262
+ ```bash
263
+ mv agents/tmp/<filename> agents/tmp.old/<filename>
264
+ ```
265
+
266
+ - Move only files **explicitly named as input**. Never sweep other `tmp/` files.
267
+ - No confirmation needed — both dirs gitignored, local-only.
268
+ - Never write agent scratch into `agents/tmp/` — use `agents/runtime/tmp/`.
269
+
270
+ See `docs/contracts/agents-layout.md § User Inbox Workflow`.
271
+
256
272
  ## Do NOT
257
273
 
258
274
  - Do NOT create docs unless there's a real need (new module, significant change).
259
275
  - Do NOT duplicate information already in AGENTS.md or copilot-instructions.md.
260
276
  - Do NOT write docs just to document what you did — only document things others need to know.
277
+ - Do NOT write agent scratch into `agents/tmp/` — that is the user's inbox.
278
+ - Regen-only outputs (`agents/evidence/analysis/*`, `agents/reports/*` script-generated): commit only with the work that consumed them; side-effect regens discard via `git checkout --` before session end. See `docs/contracts/agents-layout.md § Session-leftover discipline`.
261
279
 
262
280
  ## Auto-trigger keywords
263
281
 
@@ -42,7 +42,7 @@ Inspect the config the agent loads and check each surface: instruction files
42
42
  scripts, permission/auto-approve settings, persistent memory. Static pass first:
43
43
 
44
44
  ```bash
45
- python3 src/scripts/security_audit_config.py --root <repo> --json
45
+ ./scripts-run src/scripts/security_audit_config --root <repo> --json
46
46
  ```
47
47
 
48
48
  ### 2. Red team (attacker lens)
@@ -4,6 +4,7 @@ name: ai-council
4
4
  description: "Use when polling external AIs (OpenAI, Anthropic) outside the host session for a neutral second opinion on a roadmap, diff, prompt, or file set — or 'cross-check with another model'."
5
5
  domain: process
6
6
  meta_skill: true
7
+ parallelizable: independent
7
8
  workspaces:
8
9
  - agent-config-maintainer
9
10
  packs:
@@ -426,7 +427,19 @@ Every council reply MUST contain, in this order:
426
427
  2. **One section per member**, titled `### <provider> · <model>`,
427
428
  containing the member's verbatim output.
428
429
  3. **Convergence / Divergence summary** — bullet list, every claim
429
- attributed by provider name.
430
+ attributed by provider name. **When the convergence settles a
431
+ question as "don't relitigate" / locked / a durable disposition**,
432
+ the summary MUST record two additional lines, per
433
+ [`decision-revisit-gate`](../../rules/decision-revisit-gate.md):
434
+ `scope:` (exactly which mechanism or question is settled — narrow
435
+ enough that a superficially similar but different proposal is not
436
+ silently covered) and `revisit-if:` (at least one concrete condition
437
+ that reopens it — new evidence class, model-generation or tooling
438
+ change, an N-th blocked encounter, or an age threshold). A lock
439
+ recorded without both lines is an authoring error. Also state
440
+ whether the disposition is **settled-by-evidence** (an eval ran) or
441
+ **settled-by-decision** (a maintainer call) — the latter is cheaper
442
+ to reopen and should say so.
430
443
  4. **Host verdict per finding** — one row per finding with `accept`
431
444
  / `accept-with-modification` / `reject` / `needs-input` plus a
432
445
  one-line reason citing host evidence (file:line, ADR, contract).
@@ -127,6 +127,10 @@ current state on the next polish round.
127
127
  - Always use Tailwind utility classes — not inline styles.
128
128
  - Don't put business logic in templates — use view composers or Livewire.
129
129
 
130
+ ## Taste Dials
131
+
132
+ `DESIGN.md` `## Taste Dials` → honour: Variance → layout-family spread + asymmetry; Motion → animation budget + reduced-motion posture; Density → spacing scale + info-per-viewport. Absent → follow brief's inferred dials.
133
+
130
134
  ## Do NOT
131
135
 
132
136
  - Do NOT use `{!! !!}` with user input — XSS risk.