@event4u/agent-config 2.26.0 → 3.1.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 (870) hide show
  1. package/.agent-src/commands/agent-handoff.md +15 -3
  2. package/.agent-src/commands/agent-status.md +12 -0
  3. package/.agent-src/commands/agents/audit.md +12 -0
  4. package/.agent-src/commands/agents/init.md +12 -0
  5. package/.agent-src/commands/agents/optimize.md +12 -0
  6. package/.agent-src/commands/agents/user/accept.md +12 -0
  7. package/.agent-src/commands/agents/user/init.md +12 -0
  8. package/.agent-src/commands/agents/user/review.md +12 -0
  9. package/.agent-src/commands/agents/user/show.md +12 -0
  10. package/.agent-src/commands/agents/user/update.md +12 -0
  11. package/.agent-src/commands/agents/user.md +12 -0
  12. package/.agent-src/commands/agents.md +12 -0
  13. package/.agent-src/commands/analyze-reference-repo.md +15 -3
  14. package/.agent-src/commands/bug-fix.md +12 -0
  15. package/.agent-src/commands/bug-investigate.md +13 -1
  16. package/.agent-src/commands/challenge-me/vision.md +12 -0
  17. package/.agent-src/commands/challenge-me/with-docs.md +12 -0
  18. package/.agent-src/commands/challenge-me.md +12 -0
  19. package/.agent-src/commands/chat-history/import.md +16 -4
  20. package/.agent-src/commands/chat-history/learn.md +15 -3
  21. package/.agent-src/commands/chat-history/show.md +17 -5
  22. package/.agent-src/commands/chat-history.md +14 -2
  23. package/.agent-src/commands/check-current-md.md +12 -0
  24. package/.agent-src/commands/commit/in-chunks.md +12 -0
  25. package/.agent-src/commands/commit.md +12 -0
  26. package/.agent-src/commands/compress.md +12 -0
  27. package/.agent-src/commands/context/create.md +17 -5
  28. package/.agent-src/commands/context/refactor.md +15 -3
  29. package/.agent-src/commands/context.md +12 -0
  30. package/.agent-src/commands/cost-report.md +12 -0
  31. package/.agent-src/commands/council/analysis.md +15 -3
  32. package/.agent-src/commands/council/debate.md +17 -5
  33. package/.agent-src/commands/council/default.md +17 -5
  34. package/.agent-src/commands/council/design.md +12 -0
  35. package/.agent-src/commands/council/optimize.md +12 -0
  36. package/.agent-src/commands/council/pr.md +12 -0
  37. package/.agent-src/commands/council.md +13 -1
  38. package/.agent-src/commands/create-pr/description-only.md +12 -0
  39. package/.agent-src/commands/create-pr.md +39 -0
  40. package/.agent-src/commands/e2e-heal.md +12 -0
  41. package/.agent-src/commands/e2e-plan.md +12 -0
  42. package/.agent-src/commands/estimate-ticket.md +12 -0
  43. package/.agent-src/commands/feature/dev.md +13 -1
  44. package/.agent-src/commands/feature/explore.md +12 -0
  45. package/.agent-src/commands/feature/plan.md +14 -2
  46. package/.agent-src/commands/feature/refactor.md +12 -0
  47. package/.agent-src/commands/feature/roadmap.md +12 -0
  48. package/.agent-src/commands/feature.md +12 -0
  49. package/.agent-src/commands/fix/ci.md +12 -0
  50. package/.agent-src/commands/fix/portability.md +12 -0
  51. package/.agent-src/commands/fix/pr-bot-comments.md +12 -0
  52. package/.agent-src/commands/fix/pr-comments.md +12 -0
  53. package/.agent-src/commands/fix/pr-developer-comments.md +12 -0
  54. package/.agent-src/commands/fix/refs.md +12 -0
  55. package/.agent-src/commands/fix/seeder.md +12 -0
  56. package/.agent-src/commands/fix.md +12 -0
  57. package/.agent-src/commands/ghostwriter/delete.md +20 -8
  58. package/.agent-src/commands/ghostwriter/fetch.md +19 -7
  59. package/.agent-src/commands/ghostwriter/list.md +19 -7
  60. package/.agent-src/commands/ghostwriter/show.md +14 -2
  61. package/.agent-src/commands/ghostwriter/write.md +15 -3
  62. package/.agent-src/commands/ghostwriter.md +14 -2
  63. package/.agent-src/commands/grill-me.md +12 -0
  64. package/.agent-src/commands/implement-ticket.md +12 -0
  65. package/.agent-src/commands/install-via-agent.md +129 -0
  66. package/.agent-src/commands/jira-ticket.md +12 -0
  67. package/.agent-src/commands/judge/on-diff.md +12 -0
  68. package/.agent-src/commands/judge/solo.md +12 -0
  69. package/.agent-src/commands/judge/steps.md +12 -0
  70. package/.agent-src/commands/judge.md +12 -0
  71. package/.agent-src/commands/memory/add.md +12 -0
  72. package/.agent-src/commands/memory/learn-low-impact.md +18 -6
  73. package/.agent-src/commands/memory/load.md +12 -0
  74. package/.agent-src/commands/memory/mine-session.md +12 -0
  75. package/.agent-src/commands/memory/promote.md +12 -0
  76. package/.agent-src/commands/memory/propose.md +12 -0
  77. package/.agent-src/commands/memory.md +12 -0
  78. package/.agent-src/commands/mode.md +12 -0
  79. package/.agent-src/commands/module/create.md +12 -0
  80. package/.agent-src/commands/module/explore.md +13 -1
  81. package/.agent-src/commands/module.md +12 -0
  82. package/.agent-src/commands/optimize/agents-dir.md +14 -2
  83. package/.agent-src/commands/optimize/augmentignore.md +12 -0
  84. package/.agent-src/commands/optimize/rtk.md +12 -0
  85. package/.agent-src/commands/optimize/skills.md +12 -0
  86. package/.agent-src/commands/optimize-prompt.md +12 -0
  87. package/.agent-src/commands/optimize.md +12 -0
  88. package/.agent-src/commands/orchestrate.md +13 -1
  89. package/.agent-src/commands/override/create.md +12 -0
  90. package/.agent-src/commands/override/manage.md +12 -0
  91. package/.agent-src/commands/override.md +12 -0
  92. package/.agent-src/commands/package-reset.md +12 -0
  93. package/.agent-src/commands/package-test.md +12 -0
  94. package/.agent-src/commands/post-as/ghostwriter.md +12 -0
  95. package/.agent-src/commands/post-as/me.md +13 -1
  96. package/.agent-src/commands/post-as.md +12 -0
  97. package/.agent-src/commands/prepare-for-review.md +12 -0
  98. package/.agent-src/commands/project-analyze.md +27 -15
  99. package/.agent-src/commands/project-health.md +13 -1
  100. package/.agent-src/commands/quality-fix.md +12 -0
  101. package/.agent-src/commands/refine-ticket.md +12 -0
  102. package/.agent-src/commands/research/deep.md +12 -0
  103. package/.agent-src/commands/research/report.md +12 -0
  104. package/.agent-src/commands/research.md +12 -0
  105. package/.agent-src/commands/review-changes.md +12 -0
  106. package/.agent-src/commands/review-routing.md +12 -0
  107. package/.agent-src/commands/roadmap/ai-council.md +15 -3
  108. package/.agent-src/commands/roadmap/create.md +13 -1
  109. package/.agent-src/commands/roadmap/process-full.md +12 -0
  110. package/.agent-src/commands/roadmap/process-phase.md +12 -0
  111. package/.agent-src/commands/roadmap/process-step.md +12 -0
  112. package/.agent-src/commands/roadmap.md +12 -0
  113. package/.agent-src/commands/rule-compliance-audit.md +12 -0
  114. package/.agent-src/commands/set-cost-profile.md +12 -0
  115. package/.agent-src/commands/sync-agent-settings.md +12 -0
  116. package/.agent-src/commands/sync-gitignore/fix.md +32 -13
  117. package/.agent-src/commands/sync-gitignore.md +13 -1
  118. package/.agent-src/commands/tests/create.md +12 -0
  119. package/.agent-src/commands/tests/execute.md +12 -0
  120. package/.agent-src/commands/tests.md +12 -0
  121. package/.agent-src/commands/threat-model.md +12 -0
  122. package/.agent-src/commands/update-form-request-messages.md +12 -0
  123. package/.agent-src/commands/upstream-contribute.md +12 -0
  124. package/.agent-src/commands/video/from-script.md +13 -1
  125. package/.agent-src/commands/video/scene.md +12 -0
  126. package/.agent-src/commands/video/stitch.md +13 -1
  127. package/.agent-src/commands/video/storyboard.md +12 -0
  128. package/.agent-src/commands/video.md +13 -1
  129. package/.agent-src/commands/work.md +12 -0
  130. package/.agent-src/contexts/augment-infrastructure.md +2 -2
  131. package/.agent-src/contexts/authority/scope-mechanics.md +11 -0
  132. package/.agent-src/contexts/contracts/agents-md-anatomy.md +1 -1
  133. package/.agent-src/contexts/documentation-hierarchy.md +2 -2
  134. package/.agent-src/contexts/execution/cheap-question-mechanics.md +81 -0
  135. package/.agent-src/contexts/execution/roadmap-process-loop.md +19 -0
  136. package/.agent-src/ghostwriter/README.md +2 -2
  137. package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
  138. package/.agent-src/personas/README.md +1 -1
  139. package/.agent-src/personas/advisors/contrarian.md +1 -1
  140. package/.agent-src/personas/advisors/executor.md +1 -1
  141. package/.agent-src/personas/advisors/expansionist.md +1 -1
  142. package/.agent-src/personas/advisors/first-principles.md +1 -1
  143. package/.agent-src/personas/advisors/outsider.md +1 -1
  144. package/.agent-src/rules/agent-authority.md +12 -0
  145. package/.agent-src/rules/analysis-skill-routing.md +12 -0
  146. package/.agent-src/rules/architecture.md +13 -1
  147. package/.agent-src/rules/artifact-drafting-protocol.md +13 -1
  148. package/.agent-src/rules/artifact-engagement-recording.md +13 -1
  149. package/.agent-src/rules/ask-when-uncertain.md +12 -0
  150. package/.agent-src/rules/augment-edit-discipline.md +13 -1
  151. package/.agent-src/rules/augment-source-of-truth.md +13 -1
  152. package/.agent-src/rules/autonomous-execution.md +13 -1
  153. package/.agent-src/rules/caveman-speak.md +15 -3
  154. package/.agent-src/rules/cli-output-handling.md +13 -1
  155. package/.agent-src/rules/command-suggestion-policy.md +13 -1
  156. package/.agent-src/rules/commit-conventions.md +13 -1
  157. package/.agent-src/rules/commit-policy.md +12 -0
  158. package/.agent-src/rules/context-hygiene.md +51 -3
  159. package/.agent-src/rules/copilot-routing.md +13 -1
  160. package/.agent-src/rules/devcontainer-routing.md +13 -1
  161. package/.agent-src/rules/direct-answers.md +12 -0
  162. package/.agent-src/rules/docker-commands.md +13 -1
  163. package/.agent-src/rules/domain-adoption-policy.md +17 -5
  164. package/.agent-src/rules/domain-safety-disclaimer.md +13 -1
  165. package/.agent-src/rules/domain-safety-pii.md +13 -1
  166. package/.agent-src/rules/domain-safety-retention.md +13 -1
  167. package/.agent-src/rules/downstream-changes.md +13 -1
  168. package/.agent-src/rules/engineering-safety-floor.md +102 -0
  169. package/.agent-src/rules/external-reference-deep-dive.md +13 -1
  170. package/.agent-src/rules/fast-path-marker-visibility.md +21 -1
  171. package/.agent-src/rules/finance-safety-floor.md +114 -0
  172. package/.agent-src/rules/framework-neutrality-in-generic-skills.md +13 -1
  173. package/.agent-src/rules/git-history-discipline.md +14 -2
  174. package/.agent-src/rules/guidelines.md +12 -0
  175. package/.agent-src/rules/improve-before-implement.md +13 -1
  176. package/.agent-src/rules/invite-challenge.md +13 -1
  177. package/.agent-src/rules/language-and-tone.md +12 -0
  178. package/.agent-src/rules/laravel-routing.md +13 -1
  179. package/.agent-src/rules/laravel-translations.md +13 -1
  180. package/.agent-src/rules/low-impact-corpus-privacy-floor.md +17 -5
  181. package/.agent-src/rules/markdown-safe-codeblocks.md +13 -1
  182. package/.agent-src/rules/media-governance-routing.md +27 -15
  183. package/.agent-src/rules/minimal-safe-diff.md +13 -1
  184. package/.agent-src/rules/missing-tool-handling.md +13 -1
  185. package/.agent-src/rules/model-recommendation.md +13 -1
  186. package/.agent-src/rules/no-attribution-footers.md +13 -1
  187. package/.agent-src/rules/no-cheap-questions.md +46 -32
  188. package/.agent-src/rules/no-roadmap-references.md +28 -16
  189. package/.agent-src/rules/non-destructive-by-default.md +12 -0
  190. package/.agent-src/rules/onboarding-gate.md +19 -6
  191. package/.agent-src/rules/package-ci-checks.md +12 -0
  192. package/.agent-src/rules/persona-governance.md +13 -1
  193. package/.agent-src/rules/php-coding.md +13 -1
  194. package/.agent-src/rules/preservation-guard.md +13 -1
  195. package/.agent-src/rules/provider-lifecycle-discipline.md +18 -6
  196. package/.agent-src/rules/reviewer-awareness.md +13 -1
  197. package/.agent-src/rules/roadmap-ci-steps-policy.md +13 -1
  198. package/.agent-src/rules/roadmap-progress-sync.md +18 -1
  199. package/.agent-src/rules/role-mode-adherence.md +13 -1
  200. package/.agent-src/rules/rule-type-governance.md +13 -1
  201. package/.agent-src/rules/runtime-safety.md +13 -1
  202. package/.agent-src/rules/scope-control.md +12 -0
  203. package/.agent-src/rules/security-sensitive-stop.md +13 -1
  204. package/.agent-src/rules/size-enforcement.md +12 -0
  205. package/.agent-src/rules/skill-improvement-trigger.md +13 -1
  206. package/.agent-src/rules/skill-quality.md +13 -1
  207. package/.agent-src/rules/slash-command-routing-policy.md +13 -1
  208. package/.agent-src/rules/strategy-safety-floor.md +114 -0
  209. package/.agent-src/rules/symfony-routing.md +13 -1
  210. package/.agent-src/rules/think-before-action.md +13 -1
  211. package/.agent-src/rules/token-efficiency.md +13 -1
  212. package/.agent-src/rules/token-optimizer-maintenance.md +12 -0
  213. package/.agent-src/rules/tool-safety.md +13 -1
  214. package/.agent-src/rules/ui-audit-gate.md +13 -1
  215. package/.agent-src/rules/upstream-proposal.md +13 -1
  216. package/.agent-src/rules/user-interaction.md +13 -1
  217. package/.agent-src/rules/user-interrupt-priority.md +12 -0
  218. package/.agent-src/rules/verify-before-complete.md +12 -0
  219. package/.agent-src/skills/accessibility-auditor/SKILL.md +12 -0
  220. package/.agent-src/skills/activation-design/SKILL.md +12 -0
  221. package/.agent-src/skills/adr-create/SKILL.md +12 -0
  222. package/.agent-src/skills/adversarial-review/SKILL.md +12 -0
  223. package/.agent-src/skills/agent-docs-writing/SKILL.md +16 -4
  224. package/.agent-src/skills/agents-md-thin-root/SKILL.md +28 -10
  225. package/.agent-src/skills/ai-council/SKILL.md +28 -15
  226. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +12 -0
  227. package/.agent-src/skills/analysis-skill-router/SKILL.md +12 -0
  228. package/.agent-src/skills/api-design/SKILL.md +13 -3
  229. package/.agent-src/skills/api-endpoint/SKILL.md +12 -0
  230. package/.agent-src/skills/api-testing/SKILL.md +12 -0
  231. package/.agent-src/skills/architecture-review-lens/SKILL.md +12 -0
  232. package/.agent-src/skills/artisan-commands/SKILL.md +12 -0
  233. package/.agent-src/skills/async-python-patterns/SKILL.md +13 -1
  234. package/.agent-src/skills/authz-review/SKILL.md +12 -2
  235. package/.agent-src/skills/aws-infrastructure/SKILL.md +12 -0
  236. package/.agent-src/skills/blade-ui/SKILL.md +12 -0
  237. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +12 -0
  238. package/.agent-src/skills/bug-analyzer/SKILL.md +14 -2
  239. package/.agent-src/skills/build-buy-partner/SKILL.md +12 -0
  240. package/.agent-src/skills/canvas-design/SKILL.md +12 -0
  241. package/.agent-src/skills/character-consistency/SKILL.md +23 -11
  242. package/.agent-src/skills/check-refs/SKILL.md +12 -0
  243. package/.agent-src/skills/churn-prevention/SKILL.md +12 -0
  244. package/.agent-src/skills/code-refactoring/SKILL.md +16 -4
  245. package/.agent-src/skills/code-review/SKILL.md +12 -0
  246. package/.agent-src/skills/command-routing/SKILL.md +12 -0
  247. package/.agent-src/skills/command-writing/SKILL.md +14 -2
  248. package/.agent-src/skills/comp-banding/SKILL.md +12 -0
  249. package/.agent-src/skills/competitive-moat-analysis/SKILL.md +12 -2
  250. package/.agent-src/skills/competitive-positioning/SKILL.md +12 -2
  251. package/.agent-src/skills/composer-packages/SKILL.md +12 -0
  252. package/.agent-src/skills/compress-memory/SKILL.md +12 -0
  253. package/.agent-src/skills/content-funnel-design/SKILL.md +12 -2
  254. package/.agent-src/skills/context-authoring/SKILL.md +18 -6
  255. package/.agent-src/skills/context-document/SKILL.md +17 -5
  256. package/.agent-src/skills/contracts-cognition/SKILL.md +12 -2
  257. package/.agent-src/skills/conventional-commits-writing/SKILL.md +12 -0
  258. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +13 -1
  259. package/.agent-src/skills/copilot-config/SKILL.md +12 -0
  260. package/.agent-src/skills/customer-research/SKILL.md +12 -0
  261. package/.agent-src/skills/dashboard-design/SKILL.md +12 -0
  262. package/.agent-src/skills/data-flow-mapper/SKILL.md +12 -0
  263. package/.agent-src/skills/data-handling-judgment/SKILL.md +12 -2
  264. package/.agent-src/skills/database/SKILL.md +14 -2
  265. package/.agent-src/skills/dcf-modeling/SKILL.md +12 -2
  266. package/.agent-src/skills/deal-qualification-meddic/SKILL.md +12 -2
  267. package/.agent-src/skills/decision-record/SKILL.md +12 -0
  268. package/.agent-src/skills/deep-reading-analyst/SKILL.md +12 -0
  269. package/.agent-src/skills/defense-in-depth/SKILL.md +13 -1
  270. package/.agent-src/skills/dependency-upgrade/SKILL.md +12 -0
  271. package/.agent-src/skills/description-assist/SKILL.md +12 -0
  272. package/.agent-src/skills/design-review/SKILL.md +12 -0
  273. package/.agent-src/skills/devcontainer/SKILL.md +12 -0
  274. package/.agent-src/skills/developer-like-execution/SKILL.md +12 -0
  275. package/.agent-src/skills/discovery-interview/SKILL.md +12 -2
  276. package/.agent-src/skills/doc-coauthoring/SKILL.md +12 -0
  277. package/.agent-src/skills/docker/SKILL.md +12 -0
  278. package/.agent-src/skills/editorial-calendar/SKILL.md +12 -2
  279. package/.agent-src/skills/eloquent/SKILL.md +12 -0
  280. package/.agent-src/skills/eloquent/evals/triggers.json +1 -1
  281. package/.agent-src/skills/error-handling-patterns/SKILL.md +13 -1
  282. package/.agent-src/skills/estimate-ticket/SKILL.md +12 -0
  283. package/.agent-src/skills/existing-ui-audit/SKILL.md +12 -0
  284. package/.agent-src/skills/expansion-playbook/SKILL.md +12 -0
  285. package/.agent-src/skills/fe-design/SKILL.md +12 -0
  286. package/.agent-src/skills/feature-planning/SKILL.md +12 -0
  287. package/.agent-src/skills/file-editor/SKILL.md +12 -0
  288. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +12 -0
  289. package/.agent-src/skills/flux/SKILL.md +12 -0
  290. package/.agent-src/skills/forecast-accuracy/SKILL.md +12 -2
  291. package/.agent-src/skills/forecasting/SKILL.md +12 -2
  292. package/.agent-src/skills/form-handler/SKILL.md +12 -0
  293. package/.agent-src/skills/fundraising-narrative/SKILL.md +12 -2
  294. package/.agent-src/skills/funnel-analysis/SKILL.md +12 -0
  295. package/.agent-src/skills/git-workflow/SKILL.md +12 -0
  296. package/.agent-src/skills/github-ci/SKILL.md +12 -0
  297. package/.agent-src/skills/grafana/SKILL.md +12 -0
  298. package/.agent-src/skills/gtm-launch/SKILL.md +12 -2
  299. package/.agent-src/skills/guideline-writing/SKILL.md +12 -0
  300. package/.agent-src/skills/hiring-loop-design/SKILL.md +12 -0
  301. package/.agent-src/skills/incident-commander/SKILL.md +12 -2
  302. package/.agent-src/skills/jira-integration/SKILL.md +12 -0
  303. package/.agent-src/skills/jobs-events/SKILL.md +12 -0
  304. package/.agent-src/skills/judge-bug-hunter/SKILL.md +12 -0
  305. package/.agent-src/skills/judge-code-quality/SKILL.md +12 -0
  306. package/.agent-src/skills/judge-security-auditor/SKILL.md +12 -0
  307. package/.agent-src/skills/judge-test-coverage/SKILL.md +12 -0
  308. package/.agent-src/skills/laravel/SKILL.md +12 -0
  309. package/.agent-src/skills/laravel-api-endpoint/SKILL.md +15 -3
  310. package/.agent-src/skills/laravel-dto/SKILL.md +14 -2
  311. package/.agent-src/skills/laravel-horizon/SKILL.md +12 -0
  312. package/.agent-src/skills/laravel-mail/SKILL.md +12 -0
  313. package/.agent-src/skills/laravel-middleware/SKILL.md +12 -0
  314. package/.agent-src/skills/laravel-migration/SKILL.md +12 -0
  315. package/.agent-src/skills/laravel-notifications/SKILL.md +12 -0
  316. package/.agent-src/skills/laravel-pennant/SKILL.md +12 -0
  317. package/.agent-src/skills/laravel-pulse/SKILL.md +12 -0
  318. package/.agent-src/skills/laravel-reverb/SKILL.md +12 -0
  319. package/.agent-src/skills/laravel-scheduling/SKILL.md +12 -0
  320. package/.agent-src/skills/laravel-validation/SKILL.md +12 -0
  321. package/.agent-src/skills/laravel-websocket/SKILL.md +12 -0
  322. package/.agent-src/skills/launch-readiness/SKILL.md +12 -2
  323. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +15 -3
  324. package/.agent-src/skills/lint-skills/SKILL.md +12 -0
  325. package/.agent-src/skills/livewire/SKILL.md +12 -0
  326. package/.agent-src/skills/livewire-architect/SKILL.md +12 -0
  327. package/.agent-src/skills/logging-monitoring/SKILL.md +12 -0
  328. package/.agent-src/skills/market-entry-analysis/SKILL.md +12 -0
  329. package/.agent-src/skills/markitdown/SKILL.md +14 -2
  330. package/.agent-src/skills/mcp/SKILL.md +12 -0
  331. package/.agent-src/skills/mcp-builder/SKILL.md +14 -2
  332. package/.agent-src/skills/md-language-check/SKILL.md +13 -1
  333. package/.agent-src/skills/memory-consolidation/SKILL.md +12 -0
  334. package/.agent-src/skills/merge-conflicts/SKILL.md +12 -0
  335. package/.agent-src/skills/messaging-architecture/SKILL.md +12 -2
  336. package/.agent-src/skills/migration-architect/SKILL.md +12 -0
  337. package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +12 -0
  338. package/.agent-src/skills/module-management/SKILL.md +12 -0
  339. package/.agent-src/skills/motion-choreographer/SKILL.md +16 -4
  340. package/.agent-src/skills/multi-tenancy/SKILL.md +14 -2
  341. package/.agent-src/skills/nextjs-patterns/SKILL.md +12 -0
  342. package/.agent-src/skills/okr-tree-modeling/SKILL.md +12 -2
  343. package/.agent-src/skills/onboarding-design/SKILL.md +12 -0
  344. package/.agent-src/skills/onboarding-program/SKILL.md +12 -0
  345. package/.agent-src/skills/one-on-one-cadence/SKILL.md +12 -0
  346. package/.agent-src/skills/openapi/SKILL.md +13 -1
  347. package/.agent-src/skills/org-design/SKILL.md +12 -0
  348. package/.agent-src/skills/override-management/SKILL.md +12 -0
  349. package/.agent-src/skills/perf-feedback-craft/SKILL.md +12 -0
  350. package/.agent-src/skills/performance/SKILL.md +12 -0
  351. package/.agent-src/skills/performance-analysis/SKILL.md +12 -0
  352. package/.agent-src/skills/persona-writing/SKILL.md +12 -0
  353. package/.agent-src/skills/pest-testing/SKILL.md +12 -0
  354. package/.agent-src/skills/php-coder/SKILL.md +12 -0
  355. package/.agent-src/skills/php-debugging/SKILL.md +12 -0
  356. package/.agent-src/skills/php-service/SKILL.md +12 -0
  357. package/.agent-src/skills/pipeline-strategy/SKILL.md +12 -2
  358. package/.agent-src/skills/pixar-storyteller/SKILL.md +17 -5
  359. package/.agent-src/skills/playwright-architect/SKILL.md +12 -2
  360. package/.agent-src/skills/playwright-testing/SKILL.md +12 -0
  361. package/.agent-src/skills/po-discovery/SKILL.md +12 -0
  362. package/.agent-src/skills/positioning-strategy/SKILL.md +12 -0
  363. package/.agent-src/skills/privacy-review/SKILL.md +12 -2
  364. package/.agent-src/skills/project-analysis-core/SKILL.md +12 -0
  365. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +12 -0
  366. package/.agent-src/skills/project-analysis-laravel/SKILL.md +12 -0
  367. package/.agent-src/skills/project-analysis-nextjs/SKILL.md +12 -0
  368. package/.agent-src/skills/project-analysis-node-express/SKILL.md +12 -0
  369. package/.agent-src/skills/project-analysis-react/SKILL.md +12 -0
  370. package/.agent-src/skills/project-analysis-symfony/SKILL.md +12 -0
  371. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +12 -0
  372. package/.agent-src/skills/project-analyzer/SKILL.md +30 -18
  373. package/.agent-src/skills/project-docs/SKILL.md +25 -13
  374. package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +13 -1
  375. package/.agent-src/skills/prompt-optimizer/SKILL.md +13 -1
  376. package/.agent-src/skills/quality-tools/SKILL.md +12 -2
  377. package/.agent-src/skills/react-native-setup/SKILL.md +12 -0
  378. package/.agent-src/skills/react-shadcn-ui/SKILL.md +12 -0
  379. package/.agent-src/skills/readme-reviewer/SKILL.md +64 -3
  380. package/.agent-src/skills/readme-writing/SKILL.md +64 -4
  381. package/.agent-src/skills/readme-writing-package/SKILL.md +60 -5
  382. package/.agent-src/skills/receiving-code-review/SKILL.md +12 -0
  383. package/.agent-src/skills/refine-prompt/SKILL.md +13 -1
  384. package/.agent-src/skills/refine-ticket/SKILL.md +14 -2
  385. package/.agent-src/skills/refine-ticket/detection-map.yml +2 -2
  386. package/.agent-src/skills/release-comms/SKILL.md +12 -2
  387. package/.agent-src/skills/repomix-packer/SKILL.md +13 -1
  388. package/.agent-src/skills/requesting-code-review/SKILL.md +12 -0
  389. package/.agent-src/skills/retention-loops/SKILL.md +12 -0
  390. package/.agent-src/skills/review-routing/SKILL.md +12 -0
  391. package/.agent-src/skills/rice-prioritization/SKILL.md +12 -0
  392. package/.agent-src/skills/risk-officer/SKILL.md +12 -0
  393. package/.agent-src/skills/roadmap-management/SKILL.md +12 -0
  394. package/.agent-src/skills/roadmap-writing/SKILL.md +12 -0
  395. package/.agent-src/skills/rtk-output-filtering/SKILL.md +12 -0
  396. package/.agent-src/skills/rule-refactor/SKILL.md +15 -3
  397. package/.agent-src/skills/rule-writing/SKILL.md +13 -1
  398. package/.agent-src/skills/runway-cognition/SKILL.md +12 -2
  399. package/.agent-src/skills/scenario-modeling/SKILL.md +12 -2
  400. package/.agent-src/skills/scene-expander/SKILL.md +18 -6
  401. package/.agent-src/skills/script-writing/SKILL.md +13 -1
  402. package/.agent-src/skills/secrets-management/SKILL.md +13 -3
  403. package/.agent-src/skills/security/SKILL.md +12 -0
  404. package/.agent-src/skills/security-audit/SKILL.md +12 -0
  405. package/.agent-src/skills/sentry-integration/SKILL.md +12 -0
  406. package/.agent-src/skills/sequential-thinking/SKILL.md +12 -0
  407. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +12 -0
  408. package/.agent-src/skills/skill-management/SKILL.md +12 -0
  409. package/.agent-src/skills/skill-reviewer/SKILL.md +12 -0
  410. package/.agent-src/skills/skill-writing/SKILL.md +12 -0
  411. package/.agent-src/skills/sql-writing/SKILL.md +12 -0
  412. package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +12 -0
  413. package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -1
  414. package/.agent-src/skills/symfony-workflow/SKILL.md +12 -0
  415. package/.agent-src/skills/systematic-debugging/SKILL.md +53 -0
  416. package/.agent-src/skills/tailwind-engineer/SKILL.md +12 -0
  417. package/.agent-src/skills/tech-debt-tracker/SKILL.md +12 -2
  418. package/.agent-src/skills/technical-specification/SKILL.md +12 -0
  419. package/.agent-src/skills/terraform/SKILL.md +12 -0
  420. package/.agent-src/skills/terragrunt/SKILL.md +12 -0
  421. package/.agent-src/skills/test-driven-development/SKILL.md +12 -0
  422. package/.agent-src/skills/test-performance/SKILL.md +13 -1
  423. package/.agent-src/skills/testing-anti-patterns/SKILL.md +13 -1
  424. package/.agent-src/skills/threat-modeling/SKILL.md +12 -0
  425. package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +12 -0
  426. package/.agent-src/skills/token-optimizer/SKILL.md +12 -0
  427. package/.agent-src/skills/traefik/SKILL.md +12 -0
  428. package/.agent-src/skills/ui-component-architect/SKILL.md +12 -0
  429. package/.agent-src/skills/unit-economics-modeling/SKILL.md +12 -2
  430. package/.agent-src/skills/universal-project-analysis/SKILL.md +12 -0
  431. package/.agent-src/skills/upstream-contribute/SKILL.md +12 -0
  432. package/.agent-src/skills/using-git-worktrees/SKILL.md +12 -0
  433. package/.agent-src/skills/validate-feature-fit/SKILL.md +12 -0
  434. package/.agent-src/skills/verify-completion-evidence/SKILL.md +12 -0
  435. package/.agent-src/skills/video-director/SKILL.md +18 -6
  436. package/.agent-src/skills/vision-articulation/SKILL.md +12 -0
  437. package/.agent-src/skills/voc-extract/SKILL.md +12 -2
  438. package/.agent-src/skills/voice-and-tone-design/SKILL.md +12 -2
  439. package/.agent-src/templates/agent-settings.md +5 -5
  440. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  441. package/.agent-src/templates/agents/memory/ownership.example.yml +1 -1
  442. package/.agent-src/templates/agents/proposal.example.md +12 -0
  443. package/.agent-src/templates/command.md +1 -1
  444. package/.agent-src/templates/contexts/auth-model.md +2 -2
  445. package/.agent-src/templates/contexts/data-sensitivity.md +3 -3
  446. package/.agent-src/templates/contexts/deployment-order.md +2 -2
  447. package/.agent-src/templates/contexts/observability.md +3 -3
  448. package/.agent-src/templates/contexts/tenant-boundaries.md +3 -3
  449. package/.agent-src/templates/contexts.md +1 -1
  450. package/.agent-src/templates/hooks/pre-commit-frontmatter +66 -0
  451. package/.agent-src/templates/hooks/pre-commit-roadmap-progress +78 -39
  452. package/.agent-src/templates/rule.md +1 -1
  453. package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +7 -4
  454. package/.agent-src/templates/scripts/work_engine/cli.py +6 -6
  455. package/.agent-src/templates/scripts/work_engine/emitters.py +29 -4
  456. package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +3 -3
  457. package/.agent-src/templates/scripts/work_engine/orchestration.py +25 -11
  458. package/.agent-src/templates/scripts/work_engine/state.py +53 -0
  459. package/.agent-src/templates/skill-archive-note.md +4 -4
  460. package/.claude-plugin/marketplace.json +2 -2
  461. package/AGENTS.md +12 -9
  462. package/CHANGELOG.md +268 -90
  463. package/CONTRIBUTING.md +61 -0
  464. package/README.md +173 -558
  465. package/config/agent-settings.template.yml +11 -8
  466. package/config/discovery/packs.yml +162 -0
  467. package/config/discovery/unassigned-artefacts.yml +68 -0
  468. package/config/discovery/workspaces.yml +59 -0
  469. package/config/gitignore-block.txt +36 -23
  470. package/dist/cli/agent-config.js +199 -0
  471. package/dist/cli/agent-config.js.map +1 -0
  472. package/dist/cli/bash/runBash.js +40 -0
  473. package/dist/cli/bash/runBash.js.map +1 -0
  474. package/dist/cli/commands/doctorShell.js +91 -0
  475. package/dist/cli/commands/doctorShell.js.map +1 -0
  476. package/dist/cli/commands/packs.js +59 -0
  477. package/dist/cli/commands/packs.js.map +1 -0
  478. package/dist/cli/commands/settings.js +35 -0
  479. package/dist/cli/commands/settings.js.map +1 -0
  480. package/dist/cli/commands/uiServe.js +119 -0
  481. package/dist/cli/commands/uiServe.js.map +1 -0
  482. package/dist/cli/commands/versions.js +64 -0
  483. package/dist/cli/commands/versions.js.map +1 -0
  484. package/dist/cli/commands/workspaces.js +58 -0
  485. package/dist/cli/commands/workspaces.js.map +1 -0
  486. package/dist/cli/discovery/loadManifest.js +62 -0
  487. package/dist/cli/discovery/loadManifest.js.map +1 -0
  488. package/dist/cli/log/logger.js +41 -0
  489. package/dist/cli/log/logger.js.map +1 -0
  490. package/dist/cli/paths.js +60 -0
  491. package/dist/cli/paths.js.map +1 -0
  492. package/dist/cli/python/resolvePython.js +38 -0
  493. package/dist/cli/python/resolvePython.js.map +1 -0
  494. package/dist/cli/registry.js +77 -0
  495. package/dist/cli/registry.js.map +1 -0
  496. package/dist/discovery/deprecation-report.md +7 -0
  497. package/dist/discovery/discovery-manifest.json +9893 -0
  498. package/dist/discovery/discovery-manifest.json.sha256 +1 -0
  499. package/dist/discovery/discovery-manifest.summary.md +93 -0
  500. package/dist/discovery/orphan-report.md +10 -0
  501. package/dist/discovery/packs.json +1002 -0
  502. package/dist/discovery/trust-report.md +26 -0
  503. package/dist/discovery/workspaces.json +705 -0
  504. package/dist/mcp/awesome-mcp-servers.row.md +1 -0
  505. package/dist/mcp/mcp-cloudflare-catalogue.json +27 -0
  506. package/dist/mcp/registry-manifest.json +63 -0
  507. package/dist/router.json +1623 -0
  508. package/dist/server/app.js +125 -0
  509. package/dist/server/app.js.map +1 -0
  510. package/dist/server/io/atomicMultiWrite.js +204 -0
  511. package/dist/server/io/atomicMultiWrite.js.map +1 -0
  512. package/dist/server/io/atomicWrite.js +79 -0
  513. package/dist/server/io/atomicWrite.js.map +1 -0
  514. package/dist/server/io/substituteTemplate.js +87 -0
  515. package/dist/server/io/substituteTemplate.js.map +1 -0
  516. package/dist/server/io/yamlIO.js +162 -0
  517. package/dist/server/io/yamlIO.js.map +1 -0
  518. package/dist/server/port.js +97 -0
  519. package/dist/server/port.js.map +1 -0
  520. package/dist/server/routes/discovery.js +72 -0
  521. package/dist/server/routes/discovery.js.map +1 -0
  522. package/dist/server/routes/ping.js +57 -0
  523. package/dist/server/routes/ping.js.map +1 -0
  524. package/dist/server/routes/schema.js +41 -0
  525. package/dist/server/routes/schema.js.map +1 -0
  526. package/dist/server/routes/settings.js +236 -0
  527. package/dist/server/routes/settings.js.map +1 -0
  528. package/dist/server/routes/userMd.js +127 -0
  529. package/dist/server/routes/userMd.js.map +1 -0
  530. package/dist/server/routes/wizard.js +374 -0
  531. package/dist/server/routes/wizard.js.map +1 -0
  532. package/dist/server/schemas/settings.js +137 -0
  533. package/dist/server/schemas/settings.js.map +1 -0
  534. package/dist/server/token.js +75 -0
  535. package/dist/server/token.js.map +1 -0
  536. package/dist/server/writeRoot.js +84 -0
  537. package/dist/server/writeRoot.js.map +1 -0
  538. package/dist/server/writeRoot.test.js +91 -0
  539. package/dist/server/writeRoot.test.js.map +1 -0
  540. package/dist/shared/userMd/formAdapter.js +83 -0
  541. package/dist/shared/userMd/formAdapter.js.map +1 -0
  542. package/dist/shared/userMd/schema.js +46 -0
  543. package/dist/shared/userMd/schema.js.map +1 -0
  544. package/dist/shared/userMd/utils.js +88 -0
  545. package/dist/shared/userMd/utils.js.map +1 -0
  546. package/dist/ui/assets/index-D-DY1ywI.js +35 -0
  547. package/dist/ui/assets/index-D-DY1ywI.js.map +1 -0
  548. package/dist/ui/assets/index-Dqfhmg-d.css +1 -0
  549. package/dist/ui/index.html +14 -0
  550. package/docs/adrs/caveman/0001-default-off-until-bench.md +2 -2
  551. package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
  552. package/docs/adrs/router/0001-three-tier-routing.md +5 -5
  553. package/docs/adrs/schema/0001-json-schema-frontmatter.md +4 -4
  554. package/docs/adrs/schema/README.md +1 -1
  555. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +3 -3
  556. package/docs/architecture/setup-vs-settings-shared-surface.md +114 -0
  557. package/docs/architecture.md +3 -2
  558. package/docs/archive/CHANGELOG-pre-2.2.0.md +7 -7
  559. package/docs/archive/CHANGELOG-pre-3.0.0.md +130 -0
  560. package/docs/archive/CHANGELOG-pre-3.1.0.md +167 -0
  561. package/docs/catalog.md +92 -100
  562. package/docs/contracts/CHANGELOG-conventions.md +1 -1
  563. package/docs/contracts/STABILITY.md +1 -1
  564. package/docs/contracts/adr-architectural-consensus-mechanism.md +5 -5
  565. package/docs/contracts/adr-chat-history-split.md +1 -1
  566. package/docs/contracts/adr-implement-ticket-runtime.md +1 -1
  567. package/docs/contracts/adr-install-user-type-axis.md +1 -1
  568. package/docs/contracts/adr-mcp-runtime.md +2 -2
  569. package/docs/contracts/agent-user-schema.md +17 -11
  570. package/docs/contracts/ai-council-config.md +13 -13
  571. package/docs/contracts/audit-log-v1.md +2 -2
  572. package/docs/contracts/command-clusters.md +2 -2
  573. package/docs/contracts/compression-default-kill-criterion.md +3 -3
  574. package/docs/contracts/consumer-bridge.md +79 -0
  575. package/docs/contracts/decision-trace-v1.md +5 -5
  576. package/docs/contracts/discovery-manifest.md +209 -0
  577. package/docs/contracts/discovery-manifest.schema.json +219 -0
  578. package/docs/contracts/explain-trace.schema.json +144 -0
  579. package/docs/contracts/file-ownership-matrix.json +288 -328
  580. package/docs/contracts/file-ownership-matrix.md +1 -1
  581. package/docs/contracts/frontmatter-contract.md +140 -0
  582. package/docs/contracts/ghostwriter-schema.md +3 -3
  583. package/docs/contracts/gui-wizard.md +223 -0
  584. package/docs/contracts/hook-architecture-v1.md +10 -10
  585. package/docs/contracts/installer-agent-mode.md +137 -0
  586. package/docs/contracts/kernel-membership.md +5 -5
  587. package/docs/contracts/linter-structural-model.md +3 -3
  588. package/docs/contracts/load-context-schema.md +5 -5
  589. package/docs/contracts/local-server-api.md +134 -0
  590. package/docs/contracts/low-impact-corpus-format.md +1 -1
  591. package/docs/contracts/mcp-cloud-scope.md +2 -2
  592. package/docs/contracts/mcp-discovery-phase-notice.md +1 -1
  593. package/docs/contracts/mcp-phase-1-scope.md +5 -4
  594. package/docs/contracts/mcp-registry-manifest.schema.json +129 -0
  595. package/docs/contracts/mcp-tool-inventory.md +9 -9
  596. package/docs/contracts/mcp-tool-stub-envelope.md +1 -1
  597. package/docs/contracts/memory-visibility-v1.md +2 -2
  598. package/docs/contracts/multi-tool-projection-fidelity.md +3 -3
  599. package/docs/contracts/namespace.md +7 -7
  600. package/docs/contracts/one-off-script-lifecycle.md +1 -1
  601. package/docs/contracts/package-self-orientation.md +1 -1
  602. package/docs/contracts/provider-lifecycle.md +7 -7
  603. package/docs/contracts/router-blending.md +1 -1
  604. package/docs/contracts/rule-classification.md +2 -2
  605. package/docs/contracts/rule-router.md +4 -4
  606. package/docs/contracts/settings-api.md +207 -0
  607. package/docs/contracts/settings-gui-agent-mode.schema.json +128 -0
  608. package/docs/contracts/smoke-contracts.md +3 -3
  609. package/docs/contracts/tier-3-contrib-plugin.md +1 -1
  610. package/docs/contracts/trust-and-safety.md +144 -0
  611. package/docs/contracts/universal-skills.md +1 -1
  612. package/docs/contracts/write-engine.md +1 -1
  613. package/docs/customization.md +139 -13
  614. package/docs/decisions/ADR-001-kernel-swap-deferred.md +1 -1
  615. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +1 -1
  616. package/docs/decisions/ADR-004-rule-governance-pruning.md +8 -8
  617. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +5 -5
  618. package/docs/decisions/ADR-007-agent-discovery-scopes.md +16 -4
  619. package/docs/decisions/ADR-008-installed-tools-manifest.md +2 -2
  620. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +2 -2
  621. package/docs/decisions/ADR-011-domain-pack-readiness.md +4 -4
  622. package/docs/decisions/ADR-012-typescript-cli-shell.md +162 -0
  623. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +234 -0
  624. package/docs/decisions/ADR-014-gui-framework-choice.md +136 -0
  625. package/docs/decisions/ADR-015-discovery-manifest-contract.md +146 -0
  626. package/docs/decisions/ADR-016-installer-architecture.md +189 -0
  627. package/docs/decisions/ADR-017-monorepo-physical-layout.md +261 -0
  628. package/docs/decisions/ADR-018-trust-and-safety-layer.md +159 -0
  629. package/docs/decisions/ADR-019-router-json-dist-location.md +124 -0
  630. package/docs/decisions/ADR-020-global-only-consumer-scope.md +123 -0
  631. package/docs/decisions/ADR-021-deployment-shape.md +153 -0
  632. package/docs/decisions/ADR-rule-kernel-and-router.md +2 -2
  633. package/docs/decisions/INDEX.md +10 -0
  634. package/docs/deploy/connector-setup.md +129 -0
  635. package/docs/deploy/env-vars.md +70 -0
  636. package/docs/deploy/policy-cookbook.md +130 -0
  637. package/docs/deploy/quickstart.md +112 -0
  638. package/docs/distribution/mcp-submission-checklist.md +95 -0
  639. package/docs/distribution/public-install-smoke.md +68 -0
  640. package/docs/distribution/registries.md +55 -0
  641. package/docs/distribution/telemetry-privacy.md +128 -0
  642. package/docs/distribution/telemetry-schema.md +174 -0
  643. package/docs/distribution/topics-equivalents-decay-policy.md +51 -0
  644. package/docs/examples/agent-user.example.md +3 -1
  645. package/docs/featured-skills.md +95 -0
  646. package/docs/getting-started-by-role.md +19 -1
  647. package/docs/getting-started.md +5 -4
  648. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
  649. package/docs/guidelines/agent-infra/installed-tools-manifest.md +11 -8
  650. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +10 -1
  651. package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
  652. package/docs/guidelines/agent-infra/tool-integration.md +1 -1
  653. package/docs/guidelines/docs/readme-size-and-splitting.md +53 -1
  654. package/docs/guidelines/php/api-design.md +1 -1
  655. package/docs/guidelines/prompt-templates.md +2 -2
  656. package/docs/hook-payload-capture.md +3 -3
  657. package/docs/installation.md +39 -18
  658. package/docs/maintainers/dev-mode.md +105 -0
  659. package/docs/migrations/commands-1.15.0.md +3 -3
  660. package/docs/parity/bench-ruflo.json +1 -1
  661. package/docs/parity/ruflo.md +3 -3
  662. package/docs/profiles.md +1 -1
  663. package/docs/quality.md +2 -2
  664. package/docs/recruits/_template.md +3 -3
  665. package/docs/setup/enterprise-and-offline.md +3 -3
  666. package/docs/setup/mcp-server-docker.md +5 -3
  667. package/docs/setup/per-ide/claude-desktop.md +3 -2
  668. package/docs/skills-catalog.md +62 -18
  669. package/docs/wizard.md +156 -0
  670. package/llms.txt +61 -17
  671. package/package.json +63 -3
  672. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  673. package/scripts/_archive/README.md +2 -2
  674. package/scripts/_archive/_p4_migrate.py +1 -1
  675. package/scripts/_cli/cmd_doctor.py +155 -7
  676. package/scripts/_cli/cmd_explain.py +108 -3
  677. package/scripts/_cli/cmd_migrate.py +2 -2
  678. package/scripts/_cli/cmd_migrate_to_global.py +415 -0
  679. package/scripts/_cli/cmd_settings_migrate.py +146 -0
  680. package/scripts/_cli/explain_last/__init__.py +122 -0
  681. package/scripts/_cli/explain_last/assumptions.py +59 -0
  682. package/scripts/_cli/explain_last/council.py +105 -0
  683. package/scripts/_cli/explain_last/halt.py +44 -0
  684. package/scripts/_cli/explain_last/inputs.py +125 -0
  685. package/scripts/_cli/explain_last/memory.py +94 -0
  686. package/scripts/_cli/explain_last/provider.py +52 -0
  687. package/scripts/_cli/explain_last/render.py +52 -0
  688. package/scripts/_cli/explain_last/route.py +59 -0
  689. package/scripts/_cli/explain_last/scrubber.py +105 -0
  690. package/scripts/_cli/explain_last/sections/__init__.py +35 -0
  691. package/scripts/_cli/explain_last/sections/assumptions.py +21 -0
  692. package/scripts/_cli/explain_last/sections/council.py +27 -0
  693. package/scripts/_cli/explain_last/sections/halt.py +31 -0
  694. package/scripts/_cli/explain_last/sections/header.py +24 -0
  695. package/scripts/_cli/explain_last/sections/inputs.py +27 -0
  696. package/scripts/_cli/explain_last/sections/memory.py +21 -0
  697. package/scripts/_cli/explain_last/sections/pack.py +16 -0
  698. package/scripts/_cli/explain_last/sections/provider.py +26 -0
  699. package/scripts/_cli/explain_last/sections/route.py +22 -0
  700. package/scripts/_cli/explain_last/state_loader.py +76 -0
  701. package/scripts/_dispatch.bash +987 -0
  702. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  703. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  704. package/scripts/_lib/agent_settings.py +7 -4
  705. package/scripts/_lib/agent_src.py +157 -0
  706. package/scripts/_lib/agents_overlay.py +3 -3
  707. package/scripts/_phase4_bucket.py +210 -0
  708. package/scripts/agent-config +50 -947
  709. package/scripts/ai-video/adapters/higgsfield.sh +1 -1
  710. package/scripts/ai-video/adapters/sora.sh +1 -1
  711. package/scripts/ai-video/test-pipeline.sh +2 -2
  712. package/scripts/ai_council/_default_prices.py +5 -5
  713. package/scripts/ai_council/advisors.py +1 -1
  714. package/scripts/ai_council/clients.py +2 -2
  715. package/scripts/ai_council/compile_corpus.py +9 -8
  716. package/scripts/ai_council/config.py +3 -3
  717. package/scripts/ai_council/events_log.py +8 -4
  718. package/scripts/ai_council/low_impact_corpus.py +1 -1
  719. package/scripts/ai_council/low_impact_intake.py +1 -1
  720. package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +2 -2
  721. package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +1 -1
  722. package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +3 -3
  723. package/scripts/ai_council/pricing.py +8 -7
  724. package/scripts/ai_council/probation_gate.py +1 -1
  725. package/scripts/ai_council/redact_low_impact_entry.py +1 -1
  726. package/scripts/ai_council/session.py +13 -13
  727. package/scripts/ai_council/shadow_dispatch.py +2 -2
  728. package/scripts/annotate_discovery.py +149 -0
  729. package/scripts/audit_adr_coverage.py +1 -1
  730. package/scripts/audit_auto_rules.py +2 -2
  731. package/scripts/audit_cloud_compatibility.py +1 -1
  732. package/scripts/audit_command_surface.py +2 -2
  733. package/scripts/audit_likelihood.py +4 -4
  734. package/scripts/audit_overlap.py +3 -3
  735. package/scripts/audit_skill_descriptions.py +18 -6
  736. package/scripts/audit_user_type_axis.py +1 -1
  737. package/scripts/build_discovery_manifest.py +658 -0
  738. package/scripts/build_mcp_registry_manifest.py +181 -0
  739. package/scripts/build_rule_trigger_matrix.py +2 -2
  740. package/scripts/capture_showcase_session.py +1 -1
  741. package/scripts/chat_history.py +5 -5
  742. package/scripts/check_always_budget.py +7 -2
  743. package/scripts/check_artefact_checksums.py +104 -0
  744. package/scripts/check_cluster_patterns.py +20 -4
  745. package/scripts/check_command_count_messaging.py +33 -14
  746. package/scripts/check_council_layout.py +26 -20
  747. package/scripts/check_council_references.py +53 -14
  748. package/scripts/check_discovery_determinism.py +70 -0
  749. package/scripts/check_kernel_rule_bundle.py +2 -2
  750. package/scripts/check_no_roadmap_refs.py +2 -2
  751. package/scripts/check_one_off_location.py +1 -1
  752. package/scripts/check_overlay_cascade_subdirs.py +7 -3
  753. package/scripts/check_public_links.py +2 -2
  754. package/scripts/check_references.py +19 -23
  755. package/scripts/check_release_includes_discovery.py +61 -0
  756. package/scripts/check_reply_consistency.py +32 -9
  757. package/scripts/check_template_pin_drift.py +24 -7
  758. package/scripts/check_token_optimizer_freshness.py +18 -3
  759. package/scripts/ci_summary.py +2 -2
  760. package/scripts/ci_time_ratio.py +1 -1
  761. package/scripts/command_suggester/__init__.py +1 -1
  762. package/scripts/compile_router.py +34 -2
  763. package/scripts/compress.py +162 -44
  764. package/scripts/config/presets.py +19 -1
  765. package/scripts/config/profiles.py +16 -1
  766. package/scripts/context_hygiene_hook.py +2 -2
  767. package/scripts/council_cli.py +22 -22
  768. package/scripts/council_prune.py +3 -3
  769. package/scripts/discovery_stats.py +70 -0
  770. package/scripts/expected_perms.json +47 -0
  771. package/scripts/extract_audit_patterns.py +2 -2
  772. package/scripts/gen_discovery_baseline.py +127 -0
  773. package/scripts/generate_index.py +78 -46
  774. package/scripts/generate_ownership_matrix.py +99 -44
  775. package/scripts/generate_pack_manifests.py +183 -0
  776. package/scripts/hook_manifest.yaml +5 -5
  777. package/scripts/hooks/cline-dispatcher.sh +1 -1
  778. package/scripts/hooks/cowork-dispatcher.sh +1 -1
  779. package/scripts/hooks/dispatch_hook.py +3 -3
  780. package/scripts/hooks/gemini-dispatcher.sh +1 -1
  781. package/scripts/hooks/replay_hook.py +1 -1
  782. package/scripts/hooks/state_io.py +5 -5
  783. package/scripts/hooks_doctor.py +4 -4
  784. package/scripts/install +18 -1
  785. package/scripts/install-hooks.sh +2 -2
  786. package/scripts/install.py +937 -62
  787. package/scripts/install.sh +147 -27
  788. package/scripts/inventory_frontmatter.py +1 -1
  789. package/scripts/lint_agents_layout.py +183 -0
  790. package/scripts/lint_agents_md.py +1 -1
  791. package/scripts/lint_archived_skills.py +35 -19
  792. package/scripts/lint_artefact_frontmatter.py +180 -0
  793. package/scripts/lint_bench_corpus.py +14 -2
  794. package/scripts/lint_command_tiers.py +15 -2
  795. package/scripts/lint_discovery_manifest.py +136 -0
  796. package/scripts/lint_discovery_vocabulary.py +148 -0
  797. package/scripts/lint_explain_trace.py +80 -0
  798. package/scripts/lint_featured_skills.py +139 -0
  799. package/scripts/lint_framework_leakage.py +33 -6
  800. package/scripts/lint_framework_leakage_allowlist.json +63 -62
  801. package/scripts/lint_ghostwriter_source.py +1 -1
  802. package/scripts/lint_global_paths.py +147 -0
  803. package/scripts/lint_load_context.py +3 -3
  804. package/scripts/lint_mcp_registry_manifest.py +69 -0
  805. package/scripts/lint_media_policy_linkage.py +6 -6
  806. package/scripts/lint_orchestration_dsl.py +6 -3
  807. package/scripts/lint_pack_boundaries.py +147 -0
  808. package/scripts/lint_pack_first_win.py +103 -0
  809. package/scripts/lint_positioning.py +143 -0
  810. package/scripts/lint_readme_jargon.py +131 -0
  811. package/scripts/lint_readme_size.py +33 -0
  812. package/scripts/lint_rule_interactions.py +23 -5
  813. package/scripts/lint_rule_tiers.py +14 -5
  814. package/scripts/lint_skill_tools.py +1 -1
  815. package/scripts/lint_topics_yaml.py +89 -0
  816. package/scripts/lint_trust_coherence.py +212 -0
  817. package/scripts/mcp_server/consumer_tool_catalog.json +3 -3
  818. package/scripts/mcp_server/telemetry.py +2 -2
  819. package/scripts/mcp_server/tools.py +27 -11
  820. package/scripts/mcp_telemetry_health.py +2 -2
  821. package/scripts/mcp_telemetry_store.py +1 -1
  822. package/scripts/measure_augment_budget.py +3 -3
  823. package/scripts/measure_density.py +2 -2
  824. package/scripts/measure_frugality_savings.py +3 -3
  825. package/scripts/measure_roadmap_trajectory.py +1 -1
  826. package/scripts/measure_rule_budget.py +25 -7
  827. package/scripts/memory_report.py +1 -1
  828. package/scripts/migrate_command_suggestions.py +3 -3
  829. package/scripts/minimal_safe_diff_hook.py +1 -1
  830. package/scripts/move_artefact.py +143 -0
  831. package/scripts/new_skill.py +148 -0
  832. package/scripts/onboarding_gate_hook.py +4 -4
  833. package/scripts/plan_physical_move.py +353 -0
  834. package/scripts/prepack-check.mjs +62 -0
  835. package/scripts/probe_projection_fidelity.py +2 -2
  836. package/scripts/refine_ticket_detect.py +31 -8
  837. package/scripts/schemas/command.schema.json +45 -1
  838. package/scripts/schemas/persona.schema.json +1 -1
  839. package/scripts/schemas/rule.schema.json +44 -4
  840. package/scripts/schemas/skill.schema.json +41 -1
  841. package/scripts/score_skill_selection.py +1 -1
  842. package/scripts/skill_collision_clusters.py +1 -1
  843. package/scripts/skill_linter.py +250 -120
  844. package/scripts/skill_overlap.py +1 -1
  845. package/scripts/skill_tools/run_block_d_eval.py +1 -1
  846. package/scripts/skill_trigger_eval.py +28 -8
  847. package/scripts/skill_usage_collect.py +3 -3
  848. package/scripts/skill_usage_report.py +3 -3
  849. package/scripts/smoke/kernel.sh +1 -1
  850. package/scripts/smoke/router.sh +24 -5
  851. package/scripts/smoke/skills.sh +15 -7
  852. package/scripts/smoke_quickstart.py +12 -3
  853. package/scripts/snapshot_agent_outputs.py +144 -0
  854. package/scripts/spotcheck_thin_root.py +1 -1
  855. package/scripts/sync_github_metadata.py +147 -0
  856. package/scripts/sync_gitignore.py +15 -5
  857. package/scripts/update_counts.py +45 -17
  858. package/scripts/update_prices.py +4 -3
  859. package/scripts/validate_decision_engine.py +9 -1
  860. package/scripts/validate_discovery_manifest.py +94 -0
  861. package/scripts/validate_frontmatter.py +39 -20
  862. package/scripts/verify_before_complete_hook.py +1 -1
  863. package/scripts/verify_physical_move.py +185 -0
  864. package/scripts/verify_roadmap_closure.py +1 -1
  865. package/templates/agent-user.md +34 -0
  866. package/templates/agent-user.yml +21 -0
  867. package/templates/minimal/agents-overrides-readme.md +46 -0
  868. package/templates/minimal/overrides-gitkeep +2 -0
  869. package/.agent-src/commands/onboard.md +0 -467
  870. package/templates/minimal/agents-gitkeep +0 -2
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env python3
2
+ """Build `dist/mcp/registry-manifest.json` + the two rendered payloads.
3
+
4
+ Reads three on-disk sources:
5
+ * `package.json` — name, version, description, homepage, repository
6
+ * `.github/topics.yml` — topics list (for registries that accept tags)
7
+ * `workers/mcp/content.json` — `tool_catalog` (tools_count, install_hint_stdio)
8
+ * `dist/discovery/discovery-manifest.json` — artefact_count + scanner_version (HARD prereq per AI-Council R5)
9
+
10
+ Emits:
11
+ * `dist/mcp/registry-manifest.json` — source-of-truth manifest
12
+ * `dist/mcp/awesome-mcp-servers.row.md` — single Markdown row
13
+ * `dist/mcp/mcp-cloudflare-catalogue.json` — single JSON catalogue entry
14
+
15
+ Lifecycle state (`status`, `submitted_at`, `pr_url`, `last_verified`) is
16
+ **preserved** from the previous manifest. First-time generation seeds
17
+ `status=pending` and nulls the rest. Status transitions are hand-edits
18
+ under maintainer review — see `docs/distribution/mcp-submission-checklist.md`.
19
+
20
+ CLI: `--write` / `--strict` / `--quiet` — matches the discovery scanner shape.
21
+
22
+ Schema: `docs/contracts/mcp-registry-manifest.schema.json`
23
+ Roadmap: agents/roadmaps/strategic-visibility-mcp-topics-positioning.md Phase 2.
24
+ """
25
+ from __future__ import annotations
26
+
27
+ import argparse
28
+ import datetime as _dt
29
+ import json
30
+ import re
31
+ import sys
32
+ from pathlib import Path
33
+ from typing import Any
34
+
35
+ import yaml
36
+
37
+ ROOT = Path(__file__).resolve().parents[1]
38
+ PKG_FILE = ROOT / "package.json"
39
+ TOPICS_FILE = ROOT / ".github" / "topics.yml"
40
+ CONTENT_FILE = ROOT / "workers" / "mcp" / "content.json"
41
+ DISCOVERY_FILE = ROOT / "dist" / "discovery" / "discovery-manifest.json"
42
+ OUT_DIR = ROOT / "dist" / "mcp"
43
+ OUT_MANIFEST = OUT_DIR / "registry-manifest.json"
44
+ OUT_ROW_MD = OUT_DIR / "awesome-mcp-servers.row.md"
45
+ OUT_CF_JSON = OUT_DIR / "mcp-cloudflare-catalogue.json"
46
+
47
+ REGISTRIES_SEED = [
48
+ {
49
+ "id": "awesome-mcp-servers",
50
+ "label": "punkpeye/awesome-mcp-servers",
51
+ "listing_format": "markdown-row",
52
+ "submission_url": "https://github.com/punkpeye/awesome-mcp-servers",
53
+ "rendered_payload": "dist/mcp/awesome-mcp-servers.row.md",
54
+ },
55
+ {
56
+ "id": "mcp-cloudflare-catalogue",
57
+ "label": "Cloudflare MCP catalogue",
58
+ "listing_format": "json-entry",
59
+ "submission_url": "https://github.com/cloudflare/mcp-server-cloudflare",
60
+ "rendered_payload": "dist/mcp/mcp-cloudflare-catalogue.json",
61
+ },
62
+ ]
63
+
64
+
65
+ def _repo_url(pkg: dict[str, Any]) -> str:
66
+ raw = (pkg.get("repository") or {}).get("url") or ""
67
+ return re.sub(r"^git\+|\.git$", "", raw)
68
+
69
+
70
+ def _build(now_utc: _dt.datetime) -> dict[str, Any]:
71
+ pkg = json.loads(PKG_FILE.read_text(encoding="utf-8"))
72
+ topics_doc = yaml.safe_load(TOPICS_FILE.read_text(encoding="utf-8")) or {}
73
+ content = json.loads(CONTENT_FILE.read_text(encoding="utf-8"))
74
+ if not DISCOVERY_FILE.exists():
75
+ sys.exit(
76
+ "ERROR: dist/discovery/discovery-manifest.json missing. R3 (discovery) "
77
+ "is a hard prerequisite per the AI-Council external review. "
78
+ "Run `npm run build:discovery` first."
79
+ )
80
+ discovery = json.loads(DISCOVERY_FILE.read_text(encoding="utf-8"))
81
+
82
+ tc = content["tool_catalog"]
83
+ prior = json.loads(OUT_MANIFEST.read_text(encoding="utf-8")) if OUT_MANIFEST.exists() else {}
84
+ prior_reg = {r["id"]: r for r in (prior.get("registries") or [])}
85
+
86
+ registries: list[dict[str, Any]] = []
87
+ for seed in REGISTRIES_SEED:
88
+ prev = prior_reg.get(seed["id"], {})
89
+ registries.append({
90
+ **seed,
91
+ "status": prev.get("status", "pending"),
92
+ "submitted_at": prev.get("submitted_at"),
93
+ "pr_url": prev.get("pr_url"),
94
+ "last_verified": prev.get("last_verified"),
95
+ })
96
+
97
+ return {
98
+ "version": 1,
99
+ "generated_at": now_utc.strftime("%Y-%m-%d"),
100
+ "package": {
101
+ "name": pkg["name"],
102
+ "version": pkg["version"],
103
+ "description": pkg["description"],
104
+ "homepage": pkg["homepage"],
105
+ "repository": _repo_url(pkg),
106
+ },
107
+ "server": {
108
+ "name": "agent-config-mcp",
109
+ "transports": ["stdio", "worker"],
110
+ "tools_count": len(tc["tools"]),
111
+ "install_hint_stdio": tc["install_hint_stdio"],
112
+ },
113
+ "topics": sorted(topics_doc.get("topics") or []),
114
+ "discovery": {
115
+ "artefact_count": len(discovery["artefacts"]),
116
+ "scanner_version": discovery["scanner_version"],
117
+ },
118
+ "registries": registries,
119
+ }
120
+
121
+
122
+ def _render_row_md(m: dict[str, Any]) -> str:
123
+ pkg = m["package"]
124
+ srv = m["server"]
125
+ transports = ", ".join(srv["transports"])
126
+ return (
127
+ f"| [{pkg['name']}]({pkg['homepage']}) "
128
+ f"| {pkg['description']} "
129
+ f"| {srv['tools_count']} tools ({transports}) "
130
+ f"| `{srv['install_hint_stdio']}` |\n"
131
+ )
132
+
133
+
134
+ def _render_cf_json(m: dict[str, Any]) -> str:
135
+ pkg = m["package"]
136
+ srv = m["server"]
137
+ payload = {
138
+ "name": srv["name"],
139
+ "description": pkg["description"],
140
+ "homepage": pkg["homepage"],
141
+ "repository": pkg["repository"],
142
+ "transports": srv["transports"],
143
+ "tools_count": srv["tools_count"],
144
+ "install_hint_stdio": srv["install_hint_stdio"],
145
+ "topics": m["topics"],
146
+ }
147
+ return json.dumps(payload, indent=2, sort_keys=True) + "\n"
148
+
149
+
150
+ def main() -> int:
151
+ ap = argparse.ArgumentParser(description=__doc__.splitlines()[0])
152
+ ap.add_argument("--write", action="store_true", help="write outputs to disk (default: print to stdout)")
153
+ ap.add_argument("--strict", action="store_true", help="exit 2 if on-disk outputs would change")
154
+ ap.add_argument("--quiet", action="store_true")
155
+ args = ap.parse_args()
156
+
157
+ now_utc = _dt.datetime.now(_dt.timezone.utc)
158
+ manifest = _build(now_utc)
159
+ manifest_text = json.dumps(manifest, indent=2, sort_keys=True) + "\n"
160
+ row_md = _render_row_md(manifest)
161
+ cf_json = _render_cf_json(manifest)
162
+
163
+ outputs = [(OUT_MANIFEST, manifest_text), (OUT_ROW_MD, row_md), (OUT_CF_JSON, cf_json)]
164
+ changed = [p for p, t in outputs if not p.exists() or p.read_text(encoding="utf-8") != t]
165
+
166
+ if args.write:
167
+ OUT_DIR.mkdir(parents=True, exist_ok=True)
168
+ for p, t in outputs:
169
+ p.write_text(t, encoding="utf-8")
170
+ if not args.quiet:
171
+ verb = "wrote" if changed else "unchanged"
172
+ print(f"\u2705 {verb} {len(outputs)} file(s) under dist/mcp/")
173
+ else:
174
+ if not args.quiet:
175
+ print(manifest_text, end="")
176
+
177
+ return 2 if (args.strict and changed and not args.write) else 0
178
+
179
+
180
+ if __name__ == "__main__":
181
+ raise SystemExit(main())
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python3
2
- """Build agents/contexts/rule-trigger-matrix.md.
2
+ """Build agents/settings/contexts/rule-trigger-matrix.md.
3
3
 
4
4
  Emits a single matrix mapping every rule in `.agent-src.uncompressed/rules/`
5
5
  to its trigger event, observability, enforcement surface, hook-cost
@@ -113,7 +113,7 @@ add("commit-conventions.md", "commit message draft", "hook", "output",
113
113
  add("docs-sync.md", "file-edit on .augment/{skills,rules,commands}/**", "hook",
114
114
  "tool-call", "medium", "2a",
115
115
  notes="Detect add/rename/delete; remind to update count + cross-refs")
116
- add("agent-docs.md", "file-edit on agents/docs/, AGENTS.md", "hook",
116
+ add("agent-docs.md", "file-edit on agents/reference/docs/, AGENTS.md", "hook",
117
117
  "tool-call", "medium", "2a", notes="Path-pattern based marker")
118
118
  add("upstream-proposal.md", "skill/rule create event", "hook", "output",
119
119
  "medium", "2a", notes="Marker after new artifact lands")
@@ -11,7 +11,7 @@ Two subcommands:
11
11
  task_class, metrics).
12
12
 
13
13
  metrics Compute one or all of the four outcome metrics defined in
14
- `agents/contexts/outcome-baseline.md` from a captured session
14
+ `agents/settings/contexts/outcome-baseline.md` from a captured session
15
15
  file. Output as text table or JSON.
16
16
 
17
17
  The four metrics:
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """Persistent chat-history log for crash recovery.
3
3
 
4
- Maintains `agents/.agent-chat-history` — a JSONL file whose
4
+ Maintains `agents/runtime/.agent-chat-history` — a JSONL file whose
5
5
  first line is a header (schema version, started timestamp, cadence
6
6
  frequency) and whose remaining lines are append-only entries (user
7
7
  messages, phases, tool calls, questions, answers, decisions, commits).
@@ -12,7 +12,7 @@ sessions coexist in one file; each entry self-identifies. No ownership
12
12
  layer, no sidecar, no auto-adopt — every hook invocation simply appends
13
13
  with its own session tag.
14
14
 
15
- File path defaults to `agents/.agent-chat-history` (relative to CWD) and
15
+ File path defaults to `agents/runtime/.agent-chat-history` (relative to CWD) and
16
16
  can be overridden via `$AGENT_CHAT_HISTORY_FILE` (used by tests).
17
17
 
18
18
  Usage:
@@ -42,7 +42,7 @@ from collections import Counter, deque
42
42
  from pathlib import Path
43
43
  from typing import Any
44
44
 
45
- DEFAULT_FILE = "agents/.agent-chat-history"
45
+ DEFAULT_FILE = "agents/runtime/.agent-chat-history"
46
46
  DEFAULT_SETTINGS_FILE = ".agent-settings.yml"
47
47
  SCHEMA_VERSION = 4
48
48
  DEFAULT_MAX_SESSIONS = 5
@@ -691,7 +691,7 @@ CADENCE_EVENTS = {
691
691
  # internal VALID_HOOK_EVENTS. Used by hook_dispatch() to translate
692
692
  # stdin JSON payloads coming from Claude Code, Augment Code, Cursor,
693
693
  # Cline, Windsurf, and Gemini CLI into a unified entry-point. Sourced
694
- # from agents/contexts/chat-history-platform-hooks.md.
694
+ # from agents/settings/contexts/chat-history-platform-hooks.md.
695
695
  PLATFORM_EVENT_MAP: dict[str, dict[str, str]] = {
696
696
  "claude": {
697
697
  "SessionStart": "session_start",
@@ -716,7 +716,7 @@ PLATFORM_EVENT_MAP: dict[str, dict[str, str]] = {
716
716
  # with `--setting-sources user`. Until those are resolved, the
717
717
  # mapping below is dispatcher-ready but the lifecycle events do
718
718
  # not actually fire from Cowork. See
719
- # `agents/contexts/chat-history-platform-hooks.md` § Cowork.
719
+ # `agents/settings/contexts/chat-history-platform-hooks.md` § Cowork.
720
720
  "cowork": {
721
721
  "SessionStart": "session_start",
722
722
  "UserPromptSubmit": "user_prompt",
@@ -56,9 +56,14 @@ CONCENTRATION_TOP3_PCT = 0.30
56
56
  # the measured extended-size ceiling at the day road-to-path-fixes was
57
57
  # closed; growth above the ceiling regresses CI. Future kernel-aware
58
58
  # trimming work retires entries here.
59
+ # R3 Phase 4 mass-annotation added 12 lines of ADR-013 discovery
60
+ # frontmatter (workspaces / packs / lifecycle / trust / install — 189
61
+ # chars) to every always-rule. Both ceilings below were re-baselined
62
+ # +189 to absorb that frontmatter-only growth, mirroring the Phase 2
63
+ # feedback-consolidation `tier: "safety-floor"` precedent (+21).
59
64
  KNOWN_CONCENTRATION_BREACHES: dict[str, int] = {
60
- "language-and-tone.md": 3_985,
61
- "no-cheap-questions.md": 3_530,
65
+ "language-and-tone.md": 4_174,
66
+ "no-cheap-questions.md": 3_719,
62
67
  }
63
68
  # Top-3 non-floor concentration ceiling — same rationale as the
64
69
  # per-rule allowlist above. The current top-3 sum (language-and-tone +
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env python3
2
+ """Phase-6 checksum-stability gate (monorepo Phase 2, ADR-015).
3
+
4
+ For every artefact in the committed
5
+ ``dist/discovery/discovery-manifest.json``, recompute the per-artefact
6
+ sha256 using the same normalization as
7
+ ``scripts/build_discovery_manifest.py::_artefact_checksum`` and assert
8
+ it matches the manifest entry.
9
+
10
+ Distinct from ``validate-discovery-manifest`` (which rebuilds the
11
+ whole manifest in memory and diffs): this gate is the focused
12
+ "does the committed checksum still match the source bytes?" check
13
+ that third-party consumers can run to verify the manifest contract.
14
+
15
+ CLI:
16
+ python scripts/check_artefact_checksums.py [--manifest PATH] [--quiet]
17
+
18
+ Exit codes:
19
+ 0 every artefact checksum matches its source bytes
20
+ 1 one or more checksums drifted (manifest is stale, or source moved)
21
+ """
22
+ from __future__ import annotations
23
+
24
+ import argparse
25
+ import json
26
+ import sys
27
+ from pathlib import Path
28
+
29
+ ROOT = Path(__file__).resolve().parents[1]
30
+ DEFAULT_MANIFEST = ROOT / "dist" / "discovery" / "discovery-manifest.json"
31
+
32
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
33
+ # Import the same hashing primitive the builder uses so normalisation
34
+ # stays in lockstep with the generator. (ADR-015 §Phase 6.)
35
+ from build_discovery_manifest import _artefact_checksum # noqa: E402
36
+ from validate_frontmatter import parse_frontmatter # noqa: E402
37
+
38
+
39
+ def _frontmatter(path: Path) -> dict | None:
40
+ if not path.exists():
41
+ return None
42
+ text = path.read_text(encoding="utf-8", errors="replace")
43
+ fm, _ = parse_frontmatter(text)
44
+ return fm
45
+
46
+
47
+ def _check(manifest_path: Path) -> tuple[int, list[str]]:
48
+ if not manifest_path.exists():
49
+ return 1, [f"manifest not found at {manifest_path}"]
50
+
51
+ try:
52
+ manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
53
+ except json.JSONDecodeError as exc:
54
+ return 1, [f"invalid JSON: {exc}"]
55
+
56
+ errors: list[str] = []
57
+ for art in manifest.get("artefacts", []):
58
+ rel = art.get("path")
59
+ recorded = art.get("checksum")
60
+ if not isinstance(rel, str) or not isinstance(recorded, str):
61
+ errors.append(f"malformed entry: {art!r}")
62
+ continue
63
+ src = ROOT / rel
64
+ if not src.exists():
65
+ errors.append(f"{rel}: source file missing")
66
+ continue
67
+ actual = _artefact_checksum(src, _frontmatter(src))
68
+ if actual != recorded:
69
+ errors.append(
70
+ f"{rel}: checksum drift "
71
+ f"(manifest={recorded[:23]}…, source={actual[:23]}…)"
72
+ )
73
+ return (0 if not errors else 1), errors
74
+
75
+
76
+ def main(argv: list[str] | None = None) -> int:
77
+ parser = argparse.ArgumentParser(description=__doc__.splitlines()[0])
78
+ parser.add_argument("--manifest", type=Path, default=DEFAULT_MANIFEST)
79
+ parser.add_argument("--quiet", action="store_true")
80
+ args = parser.parse_args(argv)
81
+
82
+ code, errors = _check(args.manifest)
83
+ if code != 0:
84
+ for e in errors[:20]:
85
+ print(f"error: {e}", file=sys.stderr)
86
+ if len(errors) > 20:
87
+ print(f" ... and {len(errors) - 20} more", file=sys.stderr)
88
+ print(
89
+ "checksum-stability gate failed — run `task build-discovery` "
90
+ "and commit dist/discovery/.",
91
+ file=sys.stderr,
92
+ )
93
+ return 1
94
+ if not args.quiet:
95
+ manifest = json.loads(args.manifest.read_text(encoding="utf-8"))
96
+ print(
97
+ f"OK {args.manifest.relative_to(ROOT)}: "
98
+ f"{len(manifest['artefacts'])} artefact checksums verified."
99
+ )
100
+ return 0
101
+
102
+
103
+ if __name__ == "__main__":
104
+ sys.exit(main())
@@ -32,9 +32,25 @@ from dataclasses import dataclass, field
32
32
  from pathlib import Path
33
33
 
34
34
  ROOT = Path(__file__).resolve().parent.parent
35
- COMMANDS_DIR = ROOT / ".agent-src.uncompressed/commands"
35
+ sys.path.insert(0, str(ROOT / "scripts"))
36
+ from _lib.agent_src import resolve_logical # noqa: E402
37
+
36
38
  CONTRACT = ROOT / "docs/contracts/command-clusters.md"
37
39
 
40
+
41
+ def _resolve_command(cluster: str) -> Path:
42
+ """Return the physical path for ``commands/<cluster>.md``.
43
+
44
+ Walks every artefact root (legacy + packages/*) and returns the first
45
+ match. If none exist, returns the conventional legacy path so the
46
+ caller can surface a missing-file error.
47
+ """
48
+ rel = f"commands/{cluster}.md"
49
+ hit = resolve_logical(rel)
50
+ if hit is not None:
51
+ return hit
52
+ return ROOT / ".agent-src.uncompressed" / rel
53
+
38
54
  REQUIRED_SECTIONS = ["## Sub-commands", "## Dispatch", "## Rules"]
39
55
  TABLE_HEADER_RE = re.compile(
40
56
  r"\|\s*Sub-command\s*\|\s*Routes to\s*\|\s*Purpose\s*\|", re.IGNORECASE
@@ -87,10 +103,10 @@ def parse_frontmatter(text: str) -> tuple[dict[str, str], str]:
87
103
 
88
104
 
89
105
  def check_dispatcher(cluster: str) -> FileReport:
90
- path = COMMANDS_DIR / f"{cluster}.md"
106
+ path = _resolve_command(cluster)
91
107
  rep = FileReport(path=path, cluster=cluster)
92
108
  if not path.exists():
93
- rep.errors.append(f"dispatcher file missing: {path.relative_to(ROOT)}")
109
+ rep.errors.append(f"dispatcher file missing: commands/{cluster}.md")
94
110
  return rep
95
111
  text = path.read_text(encoding="utf-8")
96
112
  fm, body = parse_frontmatter(text)
@@ -136,7 +152,7 @@ def main() -> int:
136
152
 
137
153
  # Flag clusters: only assert the file exists; legacy shape is preserved.
138
154
  flag_missing = [n for n in flag_clusters
139
- if not (COMMANDS_DIR / f"{n}.md").exists()]
155
+ if not _resolve_command(n).exists()]
140
156
  if flag_missing:
141
157
  print(f"❌ Flag-cluster file(s) missing: {flag_missing}")
142
158
  return 1
@@ -18,13 +18,13 @@ Patterns checked (per file):
18
18
 
19
19
  README.md
20
20
  hero badge "/badge/Commands-{N}-…" → active
21
- browse line "Browse all {N} active commands" active
22
- browse meta "{N} files total" total
23
- browse meta "{N} are deprecation shims" → shims
24
- tools blurb "{N} native commands" → active
21
+ (Prose phrasings "Browse all {N} active commands" and
22
+ "{N} native commands" were retired in the modernized
23
+ README the badge alone now carries the count.)
25
24
 
26
25
  AGENTS.md
27
26
  tree "commands/ ({N} files — {A} active + {S} deprecation shims)"
27
+ (Thin-Root: only checked when a `commands/` tree block exists.)
28
28
 
29
29
  docs/getting-started.md
30
30
  browse line "Browse all {N} active commands" → active
@@ -38,10 +38,12 @@ import re
38
38
  import sys
39
39
  from pathlib import Path
40
40
 
41
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
42
+ from _lib.agent_src import artefact_roots # noqa: E402
43
+
41
44
  QUIET = "--quiet" in sys.argv
42
45
 
43
46
  ROOT = Path(__file__).resolve().parent.parent
44
- COMMANDS_DIR = ROOT / ".agent-src.uncompressed" / "commands"
45
47
  README = ROOT / "README.md"
46
48
  AGENTS = ROOT / "AGENTS.md"
47
49
  GETTING_STARTED = ROOT / "docs" / "getting-started.md"
@@ -50,14 +52,33 @@ FM_RE = re.compile(r"^---\s*\n(.*?)\n---", re.DOTALL)
50
52
  SUPERSEDED_RE = re.compile(r"^superseded_by:\s*\S", re.MULTILINE)
51
53
 
52
54
 
55
+ def _command_files() -> list[Path]:
56
+ """Every command ``*.md`` file across all source roots (legacy + packages/*).
57
+
58
+ Multi-root aware per ADR-017: post-move the commands live under
59
+ ``packages/<pack>/.agent-src.uncompressed/commands/``, and the
60
+ canonical count is the union across packs (deduped by logical path).
61
+ """
62
+ seen: dict[str, Path] = {}
63
+ for root in artefact_roots():
64
+ cmd_dir = root / "commands"
65
+ if not cmd_dir.is_dir():
66
+ continue
67
+ for f in cmd_dir.rglob("*.md"):
68
+ if f.name == "AGENTS.md":
69
+ continue
70
+ rel = f.relative_to(cmd_dir).as_posix()
71
+ seen.setdefault(rel, f)
72
+ return sorted(seen.values())
73
+
74
+
53
75
  def canonical_counts() -> tuple[int, int, int]:
54
- if not COMMANDS_DIR.is_dir():
55
- print(f"❌ {COMMANDS_DIR.relative_to(ROOT)} not found", file=sys.stderr)
76
+ files = _command_files()
77
+ if not files:
78
+ print("❌ no commands/ directory found under any artefact root", file=sys.stderr)
56
79
  sys.exit(1)
57
80
  total = shims = 0
58
- for f in COMMANDS_DIR.rglob("*.md"):
59
- if f.name == "AGENTS.md":
60
- continue
81
+ for f in files:
61
82
  total += 1
62
83
  m = FM_RE.match(f.read_text(encoding="utf-8"))
63
84
  fm = m.group(1) if m else ""
@@ -83,11 +104,9 @@ def main() -> int:
83
104
  print(f"Canonical counts: {total} files · {shims} shims · {active} active")
84
105
 
85
106
  checks = [
86
- # README.md
107
+ # README.md — modernized: badge is the sole count surface
87
108
  (README, r"/badge/Commands-(\d+)-", active, "hero badge"),
88
- (README, r"Browse all (\d+) active commands", active, "browse line"),
89
- (README, r"\+ (\d+) native commands\)", active, "tools blurb"),
90
- # docs/getting-started.md
109
+ # docs/getting-started.md still carries the prose browse line
91
110
  (GETTING_STARTED, r"Browse all (\d+) active commands", active, "browse line"),
92
111
  ]
93
112
  # Shim-specific messaging only applies during a deprecation window.
@@ -4,21 +4,23 @@
4
4
  Council artefacts (questions, responses, sessions) belong in three
5
5
  canonical directories under `agents/`:
6
6
 
7
- - agents/council-questions/<topic-slug>.md (paired with roadmap/ADR)
8
- - agents/council-responses/<topic-slug>.json (paired with question)
9
- - agents/council-sessions/<UTC-timestamp>.json (ad-hoc sessions)
7
+ - agents/runtime/council/questions/<topic-slug>.md (paired with roadmap/ADR)
8
+ - agents/runtime/council/responses/<topic-slug>.json (paired with question)
9
+ - agents/runtime/council/sessions/<UTC-timestamp>.json (ad-hoc sessions)
10
10
 
11
11
  The three canonical dirs are gitignored — the linter therefore only
12
12
  catches **misplacement**, not naming-conventions inside the dirs:
13
13
 
14
14
  - Files at agents/ root with a council-* or .council-* prefix
15
- (e.g. agents/council-question-foo.md, agents/.council-foo.md).
15
+ (e.g. agents/council-foo.md, agents/.council-foo.md).
16
16
  - council-* files under any other subdirectory of agents/.
17
17
 
18
- `agents/audit-*/` directories are exempt — historical audit bundles
19
- are cohesive, checked-in narratives (the canonical council dirs are
20
- gitignored) and may legitimately include council-* artefacts as part
21
- of the audit's evidence trail.
18
+ `agents/evidence/audits/` is exempt — historical audit bundles are cohesive,
19
+ checked-in narratives (the canonical council dirs are gitignored)
20
+ and may legitimately include council-* artefacts as part of the
21
+ audit's evidence trail. `agents/runtime/` is exempt too — the
22
+ canonical council dirs live at `agents/runtime/council/{questions,
23
+ responses,sessions}/` and the whole `runtime/` tree is gitignored.
22
24
 
23
25
  Failure modes are enforced by `.agent-src.uncompressed/skills/ai-council/SKILL.md`
24
26
  § "Output path convention".
@@ -40,15 +42,17 @@ from pathlib import Path
40
42
  QUIET = "--quiet" in sys.argv
41
43
 
42
44
  AGENTS_ROOT = Path("agents")
45
+ # Canonical council dirs now live under agents/runtime/council/.
46
+ # Stored as relative POSIX paths from AGENTS_ROOT.
43
47
  CANONICAL_DIRS = {
44
- "council-questions": ".md",
45
- "council-responses": ".json",
46
- "council-sessions": ".json",
48
+ "runtime/council/questions": ".md",
49
+ "runtime/council/responses": ".json",
50
+ "runtime/council/sessions": ".json",
47
51
  }
48
- # Subdirectory prefixes whose contents are exempt from the layout check.
49
- # `audit-*/` covers historical audit bundles where council artefacts
50
- # form part of the documented evidence trail.
51
- EXEMPT_DIR_PREFIXES = ("audit-",)
52
+ # Top-level subdirectories whose contents are exempt from the layout
53
+ # check. `audits/` covers historical audit bundles. `runtime/` is the
54
+ # gitignored volatile tree (canonical council dirs live there).
55
+ EXEMPT_DIR_PREFIXES = ("audits", "runtime")
52
56
  # A council artefact is a file whose name starts with `council-` or
53
57
  # `.council-`. This intentionally excludes roadmaps like
54
58
  # `road-to-ai-council.md` whose stem only contains the word "council".
@@ -71,8 +75,8 @@ def find_violations(root: Path) -> list[str]:
71
75
  if is_council_artefact(path):
72
76
  findings.append(
73
77
  f"{path}: council artefact at agents/ root — move to "
74
- f"agents/council-questions/, agents/council-responses/, "
75
- f"or agents/council-sessions/ per ai-council § Output path "
78
+ f"agents/runtime/council/questions/, agents/runtime/council/responses/, "
79
+ f"or agents/runtime/council/sessions/ per ai-council § Output path "
76
80
  f"convention."
77
81
  )
78
82
 
@@ -86,14 +90,16 @@ def find_violations(root: Path) -> list[str]:
86
90
  continue
87
91
  if len(rel.parts) == 1:
88
92
  continue # already handled above
89
- if rel.parts[0] in CANONICAL_DIRS:
93
+ rel_posix = rel.as_posix()
94
+ if any(rel_posix.startswith(d + "/") for d in CANONICAL_DIRS):
90
95
  continue
91
96
  if rel.parts[0].startswith(EXEMPT_DIR_PREFIXES):
92
97
  continue
93
98
  findings.append(
94
99
  f"{path}: council artefact in non-canonical directory "
95
- f"agents/{rel.parts[0]}/ — only council-questions/, "
96
- f"council-responses/, council-sessions/ are allowed."
100
+ f"agents/{rel.parts[0]}/ — only "
101
+ f"agents/runtime/council/{{questions,responses,sessions}}/ "
102
+ f"are allowed."
97
103
  )
98
104
 
99
105
  return findings