@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,33 @@
1
+ #!/usr/bin/env python3
2
+ """CI guard for README.md line budget.
3
+
4
+ The role-first-onboarding roadmap (Phase 2 Step 6) freezes README at
5
+ its current length: replace, do not grow. Every line added above the
6
+ fold must displace an existing line. Budget: 750 lines max.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import sys
12
+ from pathlib import Path
13
+
14
+ README = Path("README.md")
15
+ LIMIT = 750
16
+
17
+
18
+ def main() -> int:
19
+ quiet = "--quiet" in sys.argv
20
+ if not README.exists():
21
+ print(f"error: {README} not found", file=sys.stderr)
22
+ return 1
23
+ n = sum(1 for _ in README.read_text(encoding="utf-8").splitlines())
24
+ if n > LIMIT:
25
+ print(f"FAIL {README}: {n} lines (limit {LIMIT}). Trim before merge.")
26
+ return 1
27
+ if not quiet:
28
+ print(f"OK {README}: {n} lines (limit {LIMIT}).")
29
+ return 0
30
+
31
+
32
+ if __name__ == "__main__":
33
+ sys.exit(main())
@@ -25,8 +25,27 @@ import yaml
25
25
  QUIET = "--quiet" in sys.argv
26
26
 
27
27
  ROOT = Path(__file__).resolve().parent.parent
28
+ sys.path.insert(0, str(ROOT / "scripts"))
29
+ from _lib.agent_src import resolve_logical, strip_source_prefix # noqa: E402
30
+
28
31
  MATRIX = ROOT / "docs" / "contracts" / "rule-interactions.yml"
29
- RULES_DIR = ROOT / ".agent-src.uncompressed" / "rules"
32
+
33
+
34
+ def _rule_exists(slug: str) -> bool:
35
+ return resolve_logical(f"rules/{slug}.md") is not None
36
+
37
+
38
+ def _evidence_exists(file_part: str) -> bool:
39
+ """Return True if the evidence path resolves under any source root.
40
+
41
+ Accepts legacy ``.agent-src.uncompressed/...`` citations and resolves
42
+ them through the multi-root layout; falls back to a literal repo
43
+ path check for non-source citations (docs/, agents/, ...).
44
+ """
45
+ logical = strip_source_prefix(file_part)
46
+ if logical is not None:
47
+ return resolve_logical(logical) is not None
48
+ return (ROOT / file_part).exists()
30
49
 
31
50
  ALLOWED_RELATIONS = {
32
51
  "overrides",
@@ -77,9 +96,8 @@ def main() -> int:
77
96
  if not isinstance(slug, str):
78
97
  errors.append(f"rule slug not a string: {slug!r}")
79
98
  continue
80
- rule_path = RULES_DIR / f"{slug}.md"
81
- if not rule_path.exists():
82
- errors.append(f"rule slug `{slug}` has no file at {rule_path.relative_to(ROOT)}")
99
+ if not _rule_exists(slug):
100
+ errors.append(f"rule slug `{slug}` has no file under any source root (rules/{slug}.md)")
83
101
 
84
102
  pairs = data.get("pairs") or []
85
103
  if not isinstance(pairs, list) or not pairs:
@@ -124,7 +142,7 @@ def main() -> int:
124
142
  errors.append(f"pair `{pid}` evidence item not a string: {citation!r}")
125
143
  continue
126
144
  file_part = citation.split("#", 1)[0]
127
- if not (ROOT / file_part).exists():
145
+ if not _evidence_exists(file_part):
128
146
  errors.append(f"pair `{pid}` evidence path does not exist: {file_part}")
129
147
 
130
148
  # Anchor coverage check
@@ -3,8 +3,8 @@
3
3
 
4
4
  Hard-fails CI if any rule under .agent-src.uncompressed/rules/ lacks a
5
5
  `tier:` declaration or uses an unknown tier value. The valid tier set is
6
- locked by agents/contexts/hardening-pattern.md and the matrix in
7
- agents/contexts/rule-trigger-matrix.md.
6
+ locked by agents/settings/contexts/hardening-pattern.md and the matrix in
7
+ agents/settings/contexts/rule-trigger-matrix.md.
8
8
 
9
9
  Hooked into `task ci` after `task lint-skills`.
10
10
 
@@ -20,7 +20,12 @@ from pathlib import Path
20
20
  QUIET = "--quiet" in sys.argv
21
21
 
22
22
  REPO = Path(__file__).resolve().parents[1]
23
- RULES_DIR = REPO / ".agent-src.uncompressed" / "rules"
23
+
24
+ # Rules live under every artefact root post-monorepo Phase 4.
25
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
26
+ from _lib.agent_src import artefact_roots # noqa: E402
27
+
28
+ RULES_DIRS = [root / "rules" for root in artefact_roots() if (root / "rules").is_dir()]
24
29
 
25
30
  VALID_TIERS = frozenset({"1", "2a", "2b", "3", "safety-floor", "mechanical-already"})
26
31
 
@@ -41,9 +46,13 @@ def parse_tier(text: str) -> str | None:
41
46
 
42
47
 
43
48
  def main() -> int:
44
- rules = sorted(RULES_DIR.glob("*.md"))
49
+ rules: list[Path] = []
50
+ for rules_dir in RULES_DIRS:
51
+ rules.extend(rules_dir.glob("*.md"))
52
+ rules.sort()
45
53
  if not rules:
46
- print(f"lint_rule_tiers: no rules found under {RULES_DIR}", file=sys.stderr)
54
+ roots_label = ", ".join(str(d) for d in RULES_DIRS) or "<no rules root>"
55
+ print(f"lint_rule_tiers: no rules found under {roots_label}", file=sys.stderr)
47
56
  return 1
48
57
 
49
58
  missing: list[str] = []
@@ -2,7 +2,7 @@
2
2
  """Block D · D1 — meta-linter for ``scripts/skill_tools/*.py``.
3
3
 
4
4
  Enforces the four pilot-tool invariants locked by the Block D council
5
- verdict (`agents/council-responses/block-d-python-tools-pilot-verdict.md`):
5
+ verdict (`agents/runtime/council/responses/block-d-python-tools-pilot-verdict.md`):
6
6
 
7
7
  1. **stdlib-only** — no third-party imports. Internal package imports
8
8
  (``scripts.*``) are allowed.
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env python3
2
+ """Linter for `.github/topics.yml`.
3
+
4
+ Asserts:
5
+ * file exists and parses as YAML
6
+ * `topics:` is a non-empty list
7
+ * every topic matches `^[a-z0-9][a-z0-9-]*$` and is \u2264 50 chars
8
+ * no duplicates
9
+ * `notes:` key exists (may be empty mapping/string), so the
10
+ rationale slot is never silently dropped
11
+ * `equivalents:` (if present) is a mapping whose keys are all
12
+ listed in `topics:`
13
+
14
+ Roadmap: agents/roadmaps/strategic-visibility-mcp-topics-positioning.md Phase 1.3.
15
+ """
16
+ from __future__ import annotations
17
+
18
+ import re
19
+ import sys
20
+ from pathlib import Path
21
+
22
+ import yaml
23
+
24
+ ROOT = Path(__file__).resolve().parents[1]
25
+ TOPICS_FILE = ROOT / ".github" / "topics.yml"
26
+ SLUG_RE = re.compile(r"^[a-z0-9][a-z0-9-]*$")
27
+ QUIET = "--quiet" in sys.argv
28
+
29
+
30
+ def _fail(msg: str) -> None:
31
+ print(f"\u274c topics.yml: {msg}", file=sys.stderr)
32
+
33
+
34
+ def main() -> int:
35
+ if not TOPICS_FILE.exists():
36
+ _fail(f"missing file: {TOPICS_FILE.relative_to(ROOT)}")
37
+ return 1
38
+ try:
39
+ doc = yaml.safe_load(TOPICS_FILE.read_text(encoding="utf-8")) or {}
40
+ except yaml.YAMLError as e:
41
+ _fail(f"YAML parse error: {e}")
42
+ return 1
43
+
44
+ errors: list[str] = []
45
+
46
+ topics = doc.get("topics")
47
+ if not isinstance(topics, list) or not topics:
48
+ errors.append("`topics:` must be a non-empty list")
49
+ topics = []
50
+
51
+ seen: set[str] = set()
52
+ for t in topics:
53
+ if not isinstance(t, str):
54
+ errors.append(f"non-string topic entry: {t!r}")
55
+ continue
56
+ if len(t) > 50:
57
+ errors.append(f"topic too long (>50 chars): {t!r}")
58
+ if not SLUG_RE.match(t):
59
+ errors.append(f"invalid slug (expect ^[a-z0-9][a-z0-9-]*$): {t!r}")
60
+ if t in seen:
61
+ errors.append(f"duplicate topic: {t!r}")
62
+ seen.add(t)
63
+
64
+ if "notes" not in doc:
65
+ errors.append("`notes:` key missing (may be empty, but must be present)")
66
+
67
+ equivalents = doc.get("equivalents")
68
+ if equivalents is not None:
69
+ if not isinstance(equivalents, dict):
70
+ errors.append("`equivalents:` must be a mapping")
71
+ else:
72
+ for key, val in equivalents.items():
73
+ if key not in seen:
74
+ errors.append(f"`equivalents:` key {key!r} not in `topics:`")
75
+ if not isinstance(val, list) or not all(isinstance(v, str) for v in val):
76
+ errors.append(f"`equivalents.{key}` must be a list of strings")
77
+
78
+ if errors:
79
+ for e in errors:
80
+ _fail(e)
81
+ return 1
82
+
83
+ if not QUIET:
84
+ print(f"\u2705 topics.yml: {len(topics)} topic(s), all valid")
85
+ return 0
86
+
87
+
88
+ if __name__ == "__main__":
89
+ raise SystemExit(main())
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/env python3
2
+ """Lint trust/safety coherence across the discovery manifest.
3
+
4
+ Phase 5.4 of the monorepo trust-and-safety layer. Walks the freshly
5
+ built `dist/discovery/discovery-manifest.json` and asserts three
6
+ invariants:
7
+
8
+ 1. Every pack whose ``trust_summary`` declares ``advisory`` or
9
+ ``restricted`` artefacts ships at least one ``*safety-floor*``
10
+ rule in the same pack.
11
+ 2. Every artefact with ``trust.human_review_required: true`` carries
12
+ the ``_HRR_BANNER_MARKER`` in its compiled output under
13
+ ``.agent-src/<logical>``.
14
+ 3. Every rule listed in ``router.json`` ``kernel[]`` declares
15
+ ``trust.level: core`` (no escalation to advisory/restricted,
16
+ no demotion to experimental).
17
+
18
+ Exits 0 clean, 1 on any violation. Stdlib + pyyaml. Cap: ≤ 200 LOC.
19
+ """
20
+ from __future__ import annotations
21
+
22
+ import argparse
23
+ import json
24
+ import sys
25
+ from pathlib import Path
26
+ from typing import Any
27
+
28
+ ROOT = Path(__file__).resolve().parents[1]
29
+ MANIFEST = ROOT / "dist" / "discovery" / "discovery-manifest.json"
30
+ ROUTER = ROOT / "dist" / "router.json"
31
+ COMPILED_SRC = ROOT / ".agent-src"
32
+
33
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
34
+ from _lib.agent_src import strip_source_prefix # noqa: E402
35
+
36
+ # Imported lazily inside _banner_marker() to keep the cap loose if compress.py
37
+ # grows additional top-level side effects.
38
+ _BANNER_MARKER = "<!-- agent-config:human-review-banner -->"
39
+
40
+ # Trust levels that demand a domain-safety floor in the same pack.
41
+ _FLAGGED_LEVELS = ("advisory", "restricted")
42
+ _SAFETY_FLOOR_FRAGMENT = "safety-floor"
43
+
44
+
45
+ def _load_manifest(path: Path) -> dict[str, Any]:
46
+ if not path.exists():
47
+ raise SystemExit(
48
+ f"ERROR: manifest not found: {path}\n"
49
+ " Run `task build-discovery` first."
50
+ )
51
+ return json.loads(path.read_text("utf-8"))
52
+
53
+
54
+ def _load_kernel(path: Path) -> set[str]:
55
+ if not path.exists():
56
+ raise SystemExit(f"ERROR: router.json not found: {path}")
57
+ data = json.loads(path.read_text("utf-8"))
58
+ kernel = data.get("kernel") or []
59
+ if not isinstance(kernel, list):
60
+ raise SystemExit("ERROR: router.json `kernel` must be a list")
61
+ return {str(name) for name in kernel}
62
+
63
+
64
+ def _check_pack_safety_floors(manifest: dict[str, Any]) -> list[str]:
65
+ """Check 1: advisory/restricted packs ship a *safety-floor* rule."""
66
+ errs: list[str] = []
67
+ # Build pack -> [artefact path] index from the artefact list so we can
68
+ # spot the safety-floor regardless of how trust_summary was computed.
69
+ pack_paths: dict[str, list[str]] = {}
70
+ for art in manifest.get("artefacts", []):
71
+ for pack in art.get("packs", []) or []:
72
+ pack_paths.setdefault(pack, []).append(art["path"])
73
+
74
+ for pack in manifest.get("packs", []):
75
+ summary = pack.get("trust_summary", {}) or {}
76
+ flagged_total = sum(int(summary.get(lvl, 0)) for lvl in _FLAGGED_LEVELS)
77
+ if flagged_total == 0:
78
+ continue
79
+ paths = pack_paths.get(pack["id"], [])
80
+ has_floor = any(_SAFETY_FLOOR_FRAGMENT in p for p in paths)
81
+ if not has_floor:
82
+ counts = ", ".join(
83
+ f"{lvl}={int(summary.get(lvl, 0))}" for lvl in _FLAGGED_LEVELS
84
+ )
85
+ errs.append(
86
+ f"pack `{pack['id']}` declares flagged artefacts ({counts})"
87
+ f" but ships no `*{_SAFETY_FLOOR_FRAGMENT}*` rule"
88
+ )
89
+ return errs
90
+
91
+
92
+ def _check_human_review_banners(
93
+ manifest: dict[str, Any], compiled_src: Path
94
+ ) -> list[str]:
95
+ """Check 2: every human_review_required artefact has the banner."""
96
+ errs: list[str] = []
97
+ for art in manifest.get("artefacts", []):
98
+ trust = art.get("trust", {}) or {}
99
+ if not trust.get("human_review_required"):
100
+ continue
101
+ rel = art["path"]
102
+ logical = strip_source_prefix(rel)
103
+ if logical is None:
104
+ errs.append(
105
+ f"{rel}: human_review_required=true but path is not under"
106
+ " any known source root"
107
+ )
108
+ continue
109
+ compiled = compiled_src / logical
110
+ if not compiled.exists():
111
+ errs.append(
112
+ f"{rel}: human_review_required=true but compiled output"
113
+ f" missing at `{compiled.relative_to(ROOT)}`"
114
+ )
115
+ continue
116
+ body = compiled.read_text("utf-8", errors="replace")
117
+ if _BANNER_MARKER not in body:
118
+ errs.append(
119
+ f"{rel}: human_review_required=true but compiled output"
120
+ f" `{compiled.relative_to(ROOT)}` is missing the HRR banner"
121
+ f" (`{_BANNER_MARKER}`) — re-run `task compress`."
122
+ )
123
+ return errs
124
+
125
+
126
+ def _check_kernel_trust(
127
+ manifest: dict[str, Any], kernel: set[str]
128
+ ) -> list[str]:
129
+ """Check 3: every kernel rule declares trust.level=core."""
130
+ errs: list[str] = []
131
+ # name -> artefact for category=rule entries. Manifest does not always
132
+ # populate `name` for rules, so fall back to the logical filename stem.
133
+ rule_by_name: dict[str, dict[str, Any]] = {}
134
+ for art in manifest.get("artefacts", []):
135
+ if art.get("category") != "rule":
136
+ continue
137
+ name = art.get("name")
138
+ if not name:
139
+ logical = strip_source_prefix(art.get("path", ""))
140
+ if logical is None:
141
+ continue
142
+ stem = Path(logical).stem
143
+ name = stem
144
+ rule_by_name[name] = art
145
+
146
+ for kname in sorted(kernel):
147
+ art = rule_by_name.get(kname)
148
+ if art is None:
149
+ errs.append(
150
+ f"kernel rule `{kname}` listed in router.json but no"
151
+ " matching artefact in manifest"
152
+ )
153
+ continue
154
+ level = (art.get("trust", {}) or {}).get("level")
155
+ if level != "core":
156
+ errs.append(
157
+ f"kernel rule `{kname}` has trust.level=`{level}`"
158
+ " — must be `core` (router.json kernel guarantees Iron-Law"
159
+ " floor)"
160
+ )
161
+ return errs
162
+
163
+
164
+ def main(argv: list[str] | None = None) -> int:
165
+ parser = argparse.ArgumentParser(description=__doc__.splitlines()[0])
166
+ parser.add_argument("--quiet", action="store_true")
167
+ parser.add_argument(
168
+ "--manifest", type=Path, default=MANIFEST, help="discovery manifest"
169
+ )
170
+ parser.add_argument(
171
+ "--router", type=Path, default=ROUTER, help="router.json with kernel[]"
172
+ )
173
+ parser.add_argument(
174
+ "--compiled-src",
175
+ type=Path,
176
+ default=COMPILED_SRC,
177
+ help="compiled output root (.agent-src/)",
178
+ )
179
+ args = parser.parse_args(argv)
180
+
181
+ manifest = _load_manifest(args.manifest)
182
+ kernel = _load_kernel(args.router)
183
+
184
+ errs: list[str] = []
185
+ errs.extend(_check_pack_safety_floors(manifest))
186
+ errs.extend(_check_human_review_banners(manifest, args.compiled_src))
187
+ errs.extend(_check_kernel_trust(manifest, kernel))
188
+
189
+ if errs:
190
+ for e in errs:
191
+ print(f"ERROR: {e}", file=sys.stderr)
192
+ print(
193
+ f"\n{len(errs)} trust-coherence violation(s) across"
194
+ f" {len(manifest.get('packs', []))} pack(s) and"
195
+ f" {len(manifest.get('artefacts', []))} artefact(s).",
196
+ file=sys.stderr,
197
+ )
198
+ return 1
199
+
200
+ if not args.quiet:
201
+ print(
202
+ "✅ lint-trust-coherence:"
203
+ f" {len(manifest.get('packs', []))} pack(s),"
204
+ f" {len(kernel)} kernel rule(s),"
205
+ f" {sum(1 for a in manifest.get('artefacts', []) if (a.get('trust') or {}).get('human_review_required'))}"
206
+ " HRR artefact(s) clean."
207
+ )
208
+ return 0
209
+
210
+
211
+ if __name__ == "__main__":
212
+ raise SystemExit(main())
@@ -22,7 +22,7 @@
22
22
  },
23
23
  {
24
24
  "name": "chat_history_append",
25
- "description": "Append one entry to the consumer's chat-history JSONL (`agents/.agent-chat-history`). Path-scoped — writes outside the allowlist raise ValueError. Use `dry_run` to preview the payload without touching the filesystem.",
25
+ "description": "Append one entry to the consumer's chat-history JSONL (`agents/runtime/.agent-chat-history`; `agents/.agent-chat-history` and `.agent-chat-history` accepted for back-compat). Path-scoped — writes outside the allowlist raise ValueError. Use `dry_run` to preview the payload without touching the filesystem.",
26
26
  "side_effect": "fs-write",
27
27
  "implemented_on": ["stdio"],
28
28
  "input_schema": {
@@ -30,7 +30,7 @@
30
30
  "properties": {
31
31
  "text": {"type": "string"},
32
32
  "entry_type": {"type": "string", "description": "Short `t` tag (e.g. note, decision). Defaults to `note`."},
33
- "path": {"type": "string", "description": "Optional path override. Must resolve to `agents/.agent-chat-history` or `.agent-chat-history` under consumer_root."},
33
+ "path": {"type": "string", "description": "Optional path override. Must resolve to `agents/runtime/.agent-chat-history` (current default), `agents/.agent-chat-history`, or `.agent-chat-history` under consumer_root."},
34
34
  "session": {"type": "string"},
35
35
  "dry_run": {"type": "boolean", "default": false},
36
36
  "min_schema_version": {"type": "integer"}
@@ -41,7 +41,7 @@
41
41
  },
42
42
  {
43
43
  "name": "chat_history_read",
44
- "description": "Read recent chat-history entries from `agents/.agent-chat-history`. Filter by session, limit, or entry-type. Read-only.",
44
+ "description": "Read recent chat-history entries from `agents/runtime/.agent-chat-history` (`agents/.agent-chat-history` accepted for back-compat). Filter by session, limit, or entry-type. Read-only.",
45
45
  "side_effect": "ro",
46
46
  "implemented_on": ["stdio"],
47
47
  "input_schema": {
@@ -14,7 +14,7 @@ Outcomes:
14
14
  envelope returned.
15
15
  - ``latent_demand`` — caller asked for a tool not in the catalog.
16
16
 
17
- The sink writes JSONL to ``agents/.mcp-telemetry/calls.jsonl`` under the
17
+ The sink writes JSONL to ``agents/runtime/mcp-telemetry/calls.jsonl`` under the
18
18
  consumer root. Failure to write must not break the wire surface: the
19
19
  ``record_call`` helper swallows OSError + ValueError and emits a single
20
20
  warning to stderr.
@@ -33,7 +33,7 @@ Outcome = Literal["implemented", "stub", "latent_demand"]
33
33
 
34
34
  # Stable file location relative to consumer_root. Phase 2 K1 routes
35
35
  # this into a queryable store; Phase 1 only needs the file to exist.
36
- TELEMETRY_REL_DIR = "agents/.mcp-telemetry"
36
+ TELEMETRY_REL_DIR = "agents/runtime/mcp-telemetry"
37
37
  TELEMETRY_FILENAME = "calls.jsonl"
38
38
 
39
39
  # Truncation length for the client_id hash. 12 hex chars = 48 bits of
@@ -12,8 +12,11 @@ Names that are neither implemented nor catalog-listed raise
12
12
 
13
13
  Path-scoping is mandatory for any tool that writes: the resolved target
14
14
  path must stay under ``<consumer_root>`` and within the allowlist of
15
- filenames (`.agent-chat-history`, `agents/.agent-chat-history`). Escape
16
- attempts surface as ``ValueError`` before the underlying writer runs.
15
+ filenames (`agents/runtime/.agent-chat-history` — current default;
16
+ `agents/.agent-chat-history` and `.agent-chat-history` kept for
17
+ back-compat with older consumer installs that have not migrated yet).
18
+ Escape attempts surface as ``ValueError`` before the underlying writer
19
+ runs.
17
20
 
18
21
  This module deliberately does **not** import the ``subprocess`` module
19
22
  or ``os``-level shell-execution helpers directly. It imports project
@@ -48,6 +51,12 @@ STDIO_TRANSPORT = "stdio"
48
51
  # guard before the underlying writer touches the filesystem.
49
52
  _ALLOWED_WRITE_REL_PATHS: frozenset[str] = frozenset(
50
53
  {
54
+ # Current default (Volatile Runtime policy — agents/runtime/ is
55
+ # local-only and ignored by git).
56
+ "agents/runtime/.agent-chat-history",
57
+ # Back-compat: older consumer installs still write to the flat
58
+ # location. Additive — both paths stay accepted until the next
59
+ # major tool version bump.
51
60
  "agents/.agent-chat-history",
52
61
  ".agent-chat-history",
53
62
  }
@@ -93,7 +102,7 @@ def _validate_in_tree_path(raw: str | None, consumer_root: Path) -> Path:
93
102
  """
94
103
  root = consumer_root.resolve()
95
104
  if raw is None or raw == "":
96
- target = root / "agents" / ".agent-chat-history"
105
+ target = root / "agents" / "runtime" / ".agent-chat-history"
97
106
  else:
98
107
  candidate = Path(raw)
99
108
  if candidate.is_absolute():
@@ -178,7 +187,8 @@ async def _chat_history_append_handler(
178
187
  text: free-form entry text. Stored under the ``text`` field.
179
188
  entry_type: short ``t`` tag (e.g. ``note``, ``decision``).
180
189
  path: optional override of the target file. Must resolve to one
181
- of ``agents/.agent-chat-history`` / ``.agent-chat-history``
190
+ of ``agents/runtime/.agent-chat-history`` (current default),
191
+ ``agents/.agent-chat-history``, or ``.agent-chat-history``
182
192
  under ``consumer_root``.
183
193
  session: optional 16-char session tag. Falls back to the most
184
194
  recent body entry's ``s`` (see ``chat_history.append``).
@@ -277,7 +287,8 @@ async def _chat_history_read_handler(
277
287
  session: optional 16-char session id.
278
288
  entry_type: optional ``t`` field exact-match filter.
279
289
  path: optional override; must resolve under
280
- ``agents/.agent-chat-history`` or ``.agent-chat-history``.
290
+ ``agents/runtime/.agent-chat-history`` (current default),
291
+ ``agents/.agent-chat-history``, or ``.agent-chat-history``.
281
292
  """
282
293
  from scripts.chat_history import read_entries # noqa: PLC0415
283
294
 
@@ -536,9 +547,11 @@ ALLOWLIST: dict[str, BuiltinTool] = {
536
547
  name="chat_history_append",
537
548
  description=(
538
549
  "Append one entry to the consumer's chat-history JSONL "
539
- "(`agents/.agent-chat-history`). Path-scoped — writes "
540
- "outside the allowlist raise ValueError. Use `dry_run` to "
541
- "preview the payload without touching the filesystem."
550
+ "(`agents/runtime/.agent-chat-history`; "
551
+ "`agents/.agent-chat-history` accepted for back-compat). "
552
+ "Path-scoped writes outside the allowlist raise "
553
+ "ValueError. Use `dry_run` to preview the payload without "
554
+ "touching the filesystem."
542
555
  ),
543
556
  input_schema={
544
557
  "type": "object",
@@ -555,7 +568,9 @@ ALLOWLIST: dict[str, BuiltinTool] = {
555
568
  "type": "string",
556
569
  "description": (
557
570
  "Optional path override. Must resolve to "
558
- "`agents/.agent-chat-history` or "
571
+ "`agents/runtime/.agent-chat-history` "
572
+ "(current default), "
573
+ "`agents/.agent-chat-history`, or "
559
574
  "`.agent-chat-history` under consumer_root."
560
575
  ),
561
576
  },
@@ -572,8 +587,9 @@ ALLOWLIST: dict[str, BuiltinTool] = {
572
587
  name="chat_history_read",
573
588
  description=(
574
589
  "Read recent chat-history entries from "
575
- "`agents/.agent-chat-history`. Filter by session, "
576
- "trailing-N, or entry-type. Read-only."
590
+ "`agents/runtime/.agent-chat-history` "
591
+ "(`agents/.agent-chat-history` accepted for back-compat). "
592
+ "Filter by session, trailing-N, or entry-type. Read-only."
577
593
  ),
578
594
  input_schema={
579
595
  "type": "object",
@@ -1,7 +1,7 @@
1
1
  """MCP telemetry healthcheck — Phase 1 J6.
2
2
 
3
3
  Asserts that the per-consumer JSONL sink at
4
- ``<consumer_root>/agents/.mcp-telemetry/calls.jsonl`` received at least
4
+ ``<consumer_root>/agents/runtime/mcp-telemetry/calls.jsonl`` received at least
5
5
  one record inside a configurable window (default 24 h). Exits non-zero
6
6
  on silence so the caller's alert sink — Sentry, email, GitHub Actions
7
7
  failure, cron mailer — fires.
@@ -166,7 +166,7 @@ def _build_parser() -> argparse.ArgumentParser:
166
166
  "--consumer-root",
167
167
  type=Path,
168
168
  default=None,
169
- help="Root directory containing agents/.mcp-telemetry/ (default: cwd).",
169
+ help="Root directory containing agents/runtime/mcp-telemetry/ (default: cwd).",
170
170
  )
171
171
  parser.add_argument(
172
172
  "--window-hours",
@@ -32,7 +32,7 @@ from mcp_server.telemetry import ( # noqa: E402
32
32
  TELEMETRY_REL_DIR,
33
33
  )
34
34
 
35
- DEFAULT_DB_REL = "agents/.mcp-telemetry/calls.sqlite3"
35
+ DEFAULT_DB_REL = "agents/runtime/mcp-telemetry/calls.sqlite3"
36
36
  SCHEMA_VERSION = 1
37
37
 
38
38
 
@@ -21,7 +21,7 @@ Output:
21
21
  - Default: stdout summary (totals + per-component breakdown).
22
22
  - `--json`: deterministic JSON.
23
23
  - `--trend-append`: append a snapshot record to
24
- `agents/.augment-budget-history.jsonl`.
24
+ `agents/runtime/.augment-budget-history.jsonl`.
25
25
 
26
26
  Exit codes: 0 = under fail threshold, 1 = at/above fail threshold,
27
27
  3 = internal error.
@@ -39,7 +39,7 @@ from pathlib import Path
39
39
  REPO_ROOT = Path(__file__).resolve().parent.parent
40
40
  AGENTS_MD = REPO_ROOT / "AGENTS.md"
41
41
  RULES_DIR = REPO_ROOT / ".augment" / "rules"
42
- TREND_FILE = REPO_ROOT / "agents" / ".augment-budget-history.jsonl"
42
+ TREND_FILE = REPO_ROOT / "agents" / "runtime" / ".augment-budget-history.jsonl"
43
43
 
44
44
  # Augment workspace-guidelines ceiling — empirical 2026-05-08.
45
45
  # TOTAL_CAP is the hard ceiling Augment itself enforces. FAIL_THRESHOLD is the
@@ -170,7 +170,7 @@ def main() -> int:
170
170
  parser.add_argument(
171
171
  "--trend-append",
172
172
  action="store_true",
173
- help="Append a snapshot record to agents/.augment-budget-history.jsonl",
173
+ help="Append a snapshot record to agents/runtime/.augment-budget-history.jsonl",
174
174
  )
175
175
  parser.add_argument(
176
176
  "--check",
@@ -22,7 +22,7 @@ Companion signals collected per artifact (consumed by Phases 1.2-1.4):
22
22
  Output:
23
23
  - Default stdout: per-type distribution buckets + tail (lowest density).
24
24
  - ``--json`` deterministic JSON of every artifact.
25
- - ``--snapshot`` writes JSONL to ``agents/.density-snapshot.jsonl``.
25
+ - ``--snapshot`` writes JSONL to ``agents/runtime/density/snapshot.jsonl``.
26
26
 
27
27
  Stdlib only; no network. Re-runnable.
28
28
  """
@@ -44,7 +44,7 @@ from skill_linter import ( # noqa: E402
44
44
  gather_all_candidate_files,
45
45
  )
46
46
 
47
- SNAPSHOT_FILE = REPO_ROOT / "agents" / ".density-snapshot.jsonl"
47
+ SNAPSHOT_FILE = REPO_ROOT / "agents" / "runtime" / "density" / "snapshot.jsonl"
48
48
 
49
49
  _TABLE_ROW = re.compile(r"^\s*\|.*\|\s*$")
50
50
  _BULLET = re.compile(r"^\s*[-*]\s+\S")