@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,987 @@
1
+ #!/usr/bin/env bash
2
+ # agent-config — consumer-facing CLI for the event4u/agent-config package.
3
+ #
4
+ # This is the MASTER entrypoint shipped inside the package
5
+ # (node_modules/@event4u/agent-config/scripts/agent-config or
6
+ # vendor/event4u/agent-config/scripts/agent-config). A thin wrapper at
7
+ # the consumer's repo root (`./agent-config`) delegates here.
8
+ #
9
+ # Commands are strictly consumer-facing. Maintainer workflows stay in
10
+ # Taskfile.yml and are NOT exposed here.
11
+ #
12
+ # Invariants:
13
+ # * CWD on entry is the consumer's repo root — we keep it that way
14
+ # so underlying scripts resolve paths correctly.
15
+ # * PACKAGE_ROOT is derived from this script's location, used only to
16
+ # locate the package-internal Python scripts (mcp_render.py, …).
17
+ # * Unknown arguments are forwarded verbatim to the underlying script.
18
+
19
+ set -euo pipefail
20
+
21
+ # Resolve symlinks in BASH_SOURCE so PACKAGE_ROOT points at the real
22
+ # package directory even when invoked via a symlink (global npm install,
23
+ # vendor/bin symlink, user-placed symlink on PATH, …).
24
+ SOURCE="${BASH_SOURCE[0]}"
25
+ while [ -L "$SOURCE" ]; do
26
+ DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
27
+ SOURCE="$(readlink "$SOURCE")"
28
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
29
+ done
30
+ SCRIPT_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
31
+ PACKAGE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
32
+ CONSUMER_ROOT="$(pwd)"
33
+
34
+ VERSION_FILE="$PACKAGE_ROOT/package.json"
35
+
36
+ usage() {
37
+ # Tier filter — see docs/contracts/command-surface-tiers.md.
38
+ # Default prints Tier-0 only; --tier=1 adds Tier-1; --tier=all adds Tier-2.
39
+ local tier="${1:-0}"
40
+
41
+ cat <<'EOF'
42
+ agent-config — event4u/agent-config CLI
43
+
44
+ Usage:
45
+ ./agent-config <command> [options]
46
+ ./agent-config --help [--tier=0|1|all]
47
+ EOF
48
+
49
+ cat <<'EOF'
50
+
51
+ Tier 0 — daily-driver (init → sync → validate → work):
52
+ init One-shot project install. Forwards to `scripts/install`
53
+ with all args. Entry point for `npx @event4u/agent-config init`.
54
+ Flags: --tools=<list> | --ai=<list> | --yes | --force
55
+ sync Replay agents/installed-tools.lock — re-installs any
56
+ tool whose bridge marker is missing locally (ADR-008).
57
+ Flags: --dry-run | --force | --project=<path>
58
+ validate Read-only drift detection on the manifest
59
+ (marker missing, scope divergence, version drift).
60
+ Exits 1 on drift. Flags: --quiet | --skip-version-check
61
+ work Drive the work_engine Python engine on a free-form prompt
62
+ (Option-A loop; called by the /work command)
63
+ implement-ticket Drive the work_engine Python engine on a ticket envelope
64
+ (Option-A loop; called by the /implement-ticket command)
65
+ help Show this help (default Tier-0; --tier=1|all expands)
66
+ --version, -V Print package version
67
+ EOF
68
+
69
+ if [[ "$tier" == "1" || "$tier" == "all" ]]; then
70
+ cat <<'EOF'
71
+
72
+ Tier 1 — power-user (release shape, audit, migration):
73
+ update Update the agent_config_version pin in .agent-settings.yml
74
+ Flags: --check (read-only) | --to <version> (explicit pin)
75
+ versions List available @event4u/agent-config versions
76
+ on npm. Marks the current pin and latest.
77
+ Flags: --offline | --limit=N | --json
78
+ global Install to user-scope paths (~/.claude/, ~/.cursor/, …)
79
+ Forwards to `scripts/install --global` (ADR-007).
80
+ Flags: --tools=<list> | --ai=<list> | --yes | --force
81
+ export Eject a tool's canonical content into a chosen path
82
+ (real file, no symlink). Idempotent; --force overrides
83
+ content drift. See `./agent-config export --list`.
84
+ Flags: --tool=<id> | --output=<path> | --force | --list
85
+ uninstall Remove bridge markers (project) or lockfile
86
+ entries (global). Idempotent. User-deployed
87
+ content under ~/.<tool>/ is preserved unless
88
+ --purge is passed (destructive).
89
+ Flags: --global | --tools=<list> | --dry-run
90
+ | --purge | --force | --project=<path>
91
+ prune Remove project bridge markers not declared in
92
+ agents/installed-tools.lock (npm-prune style).
93
+ Hard-floors when lockfile is absent.
94
+ Flags: --dry-run | --json | --project=<path>
95
+ | --all-missing-lock
96
+ doctor Read-only drift report: manifest ↔ filesystem.
97
+ Lists missing, modified, and foreign files.
98
+ Exits 1 on drift, 2 on missing lockfile.
99
+ Flags: --json | --project=<path>
100
+ explain Read-only decision-chain trace.
101
+ Usage: explain config | explain rule <name>
102
+ | explain route "<text>"
103
+ Flags: --json | --project=<path>
104
+ migrate One-shot migration off legacy composer / npm install paths
105
+ Flags: --dry-run (detect only)
106
+ first-run Guided first-run setup — cost profile, settings, tooling
107
+ keys:install-anthropic Install the Anthropic API key for the AI Council
108
+ (interactive, /dev/tty only, writes ~/.config/agent-config/anthropic.key 0600)
109
+ keys:install-openai Install the OpenAI API key for the AI Council
110
+ (interactive, /dev/tty only, writes ~/.config/agent-config/openai.key 0600)
111
+ council:estimate Pre-call council cost preview (no API call, no spend)
112
+ Usage: council:estimate <question> [--input-mode prompt|roadmap]
113
+ council:run Run the council. Requires --confirm to spend.
114
+ Usage: council:run <question> --output <path> --confirm
115
+ council:render Re-render a saved council responses JSON to markdown
116
+ Usage: council:render <responses.json>
117
+ EOF
118
+ fi
119
+
120
+ if [[ "$tier" == "all" ]]; then
121
+ cat <<'EOF'
122
+
123
+ Tier 2 — maintenance / internal (hooks, MCP, memory, telemetry):
124
+ mcp:render Render mcp.json → .cursor/mcp.json, .windsurf/mcp.json
125
+ (pass --claude-desktop to also write user-scope config)
126
+ mcp:check Dry-run mcp:render; exit non-zero if targets are stale
127
+ mcp:setup Create .venv-mcp/ and install the mcp SDK
128
+ (one-line MCP server onboarding; idempotent)
129
+ mcp:run Run the built-in MCP server over stdio
130
+ (requires `mcp:setup` first; see docs/mcp-server.md)
131
+ (experimental — beta gates: docs/contracts/mcp-beta-criteria.md)
132
+ roadmap:progress Regenerate agents/roadmaps-progress.md from open roadmaps
133
+ roadmap:progress-check Fail if agents/roadmaps-progress.md is stale (for CI)
134
+ settings:check Validate .agent-settings.yml against the YAML-subset contract
135
+ (docs/contracts/settings-sync-yaml-subset.md). Read-only.
136
+ Exit 0 clean, 1 finding(s), 2 file absent / unreadable.
137
+ settings:migrate Lift project-local .agent-settings.yml / .agent-user.yml into
138
+ ~/.event4u/agent-config/ (the global-only consumer surface,
139
+ ADR-020). Idempotent; --force overwrites a non-empty global
140
+ file, --dry-run lists intended copies with zero writes.
141
+ migrate-to-global One-shot legacy → global-only migration (Phase 5,
142
+ road-to-global-only-install.md). Copy → verify → move →
143
+ bridge. Runs lint_global_paths.py first. Flags:
144
+ --dry-run, --force, --rollback, --skip-perms-gate.
145
+ hooks:install Install the combined pre-commit hook (roadmap-progress
146
+ + ADR-013 artefact frontmatter lint).
147
+ (use --print to dump it, --force to overwrite an existing hook)
148
+ hooks:status Print the runtime hook matrix (per-platform install + bindings)
149
+ Flags: --format json|table, --strict (CI), --project-root <path>
150
+ hooks:doctor Diagnose hook health: concerns + fail-open/closed posture,
151
+ last dispatcher feedback per concern, missing trampolines.
152
+ Wraps hooks:status. Read-only.
153
+ Flags: --format json|table, --strict (CI), --project-root <path>
154
+ hooks:replay Replay a fixture through the universal dispatcher with
155
+ AGENT_CONFIG_REPLAY=1 (no writes under agents/runtime/state/).
156
+ Usage: hooks:replay --platform <name> --event <event>
157
+ --payload <path|event-name> [--native-event <native>]
158
+ [--manifest <path>] [--json] [--dry-run]
159
+ migrate-state Migrate a legacy .implement-ticket-state.json file
160
+ to the v1 .work-state.json schema (preserves .bak)
161
+ memory:lookup Retrieve memory entries (text or JSON envelope)
162
+ memory:signal Append a provisional intake signal (memory proposal)
163
+ memory:hash Hash a memory entry (YAML or JSON stdin)
164
+ memory:check Validate memory YAML schema + staleness
165
+ memory:check-proposal Run the admission gate on a memory proposal
166
+ proposal:check Validate a learning/skill/rule proposal markdown
167
+ refine-ticket:detect Run the deterministic refine-ticket detection helper
168
+ chat-history:hook Platform hook entry point (read JSON from stdin)
169
+ Usage: chat-history:hook --platform <claude|augment|cursor|cline|windsurf|gemini>
170
+ chat-history:checkpoint Append a phase-boundary entry to agents/runtime/.agent-chat-history
171
+ (CHECKPOINT fallback for platforms without native hooks)
172
+ roadmap-progress:hook PostToolUse hook entry point (read JSON from stdin)
173
+ Regenerates roadmaps-progress.md when a tool wrote under agents/roadmaps/
174
+ onboarding-gate:hook Hook entry point (drains stdin)
175
+ Writes .augment/state/onboarding-gate.json from .agent-settings.yml
176
+ context-hygiene:hook PostToolUse hook entry point (read JSON from stdin)
177
+ Maintains .augment/state/context-hygiene.json (turn count, loop, freshness)
178
+ dispatch:hook Universal hook dispatcher (Phase 7, hook-architecture-v1.md)
179
+ Usage: dispatch:hook --platform <name> --event <event> [--native-event <native>]
180
+ Reads scripts/hook_manifest.yaml and runs the resolved concern chain.
181
+ telemetry:record Append one artefact-engagement event (default-off)
182
+ telemetry:status Print artefact-engagement telemetry status (read-only)
183
+ telemetry:report Aggregate the engagement log into a quartile report
184
+ EOF
185
+ fi
186
+
187
+ if [[ "$tier" == "0" ]]; then
188
+ cat <<'EOF'
189
+
190
+ (Hidden: 15 Tier-1 + 26 Tier-2 commands. Run `./agent-config --help --tier=1`
191
+ or `--tier=all` to see them. Tier criteria: docs/contracts/command-surface-tiers.md.)
192
+ EOF
193
+ fi
194
+
195
+ cat <<'EOF'
196
+
197
+ Examples (Tier 0):
198
+ ./agent-config init --tools=claude-code,cursor --yes
199
+ ./agent-config sync --dry-run
200
+ ./agent-config sync
201
+ ./agent-config validate
202
+ ./agent-config work --state-file .work-state.json --prompt-file prompt.txt
203
+ ./agent-config implement-ticket --state-file .work-state.json
204
+ EOF
205
+
206
+ if [[ "$tier" == "1" || "$tier" == "all" ]]; then
207
+ cat <<'EOF'
208
+
209
+ Examples (Tier 1):
210
+ ./agent-config global --tools=claude-code --yes
211
+ ./agent-config global --ai=cursor,windsurf
212
+ ./agent-config export --list
213
+ ./agent-config export --tool=agents-md --output=AGENTS.md
214
+ ./agent-config export --tool=copilot-instructions --output=.github/copilot-instructions.md
215
+ ./agent-config uninstall --tools=cursor --dry-run
216
+ ./agent-config uninstall --global --tools=windsurf --purge
217
+ ./agent-config prune --dry-run
218
+ ./agent-config prune --json
219
+ ./agent-config doctor
220
+ ./agent-config doctor --json
221
+ ./agent-config versions
222
+ ./agent-config versions --limit=10
223
+ ./agent-config versions --json
224
+ ./agent-config init --offline --tools=claude-code,cursor --yes
225
+ ./agent-config update --offline --to=2.2.0
226
+ ./agent-config first-run
227
+ ./agent-config keys:install-anthropic
228
+ ./agent-config keys:install-openai
229
+ ./agent-config council:estimate prompt.txt
230
+ ./agent-config council:run prompt.txt --output agents/runtime/council/sessions/out.json --confirm
231
+ ./agent-config council:render agents/runtime/council/sessions/out.json
232
+ EOF
233
+ fi
234
+
235
+ if [[ "$tier" == "all" ]]; then
236
+ cat <<'EOF'
237
+
238
+ Examples (Tier 2):
239
+ ./agent-config mcp:render
240
+ ./agent-config mcp:render --claude-desktop
241
+ ./agent-config mcp:check
242
+ ./agent-config mcp:setup
243
+ ./agent-config mcp:run
244
+ ./agent-config roadmap:progress
245
+ ./agent-config settings:check
246
+ ./agent-config hooks:install
247
+ ./agent-config hooks:replay --platform augment --event post_tool_use --payload post_tool_use --json
248
+ ./agent-config migrate-state
249
+ ./agent-config memory:lookup --types domain-invariants --key billing
250
+ ./agent-config memory:signal --type architecture-decision --path src/Foo.php --body "…"
251
+ ./agent-config memory:check --path agents/memory
252
+ ./agent-config refine-ticket:detect ticket-body.txt
253
+ ./agent-config telemetry:status
254
+ ./agent-config telemetry:status --format json
255
+ ./agent-config telemetry:report --since 30d --top 20
256
+ ./agent-config telemetry:report --since 7d --format json --top 0
257
+ EOF
258
+ fi
259
+
260
+ cat <<'EOF'
261
+
262
+ All commands operate on the CURRENT DIRECTORY (your project root).
263
+ The CLI is strictly consumer-facing. Maintainer tasks live in Taskfile.yml.
264
+ EOF
265
+ }
266
+
267
+ print_version() {
268
+ if [[ -f "$VERSION_FILE" ]] && command -v python3 >/dev/null 2>&1; then
269
+ python3 -c "import json; print(json.load(open('$VERSION_FILE'))['version'])"
270
+ else
271
+ echo "unknown"
272
+ fi
273
+ }
274
+
275
+ require_python3() {
276
+ if ! command -v python3 >/dev/null 2>&1; then
277
+ echo "❌ agent-config: python3 not found on PATH" >&2
278
+ echo " Install Python 3.10+ and retry." >&2
279
+ exit 127
280
+ fi
281
+ }
282
+
283
+ # Locate a script. First argument is relative to PACKAGE_ROOT, second is
284
+ # an optional fallback relative to CONSUMER_ROOT (for scripts that ship
285
+ # to the consumer via .augment/, e.g. update_roadmap_progress.py).
286
+ resolve_script() {
287
+ local pkg_rel="$1"
288
+ local consumer_rel="${2-}"
289
+ local pkg_abs="$PACKAGE_ROOT/$pkg_rel"
290
+ if [[ -f "$pkg_abs" ]]; then
291
+ printf '%s' "$pkg_abs"
292
+ return 0
293
+ fi
294
+ if [[ -n "$consumer_rel" && -f "$CONSUMER_ROOT/$consumer_rel" ]]; then
295
+ printf '%s' "$CONSUMER_ROOT/$consumer_rel"
296
+ return 0
297
+ fi
298
+ echo "❌ agent-config: script not found: $pkg_rel" >&2
299
+ [[ -n "$consumer_rel" ]] && echo " (also tried: $consumer_rel in $CONSUMER_ROOT)" >&2
300
+ return 1
301
+ }
302
+
303
+ # Resolve a script that ships under templates/scripts/. Tries (in order):
304
+ # 1. CONSUMER_ROOT/scripts/<name> — local copy / customization
305
+ # 2. CONSUMER_ROOT/.augment/templates/scripts/<name> — installer-shipped
306
+ # 3. PACKAGE_ROOT/.agent-src/templates/scripts/<name> — package-internal fallback
307
+ # Consumer customization wins so projects can patch behavior locally
308
+ # without losing the upstream default.
309
+ resolve_template_script() {
310
+ local name="$1"
311
+ local p
312
+ for p in \
313
+ "$CONSUMER_ROOT/scripts/$name" \
314
+ "$CONSUMER_ROOT/.augment/templates/scripts/$name" \
315
+ "$PACKAGE_ROOT/.agent-src/templates/scripts/$name"; do
316
+ if [[ -f "$p" ]]; then
317
+ printf '%s' "$p"
318
+ return 0
319
+ fi
320
+ done
321
+ echo "❌ agent-config: template script not found: $name" >&2
322
+ echo " Searched:" >&2
323
+ echo " - $CONSUMER_ROOT/scripts/$name" >&2
324
+ echo " - $CONSUMER_ROOT/.augment/templates/scripts/$name" >&2
325
+ echo " - $PACKAGE_ROOT/.agent-src/templates/scripts/$name" >&2
326
+ return 1
327
+ }
328
+
329
+ cmd_mcp_render() {
330
+ require_python3
331
+ local script
332
+ script="$(resolve_script "scripts/mcp_render.py")"
333
+ exec python3 "$script" "$@"
334
+ }
335
+
336
+ cmd_mcp_check() {
337
+ require_python3
338
+ local script
339
+ script="$(resolve_script "scripts/mcp_render.py")"
340
+ exec python3 "$script" --check "$@"
341
+ }
342
+
343
+ cmd_mcp_setup() {
344
+ local script
345
+ script="$(resolve_script "scripts/mcp_setup.sh")" || return 1
346
+ exec bash "$script" "$@"
347
+ }
348
+
349
+ # Run the built-in stdio MCP server. The server module ships inside the
350
+ # package (PACKAGE_ROOT/scripts/mcp_server/), but the venv is created by
351
+ # `mcp_setup.sh` at CWD — keeping consumer projects in control of where
352
+ # the SDK install lives. PYTHONPATH points at PACKAGE_ROOT so the
353
+ # `scripts.mcp_server` import resolves regardless of CWD.
354
+ cmd_mcp_run() {
355
+ local venv_py="$CONSUMER_ROOT/.venv-mcp/bin/python"
356
+ if [[ ! -x "$venv_py" ]]; then
357
+ echo "❌ agent-config: .venv-mcp/ not found at $CONSUMER_ROOT/.venv-mcp" >&2
358
+ echo " Run \`./agent-config mcp:setup\` first to create it." >&2
359
+ exit 1
360
+ fi
361
+ exec env PYTHONPATH="$PACKAGE_ROOT" "$venv_py" -m scripts.mcp_server "$@"
362
+ }
363
+
364
+ cmd_roadmap_progress() {
365
+ require_python3
366
+ local script
367
+ script="$(resolve_script ".agent-src/scripts/update_roadmap_progress.py" ".augment/scripts/update_roadmap_progress.py")"
368
+ exec python3 "$script" "$@"
369
+ }
370
+
371
+ cmd_roadmap_progress_check() {
372
+ require_python3
373
+ local script
374
+ script="$(resolve_script ".agent-src/scripts/update_roadmap_progress.py" ".augment/scripts/update_roadmap_progress.py")"
375
+ exec python3 "$script" --check "$@"
376
+ }
377
+
378
+ cmd_first_run() {
379
+ local script
380
+ script="$(resolve_script "scripts/first-run.sh")"
381
+ exec bash "$script" "$@"
382
+ }
383
+
384
+ cmd_implement_ticket() {
385
+ require_python3
386
+ local engine_root="$PACKAGE_ROOT/.agent-src/templates/scripts"
387
+ if [[ ! -d "$engine_root/work_engine" ]]; then
388
+ echo "❌ agent-config: work_engine module not found at $engine_root/work_engine" >&2
389
+ echo " Reinstall the package and retry." >&2
390
+ return 1
391
+ fi
392
+ exec env PYTHONPATH="$engine_root" python3 -m work_engine "$@"
393
+ }
394
+
395
+ cmd_work() {
396
+ # /work shares the engine with /implement-ticket — only the input
397
+ # envelope differs (kind=prompt vs kind=ticket). Keeping a separate
398
+ # subcommand makes the user-facing distinction explicit and lets the
399
+ # two flows diverge later without churn at the wrapper layer.
400
+ require_python3
401
+ local engine_root="$PACKAGE_ROOT/.agent-src/templates/scripts"
402
+ if [[ ! -d "$engine_root/work_engine" ]]; then
403
+ echo "❌ agent-config: work_engine module not found at $engine_root/work_engine" >&2
404
+ echo " Reinstall the package and retry." >&2
405
+ return 1
406
+ fi
407
+ exec env PYTHONPATH="$engine_root" python3 -m work_engine "$@"
408
+ }
409
+
410
+ cmd_migrate_state() {
411
+ require_python3
412
+ local engine_root="$PACKAGE_ROOT/.agent-src/templates/scripts"
413
+ if [[ ! -d "$engine_root/work_engine/migration" ]]; then
414
+ echo "❌ agent-config: work_engine.migration module not found at $engine_root/work_engine/migration" >&2
415
+ echo " Reinstall the package and retry." >&2
416
+ return 1
417
+ fi
418
+ # -W ignore::RuntimeWarning suppresses the known sys.modules notice from
419
+ # `python3 -m pkg.subpkg.module` when the parent package eagerly imports
420
+ # the submodule via its CLI module. The migration is non-invasive and
421
+ # the warning is cosmetic; suppressing here avoids touching the engine.
422
+ exec env PYTHONPATH="$engine_root" python3 -W ignore::RuntimeWarning -m work_engine.migration.v0_to_v1 "$@"
423
+ }
424
+
425
+ cmd_memory_lookup() {
426
+ require_python3
427
+ local script
428
+ script="$(resolve_template_script "memory_lookup.py")" || return 1
429
+ exec python3 "$script" "$@"
430
+ }
431
+
432
+ cmd_memory_signal() {
433
+ require_python3
434
+ local script
435
+ script="$(resolve_template_script "memory_signal.py")" || return 1
436
+ exec python3 "$script" "$@"
437
+ }
438
+
439
+ cmd_memory_hash() {
440
+ require_python3
441
+ local script
442
+ script="$(resolve_template_script "memory_hash.py")" || return 1
443
+ exec python3 "$script" "$@"
444
+ }
445
+
446
+ cmd_telemetry_record() {
447
+ require_python3
448
+ local script
449
+ script="$(resolve_template_script "telemetry_record.py")" || return 1
450
+ exec python3 "$script" "$@"
451
+ }
452
+
453
+ cmd_telemetry_status() {
454
+ require_python3
455
+ local script
456
+ script="$(resolve_template_script "telemetry_status.py")" || return 1
457
+ exec python3 "$script" "$@"
458
+ }
459
+
460
+ cmd_telemetry_report() {
461
+ require_python3
462
+ local script
463
+ script="$(resolve_template_script "telemetry_report.py")" || return 1
464
+ exec python3 "$script" "$@"
465
+ }
466
+
467
+ cmd_memory_check() {
468
+ require_python3
469
+ local script
470
+ script="$(resolve_template_script "check_memory.py")" || return 1
471
+ exec python3 "$script" "$@"
472
+ }
473
+
474
+ cmd_memory_check_proposal() {
475
+ require_python3
476
+ local script
477
+ script="$(resolve_template_script "check_memory_proposal.py")" || return 1
478
+ exec python3 "$script" "$@"
479
+ }
480
+
481
+ cmd_proposal_check() {
482
+ require_python3
483
+ local script
484
+ script="$(resolve_script "scripts/check_proposal.py")" || return 1
485
+ exec python3 "$script" "$@"
486
+ }
487
+
488
+ cmd_refine_ticket_detect() {
489
+ require_python3
490
+ local script
491
+ script="$(resolve_script "scripts/refine_ticket_detect.py")" || return 1
492
+ exec python3 "$script" "$@"
493
+ }
494
+
495
+ cmd_chat_history_hook() {
496
+ require_python3
497
+ local script
498
+ script="$(resolve_script "scripts/chat_history.py")" || return 1
499
+ exec python3 "$script" hook-dispatch "$@"
500
+ }
501
+
502
+ cmd_roadmap_progress_hook() {
503
+ require_python3
504
+ local script
505
+ script="$(resolve_script "scripts/roadmap_progress_hook.py")" || return 1
506
+ exec python3 "$script" "$@"
507
+ }
508
+
509
+ cmd_onboarding_gate_hook() {
510
+ require_python3
511
+ local script
512
+ script="$(resolve_script "scripts/onboarding_gate_hook.py")" || return 1
513
+ exec python3 "$script" "$@"
514
+ }
515
+
516
+ cmd_context_hygiene_hook() {
517
+ require_python3
518
+ local script
519
+ script="$(resolve_script "scripts/context_hygiene_hook.py")" || return 1
520
+ exec python3 "$script" "$@"
521
+ }
522
+
523
+ cmd_dispatch_hook() {
524
+ require_python3
525
+ local script
526
+ script="$(resolve_script "scripts/hooks/dispatch_hook.py")" || return 1
527
+ exec python3 "$script" "$@"
528
+ }
529
+
530
+ cmd_hooks_status() {
531
+ require_python3
532
+ local script
533
+ script="$(resolve_script "scripts/hooks_status.py")" || return 1
534
+ exec python3 "$script" "$@"
535
+ }
536
+
537
+ cmd_hooks_doctor() {
538
+ require_python3
539
+ local script
540
+ script="$(resolve_script "scripts/hooks_doctor.py")" || return 1
541
+ exec python3 "$script" "$@"
542
+ }
543
+
544
+ cmd_hooks_replay() {
545
+ require_python3
546
+ local script
547
+ script="$(resolve_script "scripts/hooks/replay_hook.py")" || return 1
548
+ exec python3 "$script" "$@"
549
+ }
550
+
551
+ cmd_chat_history_checkpoint() {
552
+ require_python3
553
+ local script
554
+ script="$(resolve_script "scripts/chat_history.py")" || return 1
555
+ # Default cadence-bearing event when a user/agent invokes /chat-history-checkpoint:
556
+ # "phase" — explicit phase boundary, lands under per_phase / per_turn cadences.
557
+ exec python3 "$script" hook-append --event phase "$@"
558
+ }
559
+
560
+ cmd_hooks_install() {
561
+ local force=false
562
+ local print_only=false
563
+ for arg in "$@"; do
564
+ case "$arg" in
565
+ --force) force=true ;;
566
+ --print) print_only=true ;;
567
+ -h|--help)
568
+ cat <<'HELP'
569
+ agent-config hooks:install — install the combined pre-commit hook
570
+ (roadmap-progress + ADR-013 artefact frontmatter lint).
571
+
572
+ Usage:
573
+ ./agent-config hooks:install [--force] [--print]
574
+
575
+ Without flags: copies the hook to .git/hooks/pre-commit. Refuses to
576
+ overwrite an existing pre-commit hook unless --force is given (the
577
+ existing hook may already chain other tooling). Each concern only
578
+ runs when relevant files are staged — zero overhead otherwise.
579
+
580
+ --print dump the hook script to stdout (for manual chaining into an
581
+ existing pre-commit script, husky, lefthook, etc.)
582
+ --force overwrite an existing .git/hooks/pre-commit (DESTRUCTIVE)
583
+ HELP
584
+ return 0 ;;
585
+ *)
586
+ echo "❌ hooks:install: unknown argument: $arg" >&2
587
+ echo " Run \`./agent-config hooks:install --help\` for usage." >&2
588
+ return 2 ;;
589
+ esac
590
+ done
591
+
592
+ local hook_src
593
+ hook_src="$(resolve_script ".agent-src/templates/hooks/pre-commit-roadmap-progress" ".augment/templates/hooks/pre-commit-roadmap-progress")" || return 1
594
+
595
+ if $print_only; then
596
+ cat "$hook_src"
597
+ return 0
598
+ fi
599
+
600
+ local git_dir
601
+ git_dir="$(git -C "$CONSUMER_ROOT" rev-parse --git-dir 2>/dev/null || true)"
602
+ if [[ -z "$git_dir" ]]; then
603
+ echo "❌ hooks:install: $CONSUMER_ROOT is not a git repository." >&2
604
+ return 1
605
+ fi
606
+ # Resolve relative git-dir paths (worktrees, submodules) against CONSUMER_ROOT.
607
+ [[ "$git_dir" != /* ]] && git_dir="$CONSUMER_ROOT/$git_dir"
608
+
609
+ local hook_dir="$git_dir/hooks"
610
+ local target="$hook_dir/pre-commit"
611
+ mkdir -p "$hook_dir"
612
+
613
+ if [[ -f "$target" ]] && ! $force; then
614
+ if grep -q "pre-commit-roadmap-progress" "$target" 2>/dev/null; then
615
+ echo "✅ hooks:install: already installed at $target"
616
+ return 0
617
+ fi
618
+ echo "⚠️ hooks:install: $target already exists and looks unrelated." >&2
619
+ echo " Options:" >&2
620
+ echo " 1. Inspect it and append the snippet manually:" >&2
621
+ echo " ./agent-config hooks:install --print >> $target" >&2
622
+ echo " 2. Replace it (destructive):" >&2
623
+ echo " ./agent-config hooks:install --force" >&2
624
+ return 1
625
+ fi
626
+
627
+ cp "$hook_src" "$target"
628
+ chmod +x "$target"
629
+ echo "✅ hooks:install: pre-commit hook installed at $target"
630
+ echo " To uninstall: rm $target"
631
+ }
632
+
633
+ # Wrap the interactive key installers under a stable CLI entry. The shell
634
+ # scripts themselves enforce /dev/tty, 0600, and atomic write — this is
635
+ # pure routing so consumers never have to know the package layout.
636
+ cmd_keys_install_anthropic() {
637
+ local script
638
+ script="$(resolve_script "scripts/install_anthropic_key.sh")" || return 1
639
+ exec bash "$script" "$@"
640
+ }
641
+
642
+ cmd_keys_install_openai() {
643
+ local script
644
+ script="$(resolve_script "scripts/install_openai_key.sh")" || return 1
645
+ exec bash "$script" "$@"
646
+ }
647
+
648
+ # Council CLI — non-interactive wrapper around scripts.ai_council.orchestrator.
649
+ # Three subcommands share one Python entry point; we forward the subcommand
650
+ # verb so `./agent-config council:run --confirm` lands on `council_cli.py run`.
651
+ cmd_council() {
652
+ require_python3
653
+ local sub="$1"; shift || true
654
+ local script
655
+ script="$(resolve_script "scripts/council_cli.py")" || return 1
656
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 "$script" "$sub" "$@"
657
+ }
658
+
659
+ # `agent-config update` — flip the agent_config_version pin in
660
+ # .agent-settings.yml. See scripts/_cli/cmd_update.py (P3.1 of
661
+ # road-to-portable-runtime-and-update-check.md).
662
+ cmd_update() {
663
+ require_python3
664
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_update "$@"
665
+ }
666
+
667
+ # `agent-config migrate` — one-shot migration off legacy composer / npm
668
+ # install paths onto the npx-only runtime. See scripts/_cli/cmd_migrate.py
669
+ # (P3.5 of road-to-portable-runtime-and-update-check.md).
670
+ cmd_migrate() {
671
+ require_python3
672
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_migrate "$@"
673
+ }
674
+
675
+ # `agent-config init` — project-scope install entry point. Forwards
676
+ # unmodified args to the bash installer. This is the canonical
677
+ # `npx @event4u/agent-config init` consumer entry point (replaces the
678
+ # deprecated @event4u/create-agent-config wrapper package).
679
+ cmd_init() {
680
+ local script
681
+ script="$(resolve_script "scripts/install")" || return 1
682
+ exec bash "$script" "$@"
683
+ }
684
+
685
+ # `agent-config global` — user-scope install entry point. Forwards to the
686
+ # bash installer with `--global` set (ADR-007). Phase 1.2 of
687
+ # road-to-global-first-install.md. The bash wrapper handles option parsing
688
+ # and forwards to `scripts/install.py --global`, where `install_global()`
689
+ # currently scaffolds the per-tool anchor paths from USER_SCOPE_PATHS.
690
+ # Concrete writes land in Phase 1.5 (export) and Phase 1.6 (lockfile).
691
+ cmd_global() {
692
+ local script
693
+ script="$(resolve_script "scripts/install")" || return 1
694
+ exec bash "$script" --global "$@"
695
+ }
696
+
697
+ # `agent-config export` — write a tool's canonical content into a
698
+ # user-chosen path. ADR-007 D3 / Phase 1.5 of
699
+ # road-to-global-first-install.md. Replaces the rejected symlink-bridge.
700
+ # See scripts/_cli/cmd_export.py for the registry and idempotency logic.
701
+ cmd_export() {
702
+ require_python3
703
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_export "$@"
704
+ }
705
+
706
+ # `agent-config sync` — replay agents/installed-tools.lock (ADR-008
707
+ # Phase 3.3). Re-installs any tool whose bridge marker is missing on
708
+ # disk. Typical onboarding flow: clone → `./agent-config sync` → done.
709
+ cmd_sync() {
710
+ require_python3
711
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_sync "$@"
712
+ }
713
+
714
+ # `agent-config validate` — read-only drift detection (ADR-008 Phase 3.4).
715
+ # Surfaces marker-missing, scope-divergence, and version-drift; exits 1 on
716
+ # any drift. Never edits the manifest or re-runs the installer.
717
+ cmd_validate() {
718
+ require_python3
719
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_validate "$@"
720
+ }
721
+
722
+ # `agent-config settings:check` — read-only YAML-subset validator for
723
+ # `.agent-settings.yml` (P3.2 of road-to-proof-not-features.md). Contract
724
+ # pinned in docs/contracts/settings-sync-yaml-subset.md. Exit 0 clean,
725
+ # 1 finding(s), 2 file absent / unreadable.
726
+ cmd_settings_check() {
727
+ require_python3
728
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_settings_check "$@"
729
+ }
730
+
731
+ # `agent-config settings:migrate` — lift project-local
732
+ # .agent-settings.yml / .agent-user.yml into ~/.event4u/agent-config/.
733
+ # Phase 2.4 of road-to-global-only-install.md. Read-only on the source —
734
+ # the destructive move step is owned by `migrate-to-global` (Phase 5).
735
+ # Exit 0 success / no-op, 1 non-empty global without --force or parse error.
736
+ cmd_settings_migrate() {
737
+ require_python3
738
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_settings_migrate "$@"
739
+ }
740
+
741
+ # `agent-config migrate-to-global` — Phase 5.1 + 5.3 + 5.5 of
742
+ # road-to-global-only-install.md. Order: copy → verify → move → bridge.
743
+ # Runs the lint_global_paths.py permissions gate first (Phase 5.0 / A7).
744
+ # Flags: --dry-run (zero writes), --force (overwrite non-empty global),
745
+ # --rollback (reverse the latest .legacy-pre-global-only/<stamp>/ snapshot).
746
+ cmd_migrate_to_global() {
747
+ require_python3
748
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_migrate_to_global "$@"
749
+ }
750
+
751
+ # `agent-config uninstall` — remove bridge markers (project) or lockfile
752
+ # entries (global). Idempotent. Pass `--purge` to also delete deployed
753
+ # content directories under user-scope anchors (destructive). See
754
+ # scripts/_cli/cmd_uninstall.py.
755
+ cmd_uninstall() {
756
+ require_python3
757
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_uninstall "$@"
758
+ }
759
+
760
+ # `agent-config prune` — remove orphaned project bridge markers.
761
+ # Drift-cleanup sibling to `uninstall`: compares on-disk markers
762
+ # against agents/installed-tools.lock and unlinks anything not
763
+ # declared. Hard-floors when lockfile is absent. See
764
+ # scripts/_cli/cmd_prune.py.
765
+ cmd_prune() {
766
+ require_python3
767
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_prune "$@"
768
+ }
769
+
770
+ # `agent-config doctor` — read-only drift report against the manifest.
771
+ # Surfaces missing / modified / foreign files. Exit 0 clean, 1 drift,
772
+ # 2 manifest-absent. See scripts/_cli/cmd_doctor.py.
773
+ cmd_doctor() {
774
+ require_python3
775
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_doctor "$@"
776
+ }
777
+
778
+ # `agent-config versions` — list available @event4u/agent-config versions
779
+ # on the npm registry. Marks the current pin (from .agent-settings.yml)
780
+ # and the latest published version. Offline-tolerant. See
781
+ # scripts/_cli/cmd_versions.py.
782
+ cmd_versions() {
783
+ require_python3
784
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_versions "$@"
785
+ }
786
+
787
+ # `agent-config explain <config|rule|route>` — print the decision chain
788
+ # behind a configuration or routing outcome. Read-only diagnostic; never
789
+ # edits state. See scripts/_cli/cmd_explain.py.
790
+ cmd_explain() {
791
+ require_python3
792
+ exec env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._cli.cmd_explain "$@"
793
+ }
794
+
795
+ main() {
796
+ local cmd="${1-}"
797
+ [[ $# -gt 0 ]] && shift || true
798
+
799
+ case "$cmd" in
800
+ mcp:render) cmd_mcp_render "$@" ;;
801
+ mcp:check) cmd_mcp_check "$@" ;;
802
+ mcp:setup) cmd_mcp_setup "$@" ;;
803
+ mcp:run) cmd_mcp_run "$@" ;;
804
+ roadmap:progress) cmd_roadmap_progress "$@" ;;
805
+ roadmap:progress-check) cmd_roadmap_progress_check "$@" ;;
806
+ hooks:install) cmd_hooks_install "$@" ;;
807
+ keys:install-anthropic) cmd_keys_install_anthropic "$@" ;;
808
+ keys:install-openai) cmd_keys_install_openai "$@" ;;
809
+ first-run) cmd_first_run "$@" ;;
810
+ implement-ticket) cmd_implement_ticket "$@" ;;
811
+ work) cmd_work "$@" ;;
812
+ migrate-state) cmd_migrate_state "$@" ;;
813
+ memory:lookup) cmd_memory_lookup "$@" ;;
814
+ memory:signal) cmd_memory_signal "$@" ;;
815
+ memory:hash) cmd_memory_hash "$@" ;;
816
+ memory:check) cmd_memory_check "$@" ;;
817
+ memory:check-proposal) cmd_memory_check_proposal "$@" ;;
818
+ proposal:check) cmd_proposal_check "$@" ;;
819
+ refine-ticket:detect) cmd_refine_ticket_detect "$@" ;;
820
+ chat-history:hook) cmd_chat_history_hook "$@" ;;
821
+ chat-history:checkpoint) cmd_chat_history_checkpoint "$@" ;;
822
+ roadmap-progress:hook) cmd_roadmap_progress_hook "$@" ;;
823
+ onboarding-gate:hook) cmd_onboarding_gate_hook "$@" ;;
824
+ context-hygiene:hook) cmd_context_hygiene_hook "$@" ;;
825
+ dispatch:hook) cmd_dispatch_hook "$@" ;;
826
+ hooks:status) cmd_hooks_status "$@" ;;
827
+ hooks:doctor) cmd_hooks_doctor "$@" ;;
828
+ hooks:replay) cmd_hooks_replay "$@" ;;
829
+ telemetry:record) cmd_telemetry_record "$@" ;;
830
+ telemetry:status) cmd_telemetry_status "$@" ;;
831
+ telemetry:report) cmd_telemetry_report "$@" ;;
832
+ council:estimate) cmd_council estimate "$@" ;;
833
+ council:run) cmd_council run "$@" ;;
834
+ council:render) cmd_council render "$@" ;;
835
+ update) cmd_update "$@" ;;
836
+ migrate) cmd_migrate "$@" ;;
837
+ init) cmd_init "$@" ;;
838
+ global) cmd_global "$@" ;;
839
+ export) cmd_export "$@" ;;
840
+ sync) cmd_sync "$@" ;;
841
+ validate) cmd_validate "$@" ;;
842
+ settings:check) cmd_settings_check "$@" ;;
843
+ settings:migrate) cmd_settings_migrate "$@" ;;
844
+ migrate-to-global) cmd_migrate_to_global "$@" ;;
845
+ uninstall) cmd_uninstall "$@" ;;
846
+ prune) cmd_prune "$@" ;;
847
+ doctor) cmd_doctor "$@" ;;
848
+ versions) cmd_versions "$@" ;;
849
+ explain) cmd_explain "$@" ;;
850
+ help|--help|-h|"")
851
+ # Optional `--tier=0|1|all` filter (default 0).
852
+ local tier_arg="0"
853
+ for arg in "$@"; do
854
+ case "$arg" in
855
+ --tier=0|--tier=1|--tier=all) tier_arg="${arg#--tier=}" ;;
856
+ --tier|-t) ;; # next arg
857
+ 0|1|all)
858
+ # Positional after --tier/-t.
859
+ tier_arg="$arg" ;;
860
+ --all) tier_arg="all" ;;
861
+ esac
862
+ done
863
+ usage "$tier_arg" ;;
864
+ --version|-V) print_version ;;
865
+ *)
866
+ echo "❌ agent-config: unknown command: $cmd" >&2
867
+ echo " Run \`./agent-config help\` for the command list." >&2
868
+ exit 2
869
+ ;;
870
+ esac
871
+ }
872
+
873
+ # Pre-flight pin resolver: when `.agent-settings.yml` carries a
874
+ # non-empty `agent_config_version` that differs from the running
875
+ # package version, re-exec via `npx @event4u/agent-config@<pin>`.
876
+ # Skipped for `--version`, `help`, `update` and `migrate` (so consumers
877
+ # can escape a bad pin or run the legacy-cleanup before a pin exists),
878
+ # and when `AGENT_CONFIG_NO_PIN_REEXEC=1`. See P3.2 of
879
+ # road-to-portable-runtime-and-update-check.md.
880
+ maybe_pin_reexec() {
881
+ local cmd="${1-}"
882
+ case "$cmd" in
883
+ help|--help|-h|--version|-V|update|migrate|init|"") return 0 ;;
884
+ esac
885
+ if ! command -v python3 >/dev/null 2>&1; then
886
+ return 0
887
+ fi
888
+ local installed
889
+ installed="$(print_version)"
890
+ [[ -z "$installed" || "$installed" == "unknown" ]] && return 0
891
+ env PYTHONPATH="$PACKAGE_ROOT" python3 -m scripts._lib.pin_resolver \
892
+ --cwd "$CONSUMER_ROOT" --installed "$installed" -- "$@" || true
893
+ }
894
+
895
+ # Post-subcommand banner: best-effort daily update-check notice on
896
+ # stderr. Runs after the dispatch returns (subshell wrapper below)
897
+ # so the banner appears post-output and never delays the subcommand.
898
+ # Suppressed in CI, on non-TTY stdout, by AGENT_CONFIG_NO_UPDATE_CHECK=1,
899
+ # or by `update_check.enabled: false` in settings. See P2 of
900
+ # road-to-portable-runtime-and-update-check.md.
901
+ run_update_check_banner() {
902
+ local cmd="${1-}"
903
+ case "$cmd" in
904
+ help|--help|-h|--version|-V|"") return 0 ;;
905
+ esac
906
+ if ! command -v python3 >/dev/null 2>&1; then
907
+ return 0
908
+ fi
909
+ local banner_script="$PACKAGE_ROOT/scripts/check_update_banner.py"
910
+ [[ -f "$banner_script" ]] || return 0
911
+ python3 "$banner_script" --cwd "$CONSUMER_ROOT" 2>/dev/null || true
912
+ }
913
+
914
+ # Global `--root <path>` / `--root=<path>` parsing (Step 8 A3).
915
+ # Strips the flag from $@, validates the path is an existing directory,
916
+ # and exports `AGENT_CONFIG_PROJECT_ROOT` + `AGENT_CONFIG_ROOT_OVERRIDE=1`
917
+ # so the Python resolver picks origin=root-flag with fail-loud semantics.
918
+ # Invalid path → exit 2 immediately, no fallback to anchor walk or CWD.
919
+ parse_global_root_flag() {
920
+ local -a filtered=()
921
+ local root_value=""
922
+ local saw_flag=false
923
+ while [[ $# -gt 0 ]]; do
924
+ case "$1" in
925
+ --root)
926
+ saw_flag=true
927
+ if [[ $# -lt 2 ]]; then
928
+ echo "❌ agent-config: --root requires a path argument" >&2
929
+ exit 2
930
+ fi
931
+ root_value="$2"
932
+ shift 2
933
+ ;;
934
+ --root=*)
935
+ saw_flag=true
936
+ root_value="${1#--root=}"
937
+ shift
938
+ ;;
939
+ *)
940
+ filtered+=("$1")
941
+ shift
942
+ ;;
943
+ esac
944
+ done
945
+ if $saw_flag; then
946
+ if [[ -z "$root_value" ]]; then
947
+ echo "❌ agent-config: --root requires a non-empty path" >&2
948
+ exit 2
949
+ fi
950
+ if [[ ! -e "$root_value" ]]; then
951
+ echo "❌ agent-config: --root points to a path that does not exist: $root_value" >&2
952
+ exit 2
953
+ fi
954
+ if [[ ! -d "$root_value" ]]; then
955
+ echo "❌ agent-config: --root points to a non-directory: $root_value" >&2
956
+ exit 2
957
+ fi
958
+ # Absolutize so downstream Python sees a fully-resolved path.
959
+ root_value="$(cd "$root_value" && pwd)"
960
+ export AGENT_CONFIG_PROJECT_ROOT="$root_value"
961
+ export AGENT_CONFIG_ROOT_OVERRIDE=1
962
+ # Wrapper-coupling guard: when invoked through a consumer-root wrapper
963
+ # (CONSUMER_ROOT != root_value), surface a one-line warning on stderr
964
+ # so the operator notices the divergence. Non-fatal: --root is the
965
+ # deliberate override channel.
966
+ if [[ "$CONSUMER_ROOT" != "$root_value" ]]; then
967
+ echo "⚠️ agent-config: --root ($root_value) differs from wrapper CWD ($CONSUMER_ROOT)" >&2
968
+ fi
969
+ fi
970
+ # Re-emit the filtered argv via a global array consumed by main().
971
+ GLOBAL_FILTERED_ARGS=("${filtered[@]+"${filtered[@]}"}")
972
+ }
973
+
974
+ declare -a GLOBAL_FILTERED_ARGS
975
+ parse_global_root_flag "$@"
976
+ set -- "${GLOBAL_FILTERED_ARGS[@]+"${GLOBAL_FILTERED_ARGS[@]}"}"
977
+
978
+ # Pin re-exec runs before dispatch — if it triggers, the process is
979
+ # replaced and nothing else here matters.
980
+ maybe_pin_reexec "$@"
981
+
982
+ # Dispatch in a subshell so internal ``exec`` calls do not replace this
983
+ # process — we still get to run the post-subcommand banner.
984
+ ( main "$@" )
985
+ rc=$?
986
+ run_update_check_banner "${1-}"
987
+ exit "$rc"