@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
@@ -2,7 +2,7 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://github.com/event4u-app/agent-config/scripts/schemas/skill.schema.json",
4
4
  "title": "Skill frontmatter",
5
- "$comment": "Source: agents/docs/frontmatter-contract.md#skills. Keep in sync with inventory_frontmatter.py and the linter's lint_skill().",
5
+ "$comment": "Source: agents/reference/docs/frontmatter-contract.md#skills. Keep in sync with inventory_frontmatter.py and the linter's lint_skill().",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
8
  "required": ["name", "description", "source", "domain"],
@@ -122,6 +122,46 @@
122
122
  "items": { "type": "string" }
123
123
  }
124
124
  }
125
+ },
126
+ "workspaces": {
127
+ "type": "array",
128
+ "minItems": 1,
129
+ "uniqueItems": true,
130
+ "items": {"type": "string", "pattern": "^[a-z][a-z0-9-]*$"},
131
+ "description": "ADR-013 workspace ids (additive discovery axis). Closed vocabulary enforced by scripts/lint_artefact_frontmatter.py against config/discovery/workspaces.yml."
132
+ },
133
+ "packs": {
134
+ "type": "array",
135
+ "minItems": 1,
136
+ "uniqueItems": true,
137
+ "items": {"type": "string", "pattern": "^[a-z][a-z0-9-]*$"},
138
+ "description": "ADR-013 pack ids (additive discovery axis). Closed vocabulary enforced by scripts/lint_artefact_frontmatter.py against config/discovery/packs.yml."
139
+ },
140
+ "lifecycle": {
141
+ "type": "string",
142
+ "enum": ["active", "deprecated", "experimental", "archived"],
143
+ "description": "ADR-013 lifecycle state."
144
+ },
145
+ "trust": {
146
+ "type": "object",
147
+ "additionalProperties": false,
148
+ "required": ["level", "confidence", "human_review_required"],
149
+ "properties": {
150
+ "level": {"type": "string", "enum": ["core", "professional", "experimental", "advisory", "restricted"]},
151
+ "confidence": {"type": "string", "enum": ["high", "medium", "low"]},
152
+ "human_review_required": {"type": "boolean"}
153
+ },
154
+ "description": "ADR-013 trust block. Vocabulary mirrored by scripts/lint_artefact_frontmatter.py."
155
+ },
156
+ "install": {
157
+ "type": "object",
158
+ "additionalProperties": false,
159
+ "required": ["default", "removable"],
160
+ "properties": {
161
+ "default": {"type": "boolean"},
162
+ "removable": {"type": "boolean"}
163
+ },
164
+ "description": "ADR-013 install hints (default-on at consumer install; user-removable)."
125
165
  }
126
166
  }
127
167
  }
@@ -18,7 +18,7 @@ Predictions source:
18
18
  pure description-matching would do and provides a numeric floor.
19
19
 
20
20
  Output: human-readable summary on stdout + machine JSON to
21
- `agents/reports/skill-selection-accuracy.json` (or `--out`).
21
+ `agents/runtime/reports/skill-selection-accuracy.json` (or `--out`).
22
22
  """
23
23
 
24
24
  from __future__ import annotations
@@ -7,7 +7,7 @@ high-overlap skill pairs into clusters. The output drives the
7
7
  selection-accuracy fixture set defined by council file 05 (Round-3
8
8
  protocol — ≥ 3 shared significant terms → collision cluster).
9
9
 
10
- Output: `agents/reports/skill-collision-clusters.json`
10
+ Output: `agents/runtime/reports/skill-collision-clusters.json`
11
11
 
12
12
  Schema:
13
13
  {
@@ -37,6 +37,7 @@ from validate_frontmatter import ( # noqa: E402
37
37
  load_schema,
38
38
  validate as validate_against_schema,
39
39
  )
40
+ from _lib.agent_src import artefact_roots, resolve_logical # noqa: E402
40
41
 
41
42
  Severity = Literal["error", "warning", "info"]
42
43
  ArtifactType = Literal["skill", "rule", "command", "guideline", "persona", "user-type", "unknown"]
@@ -403,7 +404,7 @@ def _fenced_content_ratio(text: str) -> float:
403
404
  # --- Structural-density model (docs/contracts/linter-structural-model.md) ---
404
405
  # Replaces the raw line/word/fenced-ratio gates with four primitives that
405
406
  # distinguish complexity from bloat. Calibrated 2026-05-08 against the full
406
- # 310-artefact corpus (agents/.density-snapshot.jsonl).
407
+ # 310-artefact corpus (agents/runtime/density/snapshot.jsonl).
407
408
 
408
409
  PROCEDURE_HEADING_PATTERN = re.compile(
409
410
  r"^##\s+Procedure(\s*[:\u2014\-].*)?\s*$", re.MULTILINE
@@ -974,6 +975,30 @@ def extract_frontmatter(text: str) -> Optional[str]:
974
975
  return match.group(1) if match else None
975
976
 
976
977
 
978
+ def _parse_trust_level(frontmatter: str) -> Optional[str]:
979
+ """Parse `trust.level:` from the nested `trust:` mapping in frontmatter.
980
+
981
+ Returns the level string (e.g. ``"core"``, ``"advisory"``) or ``None``
982
+ if absent. Stdlib-only — mirrors the line-walking approach of
983
+ ``_parse_yaml_list`` so the linter stays pyyaml-free.
984
+ """
985
+ lines = frontmatter.splitlines()
986
+ in_block = False
987
+ for line in lines:
988
+ if not in_block:
989
+ if line.startswith("trust:"):
990
+ rhs = line[len("trust:"):].strip()
991
+ if rhs == "":
992
+ in_block = True
993
+ continue
994
+ if line.startswith(" level:"):
995
+ return line[len(" level:"):].strip().strip('"').strip("'")
996
+ if line.startswith(" "):
997
+ continue
998
+ break
999
+ return None
1000
+
1001
+
977
1002
  def _parse_yaml_list(frontmatter: str, key: str) -> Optional[list]:
978
1003
  """Parse a simple top-level YAML list `key:` from frontmatter.
979
1004
 
@@ -1028,6 +1053,10 @@ def lint_router_frontmatter(rule_id: str, frontmatter: str,
1028
1053
  Lenient checks (info-level until Phase 4 migrations land): non-kernel
1029
1054
  rules without `triggers:` / `routes_to:` get an informational note,
1030
1055
  not an error — the existing description-matching path still works.
1056
+
1057
+ Trust-tier carve-out: rules with ``trust.level: core`` are exempt from
1058
+ the ``router_routes_to_missing`` migration hint — they are authoritative
1059
+ by design and their body legitimately lives inline.
1031
1060
  """
1032
1061
  issues: List[Issue] = []
1033
1062
  triggers = _parse_yaml_list(frontmatter, "triggers")
@@ -1068,9 +1097,15 @@ def lint_router_frontmatter(rule_id: str, frontmatter: str,
1068
1097
  f"triggers[{idx}] key '{k}' not in allowed set ({allowed})"))
1069
1098
 
1070
1099
  if routes_to is None:
1071
- issues.append(Issue("info", "router_routes_to_missing",
1072
- "Non-kernel rule has no routes_to: — body should migrate to skill / "
1073
- "guideline in Phase 4"))
1100
+ # Trust-tier carve-out: rules pinned at trust.level: core are
1101
+ # authoritative their body IS the behavior and may legitimately
1102
+ # live inline without a routes_to: delegation. The Phase 4
1103
+ # migration hint applies only to lower-trust rules.
1104
+ trust_level = _parse_trust_level(frontmatter)
1105
+ if trust_level != "core":
1106
+ issues.append(Issue("info", "router_routes_to_missing",
1107
+ "Non-kernel rule has no routes_to: — body should migrate to skill / "
1108
+ "guideline in Phase 4"))
1074
1109
  else:
1075
1110
  repo_root = Path(__file__).resolve().parent.parent
1076
1111
  for idx, item in enumerate(routes_to):
@@ -1079,29 +1114,34 @@ def lint_router_frontmatter(rule_id: str, frontmatter: str,
1079
1114
  f"routes_to[{idx}] must be 'kind:id'"))
1080
1115
  continue
1081
1116
  kind, _, target_id = item.partition(":")
1117
+ # Multi-root aware (ADR-017): resolve logical paths via every
1118
+ # source root so kernel rules keep routing to skills/commands
1119
+ # that moved into packages/*/.
1120
+ target: Optional[Path] = None
1082
1121
  if kind == "skill":
1083
- target = repo_root / ".agent-src.uncompressed" / "skills" / target_id / "SKILL.md"
1122
+ target = resolve_logical(f"skills/{target_id}/SKILL.md")
1084
1123
  elif kind == "guideline":
1085
- target = repo_root / "docs" / "guidelines" / f"{target_id}.md"
1124
+ gpath = repo_root / "docs" / "guidelines" / f"{target_id}.md"
1125
+ target = gpath if gpath.exists() else None
1086
1126
  elif kind == "command":
1087
- target = repo_root / ".agent-src.uncompressed" / "commands" / f"{target_id}.md"
1127
+ target = resolve_logical(f"commands/{target_id}.md")
1088
1128
  elif kind == "contract":
1089
1129
  # Contracts live in two places: stable host docs in
1090
- # docs/contracts/ and load-bearing flows in
1091
- # .agent-src.uncompressed/contexts/contracts/ (road-to-path-fixes
1130
+ # docs/contracts/ and load-bearing flows under
1131
+ # contexts/contracts/ inside any source root (road-to-path-fixes
1092
1132
  # P4 / Council R2). Try both before failing.
1093
- target = repo_root / "docs" / "contracts" / f"{target_id}.md"
1094
- if not target.exists():
1095
- alt = repo_root / ".agent-src.uncompressed" / "contexts" / "contracts" / f"{target_id}.md"
1096
- if alt.exists():
1097
- target = alt
1133
+ cpath = repo_root / "docs" / "contracts" / f"{target_id}.md"
1134
+ if cpath.exists():
1135
+ target = cpath
1136
+ else:
1137
+ target = resolve_logical(f"contexts/contracts/{target_id}.md")
1098
1138
  else:
1099
1139
  issues.append(Issue("error", "route_kind_unknown",
1100
1140
  f"routes_to[{idx}] kind '{kind}' must be 'skill', 'guideline', 'command', or 'contract'"))
1101
1141
  continue
1102
- if not target.exists():
1142
+ if target is None or not target.exists():
1103
1143
  issues.append(Issue("error", "route_target_missing",
1104
- f"routes_to[{idx}] target '{item}' not found at {target}"))
1144
+ f"routes_to[{idx}] target '{item}' not found under any artefact root"))
1105
1145
  return issues
1106
1146
 
1107
1147
 
@@ -2019,86 +2059,126 @@ def lint_usertype(path: Path, text: str) -> LintResult:
2019
2059
 
2020
2060
 
2021
2061
  def gather_all_candidate_files(root: Path) -> list[Path]:
2022
- """Gather all lintable files. Prefers .agent-src.uncompressed/ (source of truth).
2023
- Falls back to .agent-src/ only if uncompressed doesn't exist.
2024
- Skips symlinks to avoid double-counting."""
2062
+ """Gather all lintable files across every source root (ADR-017 multi-root).
2063
+
2064
+ Walks ``artefact_roots()`` (legacy ``.agent-src.uncompressed/`` plus every
2065
+ ``packages/*/.agent-src.uncompressed/``). Falls back to ``.agent-src/``
2066
+ only when no source root exists. Skips symlinks to avoid double-counting.
2067
+ Deduplicates on logical relpath \u2014 first root wins per the agent_src
2068
+ contract.
2069
+ """
2025
2070
  candidates: list[Path] = []
2071
+ seen_logical: set[str] = set()
2026
2072
 
2027
- # Source of truth directories
2028
- uncompressed_skills = root / ".agent-src.uncompressed" / "skills"
2029
- uncompressed_rules = root / ".agent-src.uncompressed" / "rules"
2030
- uncompressed_commands = root / ".agent-src.uncompressed" / "commands"
2031
- uncompressed_guidelines = root / ".agent-src.uncompressed" / "guidelines"
2032
-
2033
- # Fallback directories (only if uncompressed doesn't exist)
2034
- augment_skills = root / ".agent-src" / "skills"
2035
- augment_rules = root / ".agent-src" / "rules"
2036
- augment_commands = root / ".agent-src" / "commands"
2037
- augment_guidelines = root / ".agent-src" / "guidelines"
2038
-
2039
- # Skills
2040
- skills_base = uncompressed_skills if uncompressed_skills.exists() else augment_skills
2041
- if skills_base.exists():
2042
- for f in skills_base.rglob("SKILL.md"):
2043
- if not f.is_symlink():
2044
- candidates.append(f)
2045
-
2046
- # Rules
2047
- rules_base = uncompressed_rules if uncompressed_rules.exists() else augment_rules
2048
- if rules_base.exists():
2049
- for f in rules_base.rglob("*.md"):
2050
- if not f.is_symlink():
2051
- candidates.append(f)
2052
-
2053
- # Commands
2054
- commands_base = uncompressed_commands if uncompressed_commands.exists() else augment_commands
2055
- if commands_base.exists():
2056
- for f in commands_base.rglob("*.md"):
2057
- if not f.is_symlink():
2058
- candidates.append(f)
2059
-
2060
- # Guidelines
2061
- guidelines_base = uncompressed_guidelines if uncompressed_guidelines.exists() else augment_guidelines
2062
- if guidelines_base.exists():
2063
- for f in guidelines_base.rglob("*.md"):
2064
- if not f.is_symlink():
2065
- candidates.append(f)
2066
-
2067
- # Personas
2068
- uncompressed_personas = root / ".agent-src.uncompressed" / "personas"
2069
- augment_personas = root / ".agent-src" / "personas"
2070
- personas_base = uncompressed_personas if uncompressed_personas.exists() else augment_personas
2071
- if personas_base.exists():
2072
- for f in personas_base.glob("*.md"):
2073
- if f.name.lower() == "readme.md":
2074
- continue
2075
- if not f.is_symlink():
2076
- candidates.append(f)
2077
-
2078
- # User-types (sister axis to personas — methodology vs end-user).
2079
- # Top-level .md only; README and _template/ subtree excluded.
2080
- uncompressed_usertypes = root / ".agent-src.uncompressed" / "user-types"
2081
- augment_usertypes = root / ".agent-src" / "user-types"
2082
- usertypes_base = uncompressed_usertypes if uncompressed_usertypes.exists() else augment_usertypes
2083
- if usertypes_base.exists():
2084
- for f in usertypes_base.glob("*.md"):
2085
- if f.name.lower() == "readme.md":
2086
- continue
2087
- if not f.is_symlink():
2088
- candidates.append(f)
2089
-
2090
- # Frugality charter (Phase 0.4 Layer 2). Lives in contexts/, not
2091
- # walked by the artifact-type loops above, but still needs the
2092
- # index-integrity check.
2093
- for base in (root / ".agent-src.uncompressed", root / ".agent-src"):
2094
- charter = base / FRUGALITY_CHARTER_RELPATH
2095
- if charter.exists() and not charter.is_symlink():
2096
- candidates.append(charter)
2097
- break
2073
+ def _add(file: Path, source_root: Path) -> None:
2074
+ if file.is_symlink() or not file.is_file():
2075
+ return
2076
+ try:
2077
+ logical = file.relative_to(source_root).as_posix()
2078
+ except ValueError:
2079
+ logical = file.name
2080
+ # Namespace by artefact-kind subdir so the same skill name across
2081
+ # packs would still dedupe (but the agent_src layout guarantees
2082
+ # each logical path lives in exactly one root post-move).
2083
+ if logical in seen_logical:
2084
+ return
2085
+ seen_logical.add(logical)
2086
+ candidates.append(file)
2087
+
2088
+ sources = artefact_roots()
2089
+ if sources:
2090
+ for src_root in sources:
2091
+ for f in (src_root / "skills").rglob("SKILL.md") if (src_root / "skills").exists() else []:
2092
+ _add(f, src_root)
2093
+ for sub in ("rules", "commands", "guidelines"):
2094
+ base = src_root / sub
2095
+ if base.exists():
2096
+ for f in base.rglob("*.md"):
2097
+ _add(f, src_root)
2098
+ for sub in ("personas", "user-types"):
2099
+ base = src_root / sub
2100
+ if base.exists():
2101
+ for f in base.glob("*.md"):
2102
+ if f.name.lower() == "readme.md":
2103
+ continue
2104
+ _add(f, src_root)
2105
+ charter = src_root / FRUGALITY_CHARTER_RELPATH
2106
+ if charter.exists() and not charter.is_symlink():
2107
+ _add(charter, src_root)
2108
+ else:
2109
+ # Pure-compressed fallback (.agent-src/ only). Used by consumer
2110
+ # projects that vendor the compressed tree without sources.
2111
+ augment_root = root / ".agent-src"
2112
+ if augment_root.exists():
2113
+ for sub_pattern in (
2114
+ ("skills", "SKILL.md"),
2115
+ ("rules", "*.md"),
2116
+ ("commands", "*.md"),
2117
+ ("guidelines", "*.md"),
2118
+ ):
2119
+ base = augment_root / sub_pattern[0]
2120
+ if base.exists():
2121
+ for f in base.rglob(sub_pattern[1]):
2122
+ _add(f, augment_root)
2123
+ for sub in ("personas", "user-types"):
2124
+ base = augment_root / sub
2125
+ if base.exists():
2126
+ for f in base.glob("*.md"):
2127
+ if f.name.lower() == "readme.md":
2128
+ continue
2129
+ _add(f, augment_root)
2130
+ charter = augment_root / FRUGALITY_CHARTER_RELPATH
2131
+ if charter.exists() and not charter.is_symlink():
2132
+ _add(charter, augment_root)
2098
2133
 
2099
2134
  return sorted(set(candidates))
2100
2135
 
2101
2136
 
2137
+ def gather_candidate_files_under(src_root: Path) -> list[Path]:
2138
+ """Gather lintable files under an arbitrary source root.
2139
+
2140
+ Mirrors the per-root walk used by ``gather_all_candidate_files`` but
2141
+ scoped to a single directory \u2014 e.g. ``packages/pack-laravel/.agent-src.uncompressed/``
2142
+ so CI can lint a single pack in parallel (ADR-017 Phase 4.4).
2143
+ Skips symlinks and ``README.md`` siblings under ``personas/`` /
2144
+ ``user-types/``.
2145
+ """
2146
+ out: list[Path] = []
2147
+ if not src_root.is_dir():
2148
+ return out
2149
+ seen: set[Path] = set()
2150
+
2151
+ def _push(file: Path) -> None:
2152
+ if file.is_symlink() or not file.is_file():
2153
+ return
2154
+ resolved = file.resolve()
2155
+ if resolved in seen:
2156
+ return
2157
+ seen.add(resolved)
2158
+ out.append(file)
2159
+
2160
+ skills_dir = src_root / "skills"
2161
+ if skills_dir.exists():
2162
+ for f in skills_dir.rglob("SKILL.md"):
2163
+ _push(f)
2164
+ for sub in ("rules", "commands", "guidelines"):
2165
+ base = src_root / sub
2166
+ if base.exists():
2167
+ for f in base.rglob("*.md"):
2168
+ _push(f)
2169
+ for sub in ("personas", "user-types"):
2170
+ base = src_root / sub
2171
+ if base.exists():
2172
+ for f in base.glob("*.md"):
2173
+ if f.name.lower() == "readme.md":
2174
+ continue
2175
+ _push(f)
2176
+ charter = src_root / FRUGALITY_CHARTER_RELPATH
2177
+ if charter.exists() and not charter.is_symlink():
2178
+ _push(charter)
2179
+ return sorted(set(out))
2180
+
2181
+
2102
2182
  def gather_changed_candidate_files(root: Path) -> list[Path]:
2103
2183
  """Find changed skill/rule files using git diff.
2104
2184
 
@@ -2138,10 +2218,15 @@ def gather_changed_candidate_files(root: Path) -> list[Path]:
2138
2218
  # dirs (.windsurf/, .cursor/, .clinerules/, .claude/) use
2139
2219
  # tool-native frontmatter (e.g. Windsurf's trigger/globs) that
2140
2220
  # the linter does not validate — they regenerate from source.
2141
- if not (
2221
+ # ADR-017: accept legacy flat layout AND
2222
+ # packages/*/.agent-src.uncompressed/ paths.
2223
+ in_source = (
2142
2224
  norm.startswith(".agent-src.uncompressed/")
2143
2225
  or norm.startswith(".agent-src/")
2144
- ):
2226
+ or "/.agent-src.uncompressed/" in norm
2227
+ or "/.agent-src/" in norm
2228
+ )
2229
+ if not in_source:
2145
2230
  continue
2146
2231
  if path.name == "SKILL.md" or "/rules/" in norm or "/commands/" in norm:
2147
2232
  files.append(path)
@@ -2770,20 +2855,37 @@ def lint_governance(path: Path, text: str, artifact_type: str, repo_root: Path |
2770
2855
  return issues
2771
2856
 
2772
2857
  # --- Check: compressed/uncompressed pair exists ---
2858
+ # ADR-017: sources live under packages/*/.agent-src.uncompressed/ but
2859
+ # all packs project into the single repo-root .agent-src/ tree. The
2860
+ # pair-check now resolves via logical relpath, not a path-swap.
2861
+ from _lib.agent_src import strip_source_prefix as _strip
2862
+ norm = path_str.replace("\\", "/")
2773
2863
  if is_uncompressed:
2774
- # Find expected compressed path
2775
- compressed_path = Path(path_str.replace("/.agent-src.uncompressed/", "/.agent-src/"))
2776
- if not compressed_path.exists():
2777
- issues.append(Issue("warning", "compressed_variant_missing",
2778
- f"Uncompressed file exists but compressed variant missing: "
2779
- f"{compressed_path.name}"))
2864
+ # Compute logical path then map to .agent-src/ at repo root.
2865
+ # Try direct strip first; fall back to substring split for absolute paths.
2866
+ logical = _strip(norm)
2867
+ if logical is None:
2868
+ marker = "/.agent-src.uncompressed/"
2869
+ idx = norm.rfind(marker)
2870
+ logical = norm[idx + len(marker):] if idx != -1 else None
2871
+ if logical:
2872
+ compressed_path = repo_root / ".agent-src" / logical
2873
+ if not compressed_path.exists():
2874
+ issues.append(Issue("warning", "compressed_variant_missing",
2875
+ f"Uncompressed file exists but compressed variant missing: "
2876
+ f"{compressed_path.name}"))
2780
2877
  elif is_compressed:
2781
- # Find expected uncompressed path
2782
- uncompressed_path = Path(path_str.replace("/.agent-src/", "/.agent-src.uncompressed/"))
2783
- if not uncompressed_path.exists():
2784
- issues.append(Issue("warning", "uncompressed_variant_missing",
2785
- f"Compressed file exists but uncompressed source missing: "
2786
- f"{uncompressed_path.name}"))
2878
+ # Compressed lives at repo-root .agent-src/<logical>. Source could
2879
+ # be at any source root \u2014 resolve via artefact_roots.
2880
+ marker = "/.agent-src/"
2881
+ idx = norm.rfind(marker)
2882
+ logical = norm[idx + len(marker):] if idx != -1 else None
2883
+ if logical:
2884
+ uncompressed_path = resolve_logical(logical)
2885
+ if uncompressed_path is None or not uncompressed_path.exists():
2886
+ issues.append(Issue("warning", "uncompressed_variant_missing",
2887
+ f"Compressed file exists but uncompressed source missing: "
2888
+ f"{Path(logical).name}"))
2787
2889
 
2788
2890
  # --- Check: file in correct location for type ---
2789
2891
  location_map = {
@@ -2972,7 +3074,7 @@ def lint_frontmatter_schema(path: Path, text: str, artifact_type: str) -> List[I
2972
3074
  """Validate the frontmatter of an artefact against its JSON-Schema.
2973
3075
 
2974
3076
  Schemas live in ``scripts/schemas/``. One schema per artefact type;
2975
- see ``agents/docs/frontmatter-contract.md`` for the human-readable
3077
+ see ``agents/reference/docs/frontmatter-contract.md`` for the human-readable
2976
3078
  contract the schemas encode. Guidelines have no frontmatter and are
2977
3079
  skipped.
2978
3080
  """
@@ -3186,18 +3288,23 @@ def check_compression_pairs(root: Path) -> list[LintResult]:
3186
3288
  ]
3187
3289
 
3188
3290
  for subdir, pattern, is_nested in pairs:
3189
- uncompressed_dir = root / ".agent-src.uncompressed" / subdir
3291
+ # ADR-017: union across every source root.
3190
3292
  compressed_dir = root / ".agent-src" / subdir
3293
+ uncompressed_names: set[str] = set()
3294
+ any_source = False
3295
+ for src_root in artefact_roots():
3296
+ uncompressed_dir = src_root / subdir
3297
+ if not uncompressed_dir.exists():
3298
+ continue
3299
+ any_source = True
3300
+ if is_nested:
3301
+ uncompressed_names |= {d.name for d in uncompressed_dir.iterdir() if d.is_dir() and (d / pattern).exists()}
3302
+ else:
3303
+ uncompressed_names |= {f.name for f in uncompressed_dir.glob(pattern) if f.is_file()}
3191
3304
 
3192
- if not uncompressed_dir.exists():
3305
+ if not any_source:
3193
3306
  continue
3194
3307
 
3195
- # Collect names from uncompressed
3196
- if is_nested:
3197
- uncompressed_names = {d.name for d in uncompressed_dir.iterdir() if d.is_dir() and (d / pattern).exists()}
3198
- else:
3199
- uncompressed_names = {f.name for f in uncompressed_dir.glob(pattern) if f.is_file()}
3200
-
3201
3308
  # Collect names from compressed
3202
3309
  if compressed_dir.exists():
3203
3310
  if is_nested:
@@ -3235,16 +3342,23 @@ def check_compression_pairs(root: Path) -> list[LintResult]:
3235
3342
  def check_compression_quality(root: Path) -> list[LintResult]:
3236
3343
  """Check that compressed skills preserve key content from their uncompressed source."""
3237
3344
  results: list[LintResult] = []
3238
- uncompressed_dir = root / ".agent-src.uncompressed" / "skills"
3239
3345
  compressed_dir = root / ".agent-src" / "skills"
3346
+ if not compressed_dir.exists():
3347
+ return results
3240
3348
 
3241
- if not uncompressed_dir.exists() or not compressed_dir.exists():
3349
+ # ADR-017: collect skill dirs from every source root.
3350
+ skill_sources: list[Path] = []
3351
+ for src_root in artefact_roots():
3352
+ uncompressed_dir = src_root / "skills"
3353
+ if uncompressed_dir.exists():
3354
+ skill_sources.extend(sorted(uncompressed_dir.iterdir()))
3355
+ if not skill_sources:
3242
3356
  return results
3243
3357
 
3244
3358
  # Sections that MUST exist in compressed if they exist in uncompressed
3245
3359
  preserved_sections = ["When to use", "Procedure", "Gotcha", "Gotchas", "Do NOT", "Output format", "Output"]
3246
3360
 
3247
- for skill_dir in sorted(uncompressed_dir.iterdir()):
3361
+ for skill_dir in skill_sources:
3248
3362
  src = skill_dir / "SKILL.md"
3249
3363
  dst = compressed_dir / skill_dir.name / "SKILL.md"
3250
3364
  if not src.exists() or not dst.exists():
@@ -3306,13 +3420,23 @@ def check_compression_quality(root: Path) -> list[LintResult]:
3306
3420
  def check_duplication(root: Path) -> list[LintResult]:
3307
3421
  """Detect skills with highly similar names or descriptions."""
3308
3422
  results: list[LintResult] = []
3309
- skills_dir = root / ".agent-src.uncompressed" / "skills"
3310
- if not skills_dir.exists():
3423
+ # ADR-017: collect skill dirs across every source root, dedup by name.
3424
+ skill_dirs: list[Path] = []
3425
+ seen: set[str] = set()
3426
+ for src_root in artefact_roots():
3427
+ sd = src_root / "skills"
3428
+ if not sd.exists():
3429
+ continue
3430
+ for d in sorted(sd.iterdir()):
3431
+ if d.is_dir() and d.name not in seen:
3432
+ seen.add(d.name)
3433
+ skill_dirs.append(d)
3434
+ if not skill_dirs:
3311
3435
  return results
3312
3436
 
3313
3437
  # Collect all skill names and descriptions
3314
3438
  skill_data: list[tuple[str, str, Path]] = []
3315
- for skill_dir in sorted(skills_dir.iterdir()):
3439
+ for skill_dir in skill_dirs:
3316
3440
  skill_file = skill_dir / "SKILL.md"
3317
3441
  if not skill_file.exists():
3318
3442
  continue
@@ -3497,7 +3621,13 @@ def main() -> int:
3497
3621
  paths.extend(gather_changed_candidate_files(root))
3498
3622
  for raw in args.paths:
3499
3623
  path = (root / raw).resolve() if not Path(raw).is_absolute() else Path(raw)
3500
- if path.exists():
3624
+ if not path.exists():
3625
+ continue
3626
+ if path.is_dir():
3627
+ # Walk the directory like a source root so callers can pass
3628
+ # `packages/pack-laravel/.agent-src.uncompressed/` (ADR-017 Phase 4.4).
3629
+ paths.extend(gather_candidate_files_under(path))
3630
+ else:
3501
3631
  paths.append(path)
3502
3632
 
3503
3633
  paths = sorted(set(paths))
@@ -4,7 +4,7 @@
4
4
  Implements step-2-skill-inventory-rationalization.md Phase 2 Step 2.
5
5
  Mirrors `scripts/audit_overlap.py` (the rule-side analog) but reads
6
6
  `.agent-src.uncompressed/skills/<slug>/SKILL.md` frontmatter directly
7
- and emits `agents/metrics/skill-overlap.md` listing pairs scoring
7
+ and emits `agents/runtime/metrics/skill-overlap.md` listing pairs scoring
8
8
  ≥ 0.6 on either:
9
9
 
10
10
  - description-trigger Jaccard (tokenized union of `description` +
@@ -3,7 +3,7 @@
3
3
 
4
4
  Runs D2 (`score_skill_relevance`), D3 (`audit_persona_coverage`), and
5
5
  D4 (`suggest_skill_for_task`) against the corpora in
6
- `agents/eval-corpora/block-d/` and emits a pass/fail summary per the
6
+ `agents/evidence/eval-corpora/block-d/` and emits a pass/fail summary per the
7
7
  council verdict targets:
8
8
 
9
9
  - **D2**: ≥ 85 % of corpus tasks have an `expected_top3` skill in