@event4u/agent-config 5.2.0 → 5.4.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 (515) hide show
  1. package/.agent-src/commands/agent-handoff.md +1 -9
  2. package/.agent-src/commands/agent-status.md +1 -9
  3. package/.agent-src/commands/agents/audit.md +1 -9
  4. package/.agent-src/commands/agents/init.md +1 -9
  5. package/.agent-src/commands/agents/optimize.md +1 -9
  6. package/.agent-src/commands/agents/user/accept.md +1 -9
  7. package/.agent-src/commands/agents/user/init.md +1 -9
  8. package/.agent-src/commands/agents/user/review.md +1 -9
  9. package/.agent-src/commands/agents/user/show.md +1 -9
  10. package/.agent-src/commands/agents/user/update.md +1 -9
  11. package/.agent-src/commands/agents/user.md +1 -9
  12. package/.agent-src/commands/agents.md +1 -9
  13. package/.agent-src/commands/analytics/prune.md +1 -9
  14. package/.agent-src/commands/analytics/show.md +1 -9
  15. package/.agent-src/commands/analytics.md +1 -9
  16. package/.agent-src/commands/analyze-reference-repo.md +1 -9
  17. package/.agent-src/commands/bug-fix.md +1 -9
  18. package/.agent-src/commands/bug-investigate.md +1 -9
  19. package/.agent-src/commands/challenge-me/vision.md +1 -9
  20. package/.agent-src/commands/challenge-me/with-docs.md +1 -9
  21. package/.agent-src/commands/challenge-me.md +1 -9
  22. package/.agent-src/commands/chat-history/import.md +1 -9
  23. package/.agent-src/commands/chat-history/learn.md +1 -9
  24. package/.agent-src/commands/chat-history/show.md +1 -9
  25. package/.agent-src/commands/chat-history.md +1 -9
  26. package/.agent-src/commands/check-current-md.md +1 -9
  27. package/.agent-src/commands/commit/in-chunks.md +1 -9
  28. package/.agent-src/commands/commit.md +1 -9
  29. package/.agent-src/commands/condense.md +1 -9
  30. package/.agent-src/commands/context/create.md +1 -9
  31. package/.agent-src/commands/context/refactor.md +1 -9
  32. package/.agent-src/commands/context.md +1 -9
  33. package/.agent-src/commands/cost-report.md +1 -9
  34. package/.agent-src/commands/council/analysis.md +1 -9
  35. package/.agent-src/commands/council/debate.md +1 -9
  36. package/.agent-src/commands/council/default.md +1 -9
  37. package/.agent-src/commands/council/design.md +1 -9
  38. package/.agent-src/commands/council/optimize.md +1 -9
  39. package/.agent-src/commands/council/pr.md +1 -9
  40. package/.agent-src/commands/council.md +1 -9
  41. package/.agent-src/commands/create-pr/description-only.md +1 -9
  42. package/.agent-src/commands/create-pr.md +1 -9
  43. package/.agent-src/commands/e2e-heal.md +1 -9
  44. package/.agent-src/commands/e2e-plan.md +1 -9
  45. package/.agent-src/commands/estimate-ticket.md +1 -9
  46. package/.agent-src/commands/feature/dev.md +1 -9
  47. package/.agent-src/commands/feature/explore.md +1 -9
  48. package/.agent-src/commands/feature/plan.md +1 -9
  49. package/.agent-src/commands/feature/refactor.md +1 -9
  50. package/.agent-src/commands/feature/roadmap.md +1 -9
  51. package/.agent-src/commands/feature.md +1 -9
  52. package/.agent-src/commands/fix/ci.md +1 -9
  53. package/.agent-src/commands/fix/portability.md +1 -9
  54. package/.agent-src/commands/fix/pr-bot-comments.md +1 -9
  55. package/.agent-src/commands/fix/pr-comments.md +1 -9
  56. package/.agent-src/commands/fix/pr-developer-comments.md +1 -9
  57. package/.agent-src/commands/fix/refs.md +1 -9
  58. package/.agent-src/commands/fix/seeder.md +1 -9
  59. package/.agent-src/commands/fix.md +1 -9
  60. package/.agent-src/commands/ghostwriter/delete.md +1 -9
  61. package/.agent-src/commands/ghostwriter/fetch.md +1 -9
  62. package/.agent-src/commands/ghostwriter/list.md +1 -9
  63. package/.agent-src/commands/ghostwriter/show.md +1 -9
  64. package/.agent-src/commands/ghostwriter/write.md +1 -9
  65. package/.agent-src/commands/ghostwriter.md +1 -9
  66. package/.agent-src/commands/grill-me.md +1 -9
  67. package/.agent-src/commands/implement-ticket.md +1 -9
  68. package/.agent-src/commands/jira-ticket.md +1 -9
  69. package/.agent-src/commands/judge/on-diff.md +1 -9
  70. package/.agent-src/commands/judge/solo.md +1 -9
  71. package/.agent-src/commands/judge/steps.md +1 -9
  72. package/.agent-src/commands/judge.md +1 -9
  73. package/.agent-src/commands/knowledge/forget.md +1 -9
  74. package/.agent-src/commands/knowledge/ingest.md +1 -9
  75. package/.agent-src/commands/knowledge/list.md +1 -9
  76. package/.agent-src/commands/knowledge.md +1 -9
  77. package/.agent-src/commands/memory/add.md +1 -9
  78. package/.agent-src/commands/memory/learn-low-impact.md +1 -9
  79. package/.agent-src/commands/memory/load.md +1 -9
  80. package/.agent-src/commands/memory/mine-session.md +1 -9
  81. package/.agent-src/commands/memory/promote.md +1 -9
  82. package/.agent-src/commands/memory/propose.md +1 -9
  83. package/.agent-src/commands/memory.md +1 -9
  84. package/.agent-src/commands/mode.md +1 -9
  85. package/.agent-src/commands/module/create.md +1 -9
  86. package/.agent-src/commands/module/explore.md +1 -9
  87. package/.agent-src/commands/module.md +1 -9
  88. package/.agent-src/commands/optimize/agents-dir.md +1 -9
  89. package/.agent-src/commands/optimize/augmentignore.md +1 -9
  90. package/.agent-src/commands/optimize/rtk.md +1 -9
  91. package/.agent-src/commands/optimize/skills.md +1 -9
  92. package/.agent-src/commands/optimize-prompt.md +1 -9
  93. package/.agent-src/commands/optimize.md +1 -9
  94. package/.agent-src/commands/orchestrate.md +1 -9
  95. package/.agent-src/commands/override/create.md +1 -9
  96. package/.agent-src/commands/override/manage.md +1 -9
  97. package/.agent-src/commands/override.md +1 -9
  98. package/.agent-src/commands/package-reset.md +1 -9
  99. package/.agent-src/commands/package-test.md +1 -9
  100. package/.agent-src/commands/post-as/ghostwriter.md +1 -9
  101. package/.agent-src/commands/post-as/me.md +1 -9
  102. package/.agent-src/commands/post-as.md +1 -9
  103. package/.agent-src/commands/prepare-for-review.md +1 -9
  104. package/.agent-src/commands/project-analyze.md +1 -9
  105. package/.agent-src/commands/project-health.md +1 -9
  106. package/.agent-src/commands/quality-fix.md +1 -9
  107. package/.agent-src/commands/refine-ticket.md +1 -9
  108. package/.agent-src/commands/research/deep.md +1 -9
  109. package/.agent-src/commands/research/report.md +1 -9
  110. package/.agent-src/commands/research.md +1 -9
  111. package/.agent-src/commands/review-changes.md +1 -9
  112. package/.agent-src/commands/review-routing.md +1 -9
  113. package/.agent-src/commands/roadmap/ai-council.md +1 -9
  114. package/.agent-src/commands/roadmap/create.md +1 -9
  115. package/.agent-src/commands/roadmap/process-full.md +1 -9
  116. package/.agent-src/commands/roadmap/process-phase.md +1 -9
  117. package/.agent-src/commands/roadmap/process-step.md +1 -9
  118. package/.agent-src/commands/roadmap.md +1 -9
  119. package/.agent-src/commands/rule-compliance-audit.md +1 -9
  120. package/.agent-src/commands/set-cost-profile.md +1 -9
  121. package/.agent-src/commands/sync-agent-settings.md +1 -9
  122. package/.agent-src/commands/sync-gitignore/fix.md +1 -9
  123. package/.agent-src/commands/sync-gitignore.md +1 -9
  124. package/.agent-src/commands/tests/create.md +1 -9
  125. package/.agent-src/commands/tests/execute.md +1 -9
  126. package/.agent-src/commands/tests.md +1 -9
  127. package/.agent-src/commands/threat-model.md +1 -9
  128. package/.agent-src/commands/update-form-request-messages.md +1 -9
  129. package/.agent-src/commands/upstream-contribute.md +1 -9
  130. package/.agent-src/commands/video/from-script.md +1 -9
  131. package/.agent-src/commands/video/scene.md +1 -9
  132. package/.agent-src/commands/video/stitch.md +1 -9
  133. package/.agent-src/commands/video/storyboard.md +1 -9
  134. package/.agent-src/commands/video.md +1 -9
  135. package/.agent-src/commands/work.md +1 -9
  136. package/.agent-src/contexts/model-recommendations.md +82 -82
  137. package/.agent-src/personas/ai-agent.md +0 -2
  138. package/.agent-src/personas/ai-video-technical-director.md +0 -2
  139. package/.agent-src/personas/backend-architect.md +0 -2
  140. package/.agent-src/personas/cmo.md +0 -2
  141. package/.agent-src/personas/critical-challenger.md +0 -2
  142. package/.agent-src/personas/customer-success-lead.md +0 -2
  143. package/.agent-src/personas/developer.md +0 -2
  144. package/.agent-src/personas/discovery-lead.md +0 -2
  145. package/.agent-src/personas/eloquent-tamer.md +0 -2
  146. package/.agent-src/personas/engineering-manager.md +0 -2
  147. package/.agent-src/personas/finance-partner.md +0 -2
  148. package/.agent-src/personas/frontend-engineer.md +0 -2
  149. package/.agent-src/personas/growth-pm.md +0 -2
  150. package/.agent-src/personas/hollywood-director.md +0 -2
  151. package/.agent-src/personas/people-strategist.md +0 -2
  152. package/.agent-src/personas/product-owner.md +0 -1
  153. package/.agent-src/personas/qa.md +0 -2
  154. package/.agent-src/personas/revops-maintainer.md +0 -2
  155. package/.agent-src/personas/revops.md +0 -2
  156. package/.agent-src/personas/security-engineer.md +0 -2
  157. package/.agent-src/personas/senior-engineer.md +0 -2
  158. package/.agent-src/personas/stakeholder.md +0 -2
  159. package/.agent-src/personas/strategist.md +0 -2
  160. package/.agent-src/personas/tech-writer.md +0 -2
  161. package/.agent-src/rules/agent-authority.md +0 -9
  162. package/.agent-src/rules/analysis-skill-routing.md +0 -9
  163. package/.agent-src/rules/architecture.md +0 -9
  164. package/.agent-src/rules/artifact-drafting-protocol.md +0 -9
  165. package/.agent-src/rules/artifact-engagement-recording.md +0 -9
  166. package/.agent-src/rules/ask-when-uncertain.md +0 -9
  167. package/.agent-src/rules/augment-edit-discipline.md +0 -9
  168. package/.agent-src/rules/augment-source-of-truth.md +0 -9
  169. package/.agent-src/rules/autonomous-execution.md +0 -9
  170. package/.agent-src/rules/cli-output-handling.md +0 -9
  171. package/.agent-src/rules/command-suggestion-policy.md +0 -9
  172. package/.agent-src/rules/commit-conventions.md +0 -9
  173. package/.agent-src/rules/commit-policy.md +0 -9
  174. package/.agent-src/rules/context-hygiene.md +0 -9
  175. package/.agent-src/rules/copilot-routing.md +0 -9
  176. package/.agent-src/rules/devcontainer-routing.md +0 -9
  177. package/.agent-src/rules/direct-answers.md +0 -9
  178. package/.agent-src/rules/docker-commands.md +0 -9
  179. package/.agent-src/rules/domain-adoption-policy.md +0 -9
  180. package/.agent-src/rules/domain-safety-disclaimer.md +0 -9
  181. package/.agent-src/rules/domain-safety-pii.md +0 -9
  182. package/.agent-src/rules/domain-safety-retention.md +0 -9
  183. package/.agent-src/rules/downstream-changes.md +0 -9
  184. package/.agent-src/rules/engineering-safety-floor.md +0 -9
  185. package/.agent-src/rules/external-reference-deep-dive.md +0 -9
  186. package/.agent-src/rules/fast-path-marker-visibility.md +0 -9
  187. package/.agent-src/rules/finance-safety-floor.md +0 -6
  188. package/.agent-src/rules/framework-neutrality-in-generic-skills.md +0 -9
  189. package/.agent-src/rules/git-history-discipline.md +0 -9
  190. package/.agent-src/rules/guidelines.md +0 -9
  191. package/.agent-src/rules/improve-before-implement.md +0 -9
  192. package/.agent-src/rules/invite-challenge.md +0 -9
  193. package/.agent-src/rules/language-and-tone.md +0 -9
  194. package/.agent-src/rules/laravel-routing.md +0 -4
  195. package/.agent-src/rules/laravel-translations.md +0 -4
  196. package/.agent-src/rules/linked-projects-onboarding-gate.md +0 -3
  197. package/.agent-src/rules/low-impact-corpus-privacy-floor.md +0 -9
  198. package/.agent-src/rules/markdown-safe-codeblocks.md +0 -9
  199. package/.agent-src/rules/media-governance-routing.md +0 -9
  200. package/.agent-src/rules/minimal-safe-diff.md +0 -9
  201. package/.agent-src/rules/missing-tool-handling.md +0 -9
  202. package/.agent-src/rules/model-recommendation.md +69 -15
  203. package/.agent-src/rules/no-attribution-footers.md +0 -9
  204. package/.agent-src/rules/no-cheap-questions.md +0 -9
  205. package/.agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -9
  206. package/.agent-src/rules/no-pr-progress-comments.md +0 -9
  207. package/.agent-src/rules/no-roadmap-references.md +0 -9
  208. package/.agent-src/rules/non-destructive-by-default.md +0 -9
  209. package/.agent-src/rules/onboarding-gate.md +0 -9
  210. package/.agent-src/rules/package-ci-checks.md +0 -9
  211. package/.agent-src/rules/persona-governance.md +0 -9
  212. package/.agent-src/rules/php-coding.md +0 -4
  213. package/.agent-src/rules/preservation-guard.md +0 -9
  214. package/.agent-src/rules/provider-lifecycle-discipline.md +0 -9
  215. package/.agent-src/rules/reviewer-awareness.md +0 -9
  216. package/.agent-src/rules/roadmap-ci-steps-policy.md +0 -9
  217. package/.agent-src/rules/roadmap-progress-sync.md +0 -9
  218. package/.agent-src/rules/role-mode-adherence.md +0 -9
  219. package/.agent-src/rules/rule-type-governance.md +0 -9
  220. package/.agent-src/rules/runtime-safety.md +0 -9
  221. package/.agent-src/rules/scope-control.md +0 -9
  222. package/.agent-src/rules/security-sensitive-stop.md +0 -9
  223. package/.agent-src/rules/size-enforcement.md +0 -9
  224. package/.agent-src/rules/skill-improvement-trigger.md +0 -9
  225. package/.agent-src/rules/skill-quality.md +0 -9
  226. package/.agent-src/rules/slash-command-routing-policy.md +0 -9
  227. package/.agent-src/rules/strategy-safety-floor.md +0 -6
  228. package/.agent-src/rules/symfony-routing.md +0 -4
  229. package/.agent-src/rules/telegraph-speak.md +0 -9
  230. package/.agent-src/rules/think-before-action.md +0 -9
  231. package/.agent-src/rules/token-efficiency.md +0 -9
  232. package/.agent-src/rules/token-optimizer-maintenance.md +0 -9
  233. package/.agent-src/rules/tool-safety.md +0 -9
  234. package/.agent-src/rules/ui-audit-gate.md +0 -9
  235. package/.agent-src/rules/upstream-proposal.md +0 -9
  236. package/.agent-src/rules/user-interaction.md +0 -9
  237. package/.agent-src/rules/user-interrupt-priority.md +0 -9
  238. package/.agent-src/rules/verify-before-complete.md +0 -9
  239. package/.agent-src/skills/accessibility-auditor/SKILL.md +1 -9
  240. package/.agent-src/skills/activation-design/SKILL.md +1 -4
  241. package/.agent-src/skills/adr-create/SKILL.md +1 -9
  242. package/.agent-src/skills/adversarial-review/SKILL.md +1 -9
  243. package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -9
  244. package/.agent-src/skills/agents-md-thin-root/SKILL.md +1 -9
  245. package/.agent-src/skills/ai-council/SKILL.md +1 -9
  246. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -9
  247. package/.agent-src/skills/analysis-skill-router/SKILL.md +1 -9
  248. package/.agent-src/skills/api-design/SKILL.md +1 -9
  249. package/.agent-src/skills/api-endpoint/SKILL.md +1 -9
  250. package/.agent-src/skills/api-testing/SKILL.md +1 -9
  251. package/.agent-src/skills/architecture-review-lens/SKILL.md +1 -9
  252. package/.agent-src/skills/artisan-commands/SKILL.md +1 -4
  253. package/.agent-src/skills/async-python-patterns/SKILL.md +1 -3
  254. package/.agent-src/skills/authz-review/SKILL.md +1 -9
  255. package/.agent-src/skills/aws-infrastructure/SKILL.md +1 -9
  256. package/.agent-src/skills/blade-ui/SKILL.md +1 -4
  257. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -9
  258. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -9
  259. package/.agent-src/skills/build-buy-partner/SKILL.md +1 -7
  260. package/.agent-src/skills/canvas-design/SKILL.md +1 -3
  261. package/.agent-src/skills/character-consistency/SKILL.md +1 -3
  262. package/.agent-src/skills/check-refs/SKILL.md +1 -9
  263. package/.agent-src/skills/churn-prevention/SKILL.md +1 -5
  264. package/.agent-src/skills/code-refactoring/SKILL.md +1 -9
  265. package/.agent-src/skills/code-review/SKILL.md +1 -9
  266. package/.agent-src/skills/command-routing/SKILL.md +1 -9
  267. package/.agent-src/skills/command-writing/SKILL.md +1 -9
  268. package/.agent-src/skills/comp-banding/SKILL.md +1 -5
  269. package/.agent-src/skills/competitive-moat-analysis/SKILL.md +1 -7
  270. package/.agent-src/skills/competitive-positioning/SKILL.md +1 -5
  271. package/.agent-src/skills/composer-packages/SKILL.md +1 -4
  272. package/.agent-src/skills/condense-memory/SKILL.md +1 -9
  273. package/.agent-src/skills/content-funnel-design/SKILL.md +1 -5
  274. package/.agent-src/skills/context-authoring/SKILL.md +1 -9
  275. package/.agent-src/skills/context-document/SKILL.md +1 -9
  276. package/.agent-src/skills/contracts-cognition/SKILL.md +1 -5
  277. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -9
  278. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +1 -9
  279. package/.agent-src/skills/copilot-config/SKILL.md +1 -9
  280. package/.agent-src/skills/customer-research/SKILL.md +1 -4
  281. package/.agent-src/skills/dashboard-design/SKILL.md +1 -9
  282. package/.agent-src/skills/data-flow-mapper/SKILL.md +1 -9
  283. package/.agent-src/skills/data-handling-judgment/SKILL.md +1 -9
  284. package/.agent-src/skills/database/SKILL.md +1 -9
  285. package/.agent-src/skills/dcf-modeling/SKILL.md +1 -6
  286. package/.agent-src/skills/deal-qualification-meddic/SKILL.md +1 -5
  287. package/.agent-src/skills/decision-record/SKILL.md +1 -9
  288. package/.agent-src/skills/deep-reading-analyst/SKILL.md +2 -9
  289. package/.agent-src/skills/defense-in-depth/SKILL.md +1 -9
  290. package/.agent-src/skills/dependency-upgrade/SKILL.md +1 -9
  291. package/.agent-src/skills/description-assist/SKILL.md +1 -9
  292. package/.agent-src/skills/design-review/SKILL.md +1 -9
  293. package/.agent-src/skills/devcontainer/SKILL.md +1 -9
  294. package/.agent-src/skills/developer-like-execution/SKILL.md +1 -9
  295. package/.agent-src/skills/discovery-interview/SKILL.md +1 -4
  296. package/.agent-src/skills/doc-coauthoring/SKILL.md +1 -9
  297. package/.agent-src/skills/docker/SKILL.md +1 -9
  298. package/.agent-src/skills/editorial-calendar/SKILL.md +1 -5
  299. package/.agent-src/skills/eloquent/SKILL.md +1 -4
  300. package/.agent-src/skills/error-handling-patterns/SKILL.md +1 -9
  301. package/.agent-src/skills/estimate-ticket/SKILL.md +1 -5
  302. package/.agent-src/skills/existing-ui-audit/SKILL.md +1 -9
  303. package/.agent-src/skills/expansion-playbook/SKILL.md +1 -5
  304. package/.agent-src/skills/fe-design/SKILL.md +1 -9
  305. package/.agent-src/skills/feature-planning/SKILL.md +1 -5
  306. package/.agent-src/skills/file-editor/SKILL.md +1 -9
  307. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +1 -9
  308. package/.agent-src/skills/flux/SKILL.md +1 -4
  309. package/.agent-src/skills/forecast-accuracy/SKILL.md +1 -5
  310. package/.agent-src/skills/forecasting/SKILL.md +1 -5
  311. package/.agent-src/skills/form-handler/SKILL.md +1 -9
  312. package/.agent-src/skills/fundraising-narrative/SKILL.md +1 -7
  313. package/.agent-src/skills/funnel-analysis/SKILL.md +1 -5
  314. package/.agent-src/skills/git-workflow/SKILL.md +1 -9
  315. package/.agent-src/skills/github-ci/SKILL.md +1 -9
  316. package/.agent-src/skills/grafana/SKILL.md +1 -9
  317. package/.agent-src/skills/gtm-launch/SKILL.md +1 -5
  318. package/.agent-src/skills/guideline-writing/SKILL.md +1 -9
  319. package/.agent-src/skills/hiring-loop-design/SKILL.md +1 -5
  320. package/.agent-src/skills/incident-commander/SKILL.md +1 -9
  321. package/.agent-src/skills/jira-integration/SKILL.md +1 -9
  322. package/.agent-src/skills/jobs-events/SKILL.md +1 -4
  323. package/.agent-src/skills/judge-bug-hunter/SKILL.md +1 -9
  324. package/.agent-src/skills/judge-code-quality/SKILL.md +1 -9
  325. package/.agent-src/skills/judge-security-auditor/SKILL.md +1 -9
  326. package/.agent-src/skills/judge-test-coverage/SKILL.md +1 -9
  327. package/.agent-src/skills/laravel/SKILL.md +1 -4
  328. package/.agent-src/skills/laravel-api-endpoint/SKILL.md +1 -4
  329. package/.agent-src/skills/laravel-dto/SKILL.md +1 -4
  330. package/.agent-src/skills/laravel-horizon/SKILL.md +1 -4
  331. package/.agent-src/skills/laravel-mail/SKILL.md +1 -4
  332. package/.agent-src/skills/laravel-middleware/SKILL.md +1 -4
  333. package/.agent-src/skills/laravel-migration/SKILL.md +1 -4
  334. package/.agent-src/skills/laravel-notifications/SKILL.md +1 -4
  335. package/.agent-src/skills/laravel-pennant/SKILL.md +1 -4
  336. package/.agent-src/skills/laravel-pulse/SKILL.md +1 -4
  337. package/.agent-src/skills/laravel-reverb/SKILL.md +1 -4
  338. package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -4
  339. package/.agent-src/skills/laravel-validation/SKILL.md +1 -4
  340. package/.agent-src/skills/laravel-websocket/SKILL.md +1 -4
  341. package/.agent-src/skills/launch-readiness/SKILL.md +1 -7
  342. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -8
  343. package/.agent-src/skills/lint-skills/SKILL.md +1 -9
  344. package/.agent-src/skills/livewire/SKILL.md +1 -4
  345. package/.agent-src/skills/livewire-architect/SKILL.md +1 -4
  346. package/.agent-src/skills/logging-monitoring/SKILL.md +1 -9
  347. package/.agent-src/skills/market-entry-analysis/SKILL.md +1 -7
  348. package/.agent-src/skills/markitdown/SKILL.md +1 -9
  349. package/.agent-src/skills/mcp/SKILL.md +1 -9
  350. package/.agent-src/skills/mcp-builder/SKILL.md +1 -9
  351. package/.agent-src/skills/md-language-check/SKILL.md +1 -9
  352. package/.agent-src/skills/memory-consolidation/SKILL.md +1 -9
  353. package/.agent-src/skills/merge-conflicts/SKILL.md +1 -9
  354. package/.agent-src/skills/messaging-architecture/SKILL.md +1 -5
  355. package/.agent-src/skills/migration-architect/SKILL.md +1 -9
  356. package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +1 -9
  357. package/.agent-src/skills/module-detect-on-the-fly/SKILL.md +1 -9
  358. package/.agent-src/skills/module-management/SKILL.md +1 -9
  359. package/.agent-src/skills/motion-choreographer/SKILL.md +1 -3
  360. package/.agent-src/skills/multi-tenancy/SKILL.md +1 -9
  361. package/.agent-src/skills/nextjs-patterns/SKILL.md +1 -4
  362. package/.agent-src/skills/okr-tree-modeling/SKILL.md +1 -7
  363. package/.agent-src/skills/onboarding-design/SKILL.md +1 -5
  364. package/.agent-src/skills/onboarding-program/SKILL.md +1 -5
  365. package/.agent-src/skills/one-on-one-cadence/SKILL.md +1 -5
  366. package/.agent-src/skills/openapi/SKILL.md +1 -9
  367. package/.agent-src/skills/org-design/SKILL.md +1 -5
  368. package/.agent-src/skills/override-management/SKILL.md +1 -9
  369. package/.agent-src/skills/perf-feedback-craft/SKILL.md +1 -5
  370. package/.agent-src/skills/performance/SKILL.md +1 -9
  371. package/.agent-src/skills/performance-analysis/SKILL.md +1 -9
  372. package/.agent-src/skills/persona-writing/SKILL.md +1 -9
  373. package/.agent-src/skills/pest-testing/SKILL.md +1 -4
  374. package/.agent-src/skills/php-coder/SKILL.md +1 -4
  375. package/.agent-src/skills/php-debugging/SKILL.md +1 -4
  376. package/.agent-src/skills/php-service/SKILL.md +1 -4
  377. package/.agent-src/skills/pipeline-strategy/SKILL.md +1 -5
  378. package/.agent-src/skills/pixar-storyteller/SKILL.md +1 -3
  379. package/.agent-src/skills/playwright-architect/SKILL.md +1 -9
  380. package/.agent-src/skills/playwright-testing/SKILL.md +1 -9
  381. package/.agent-src/skills/po-discovery/SKILL.md +1 -5
  382. package/.agent-src/skills/positioning-strategy/SKILL.md +1 -5
  383. package/.agent-src/skills/privacy-review/SKILL.md +1 -9
  384. package/.agent-src/skills/project-analysis-core/SKILL.md +2 -9
  385. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +2 -9
  386. package/.agent-src/skills/project-analysis-laravel/SKILL.md +1 -4
  387. package/.agent-src/skills/project-analysis-nextjs/SKILL.md +1 -4
  388. package/.agent-src/skills/project-analysis-node-express/SKILL.md +1 -3
  389. package/.agent-src/skills/project-analysis-react/SKILL.md +1 -4
  390. package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -4
  391. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +1 -4
  392. package/.agent-src/skills/project-analyzer/SKILL.md +2 -9
  393. package/.agent-src/skills/project-docs/SKILL.md +1 -9
  394. package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -9
  395. package/.agent-src/skills/prompt-optimizer/SKILL.md +1 -9
  396. package/.agent-src/skills/quality-tools/SKILL.md +1 -9
  397. package/.agent-src/skills/react-native-setup/SKILL.md +1 -4
  398. package/.agent-src/skills/react-shadcn-ui/SKILL.md +1 -4
  399. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -9
  400. package/.agent-src/skills/readme-writing/SKILL.md +1 -9
  401. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -9
  402. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -9
  403. package/.agent-src/skills/refine-prompt/SKILL.md +1 -9
  404. package/.agent-src/skills/refine-ticket/SKILL.md +1 -5
  405. package/.agent-src/skills/release-comms/SKILL.md +1 -5
  406. package/.agent-src/skills/repomix-packer/SKILL.md +2 -9
  407. package/.agent-src/skills/requesting-code-review/SKILL.md +1 -9
  408. package/.agent-src/skills/retention-loops/SKILL.md +1 -5
  409. package/.agent-src/skills/review-routing/SKILL.md +1 -9
  410. package/.agent-src/skills/rice-prioritization/SKILL.md +1 -5
  411. package/.agent-src/skills/risk-officer/SKILL.md +1 -9
  412. package/.agent-src/skills/roadmap-management/SKILL.md +1 -9
  413. package/.agent-src/skills/roadmap-writing/SKILL.md +1 -9
  414. package/.agent-src/skills/rtk-output-filtering/SKILL.md +1 -9
  415. package/.agent-src/skills/rule-refactor/SKILL.md +1 -9
  416. package/.agent-src/skills/rule-writing/SKILL.md +1 -9
  417. package/.agent-src/skills/runway-cognition/SKILL.md +1 -5
  418. package/.agent-src/skills/scenario-modeling/SKILL.md +1 -6
  419. package/.agent-src/skills/scene-expander/SKILL.md +1 -3
  420. package/.agent-src/skills/script-writing/SKILL.md +1 -9
  421. package/.agent-src/skills/secrets-management/SKILL.md +1 -9
  422. package/.agent-src/skills/security/SKILL.md +1 -9
  423. package/.agent-src/skills/security-audit/SKILL.md +1 -9
  424. package/.agent-src/skills/sentry-integration/SKILL.md +1 -9
  425. package/.agent-src/skills/sequential-thinking/SKILL.md +1 -9
  426. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -9
  427. package/.agent-src/skills/skill-management/SKILL.md +1 -8
  428. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -9
  429. package/.agent-src/skills/skill-writing/SKILL.md +1 -8
  430. package/.agent-src/skills/sql-writing/SKILL.md +1 -9
  431. package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +1 -5
  432. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -9
  433. package/.agent-src/skills/symfony-workflow/SKILL.md +1 -4
  434. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -9
  435. package/.agent-src/skills/tailwind-engineer/SKILL.md +1 -9
  436. package/.agent-src/skills/tech-debt-tracker/SKILL.md +1 -9
  437. package/.agent-src/skills/technical-specification/SKILL.md +1 -5
  438. package/.agent-src/skills/terraform/SKILL.md +1 -9
  439. package/.agent-src/skills/terragrunt/SKILL.md +1 -9
  440. package/.agent-src/skills/test-driven-development/SKILL.md +1 -9
  441. package/.agent-src/skills/test-performance/SKILL.md +1 -9
  442. package/.agent-src/skills/testing-anti-patterns/SKILL.md +1 -9
  443. package/.agent-src/skills/threat-modeling/SKILL.md +1 -9
  444. package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -5
  445. package/.agent-src/skills/token-optimizer/SKILL.md +1 -9
  446. package/.agent-src/skills/traefik/SKILL.md +1 -9
  447. package/.agent-src/skills/ui-component-architect/SKILL.md +1 -9
  448. package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -5
  449. package/.agent-src/skills/universal-project-analysis/SKILL.md +2 -9
  450. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -9
  451. package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -9
  452. package/.agent-src/skills/validate-feature-fit/SKILL.md +1 -9
  453. package/.agent-src/skills/verify-completion-evidence/SKILL.md +1 -9
  454. package/.agent-src/skills/video-director/SKILL.md +1 -3
  455. package/.agent-src/skills/vision-articulation/SKILL.md +1 -7
  456. package/.agent-src/skills/voc-extract/SKILL.md +1 -4
  457. package/.agent-src/skills/voice-and-tone-design/SKILL.md +1 -5
  458. package/.claude-plugin/marketplace.json +1 -1
  459. package/CHANGELOG.md +27 -206
  460. package/README.md +5 -0
  461. package/config/agent-settings.template.yml +13 -0
  462. package/dist/cli/registry.js +2 -0
  463. package/dist/cli/registry.js.map +1 -1
  464. package/dist/discovery/deprecation-report.md +1 -1
  465. package/dist/discovery/discovery-manifest.json +358 -358
  466. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  467. package/dist/discovery/discovery-manifest.summary.md +2 -2
  468. package/dist/discovery/orphan-report.md +1 -1
  469. package/dist/discovery/packs.json +3 -3
  470. package/dist/discovery/trust-report.md +1 -1
  471. package/dist/discovery/workspaces.json +3 -3
  472. package/dist/mcp/registry-manifest.json +3 -3
  473. package/dist/server/schemas/settings.js +4 -0
  474. package/dist/server/schemas/settings.js.map +1 -1
  475. package/dist/ui/assets/{index-Tk7lkVH8.js → index-DVsyUMZe.js} +2 -2
  476. package/dist/ui/assets/index-DVsyUMZe.js.map +1 -0
  477. package/dist/ui/index.html +1 -1
  478. package/docs/archive/CHANGELOG-pre-5.4.0.md +260 -0
  479. package/docs/contracts/consumer-bridge.md +2 -0
  480. package/docs/contracts/multi-tool-projection-fidelity.md +19 -0
  481. package/docs/contracts/release-pr-gating.md +6 -1
  482. package/docs/decisions/ADR-020-global-only-consumer-scope.md +24 -0
  483. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +63 -0
  484. package/docs/decisions/ADR-035-model-capability-tiers.md +104 -0
  485. package/docs/decisions/INDEX.md +2 -0
  486. package/docs/getting-started.md +23 -0
  487. package/docs/guidelines/agent-infra/skill-quality-checklist.md +25 -0
  488. package/package.json +1 -1
  489. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  490. package/scripts/_cli/cmd_doctor.py +44 -1
  491. package/scripts/_cli/cmd_refresh.py +173 -0
  492. package/scripts/_cli/cmd_upgrade.py +142 -0
  493. package/scripts/_dispatch.bash +20 -0
  494. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  495. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  496. package/scripts/backfill_model_tier.py +182 -0
  497. package/scripts/build_discovery_manifest.py +20 -3
  498. package/scripts/check_artefact_checksums.py +11 -4
  499. package/scripts/check_release_pr_shape.py +7 -0
  500. package/scripts/condense.py +148 -18
  501. package/scripts/hooks/dispatch_hook.py +39 -0
  502. package/scripts/install +14 -0
  503. package/scripts/lint_framework_leakage_allowlist.json +108 -78
  504. package/scripts/lint_frontmatter_boilerplate.py +77 -0
  505. package/scripts/lint_model_tier_coverage.py +73 -0
  506. package/scripts/migrate_frontmatter_defaults.py +245 -0
  507. package/scripts/roadmap_progress_hook.py +28 -2
  508. package/scripts/schemas/command.schema.json +17 -5
  509. package/scripts/schemas/persona.schema.json +4 -2
  510. package/scripts/schemas/rule.schema.json +8 -6
  511. package/scripts/schemas/skill.schema.json +18 -6
  512. package/scripts/skill_linter.py +21 -9
  513. package/scripts/smoke/skills.sh +4 -1
  514. package/scripts/validate_frontmatter.py +74 -0
  515. package/dist/ui/assets/index-Tk7lkVH8.js.map +0 -1
@@ -32,15 +32,22 @@ DEFAULT_MANIFEST = ROOT / "dist" / "discovery" / "discovery-manifest.json"
32
32
  sys.path.insert(0, str(Path(__file__).resolve().parent))
33
33
  # Import the same hashing primitive the builder uses so normalisation
34
34
  # stays in lockstep with the generator. (ADR-015 §Phase 6.)
35
- from build_discovery_manifest import _artefact_checksum # noqa: E402
36
- from validate_frontmatter import parse_frontmatter # noqa: E402
35
+ from build_discovery_manifest import _CATEGORY_SCHEMA, _artefact_checksum # noqa: E402
36
+ from validate_frontmatter import apply_schema_defaults, load_schema, parse_frontmatter # noqa: E402
37
37
 
38
38
 
39
- def _frontmatter(path: Path) -> dict | None:
39
+ def _frontmatter(path: Path, category: str | None = None) -> dict | None:
40
40
  if not path.exists():
41
41
  return None
42
42
  text = path.read_text(encoding="utf-8", errors="replace")
43
43
  fm, _ = parse_frontmatter(text)
44
+ # Inject the same schema defaults the builder injects, so the recomputed
45
+ # checksum matches the committed manifest byte-for-byte even when the
46
+ # artefact omits a defaulted field (preflight Decision B).
47
+ if isinstance(fm, dict):
48
+ schema_name = _CATEGORY_SCHEMA.get(category or "")
49
+ if schema_name is not None:
50
+ apply_schema_defaults(fm, load_schema(schema_name))
44
51
  return fm
45
52
 
46
53
 
@@ -64,7 +71,7 @@ def _check(manifest_path: Path) -> tuple[int, list[str]]:
64
71
  if not src.exists():
65
72
  errors.append(f"{rel}: source file missing")
66
73
  continue
67
- actual = _artefact_checksum(src, _frontmatter(src))
74
+ actual = _artefact_checksum(src, _frontmatter(src, art.get("category")))
68
75
  if actual != recorded:
69
76
  errors.append(
70
77
  f"{rel}: checksum drift "
@@ -9,6 +9,7 @@ and asserts every changed file matches the version-bump allowlist:
9
9
  * `.claude-plugin/marketplace.json`
10
10
  * `packages/*/pack.yaml`
11
11
  * `packages/*/README.md`
12
+ * `docs/archive/CHANGELOG-pre-*.md`
12
13
 
13
14
  Exit codes:
14
15
 
@@ -40,6 +41,12 @@ ALLOWLIST_GLOBS = (
40
41
  ".claude-plugin/marketplace.json",
41
42
  "packages/*/pack.yaml",
42
43
  "packages/*/README.md",
44
+ # `scripts/release.py` auto-splits the CHANGELOG era before bumping
45
+ # (perform_split / plan_split in `_lib/changelog_eras.py`) whenever the
46
+ # current era body crosses CURRENT_ERA_BODY_CAP. The split emits a new
47
+ # `docs/archive/CHANGELOG-pre-X.Y.Z.md` — part of the release surface,
48
+ # so the shape gate must allow it. Test-enforced by test_changelog_eras.
49
+ "docs/archive/CHANGELOG-pre-*.md",
43
50
  )
44
51
 
45
52
 
@@ -574,7 +574,12 @@ def _parse_trust_and_owner(fm_lines):
574
574
  prefix (`finance-basic` → `finance`), then the first workspace,
575
575
  then `unknown`.
576
576
  """
577
- level = None
577
+ # Default to the schema default `core` so the HUMAN REVIEW banner still
578
+ # renders if a future artefact sets `human_review_required: true` while
579
+ # omitting the (defaulted) `trust.level` line (abstraction-reduction
580
+ # preflight Decision D). The banner only fires when `hrr` is true, so this
581
+ # never affects artefacts that omit the whole trust block.
582
+ level = "core"
578
583
  hrr = False
579
584
  packs: list[str] = []
580
585
  workspaces: list[str] = []
@@ -871,8 +876,72 @@ def _iter_commands():
871
876
  yield source_file, _command_slug(source_file)
872
877
 
873
878
 
879
+ # --- Per-skill model auto-switch (ADR-035 / road-to-model-capability-tiers) ---
880
+
881
+ # The SINGLE generator-owned tier→Claude-model mapping (ADR-035 § 3). Claude
882
+ # Code is the only surface that consumes a native `model:`, so this is the only
883
+ # place a capability tier resolves to a concrete model. `inherit`/absent emit
884
+ # nothing and stay pure symlinks. Non-Claude agents never get a per-vendor
885
+ # table — the rule surfaces the tier name as a suggestion.
886
+ _TIER_TO_CLAUDE_MODEL = {"high": "opus", "medium": "sonnet", "lite": "haiku"}
887
+ _MODEL_TIER_RE = re.compile(r'^model_tier:\s*"?([a-z]+)"?\s*$', re.MULTILINE)
888
+
889
+
890
+ def _read_model_auto_switch() -> str:
891
+ """Read `model.auto_switch` from .agent-settings.yml.
892
+
893
+ Returns `auto` | `suggest` | `off`; default `suggest`. Only `auto` makes
894
+ the generator emit a native Claude `model:` key (ADR-034 § 4) — `suggest`
895
+ and `off` keep skills/commands as pure symlinks so the package never
896
+ silently overrides a user's explicit `/model` choice.
897
+ """
898
+ try:
899
+ from scripts._lib.agent_settings import load_agent_settings
900
+ except ImportError: # pragma: no cover — script-style invocation
901
+ import sys as _sys
902
+ from pathlib import Path as _Path
903
+ _sys.path.insert(0, str(_Path(__file__).resolve().parent))
904
+ from _lib.agent_settings import load_agent_settings # type: ignore[import-not-found]
905
+ data = load_agent_settings(project_path=SETTINGS_FILE)
906
+ model = data.get("model")
907
+ value = model.get("auto_switch") if isinstance(model, dict) else None
908
+ if isinstance(value, str) and value.strip().lower() in ("auto", "suggest", "off"):
909
+ return value.strip().lower()
910
+ return "suggest"
911
+
912
+
913
+ def _model_tier(skill_md: Path) -> str | None:
914
+ """Return the `model_tier` frontmatter value, or None if absent."""
915
+ if not skill_md.exists():
916
+ return None
917
+ text = skill_md.read_text(encoding="utf-8", errors="replace")
918
+ if not text.startswith("---\n"):
919
+ return None
920
+ end = text.find("\n---\n", 4)
921
+ if end == -1:
922
+ return None
923
+ m = _MODEL_TIER_RE.search(text[4:end])
924
+ return m.group(1) if m else None
925
+
926
+
927
+ def _render_native_model_md(src_md: Path, tier: str) -> str:
928
+ """Rewrite the source `model_tier: <tier>` line to a native Claude
929
+ `model: <mapped>` key via the generator-owned mapping (ADR-035 § 3). The
930
+ rest of the SKILL.md is byte-identical."""
931
+ text = src_md.read_text(encoding="utf-8")
932
+ model = _TIER_TO_CLAUDE_MODEL[tier]
933
+ return _MODEL_TIER_RE.sub(f"model: {model}", text, count=1)
934
+
935
+
874
936
  def generate_claude_skills() -> int:
875
- """Create .claude/skills/ symlinks for ALL skills in .agent-src/skills/.
937
+ """Create .claude/skills/ entries for ALL skills in .agent-src/skills/.
938
+
939
+ Default: a directory symlink → .agent-src/skills/<name> (verbatim).
940
+ When `model.auto_switch: auto` AND a skill declares
941
+ `model_tier: lite|medium|high`, the entry becomes a real directory whose
942
+ sub-files are symlinked but whose SKILL.md is a rendered copy carrying a
943
+ native Claude `model:` key (ADR-034 Option (b) — only model-bearing skills
944
+ break the symlink). Idempotent: each entry is rebuilt from scratch.
876
945
  """
877
946
  if not SKILLS_SOURCE.exists():
878
947
  print(" ⚠️ .agent-src/skills/ not found — skipping skills", file=sys.stderr)
@@ -880,26 +949,58 @@ def generate_claude_skills() -> int:
880
949
 
881
950
  # All skill directories in .agent-src/skills/
882
951
  skills = sorted([d.name for d in SKILLS_SOURCE.iterdir() if d.is_dir()])
952
+ skill_set = set(skills)
883
953
  # All command slugs (to protect from stale cleanup)
884
954
  command_slugs = {slug for _, slug in _iter_commands()}
885
955
 
886
956
  CLAUDE_SKILLS_DIR.mkdir(parents=True, exist_ok=True)
957
+ auto = _read_model_auto_switch() == "auto"
887
958
 
888
- # Clean stale symlinks (but not converted commands or README)
959
+ # Clean stale entries (symlinks AND rendered skill dirs) — but never touch
960
+ # command dirs (real dir whose SKILL.md is a symlink) or the README.
889
961
  for item in CLAUDE_SKILLS_DIR.iterdir():
890
- if item.is_symlink() and item.name not in skills and item.name not in command_slugs and item.name != "README.md":
962
+ if item.name in skill_set or item.name in command_slugs or item.name == "README.md":
963
+ continue
964
+ if item.is_symlink():
891
965
  item.unlink()
966
+ elif item.is_dir():
967
+ skill_md = item / "SKILL.md"
968
+ # A rendered skill dir has a *real* SKILL.md copy; a command dir has
969
+ # a SKILL.md *symlink* (left for generate_claude_commands to manage).
970
+ if skill_md.is_file() and not skill_md.is_symlink():
971
+ shutil.rmtree(item)
892
972
 
893
973
  count = 0
974
+ rendered = 0
894
975
  for skill in skills:
895
976
  link = CLAUDE_SKILLS_DIR / skill
896
- if link.exists() or link.is_symlink():
977
+ src_dir = SKILLS_SOURCE / skill
978
+ value = _model_tier(src_dir / "SKILL.md") if auto else None
979
+ # Rebuild from scratch for idempotency (symlink ↔ rendered-dir flips).
980
+ if link.is_symlink():
897
981
  link.unlink()
898
- rel_target = Path("../../.agent-src/skills") / skill
899
- link.symlink_to(rel_target)
982
+ elif link.is_dir():
983
+ shutil.rmtree(link)
984
+ elif link.exists():
985
+ link.unlink()
986
+ if value in _TIER_TO_CLAUDE_MODEL:
987
+ link.mkdir(parents=True)
988
+ for entry in sorted(src_dir.iterdir()):
989
+ if entry.name == "SKILL.md":
990
+ (link / "SKILL.md").write_text(
991
+ _render_native_model_md(entry, value), encoding="utf-8"
992
+ )
993
+ else:
994
+ (link / entry.name).symlink_to(
995
+ Path("../../../.agent-src/skills") / skill / entry.name
996
+ )
997
+ rendered += 1
998
+ else:
999
+ link.symlink_to(Path("../../.agent-src/skills") / skill)
900
1000
  count += 1
901
1001
 
902
- info(f" ✅ Created {count} skill symlinks in .claude/skills/")
1002
+ suffix = f" ({rendered} rendered with native model:)" if rendered else ""
1003
+ info(f" ✅ Created {count} skill entries in .claude/skills/{suffix}")
903
1004
  return count
904
1005
 
905
1006
 
@@ -940,6 +1041,8 @@ def generate_claude_commands() -> int:
940
1041
  current_slugs: set[str] = set()
941
1042
  count = 0
942
1043
  skipped = 0
1044
+ rendered = 0
1045
+ auto = _read_model_auto_switch() == "auto"
943
1046
  for source_file, slug in _iter_commands():
944
1047
  # Skip if a real skill with the same name exists — skill takes priority
945
1048
  if slug in skill_names:
@@ -948,7 +1051,7 @@ def generate_claude_commands() -> int:
948
1051
 
949
1052
  current_slugs.add(slug)
950
1053
 
951
- # Create skill directory (real dir, symlinked SKILL.md inside)
1054
+ # Create skill directory (real dir, SKILL.md symlinked or rendered)
952
1055
  skill_dir = CLAUDE_SKILLS_DIR / slug
953
1056
  skill_dir.mkdir(parents=True, exist_ok=True)
954
1057
 
@@ -956,10 +1059,18 @@ def generate_claude_commands() -> int:
956
1059
  if skill_file.exists() or skill_file.is_symlink():
957
1060
  skill_file.unlink()
958
1061
 
959
- # Symlink: .claude/skills/{slug}/SKILL.md → ../../../.agent-src/commands/<rel-path>
960
1062
  rel_path = source_file.relative_to(COMMANDS_SOURCE)
961
- rel_target = Path("../../../.agent-src/commands") / rel_path
962
- skill_file.symlink_to(rel_target)
1063
+ value = _model_tier(source_file) if auto else None
1064
+ if value in _TIER_TO_CLAUDE_MODEL:
1065
+ # Render a copy carrying the native Claude model: key (ADR-034).
1066
+ skill_file.write_text(
1067
+ _render_native_model_md(source_file, value), encoding="utf-8"
1068
+ )
1069
+ rendered += 1
1070
+ else:
1071
+ # Symlink: .claude/skills/{slug}/SKILL.md → ../../../.agent-src/commands/<rel-path>
1072
+ rel_target = Path("../../../.agent-src/commands") / rel_path
1073
+ skill_file.symlink_to(rel_target)
963
1074
  count += 1
964
1075
 
965
1076
  # Clean stale command skill directories — real dirs from removed commands.
@@ -971,14 +1082,20 @@ def generate_claude_commands() -> int:
971
1082
  if item.name in skill_names or item.name in current_slugs:
972
1083
  continue
973
1084
  skill_md = item / "SKILL.md"
974
- if skill_md.is_symlink():
1085
+ # Stale command dir = exactly one SKILL.md, either symlinked (default)
1086
+ # or a rendered copy (native-model command, ADR-034). Skill-render dirs
1087
+ # are protected above (item.name in skill_names) and via the skills
1088
+ # generator, so this only reaps removed commands.
1089
+ if skill_md.is_symlink() or skill_md.is_file():
975
1090
  entries = list(item.iterdir())
976
1091
  if len(entries) == 1 and entries[0].name == "SKILL.md":
977
1092
  skill_md.unlink()
978
1093
  item.rmdir()
979
1094
  removed_dirs += 1
980
1095
 
981
- msg = f" ✅ Created {count} command symlinks in .claude/skills/"
1096
+ msg = f" ✅ Created {count} command entries in .claude/skills/"
1097
+ if rendered:
1098
+ msg += f" ({rendered} rendered with native model:)"
982
1099
  if skipped:
983
1100
  msg += f" ({skipped} skipped — same-name skill exists)"
984
1101
  if removed_dirs:
@@ -1075,8 +1192,12 @@ def generate_plugin_hooks() -> int:
1075
1192
  ``settings.local.json``. Claude Code merges plugin-scope and
1076
1193
  settings-scope hooks and dedups by command string.
1077
1194
 
1078
- The command is rooted at ``$CLAUDE_PROJECT_DIR`` so it resolves from
1079
- plugin scope regardless of cwd; the universal dispatcher then reads
1195
+ The command resolves the binary project-local-first
1196
+ (``$CLAUDE_PROJECT_DIR/agent-config`` when executable maintainer dev-loop)
1197
+ and falls back to ``agent-config`` on PATH (global-only consumer per
1198
+ ADR-020, where the repo carries no wrapper). It always passes
1199
+ ``--project-dir "$CLAUDE_PROJECT_DIR"`` so a globally resolved binary still
1200
+ scans the project the event fired in. The universal dispatcher then reads
1080
1201
  ``scripts/hook_manifest.yaml`` at runtime to fan out to the active
1081
1202
  concerns (each a no-op when its feature is disabled).
1082
1203
  """
@@ -1087,6 +1208,7 @@ def generate_plugin_hooks() -> int:
1087
1208
  return 0
1088
1209
 
1089
1210
  manifest = yaml.safe_load(manifest_path.read_text(encoding="utf-8")) or {}
1211
+ hook_spec = manifest.get("schema_version", 1)
1090
1212
  claude_events = manifest.get("platforms", {}).get("claude", {}) or {}
1091
1213
  aliases = manifest.get("native_event_aliases", {}).get("claude", {}) or {}
1092
1214
  # Reverse the native→agent-config map so we can emit native event names.
@@ -1099,9 +1221,17 @@ def generate_plugin_hooks() -> int:
1099
1221
  native = ac_to_native.get(ac_event)
1100
1222
  if native is None:
1101
1223
  continue
1224
+ # Resolve the binary project-local-first, PATH-fallback: a maintainer
1225
+ # dev-loop (or any repo carrying a project-local wrapper) uses its own
1226
+ # ./agent-config; a global-only consumer (ADR-020 — nothing in the
1227
+ # repo) falls back to the globally-installed `agent-config` on PATH.
1228
+ # Either way pass --project-dir "$CLAUDE_PROJECT_DIR" so a globally
1229
+ # resolved binary still scans the project the event fired in.
1102
1230
  command = (
1103
- '"$CLAUDE_PROJECT_DIR"/agent-config dispatch:hook '
1104
- f"--platform claude --event {ac_event} --native-event {native}"
1231
+ 'BIN="$CLAUDE_PROJECT_DIR/agent-config"; [ -x "$BIN" ] || BIN=agent-config; '
1232
+ f'"$BIN" dispatch:hook --platform claude --event {ac_event} '
1233
+ f'--native-event {native} --project-dir "$CLAUDE_PROJECT_DIR" '
1234
+ f'--min-version {hook_spec}'
1105
1235
  )
1106
1236
  hooks[native] = [{"hooks": [{"type": "command", "command": command}]}]
1107
1237
 
@@ -349,8 +349,36 @@ def main(argv: list[str] | None = None) -> int:
349
349
  parser.add_argument("--manifest", default=str(MANIFEST_PATH))
350
350
  parser.add_argument("--dry-run", action="store_true",
351
351
  help="Resolve concerns and print plan; do not invoke them.")
352
+ parser.add_argument("--project-dir", default="",
353
+ help="Project root the event fired in (the Claude "
354
+ "plugin passes $CLAUDE_PROJECT_DIR). A globally "
355
+ "resolved binary (ADR-020 global-only) has no "
356
+ "implicit project context, so concerns are "
357
+ "resolved relative to this directory.")
358
+ parser.add_argument("--min-version", type=int, default=0,
359
+ help="Minimum hook-spec (manifest schema_version) the "
360
+ "caller — typically the Claude marketplace plugin "
361
+ "— was generated against. Plugin and binary update "
362
+ "on independent cadences; when the binary's "
363
+ "manifest is older than the plugin expects, warn "
364
+ "(never block).")
352
365
  args = parser.parse_args(argv)
353
366
 
367
+ # Honour --project-dir: chdir so workspace_root (envelope) and every
368
+ # concern's cwd resolve consumer-local paths (agents/roadmaps/,
369
+ # agents/runtime/state/) against the project the event fired in, not the
370
+ # cwd a globally-installed binary happened to inherit. Fail loud (never
371
+ # block) when the path is bad — a wrong project root is a silent-no-op
372
+ # trap otherwise.
373
+ if args.project_dir:
374
+ project_dir = Path(args.project_dir).expanduser()
375
+ if project_dir.is_dir():
376
+ os.chdir(project_dir)
377
+ else:
378
+ sys.stderr.write(
379
+ f"dispatch_hook: --project-dir is not a directory: "
380
+ f"{project_dir} — resolving against cwd {Path.cwd()}\n")
381
+
354
382
  if args.event not in EVENT_VOCABULARY:
355
383
  sys.stderr.write(f"dispatch_hook: unknown event '{args.event}'; allowed: "
356
384
  f"{sorted(EVENT_VOCABULARY)}\n")
@@ -362,6 +390,17 @@ def main(argv: list[str] | None = None) -> int:
362
390
  return EXIT_ALLOW
363
391
  manifest = _load_yaml(manifest_path)
364
392
 
393
+ # Plugin↔binary drift guard (never blocks). The Claude marketplace plugin
394
+ # embeds the hook-spec it was generated against; if this globally-installed
395
+ # binary carries an older manifest, surface a one-line upgrade hint.
396
+ if args.min_version:
397
+ local_spec = manifest.get("schema_version") or 0
398
+ if isinstance(local_spec, int) and local_spec < args.min_version:
399
+ sys.stderr.write(
400
+ f"dispatch_hook: plugin expects hook-spec >= {args.min_version} "
401
+ f"but this agent-config provides {local_spec}; "
402
+ f"run `agent-config upgrade`.\n")
403
+
365
404
  payload_text = "" if sys.stdin.isatty() else sys.stdin.read()
366
405
  _maybe_capture_payload(args, payload_text)
367
406
  concerns = _resolve_concerns(manifest, args.platform, args.event)
package/scripts/install CHANGED
@@ -394,4 +394,18 @@ if ! $SKIP_BRIDGES; then
394
394
  run_bridges || RC=$?
395
395
  fi
396
396
 
397
+ # Post-install PATH advisory. The Claude plugin hook resolves `agent-config`
398
+ # from PATH on a global-only consumer (ADR-020); if it is unreachable every
399
+ # PostToolUse hook silently no-ops — the documented "dashboard never updates"
400
+ # failure. Advisory only: a bad PATH must not fail an otherwise-clean install.
401
+ if [[ $RC -eq 0 ]] && ! command -v agent-config >/dev/null 2>&1; then
402
+ $QUIET || {
403
+ echo " ⚠️ \`agent-config\` is not on your PATH." >&2
404
+ echo " Claude plugin hooks resolve it from PATH; without it the" >&2
405
+ echo " roadmap-progress dashboard (and other hooks) will not fire." >&2
406
+ echo " Add your npm global bin dir (\`npm prefix -g\`/bin) to PATH," >&2
407
+ echo " then verify with \`agent-config doctor\`." >&2
408
+ }
409
+ fi
410
+
397
411
  exit $RC