@event4u/agent-config 7.5.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 (428) hide show
  1. package/.claude-plugin/marketplace.json +8 -1
  2. package/AGENTS.md +9 -9
  3. package/CHANGELOG.md +325 -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/roadmap/create.md +88 -10
  34. package/dist/agent-src/commands/roadmap/materialize.md +1 -1
  35. package/dist/agent-src/commands/roadmap/process-full.md +15 -2
  36. package/dist/agent-src/commands/roadmap/process-phase.md +18 -6
  37. package/dist/agent-src/commands/roadmap/process-step.md +4 -0
  38. package/dist/agent-src/commands/roadmap.md +1 -1
  39. package/dist/agent-src/commands/security-audit-config.md +1 -1
  40. package/dist/agent-src/commands/sync-agent-settings.md +1 -1
  41. package/dist/agent-src/commands/sync-gitignore/fix.md +42 -6
  42. package/dist/agent-src/commands/team-knowledge/bootstrap.md +106 -0
  43. package/dist/agent-src/commands/team-knowledge/consolidate.md +105 -0
  44. package/dist/agent-src/commands/team-knowledge.md +64 -0
  45. package/dist/agent-src/contexts/authority/commit-mechanics.md +8 -0
  46. package/dist/agent-src/contexts/authority/destructive-mechanics.md +11 -0
  47. package/dist/agent-src/contexts/authority/scope-mechanics.md +25 -0
  48. package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +43 -0
  49. package/dist/agent-src/contexts/contracts/agents-md-anatomy.md +1 -1
  50. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +2 -2
  51. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -0
  52. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +14 -4
  53. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +11 -0
  54. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +32 -8
  55. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +107 -0
  56. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +71 -15
  57. package/dist/agent-src/contexts/execution/subagent-steering.md +41 -1
  58. package/dist/agent-src/contexts/override-system.md +1 -1
  59. package/dist/agent-src/personas/brand-strategist.md +0 -1
  60. package/dist/agent-src/personas/data-integrity.md +66 -0
  61. package/dist/agent-src/personas/design-director.md +0 -1
  62. package/dist/agent-src/personas/performance-engineer.md +66 -0
  63. package/dist/agent-src/personas/production-validator.md +73 -0
  64. package/dist/agent-src/rules/agent-authority.md +3 -4
  65. package/dist/agent-src/rules/analysis-skill-routing.md +3 -5
  66. package/dist/agent-src/rules/architecture.md +2 -4
  67. package/dist/agent-src/rules/artifact-drafting-protocol.md +35 -6
  68. package/dist/agent-src/rules/artifact-engagement-recording.md +2 -4
  69. package/dist/agent-src/rules/ask-when-uncertain.md +10 -14
  70. package/dist/agent-src/rules/augment-edit-discipline.md +3 -5
  71. package/dist/agent-src/rules/autonomous-execution.md +3 -5
  72. package/dist/agent-src/rules/brand-consistency.md +3 -5
  73. package/dist/agent-src/rules/brand-source-of-truth.md +3 -5
  74. package/dist/agent-src/rules/cli-output-handling.md +4 -6
  75. package/dist/agent-src/rules/command-suggestion-policy.md +3 -5
  76. package/dist/agent-src/rules/commit-conventions.md +3 -5
  77. package/dist/agent-src/rules/commit-policy.md +8 -10
  78. package/dist/agent-src/rules/content-quoting-floor.md +88 -0
  79. package/dist/agent-src/rules/context-hygiene.md +3 -5
  80. package/dist/agent-src/rules/copilot-routing.md +4 -6
  81. package/dist/agent-src/rules/decision-revisit-gate.md +120 -0
  82. package/dist/agent-src/rules/delegation-policy.md +10 -6
  83. package/dist/agent-src/rules/design-fidelity.md +3 -5
  84. package/dist/agent-src/rules/devcontainer-routing.md +4 -6
  85. package/dist/agent-src/rules/direct-answers.md +13 -17
  86. package/dist/agent-src/rules/docker-commands.md +3 -5
  87. package/dist/agent-src/rules/domain-adoption-policy.md +3 -5
  88. package/dist/agent-src/rules/domain-safety-disclaimer.md +3 -5
  89. package/dist/agent-src/rules/domain-safety-pii.md +3 -5
  90. package/dist/agent-src/rules/domain-safety-retention.md +3 -5
  91. package/dist/agent-src/rules/downstream-changes.md +3 -4
  92. package/dist/agent-src/rules/engineering-safety-floor.md +3 -5
  93. package/dist/agent-src/rules/external-reference-deep-dive.md +3 -5
  94. package/dist/agent-src/rules/fast-path-marker-visibility.md +3 -5
  95. package/dist/agent-src/rules/finance-safety-floor.md +3 -6
  96. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -5
  97. package/dist/agent-src/rules/git-history-discipline.md +3 -5
  98. package/dist/agent-src/rules/guidelines.md +2 -4
  99. package/dist/agent-src/rules/icon-consistency.md +3 -5
  100. package/dist/agent-src/rules/image-likeness-and-rights.md +3 -5
  101. package/dist/agent-src/rules/improve-before-implement.md +5 -5
  102. package/dist/agent-src/rules/invite-challenge.md +3 -5
  103. package/dist/agent-src/rules/language-and-tone.md +13 -15
  104. package/dist/agent-src/rules/laravel-routing.md +3 -5
  105. package/dist/agent-src/rules/laravel-translations.md +3 -5
  106. package/dist/agent-src/rules/legal-safety-floor.md +3 -5
  107. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -5
  108. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +4 -7
  109. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -5
  110. package/dist/agent-src/rules/markdown-safe-codeblocks.md +2 -4
  111. package/dist/agent-src/rules/media-governance-routing.md +3 -5
  112. package/dist/agent-src/rules/media-sync-ground-truth.md +3 -5
  113. package/dist/agent-src/rules/minimal-safe-diff.md +5 -5
  114. package/dist/agent-src/rules/missing-tool-handling.md +3 -5
  115. package/dist/agent-src/rules/model-recommendation.md +4 -6
  116. package/dist/agent-src/rules/no-attribution-footers.md +3 -5
  117. package/dist/agent-src/rules/no-cheap-questions.md +5 -8
  118. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +3 -6
  119. package/dist/agent-src/rules/no-pr-progress-comments.md +3 -6
  120. package/dist/agent-src/rules/no-roadmap-references.md +3 -5
  121. package/dist/agent-src/rules/non-destructive-by-default.md +11 -13
  122. package/dist/agent-src/rules/notes-first-reasoning.md +3 -5
  123. package/dist/agent-src/rules/onboarding-gate.md +4 -6
  124. package/dist/agent-src/rules/output-discipline.md +3 -5
  125. package/dist/agent-src/rules/package-ci-checks.md +3 -5
  126. package/dist/agent-src/rules/persona-governance.md +2 -4
  127. package/dist/agent-src/rules/php-coding.md +3 -5
  128. package/dist/agent-src/rules/preservation-guard.md +2 -4
  129. package/dist/agent-src/rules/provider-lifecycle-discipline.md +3 -5
  130. package/dist/agent-src/rules/reviewer-awareness.md +5 -6
  131. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +3 -5
  132. package/dist/agent-src/rules/roadmap-progress-sync.md +5 -5
  133. package/dist/agent-src/rules/role-mode-adherence.md +2 -4
  134. package/dist/agent-src/rules/rule-type-governance.md +3 -5
  135. package/dist/agent-src/rules/runtime-safety.md +2 -4
  136. package/dist/agent-src/rules/scope-control.md +10 -11
  137. package/dist/agent-src/rules/security-sensitive-stop.md +4 -5
  138. package/dist/agent-src/rules/size-enforcement.md +2 -4
  139. package/dist/agent-src/rules/skill-improvement-trigger.md +3 -5
  140. package/dist/agent-src/rules/skill-quality.md +3 -5
  141. package/dist/agent-src/rules/slash-command-routing-policy.md +3 -5
  142. package/dist/agent-src/rules/source-confidentiality.md +3 -5
  143. package/dist/agent-src/rules/source-discovery-gate.md +3 -5
  144. package/dist/agent-src/rules/source-of-truth.md +3 -5
  145. package/dist/agent-src/rules/strategy-safety-floor.md +3 -5
  146. package/dist/agent-src/rules/symfony-routing.md +4 -6
  147. package/dist/agent-src/rules/telegraph-speak.md +4 -5
  148. package/dist/agent-src/rules/think-before-action.md +7 -4
  149. package/dist/agent-src/rules/token-budget-discipline.md +29 -5
  150. package/dist/agent-src/rules/token-efficiency.md +3 -5
  151. package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -5
  152. package/dist/agent-src/rules/tool-safety.md +2 -4
  153. package/dist/agent-src/rules/ui-audit-gate.md +3 -6
  154. package/dist/agent-src/rules/untrusted-input-defense.md +3 -5
  155. package/dist/agent-src/rules/upstream-proposal.md +4 -6
  156. package/dist/agent-src/rules/user-interaction.md +7 -5
  157. package/dist/agent-src/rules/user-interrupt-priority.md +17 -8
  158. package/dist/agent-src/rules/verify-before-complete.md +12 -22
  159. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +3 -3
  160. package/dist/agent-src/scripts/update_roadmap_progress.ts +197 -7
  161. package/dist/agent-src/skills/adr-create/SKILL.md +48 -42
  162. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +18 -0
  163. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  164. package/dist/agent-src/skills/ai-council/SKILL.md +14 -1
  165. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +0 -3
  166. package/dist/agent-src/skills/brand/SKILL.md +1 -1
  167. package/dist/agent-src/skills/brand-identity/SKILL.md +3 -3
  168. package/dist/agent-src/skills/brand-strategy/SKILL.md +1 -1
  169. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +3 -3
  170. package/dist/agent-src/skills/canvas-design/SKILL.md +6 -0
  171. package/dist/agent-src/skills/check-refs/SKILL.md +7 -4
  172. package/dist/agent-src/skills/code-review/SKILL.md +1 -0
  173. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +6 -5
  174. package/dist/agent-src/skills/condense-memory/SKILL.md +11 -11
  175. package/dist/agent-src/skills/context-document/SKILL.md +17 -0
  176. package/dist/agent-src/skills/corpus-grounding/SKILL.md +3 -3
  177. package/dist/agent-src/skills/decision-record/SKILL.md +6 -0
  178. package/dist/agent-src/skills/decision-review/SKILL.md +5 -3
  179. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +6 -1
  180. package/dist/agent-src/skills/design-intelligence/SKILL.md +5 -2
  181. package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
  182. package/dist/agent-src/skills/design-tokens/SKILL.md +10 -4
  183. package/dist/agent-src/skills/design-variations/SKILL.md +127 -0
  184. package/dist/agent-src/skills/design-variations/evals/triggers.json +17 -0
  185. package/dist/agent-src/skills/emit-tickets/SKILL.md +4 -4
  186. package/dist/agent-src/skills/fe-design/SKILL.md +20 -0
  187. package/dist/agent-src/skills/html-deck/SKILL.md +123 -0
  188. package/dist/agent-src/skills/html-deck/evals/triggers.json +17 -0
  189. package/dist/agent-src/skills/html-deck/templates/deck-shell.html +77 -0
  190. package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -0
  191. package/dist/agent-src/skills/laravel/SKILL.md +0 -1
  192. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +46 -0
  193. package/dist/agent-src/skills/lint-skills/SKILL.md +6 -6
  194. package/dist/agent-src/skills/md-language-check/SKILL.md +3 -3
  195. package/dist/agent-src/skills/memory-consolidation/SKILL.md +66 -1
  196. package/dist/agent-src/skills/migration-architect/SKILL.md +1 -0
  197. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +2 -2
  198. package/dist/agent-src/skills/performance-analysis/SKILL.md +2 -0
  199. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +4 -4
  200. package/dist/agent-src/skills/premortem/SKILL.md +0 -3
  201. package/dist/agent-src/skills/project-analysis-core/SKILL.md +16 -0
  202. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +3 -1
  203. package/dist/agent-src/skills/release-comms/SKILL.md +46 -45
  204. package/dist/agent-src/skills/roadmap-management/SKILL.md +21 -0
  205. package/dist/agent-src/skills/roadmap-writing/SKILL.md +32 -2
  206. package/dist/agent-src/skills/root-cause-frameworks/SKILL.md +0 -3
  207. package/dist/agent-src/skills/security-audit/SKILL.md +1 -0
  208. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -0
  209. package/dist/agent-src/skills/source-discovery/SKILL.md +22 -3
  210. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +33 -14
  211. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +11 -0
  212. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +8 -0
  213. package/dist/agent-src/skills/systematic-debugging/SKILL.md +29 -0
  214. package/dist/agent-src/skills/threat-modeling/SKILL.md +2 -2
  215. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  216. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -0
  217. package/dist/agent-src/skills/wireframe/SKILL.md +118 -0
  218. package/dist/agent-src/skills/wireframe/evals/triggers.json +17 -0
  219. package/dist/agent-src/templates/agent-settings.md +22 -1
  220. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  221. package/dist/agent-src/templates/command.md +2 -2
  222. package/dist/agent-src/templates/contexts/knowledge-pages.md +116 -0
  223. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +1 -1
  224. package/dist/agent-src/templates/roadmaps.md +70 -2
  225. package/dist/agent-src/templates/rule.md +1 -1
  226. package/dist/agent-src/templates/scripts/README.md +3 -3
  227. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +109 -0
  228. package/dist/agent-src/templates/tickets.md +8 -8
  229. package/dist/cli/commands/recordTriggerEval.test.js +1 -1
  230. package/dist/cli/commands/recordTriggerEval.test.js.map +1 -1
  231. package/dist/cli/initRouting.js +4 -2
  232. package/dist/cli/initRouting.js.map +1 -1
  233. package/dist/cli/registry.js +1 -0
  234. package/dist/cli/registry.js.map +1 -1
  235. package/dist/discovery/deprecation-report.md +1 -1
  236. package/dist/discovery/discovery-manifest.json +718 -240
  237. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  238. package/dist/discovery/discovery-manifest.summary.md +8 -8
  239. package/dist/discovery/orphan-report.md +1 -1
  240. package/dist/discovery/packs.json +43 -28
  241. package/dist/discovery/trust-report.md +12 -11
  242. package/dist/discovery/workspaces.json +29 -18
  243. package/dist/install/preflight.js +173 -0
  244. package/dist/install/preflight.js.map +1 -0
  245. package/dist/mcp/registry-manifest.json +4 -4
  246. package/dist/router.json +1 -1
  247. package/dist/server/routes/settings.js +4 -0
  248. package/dist/server/routes/settings.js.map +1 -1
  249. package/dist/server/schemas/settings.js +3 -1
  250. package/dist/server/schemas/settings.js.map +1 -1
  251. package/docs/CLAIMS.md +108 -0
  252. package/docs/MIGRATION.md +3 -3
  253. package/docs/architecture.md +5 -5
  254. package/docs/benchmark.md +133 -2
  255. package/docs/benchmark.pinned.yml +31 -0
  256. package/docs/capability-matrix.md +1 -0
  257. package/docs/catalog.md +70 -60
  258. package/docs/command-flows.md +15 -3
  259. package/docs/comparison.yaml +35 -0
  260. package/docs/contracts/agents-layout.md +148 -0
  261. package/docs/contracts/brand-token-consumption.md +5 -0
  262. package/docs/contracts/capability-boundary.md +5 -0
  263. package/docs/contracts/command-category-governance.md +5 -0
  264. package/docs/contracts/command-clusters.md +1 -0
  265. package/docs/contracts/command-surface-tiers.md +1 -1
  266. package/docs/contracts/conformance.md +84 -0
  267. package/docs/contracts/creative-pack-boundary.md +5 -0
  268. package/docs/contracts/discovery-manifest.schema.json +5 -4
  269. package/docs/contracts/file-ownership-matrix.json +4605 -985
  270. package/docs/contracts/governance-enforcement-projection.md +5 -0
  271. package/docs/contracts/gui-wizard.md +1 -1
  272. package/docs/contracts/hook-architecture-v1.md +2 -2
  273. package/docs/contracts/implement-ticket-flow.md +1 -1
  274. package/docs/contracts/kernel-membership.md +13 -0
  275. package/docs/contracts/mcp-tool-inventory.md +23 -23
  276. package/docs/contracts/no-runtime-boundary.md +6 -1
  277. package/docs/contracts/review-lens-schema.md +5 -0
  278. package/docs/contracts/rule-router.md +102 -8
  279. package/docs/contracts/skill-bundled-assets.md +1 -1
  280. package/docs/contracts/skill-dry-run.md +1 -1
  281. package/docs/contracts/subagent-boundary.md +5 -0
  282. package/docs/contracts/ticket-bundle-format.md +9 -4
  283. package/docs/contracts/tier-3-contrib-plugin.md +2 -2
  284. package/docs/contracts/write-engine.md +3 -0
  285. package/docs/customization.md +87 -15
  286. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +1 -1
  287. package/docs/decisions/ADR-109-subagent-v1-contract.md +246 -0
  288. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +105 -0
  289. package/docs/decisions/INDEX.md +2 -0
  290. package/docs/distribution/awesome-list-submission.md +46 -0
  291. package/docs/distribution/launch-story-draft.md +58 -0
  292. package/docs/end-to-end-walkthroughs.md +2 -2
  293. package/docs/getting-started.md +2 -2
  294. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +24 -0
  295. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +1 -1
  296. package/docs/guidelines/agent-infra/linked-projects-onboarding-gate.md +2 -2
  297. package/docs/guidelines/agent-infra/missing-tool-handling.md +3 -3
  298. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +2 -2
  299. package/docs/guidelines/augment-portability-patterns.md +1 -1
  300. package/docs/guidelines/code-clarity.md +19 -0
  301. package/docs/guidelines/design-antipatterns-triggers.json +2 -1
  302. package/docs/guidelines/design-antipatterns.md +10 -1
  303. package/docs/guidelines/design-modes.md +6 -0
  304. package/docs/guidelines/php/general.md +9 -1
  305. package/docs/guidelines/php/php-coding-patterns.md +7 -0
  306. package/docs/guides/cross-repo-retrieval.md +1 -1
  307. package/docs/guides/frontend-design-corpus-refresh.md +2 -2
  308. package/docs/guides/local-analytics.md +4 -4
  309. package/docs/guides/skill-discovery.md +1 -1
  310. package/docs/guides/skill-preview.md +1 -1
  311. package/docs/hook-payload-capture.md +6 -6
  312. package/docs/install-friction-report.md +66 -0
  313. package/docs/installation.md +1 -1
  314. package/docs/maintainers/optional-media-deps.md +50 -0
  315. package/docs/mcp-server.md +11 -12
  316. package/docs/media/proof-demo.cast +14 -0
  317. package/docs/media/proof-demo.gif +0 -0
  318. package/docs/migration/consumer-template-consumption-model.md +1 -1
  319. package/docs/migration/divergences/bench-stats-float-precision.md +1 -1
  320. package/docs/migration/node-floor.md +1 -1
  321. package/docs/migration/yaml-roundtrip-spike.md +1 -1
  322. package/docs/personas.md +16 -5
  323. package/docs/positioning-evidence.md +86 -0
  324. package/docs/proof.md +86 -0
  325. package/docs/skills-catalog.md +1 -1
  326. package/docs/troubleshooting.md +8 -8
  327. package/docs/wedge/production-validator/README.md +57 -0
  328. package/docs/wedge/production-validator/production-validator.md +56 -0
  329. package/docs/wizard.md +2 -2
  330. package/package.json +1 -1
  331. package/src/config/agent-settings.template.yml +59 -4
  332. package/src/config/agents-paths.yml +254 -0
  333. package/src/config/budgets.yml +16 -0
  334. package/src/config/discovery/packs.yml +1 -0
  335. package/src/config/discovery/unassigned-artefacts.yml +2 -0
  336. package/src/config/gitignore-block.txt +25 -0
  337. package/src/config/host-capabilities.yml +31 -0
  338. package/src/config/profiles/balanced.ini +4 -0
  339. package/src/config/profiles/full.ini +4 -0
  340. package/src/config/profiles/minimal.ini +4 -0
  341. package/src/scripts/_cli/cmd_conformance.ts +716 -0
  342. package/src/scripts/_cli/cmd_doctor.ts +23 -2
  343. package/src/scripts/_cli/cmd_fleet.ts +401 -0
  344. package/src/scripts/_cli/cmd_preflight.ts +159 -0
  345. package/src/scripts/_dispatch.bash +10 -0
  346. package/src/scripts/_lib/knowledge_events.ts +193 -0
  347. package/src/scripts/_lib/subagent_steering.ts +115 -3
  348. package/src/scripts/_lib/text_similarity.ts +75 -0
  349. package/src/scripts/ai-video/test-pipeline.sh +1 -1
  350. package/src/scripts/ai_council/clients.ts +19 -3
  351. package/src/scripts/append_contested.ts +112 -0
  352. package/src/scripts/audit_auto_rules.ts +11 -1
  353. package/src/scripts/audit_mcp_tools.ts +25 -11
  354. package/src/scripts/bench_ab_v2_run.ts +527 -40
  355. package/src/scripts/bench_ab_v2_stats.ts +6 -0
  356. package/src/scripts/bench_matrix.ts +266 -0
  357. package/src/scripts/bootstrap_knowledge.ts +267 -0
  358. package/src/scripts/build_discovery_manifest.ts +42 -2
  359. package/src/scripts/build_proof.ts +214 -0
  360. package/src/scripts/check_always_budget.ts +3 -0
  361. package/src/scripts/check_augment_description_cap.ts +2 -2
  362. package/src/scripts/check_claims.ts +270 -0
  363. package/src/scripts/check_comparison.ts +79 -0
  364. package/src/scripts/check_generated_artefact_headers.ts +109 -0
  365. package/src/scripts/check_generator_output_coverage.ts +142 -0
  366. package/src/scripts/check_gitignore_freshness.ts +127 -0
  367. package/src/scripts/check_knowledge_pages.ts +210 -0
  368. package/src/scripts/check_knowledge_sharing.ts +162 -0
  369. package/src/scripts/check_media_deps.ts +91 -0
  370. package/src/scripts/check_memory_contradiction.ts +280 -0
  371. package/src/scripts/check_memory_similarity.ts +134 -0
  372. package/src/scripts/check_quality_regression.ts +56 -10
  373. package/src/scripts/check_references.ts +3 -1
  374. package/src/scripts/check_release_pr_shape.ts +4 -0
  375. package/src/scripts/check_site_links.ts +135 -0
  376. package/src/scripts/check_skill_gaps.ts +99 -0
  377. package/src/scripts/check_token_quality_golden.ts +197 -11
  378. package/src/scripts/check_tracked_but_ignored.ts +67 -0
  379. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  380. package/src/scripts/compile_router.ts +30 -3
  381. package/src/scripts/condense.ts +350 -14
  382. package/src/scripts/consolidate_knowledge_events.ts +192 -0
  383. package/src/scripts/degrade_to_pointer.ts +136 -0
  384. package/src/scripts/design_slop_rules.test.ts +15 -0
  385. package/src/scripts/design_slop_rules.ts +28 -0
  386. package/src/scripts/emit_knowledge_event.ts +158 -0
  387. package/src/scripts/export_replay_corpus.ts +187 -0
  388. package/src/scripts/external_sources_denylist.json +7 -2
  389. package/src/scripts/fold_intake.ts +281 -0
  390. package/src/scripts/generate_capability_matrix.ts +9 -1
  391. package/src/scripts/generate_knowledge_index.ts +222 -0
  392. package/src/scripts/hook_manifest.yaml +26 -14
  393. package/src/scripts/hooks/dispatch_hook.ts +18 -0
  394. package/src/scripts/hot_context_hook.ts +372 -0
  395. package/src/scripts/install +47 -0
  396. package/src/scripts/install-hooks.sh +17 -0
  397. package/src/scripts/inventory_meta_layers.ts +11 -0
  398. package/src/scripts/janitor.ts +258 -0
  399. package/src/scripts/lint_agents_layout.ts +74 -15
  400. package/src/scripts/lint_bench_ab.ts +4 -1
  401. package/src/scripts/lint_featured_skills.ts +0 -0
  402. package/src/scripts/lint_framework_leakage_allowlist.json +26 -3
  403. package/src/scripts/lint_knowledge_scale.ts +250 -0
  404. package/src/scripts/lint_legal_pack.ts +67 -0
  405. package/src/scripts/lint_persona_governance.ts +8 -3
  406. package/src/scripts/lint_regression.ts +15 -0
  407. package/src/scripts/lint_roadmap_blockers.ts +202 -0
  408. package/src/scripts/lint_roadmap_complexity.ts +81 -2
  409. package/src/scripts/lint_subagent_determinism.ts +125 -0
  410. package/src/scripts/measure_augment_budget.ts +46 -6
  411. package/src/scripts/measure_patterns.ts +4 -3
  412. package/src/scripts/measure_skill_reduction.ts +6 -6
  413. package/src/scripts/migration_status.ts +6 -2
  414. package/src/scripts/mine_missing_guardrails.ts +189 -0
  415. package/src/scripts/parity/phase_gate.ts +1 -1
  416. package/src/scripts/parity/replay.ts +21 -0
  417. package/src/scripts/project_thin_rules.ts +120 -16
  418. package/src/scripts/release.ts +39 -1
  419. package/src/scripts/render_benchmark_composite.ts +378 -0
  420. package/src/scripts/roadmap_progress_hook.ts +101 -43
  421. package/src/scripts/schemas/skill.schema.json +27 -0
  422. package/src/scripts/schemas/subagent.schema.json +106 -0
  423. package/src/scripts/skill_linter.ts +1 -0
  424. package/src/scripts/smoke/kernel.sh +5 -4
  425. package/src/scripts/surface-tiers.yml +1 -0
  426. package/src/scripts/sync_gitignore.ts +4 -0
  427. package/src/scripts/update_skill_candidates.ts +172 -0
  428. package/src/scripts/validate_frontmatter.ts +1 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "skill": "html-deck",
3
+ "last_eval": "2026-07-06",
4
+ "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers deck/slides/presentation/pitch builds in HTML. Should-not-trigger covers near-miss neighbors: canvas-design (posters/static art), fe-design (responsive UI), design-variations (options), PowerPoint-file requests, and content-only outline asks.",
5
+ "queries": [
6
+ {"q": "make a 10-slide deck for the investor pitch", "trigger": true},
7
+ {"q": "build a presentation from this PRD for the engineering all-hands", "trigger": true},
8
+ {"q": "turn these notes into HTML slides I can present tomorrow", "trigger": true},
9
+ {"q": "create a pitch deck with our brand colors, 16:9", "trigger": true},
10
+ {"q": "I need a slide presentation that also prints to PDF", "trigger": true},
11
+ {"q": "design a poster for the conference booth", "trigger": false, "note": "static one-frame art → canvas-design"},
12
+ {"q": "build the landing page hero section", "trigger": false, "note": "responsive UI → fe-design / stack executor"},
13
+ {"q": "show me 3 design options for this dashboard", "trigger": false, "note": "options → design-variations"},
14
+ {"q": "write an outline for my talk", "trigger": false, "note": "content-only ask, no HTML deliverable"},
15
+ {"q": "export our Google Slides to PowerPoint", "trigger": false, "note": "file conversion, not an HTML deck build"}
16
+ ]
17
+ }
@@ -0,0 +1,77 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Deck</title>
7
+ <style>
8
+ /* Deck shell — fixed-canvas slides (default 1920×1080) letterboxed to any
9
+ viewport. Slides are direct children <section> of <main class="deck">. */
10
+ :root { --deck-w: 1920; --deck-h: 1080; }
11
+ * { margin: 0; padding: 0; box-sizing: border-box; }
12
+ html, body { height: 100%; background: #111; overflow: hidden; }
13
+ .deck { position: absolute; top: 50%; left: 50%; width: calc(var(--deck-w) * 1px); height: calc(var(--deck-h) * 1px); transform-origin: center center; }
14
+ .deck > section { position: absolute; inset: 0; display: none; overflow: hidden; background: #fafafa; color: #1a1a1a; }
15
+ .deck > section.active { display: block; }
16
+ .deck-counter { position: fixed; right: 16px; bottom: 12px; font: 14px/1 monospace; color: #888; z-index: 10; }
17
+ @media print {
18
+ html, body { height: auto; overflow: visible; background: none; }
19
+ .deck { position: static; transform: none !important; width: auto; height: auto; }
20
+ .deck > section { position: relative; display: block; width: calc(var(--deck-w) * 1px); height: calc(var(--deck-h) * 1px); page-break-after: always; }
21
+ .deck-counter { display: none; }
22
+ }
23
+ </style>
24
+ </head>
25
+ <body>
26
+ <main class="deck">
27
+ <!-- Each slide: <section data-screen-label="01 Title">…</section> (1-indexed
28
+ labels match the counter the viewer sees). Replace the samples. -->
29
+ <section data-screen-label="01 Title">
30
+ <h1 style="font-size:96px;padding:120px">Deck title</h1>
31
+ </section>
32
+ <section data-screen-label="02 Content">
33
+ <h2 style="font-size:64px;padding:120px 120px 40px">Section</h2>
34
+ <p style="font-size:32px;padding:0 120px">Body text on a 1080p canvas stays at 24px minimum; 32px preferred.</p>
35
+ </section>
36
+ </main>
37
+ <div class="deck-counter" aria-hidden="true"></div>
38
+ <script>
39
+ (() => {
40
+ const deck = document.querySelector(".deck");
41
+ const slides = Array.from(deck.querySelectorAll(":scope > section"));
42
+ const counter = document.querySelector(".deck-counter");
43
+ const KEY = "deck-slide:" + location.pathname;
44
+ let i = Math.min(parseInt(localStorage.getItem(KEY) || "0", 10) || 0, slides.length - 1);
45
+
46
+ function show(n) {
47
+ i = Math.max(0, Math.min(n, slides.length - 1));
48
+ slides.forEach((s, k) => s.classList.toggle("active", k === i));
49
+ counter.textContent = (i + 1) + " / " + slides.length;
50
+ localStorage.setItem(KEY, String(i));
51
+ }
52
+
53
+ function fit() {
54
+ const w = parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--deck-w"));
55
+ const h = parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--deck-h"));
56
+ const scale = Math.min(innerWidth / w, innerHeight / h);
57
+ deck.style.transform = "translate(-50%, -50%) scale(" + scale + ")";
58
+ }
59
+
60
+ addEventListener("keydown", (e) => {
61
+ if (e.key === "ArrowRight" || e.key === "PageDown" || e.key === " ") show(i + 1);
62
+ else if (e.key === "ArrowLeft" || e.key === "PageUp") show(i - 1);
63
+ else if (e.key === "Home") show(0);
64
+ else if (e.key === "End") show(slides.length - 1);
65
+ });
66
+ // Tap/click navigation: right two-thirds advances, left third goes back.
67
+ addEventListener("click", (e) => {
68
+ if (e.target.closest("a, button, input, textarea, select, [contenteditable]")) return;
69
+ show(e.clientX < innerWidth / 3 ? i - 1 : i + 1);
70
+ });
71
+ addEventListener("resize", fit);
72
+ fit();
73
+ show(i);
74
+ })();
75
+ </script>
76
+ </body>
77
+ </html>
@@ -3,6 +3,7 @@ model_tier: high
3
3
  name: judge-code-quality
4
4
  description: "Use when a diff needs a readability review — naming, single-responsibility, DRY, dead code, mismatch with codebase conventions — dispatched by /review-changes, /do-and-judge, /judge."
5
5
  domain: quality
6
+ parallelizable: files
6
7
  workspaces:
7
8
  - agent-config-maintainer
8
9
  packs:
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: laravel
4
- source: package
5
4
  description: "Writes Laravel PHP — Eloquent, Artisan controllers, FormRequests, jobs, events, policies, providers. For Symfony / Doctrine use `symfony-workflow`. For framework-free PHP use `php-coder`."
6
5
  domain: engineering
7
6
  workspaces:
@@ -233,6 +233,26 @@ before handing to `upstream-contribute`. The
233
233
  gate is hard: non-zero exit = the proposal does not move
234
234
  to stage `gated`.
235
235
 
236
+ ### 9. Degrade the source to a pointer (when promoted from a knowledge page)
237
+
238
+ If the learning came from an `agents/knowledge/procedures/skill-candidates.md`
239
+ entry or any other `agents/knowledge/` page (see § "Knowledge-candidate
240
+ learnings" below), promotion is **not complete** until the source is
241
+ degraded to a pointer — this prevents double-maintenance between the
242
+ knowledge page and the new artifact:
243
+
244
+ ```bash
245
+ ./scripts-run src/scripts/degrade_to_pointer \
246
+ --source "agents/knowledge/procedures/skill-candidates.md#<topic>" \
247
+ --artifact "<promoted-artifact-path>" \
248
+ --date "<YYYY-MM-DD>"
249
+ ```
250
+
251
+ This rewrites the source entry to `Promoted to <artifact> on <date>; see
252
+ <path>.` and regenerates `agents/knowledge/INDEX.md`. Skip when the
253
+ learning's source was NOT a knowledge page (direct user request,
254
+ audit-log pattern, one-off observation).
255
+
236
256
  ## Output format
237
257
 
238
258
  For the **decision step** (what this skill prints to the user):
@@ -332,6 +352,32 @@ mining `agents/runtime/state/audit/<YYYY-MM>.jsonl`
332
352
  and link the mining-script run id, so the human reviewer can
333
353
  reproduce the pattern from the raw audit log.
334
354
 
355
+ ## Knowledge-candidate learnings (optional source)
356
+
357
+ When the input is an entry from `agents/knowledge/procedures/skill-candidates.md`
358
+ that reached candidate status (≥ 3 mentions across distinct sessions —
359
+ see `update_skill_candidates.ts` and the
360
+ [`memory-consolidation`](../memory-consolidation/SKILL.md) recurrence
361
+ step):
362
+
363
+ 1. Treat the candidate's topic as the **State the learning** step
364
+ input (§1). The repetition gate (§0) is already satisfied by the
365
+ ≥ 3-mention threshold — skip straight to §3 (decide the target).
366
+ Overlap check (§4) and proposal draft (§8) remain mandatory.
367
+ 2. **Ground the draft in the original session logs, never the
368
+ consolidated summary alone.** The candidate entry's `Sessions:`
369
+ list names the chat-history session ids the topic recurred in —
370
+ pull those via [`/chat-history import`](../../../commands/chat-history/import.md)
371
+ (select by id) or the host's native transcript view before
372
+ drafting. A skill written purely from the recurrence-counter
373
+ summary tends to be plausible but wrong; the original transcripts
374
+ carry the detail the summary dropped.
375
+ 3. Set `source_learning` to the knowledge-candidate entry
376
+ (`agents/knowledge/procedures/skill-candidates.md#<topic>`).
377
+ 4. **§9 (degrade the source) is mandatory for this source type** —
378
+ the whole point of the candidate counter is that it stops counting
379
+ once promoted.
380
+
335
381
  ## Environment notes
336
382
 
337
383
  Prefer updating existing rule/skill when possible.
@@ -9,8 +9,8 @@ execution:
9
9
  timeout_seconds: 120
10
10
  allowed_tools: []
11
11
  command:
12
- - python3
13
- - src/scripts/skill_linter.ts
12
+ - ./scripts-run
13
+ - src/scripts/skill_linter
14
14
  - "--all"
15
15
  workspaces:
16
16
  - agent-config-maintainer
@@ -39,8 +39,8 @@ Do NOT use when:
39
39
 
40
40
  ### 1. Inspect the environment
41
41
 
42
- Confirm `python3` is available and the working directory is the agent-config
43
- repository root — the linter expects to find `.agent-src.uncondensed/skills/`
42
+ Confirm `./scripts-run` is executable and the working directory is the agent-config
43
+ repository root — the linter expects to find `src/skills/`
44
44
  and related directories relative to `cwd`.
45
45
 
46
46
  ### 2. Dispatch via the runtime layer
@@ -53,7 +53,7 @@ this skill's frontmatter governs the call:
53
53
  ```
54
54
 
55
55
  The dispatcher resolves the request, the shell handler runs
56
- `python3 src/scripts/skill_linter.ts --all`, captures stdout/stderr, and returns
56
+ `./scripts-run src/scripts/skill_linter --all`, captures stdout/stderr, and returns
57
57
  a typed `ExecutionResult`.
58
58
 
59
59
  ### 3. Verify the result
@@ -64,7 +64,7 @@ Check the returned `ExecutionResult`:
64
64
  - `exit_code: 1` → warnings only — review `stdout` for the listed warnings
65
65
  - `exit_code: 2` → errors present — fix the flagged files before continuing
66
66
  - `status: timeout` → the linter exceeded `timeout_seconds` — investigate
67
- - `status: error` → the interpreter could not launch — check that `python3`
67
+ - `status: error` → the runner could not launch — check that `./scripts-run`
68
68
  is on `PATH` and the repository root is the current working directory
69
69
 
70
70
  ## Output format
@@ -9,8 +9,8 @@ execution:
9
9
  timeout_seconds: 30
10
10
  allowed_tools: []
11
11
  command:
12
- - python3
13
- - scripts/check_md_language.py
12
+ - ./scripts-run
13
+ - src/scripts/check_md_language
14
14
  workspaces:
15
15
  - agent-config-maintainer
16
16
  packs:
@@ -114,7 +114,7 @@ proceeds on exit `0`.
114
114
  ## Do NOT
115
115
 
116
116
  - Do NOT silence the checker by deleting trigger words from
117
- `scripts/check_md_language.py`; extend the allow-list (anchor
117
+ `src/scripts/check_md_language.ts`; extend the allow-list (anchor
118
118
  blocks, ignore marker) instead
119
119
  - Do NOT add the ignore marker to body prose just to push a save
120
120
  through; the marker is for meta-documentation that quotes tokens,
@@ -101,9 +101,35 @@ miner is too loose; tighten patterns and re-run before promoting.
101
101
  curated YAML (next phase) become team-shared (committed).
102
102
  3. Default to `--preview` mode: render the JSONL block to stdout and
103
103
  stop. Only `--commit-intake` writes the file.
104
+ 4. **Triage each fact NOT already promoted to curated YAML** against
105
+ `agents/knowledge/{concepts,procedures}/` before treating it as
106
+ brand new:
107
+
108
+ | Triage | Condition | Action |
109
+ |---|---|---|
110
+ | `NEW` | No existing knowledge page covers this topic | Candidate for a new page (via `/team-knowledge consolidate`, not this skill) |
111
+ | `EXTEND` | An existing page covers the topic but is missing this detail | Note the target page in the report; do not edit mid-cycle |
112
+ | `CONFIRM` | An existing page already states this exactly | Discard — no duplicate entry |
113
+ | `CONFLICT` | An existing page states the opposite or a stale variant | Record **both** positions verbatim in the report with a `contested: true` recommendation for that page — never silently overwrite; resolution is always human |
114
+
115
+ 5. **Track cross-cycle recurrence toward skill-candidacy.** For each
116
+ `NEW` fact, run:
117
+
118
+ ```bash
119
+ ./scripts-run src/scripts/update_skill_candidates --topic "<stable-slug>" --session "<session-id>" --date "<YYYY-MM-DD>"
120
+ ```
121
+
122
+ This increments a durable per-topic counter in
123
+ `agents/knowledge/procedures/skill-candidates.md` — a fact that
124
+ recurs unpromoted across ≥ 3 consolidation cycles becomes a live
125
+ candidate the exit report surfaces for
126
+ [`learning-to-rule-or-skill`](../learning-to-rule-or-skill/SKILL.md)
127
+ to pick up. This script only counts; it never proposes or writes
128
+ the skill/rule itself. Regenerate `agents/knowledge/INDEX.md`
129
+ (`generate_knowledge_index.ts`) after any candidate update.
104
130
 
105
131
  **Exit gate:** every fact carries ≥ 1 tag and a JSONL-shape that
106
- validates against the contract.
132
+ validates against the contract; every fact has a triage verdict.
107
133
 
108
134
  ### Phase 4 — PRUNE & INDEX
109
135
 
@@ -143,6 +169,15 @@ skills — github.com/ViktorAxelsen/MemSkill, Apache-2.0, commit `9907c35f8cc7`)
143
169
  reusable facts, not transcripts or one-off chatter.
144
170
  - **One durable fact per entry.** No narrative blobs — each entry is a single
145
171
  PATTERN / CONVENTION / INVARIANT / GOTCHA the next agent can act on.
172
+ - **"Don't relitigate" memories carry scope + `revisit-if`.** A memory that
173
+ locks a question as settled — an honest-null verdict, a council convergence,
174
+ a maintainer call — is not a permanent law; it is a decision under the
175
+ conditions that held when it was written. Record what exactly is settled
176
+ (narrow enough that a different-but-similar proposal is not silently
177
+ covered) and at least one concrete condition that reopens it. Tag whether
178
+ it is **settled-by-evidence** (an eval ran) or **settled-by-decision** (a
179
+ maintainer call) — the latter is cheaper to reopen. See
180
+ [`decision-revisit-gate`](../../rules/decision-revisit-gate.md).
146
181
 
147
182
  This is **meta-memory**: the skill of *how to remember* (what to extract,
148
183
  keep, forget) — distinct from the remembered content. The store stays simple
@@ -151,6 +186,36 @@ INSERT/UPDATE/DELETE/NOOP operation machinery (append-only JSONL + curated
151
186
  YAML need no such ops) and do **not** import any retrieval / decay / trust
152
187
  engine.
153
188
 
189
+ ## Applying recalled memories
190
+
191
+ How memories are *written* is covered above; this section covers how
192
+ recalled content is *used* once retrieved.
193
+
194
+ - **Apply selectively and contextually.** A recalled fact surfaces only
195
+ when it's relevant to the current turn — not as a demonstration that
196
+ memory exists.
197
+ - **Never narrate the retrieval mechanism.** Forbidden phrases: "I
198
+ remember", "based on your memories", "according to your profile/data",
199
+ "I can see from memory". Recalled facts surface as normal working
200
+ knowledge, indistinguishable in tone from anything else the agent knows.
201
+ - **Sensitivity floor.** Recalled content about sensitive topics
202
+ (personal difficulties, conflicts, health) is never surfaced
203
+ unprompted — only when the user raises the topic first, this session.
204
+ Bringing up a sensitive memory unprompted is not just unhelpful, it is
205
+ actively harmful.
206
+ - **Staleness still applies.** A recalled memory reflects what was true
207
+ when it was written — verify referenced files/flags/state still hold
208
+ before treating it as current (see the memory-and-other-persistence
209
+ guidance this skill's callers already carry).
210
+
211
+ ### Retrieval-trigger linguistics
212
+
213
+ Before answering from scratch, treat these as signals to consult memory
214
+ first: possessives ("my/our X"), definite references to unnamed prior
215
+ work ("that bug", "the migration"), and past-time cues ("last week",
216
+ "back then"). These phrasings imply the user expects continuity with
217
+ something already known, not a first-time explanation.
218
+
154
219
  ## TranscriptAdapter contract
155
220
 
156
221
  The miner is host-agnostic by design. A `TranscriptAdapter` for host
@@ -5,6 +5,7 @@ description: "Use when shaping a non-trivial migration — rollout phases, dual-
5
5
  personas:
6
6
  - backend-architect
7
7
  - senior-engineer
8
+ - data-integrity
8
9
  domain: process
9
10
  workspaces:
10
11
  - engineering
@@ -67,8 +67,8 @@ Confirm both flags via `get_modules_config()` before running detection.
67
67
 
68
68
  - **Option 1** — build the payload (matches `propose_modules_config.py
69
69
  --json` shape, includes `detection_acknowledged: true`), pipe into
70
- `python3 scripts/apply_modules_config.py --project <root>`.
71
- - **Option 2** — run `python3 scripts/apply_modules_config.py
70
+ `./scripts-run src/scripts/apply_modules_config --project <root>`.
71
+ - **Option 2** — run `./scripts-run src/scripts/apply_modules_config
72
72
  --project <root> --acknowledge-only`. Flips only the ack flag;
73
73
  every other `modules.*` key stays untouched.
74
74
  - **Option 3** — list candidates, then loop back to step 3.
@@ -2,6 +2,8 @@
2
2
  model_tier: high
3
3
  name: performance-analysis
4
4
  description: "ONLY when user explicitly requests: performance audit, bottleneck analysis, or N+1 query detection. NOT for regular feature work."
5
+ personas:
6
+ - performance-engineer
5
7
  domain: discovery
6
8
  workspaces:
7
9
  - engineering
@@ -145,9 +145,9 @@ Don't hand-pick a scoreline. Run the executed grid optimiser — builds the full
145
145
  Poisson score grid, returns the EV-max tip under the step-1 point tiers:
146
146
 
147
147
  ```bash
148
- python3 scripts/prediction-pool/score_ev.py --lh <home-xg> --la <away-xg> \
148
+ ./scripts-run src/scripts/prediction-pool/score_ev --lh <home-xg> --la <away-xg> \
149
149
  --tendency <t> --diff <d> --exact <e> # one match
150
- python3 scripts/prediction-pool/score_ev.py matches.json \
150
+ ./scripts-run src/scripts/prediction-pool/score_ev matches.json \
151
151
  --tendency <t> --diff <d> --exact <e> # batch, prints a ranked table
152
152
  ```
153
153
 
@@ -176,7 +176,7 @@ of the field)**; pure EV-max converges with the crowd, can't open a gap.
176
176
  Measure it with the executed field simulator, not a "rough Kelly" hand-wave:
177
177
 
178
178
  ```bash
179
- python3 scripts/prediction-pool/pool_winsim.py pool.json --runs 4000 --max-flips 4
179
+ ./scripts-run src/scripts/prediction-pool/pool_winsim pool.json --runs 4000 --max-flips 4
180
180
  ```
181
181
 
182
182
  Models the field as softmax-EV tippers, reports `P(win)` for EV-max-everywhere,
@@ -204,7 +204,7 @@ question type — full taxonomy + per-type method in
204
204
  winner") aggregated per step 2, **or** the executed Poisson simulator:
205
205
 
206
206
  ```bash
207
- python3 scripts/prediction-pool/poisson_sim.py <teams-xg.json> --runs 20000
207
+ ./scripts-run src/scripts/prediction-pool/poisson_sim <teams-xg.json> --runs 20000
208
208
  ```
209
209
 
210
210
  It plays the bracket from per-team expected goals and prints empirical
@@ -1,18 +1,15 @@
1
1
  ---
2
2
  name: premortem
3
3
  description: "Use before committing to a heavy or irreversible plan — imagine it's 6 months later and this failed; enumerate why, score each mode, derive early-warning signals and preventive guardrails."
4
- source: package
5
4
  domain: quality
6
5
  model_tier: high
7
6
  workspaces:
8
7
  - engineering
9
8
  packs:
10
9
  - analysis-workbench
11
- lifecycle: active
12
10
  trust:
13
11
  level: professional
14
12
  confidence: medium
15
- human_review_required: false
16
13
  install:
17
14
  default: false
18
15
  removable: true
@@ -129,6 +129,22 @@ Check:
129
129
  6. Known uncertainties
130
130
  7. Recommended next specialist skill
131
131
 
132
+ ## Knowledge capture (`convention_detected` events)
133
+
134
+ An architecture-map or stack finding that recurs (naming convention,
135
+ module boundary, layering rule) is worth persisting for the team.
136
+ Append to the knowledge intake instead of leaving it in the one-off
137
+ analysis output — applies to every `project-analysis-*` specialist
138
+ this skill hands off to:
139
+
140
+ ```bash
141
+ ./scripts-run src/scripts/emit_knowledge_event --type convention_detected \
142
+ --pattern "<pattern>" --evidence "file:line" --sample-size <N> --scope project
143
+ ```
144
+
145
+ `/team-knowledge consolidate` turns accumulated events into
146
+ `agents/knowledge/concepts/` pages as a reviewed batch.
147
+
132
148
  ## Gotcha
133
149
 
134
150
  * If versions are guessed, the whole analysis becomes unreliable.
@@ -71,7 +71,9 @@ coordinates.
71
71
  Each link **delegates** to the artifact that owns it (no duplication):
72
72
 
73
73
  1. **ground** — close constraints/tools/info-gaps before designing
74
- ([`think-before-action` § Environment grounding](../../rules/think-before-action.md)).
74
+ ([`think-before-action` § Environment grounding](../../rules/think-before-action.md));
75
+ seed the read from the **repo** slot of the
76
+ [context-spine](../../../docs/contracts/context-spine.md) when present.
75
77
  2. **intent** — state the inferred goal + one recommendation, standard host only
76
78
  ([`improve-before-implement` § Intent inference](../../rules/improve-before-implement.md)).
77
79
  3. **notes** — hypotheses/predictions/decisions/uncertainty to the notes file, not
@@ -21,77 +21,77 @@ install:
21
21
 
22
22
  ## When to use
23
23
 
24
- - Release shipping with user-facing change, team about to send feature-list email.
25
- - Changelog draft reads like commit log — engineering-honest, unparseable for user.
26
- - Multiple comms surfaces (in-app, email, social, docs) about to be written by different people from same release.
24
+ - A release is shipping that contains user-facing change and the team is about to send a feature-list email.
25
+ - A changelog draft reads like a commit log — engineering-honest, but unparseable for the user.
26
+ - Multiple comms surfaces (in-app, email, social, docs) are about to be written by different people from the same release.
27
27
 
28
28
  Do NOT use for incident comms (see `incident-commander`),
29
- deprecation announcements needing legal sign-off, or pre-release
30
- discovery — this skill assumes change is **shipped**.
29
+ deprecation announcements that need legal sign-off, or pre-release
30
+ discovery — this skill assumes the change is **shipped**.
31
31
 
32
32
  ## Cognition cluster
33
33
 
34
- - **Mental model 16 — Leading vs. lagging indicators.** Release note
35
- is lagging artifact; leading version = in-app prompt that fired
36
- before user found change-log. See
34
+ - **Mental model 16 — Leading vs. lagging indicators.** A release
35
+ note is the lagging artifact; the leading version is the in-app
36
+ prompt that fired before the user found the change-log. See
37
37
  [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 16.
38
- - **Value-not-feature heuristic.** Every paragraph passes *"so the
39
- user can ___"* completion. Failing rows go back for re-write.
38
+ - **Value-not-feature heuristic.** Every paragraph passes the *"so
39
+ the user can ___"* completion. Failing rows go back for re-write.
40
40
 
41
41
  ## Procedure
42
42
 
43
43
  ### Step 0: Ground the release
44
44
 
45
- 1. Read merged PR list / changelog block / release branch diff. Release = **what**; comms = **so what**. Conflate the two → ship marketing.
46
- 2. Read **product** and **team** slots of [context-spine](../../../docs/contracts/context-spine.md) (if consumer filled them) for bounded scope and cadence — surface choice depends on cadence (weekly: in-app + log; quarterly: email + post; major: all four).
47
- 3. Identify **single dominant change** the release ships. Three "headliners" reads as three half-announcements.
45
+ 1. Read the merged PR list / changelog block / release branch diff. The release is the **what**; comms is the **so what**. Conflate the two and you ship marketing.
46
+ 2. Read the **product** and **team** slots of the [context-spine](../../../docs/contracts/context-spine.md) (if the consumer project has filled them) for bounded scope and release cadence — surface choice depends on cadence (weekly: in-app + log; quarterly: email + post; major: all four).
47
+ 3. Identify the **single dominant change** the release ships. A release with three "headliners" reads as three half-announcements.
48
48
 
49
49
  ### Step 1: Audience-segment
50
50
 
51
- 1. Three audiences max: **active user**, **at-risk / lapsed user**, **prospect**. More fragments message; fewer hides routing.
52
- 2. Per audience, write one sentence: *"After this release, you can …"* completing with user-side verb, not product-side feature.
53
- 3. If two audiences end up with same sentence, collapse — segmentation that does not change message = theatre.
51
+ 1. Three audiences max: **active user**, **at-risk / lapsed user**, **prospect**. More segments fragment the message; fewer hides the routing.
52
+ 2. Per audience, write one sentence: *"After this release, you can …"* completing with a user-side verb, not a product-side feature.
53
+ 3. If two audiences end up with the same sentence, collapse them — segmentation that does not change the message is theatre.
54
54
 
55
55
  ### Step 2: Map surfaces to audiences
56
56
 
57
57
  1. **Changelog** (always) — engineers + power users; truthful, dense, link-heavy. Source of truth — every other surface points back here.
58
58
  2. **In-app prompt** — active users; ≤ 1 sentence + 1 CTA; fires for users whose past behaviour predicts they'll touch the new path.
59
59
  3. **Email** — at-risk / lapsed; one headline value, one CTA, one paragraph of context. No feature lists.
60
- 4. **Social / blog** — prospect; the **why**, not the **what** — frame against user job (cite [`customer-research`](../customer-research/SKILL.md) if switch-event surfaced).
60
+ 4. **Social / blog** — prospect; the **why**, not the **what** — frame against the user job (cite [`customer-research`](../customer-research/SKILL.md) if a switch-event surfaced).
61
61
 
62
- Cut surfaces aggressively. Weekly release does not need blog post.
62
+ Cut surfaces aggressively. A weekly release does not need a blog post.
63
63
 
64
64
  ### Step 3: Draft each surface from the changelog
65
65
 
66
- 1. Open changelog. Per surface, copy dominant change line, then **rewrite verb subject** from "we" to "you".
67
- 2. Strip qualifiers ("now", "even better", "lightning-fast"). Noise, not signal.
68
- 3. Run *"so the user can ___"* completion on every paragraph. Failing paragraphs cut, not edited.
66
+ 1. Open the changelog. Per surface, copy the dominant change line, then **rewrite the verb subject** from "we" to "you".
67
+ 2. Strip qualifiers ("now", "even better", "lightning-fast"). They are noise, not signal.
68
+ 3. Run the *"so the user can ___"* completion on every paragraph. Failing paragraphs are cut, not edited.
69
69
 
70
70
  ### Step 4: Truth-check
71
71
 
72
- 1. Every claim links back to changelog row or doc URL. Unsourced claim → cut.
73
- 2. No tense games — past for shipped, future for coming-soon (and only if date is committed). "Roadmap" lives outside this skill.
74
- 3. Names match product surface. In-app says "Reports" and email says "Insights" → user fires lookup tax.
72
+ 1. Every claim links back to a changelog row or a doc URL. Unsourced claim → cut.
73
+ 2. No tense games — past for shipped, future for coming-soon (and only if the date is committed). "Roadmap" lives outside this skill.
74
+ 3. Names match the product surface. If the in-app says "Reports" and the email says "Insights", the user fires the lookup tax.
75
75
 
76
76
  ### Step 5: Hand off
77
77
 
78
- 1. Produce four artifacts (see `## Output`).
79
- 2. Hand to whoever owns send. Do not embed scheduling or A/B test plans here — that is RevOps.
78
+ 1. Produce the four artifacts (see `## Output`).
79
+ 2. Hand to whoever owns the send. Do not embed scheduling or A/B test plans here — that is RevOps.
80
80
 
81
81
  ## Related Skills
82
82
 
83
83
  **WHEN to use this**
84
84
 
85
- - Change is **shipped** and needs to reach existing users.
86
- - Multiple comms surfaces written by different people from same source.
87
- - Team about to default to feature-list email.
85
+ - The change is **shipped** and needs to reach existing users.
86
+ - Multiple comms surfaces will be written by different people from the same source.
87
+ - The team is about to default to a feature-list email.
88
88
 
89
89
  **WHEN NOT to use this**
90
90
 
91
- - Production incident comms → [`incident-commander`](../incident-commander/SKILL.md).
92
- - Pre-release discovery / validation → [`customer-research`](../customer-research/SKILL.md).
93
- - Funnel-stage diagnostics post-release → [`funnel-analysis`](../funnel-analysis/SKILL.md).
94
- - Ranking which release to comms next → [`rice-prioritization`](../rice-prioritization/SKILL.md).
91
+ - Production incident comms — route to [`incident-commander`](../incident-commander/SKILL.md).
92
+ - Pre-release discovery / validation — route to [`customer-research`](../customer-research/SKILL.md).
93
+ - Funnel-stage diagnostics post-release — route to [`funnel-analysis`](../funnel-analysis/SKILL.md).
94
+ - Ranking which release to comms next — route to [`rice-prioritization`](../rice-prioritization/SKILL.md).
95
95
 
96
96
  ## When the agent should load this
97
97
 
@@ -104,29 +104,30 @@ Cut surfaces aggressively. Weekly release does not need blog post.
104
104
  ## Output
105
105
 
106
106
  1. **`release-narrative.md`** — single source of truth: dominant change, audiences (1–3), per-audience *"After this release, you can …"* sentence, links to source changelog rows.
107
- 2. **`changelog-entry.md`** — engineer-honest, dense, link-heavy block ready to paste into project's changelog.
108
- 3. **`comms-pack.md`** — per-surface drafts (in-app prompt, email, optional social/blog), each ≤ surface's hard cap, each pointing back to `changelog-entry.md`.
109
- 4. **`comms-checklist.md`** — pre-send checks: every claim sourced, names consistent across surfaces, audience match, "so the user can …" completion passing on every paragraph. Hand-off artifact for senior PO ([`product-owner`](../../personas/product-owner.md)).
107
+ 2. **`changelog-entry.md`** — engineer-honest, dense, link-heavy block ready to paste into the project's changelog.
108
+ 3. **`comms-pack.md`** — per-surface drafts (in-app prompt, email, optional social/blog), each ≤ the surface's hard cap, each pointing back to `changelog-entry.md`.
109
+ 4. **`comms-checklist.md`** — pre-send checks: every claim sourced, names consistent across surfaces, audience match, "so the user can …" completion passing on every paragraph. Hand-off artifact for the senior PO ([`product-owner`](../../personas/product-owner.md); senior persona shipping in next plate).
110
110
 
111
111
  ## Gotcha
112
112
 
113
- - Default failure mode = feature-list email — written to make engineering feel seen, not to help user.
114
- - Marketing puffery ("revolutionary", "delightful") fails source check; cut on sight.
115
- - Two surfaces using different names for same thing = highest-frequency support-ticket trigger after release.
113
+ - The default failure mode is feature-list email — written to make engineering feel seen, not to help the user.
114
+ - Marketing puffery ("revolutionary", "delightful") fails the source check; cut on sight.
115
+ - Two surfaces using different names for the same thing is the highest-frequency support-ticket trigger after a release.
116
116
  - Hidden coming-soon claims in past-tense paragraphs erode trust faster than missing the comms entirely.
117
117
 
118
118
  ## Do NOT
119
119
 
120
- - Do NOT promote coming-soon item alongside shipped items — user cannot tell which is which and stops trusting next note.
121
- - Do NOT let long-tail change steal the headline — dominant change earns headline, long tail goes in changelog.
122
- - Do NOT ship surfaces without truth-check pass; unsourced claim survives in social longer than release does.
120
+ - Do NOT promote a coming-soon item alongside shipped items — the user cannot tell which is which and stops trusting the next note.
121
+ - Do NOT let a long-tail change steal the headline — the dominant change earns the headline, the long tail goes in the changelog.
122
+ - Do NOT ship surfaces without the truth-check pass; an unsourced claim survives in social longer than the release does.
123
+ - Do NOT paste more than a short excerpt from a linked source (commit message, PR body, issue thread) — `content-quoting-floor` caps verbatim quotes at 15 words, one per source; paraphrase the rest.
123
124
 
124
125
  ## Runnable example
125
126
 
126
127
  Sprint 47 ships a one-click monthly export and three small bug fixes:
127
128
 
128
129
  - Dominant change: one-click export. Bug fixes go in changelog only.
129
- - Audiences: active user (will use it), at-risk (export friction was churn trigger per [`customer-research`](../customer-research/SKILL.md) evidence-log).
130
+ - Audiences: active user (will use it), at-risk (export friction was a churn trigger per [`customer-research`](../customer-research/SKILL.md) evidence-log).
130
131
  - "After this release, you can pull a board-ready monthly report in one click." (active, at-risk — same sentence ⇒ collapse to one).
131
- - Surfaces: changelog (full), in-app prompt to active users on next month-end, email to at-risk cohort with same sentence and one CTA. No social.
132
- - Truth-check: claim links to export PR; "one click" is literal — verified against shipped UI.
132
+ - Surfaces: changelog (full), in-app prompt to active users on next month-end, email to at-risk cohort with the same sentence and one CTA. No social.
133
+ - Truth-check: claim links to the export PR; "one click" is literal — verified against the shipped UI.
@@ -212,6 +212,16 @@ unfamiliar codebases.
212
212
 
213
213
  ### Executing a roadmap
214
214
 
215
+ 0. Read `execution.mode` from the roadmap frontmatter
216
+ (`autonomous` | `phase-checkpoints` | `interactive`; absent =
217
+ `interactive`). Under `/roadmap:process-*` the mode selects the
218
+ interaction pattern via the run-start execution contract — see
219
+ [`roadmap-execution-contract`](../../contexts/execution/roadmap-execution-contract.md).
220
+ The manual flow below describes `interactive`; under `autonomous`
221
+ / `phase-checkpoints` step 4's per-step ask is replaced by the
222
+ accepted contract. **Mode never changes archival semantics** —
223
+ glyph counting, the closure decision table, and the Iron Law 3
224
+ deferred-resolution gate below apply identically in every mode.
215
225
  1. Read the full roadmap.
216
226
  2. Find the next unchecked step (`- [ ]`).
217
227
  3. Summarize what needs to be done.
@@ -455,6 +465,17 @@ No global tooling required.
455
465
 
456
466
  The dashboard is a **read-only snapshot**. Do not edit it by hand — regenerate it.
457
467
 
468
+ ### Blockers on the dashboard
469
+
470
+ Overview table's `Blocker` column counts each roadmap's open
471
+ `## Blockers` entries (or legacy `> Blocked until` note), links to
472
+ per-roadmap breakdown, which lists every open blocker with owner,
473
+ blocked scope, full instructions. Authoring shape:
474
+ [`templates/roadmaps.md` rule 20](../../agent-src/templates/roadmaps.md);
475
+ authoring guidance: [`roadmap-writing § 5b`](../roadmap-writing/SKILL.md).
476
+ Clearing a blocker flips `Status: resolved`, regenerates dashboard in
477
+ same reply — same cadence as a checkbox flip.
478
+
458
479
  ## Rubric pass (optional, surfacing-only)
459
480
 
460
481
  After producing roadmap, run [`judge-artifact-completeness`](../judge-artifact-completeness/SKILL.md) with rubric `roadmap-score` to surface missing dimensions (risk, tests, migration, maintainability). Score is a recommendation; never blocks shipping. Invoke only when user wants completeness check — not by default.