@event4u/agent-config 5.10.1 → 6.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 (2351) hide show
  1. package/.claude-plugin/marketplace.json +237 -233
  2. package/AGENTS.md +6 -6
  3. package/CHANGELOG.md +218 -38
  4. package/CONTRIBUTING.md +27 -15
  5. package/MIGRATION.md +102 -0
  6. package/README.md +49 -20
  7. package/dist/agent-src/README.md +64 -0
  8. package/dist/agent-src/commands/agent-handoff.md +125 -0
  9. package/dist/agent-src/commands/agent-status.md +141 -0
  10. package/dist/agent-src/commands/agents/audit.md +159 -0
  11. package/dist/agent-src/commands/agents/init.md +195 -0
  12. package/dist/agent-src/commands/agents/optimize.md +188 -0
  13. package/dist/agent-src/commands/agents/user/accept.md +124 -0
  14. package/dist/agent-src/commands/agents/user/init.md +164 -0
  15. package/dist/agent-src/commands/agents/user/review.md +114 -0
  16. package/dist/agent-src/commands/agents/user/show.md +116 -0
  17. package/dist/agent-src/commands/agents/user/update.md +104 -0
  18. package/dist/agent-src/commands/agents/user.md +72 -0
  19. package/dist/agent-src/commands/agents.md +67 -0
  20. package/dist/agent-src/commands/analytics/prune.md +72 -0
  21. package/dist/agent-src/commands/analytics/show.md +101 -0
  22. package/dist/agent-src/commands/analytics.md +78 -0
  23. package/dist/agent-src/commands/analyze-reference-repo.md +205 -0
  24. package/dist/agent-src/commands/bug-fix.md +194 -0
  25. package/dist/agent-src/commands/bug-investigate.md +187 -0
  26. package/dist/agent-src/commands/challenge-me/vision.md +355 -0
  27. package/dist/agent-src/commands/challenge-me/with-docs.md +340 -0
  28. package/dist/agent-src/commands/challenge-me.md +69 -0
  29. package/dist/agent-src/commands/chat-history/import.md +172 -0
  30. package/dist/agent-src/commands/chat-history.md +62 -0
  31. package/dist/agent-src/commands/check-current-md.md +144 -0
  32. package/dist/agent-src/commands/commit/in-chunks.md +148 -0
  33. package/dist/agent-src/commands/commit.md +196 -0
  34. package/dist/agent-src/commands/condense.md +240 -0
  35. package/dist/agent-src/commands/context/create.md +182 -0
  36. package/dist/agent-src/commands/context/refactor.md +184 -0
  37. package/dist/agent-src/commands/context.md +53 -0
  38. package/dist/agent-src/commands/cost-report.md +132 -0
  39. package/dist/agent-src/commands/council/analysis.md +148 -0
  40. package/dist/agent-src/commands/council/debate.md +135 -0
  41. package/dist/agent-src/commands/council/default.md +290 -0
  42. package/dist/agent-src/commands/council/design.md +108 -0
  43. package/dist/agent-src/commands/council/optimize.md +124 -0
  44. package/dist/agent-src/commands/council/pr.md +131 -0
  45. package/dist/agent-src/commands/council.md +112 -0
  46. package/dist/agent-src/commands/e2e-heal.md +111 -0
  47. package/dist/agent-src/commands/e2e-plan.md +98 -0
  48. package/dist/agent-src/commands/estimate-ticket.md +93 -0
  49. package/dist/agent-src/commands/evals/agent-handoff.json +34 -0
  50. package/dist/agent-src/commands/evals/agent-status.json +34 -0
  51. package/dist/agent-src/commands/evals/agents.json +34 -0
  52. package/dist/agent-src/commands/evals/commit.json +34 -0
  53. package/dist/agent-src/commands/evals/condense.json +34 -0
  54. package/dist/agent-src/commands/evals/council.json +34 -0
  55. package/dist/agent-src/commands/evals/create-pr.json +34 -0
  56. package/dist/agent-src/commands/evals/estimate-ticket.json +34 -0
  57. package/dist/agent-src/commands/evals/feature.json +34 -0
  58. package/dist/agent-src/commands/evals/fix.json +34 -0
  59. package/dist/agent-src/commands/evals/implement-ticket.json +34 -0
  60. package/dist/agent-src/commands/evals/jira-ticket.json +34 -0
  61. package/dist/agent-src/commands/evals/judge.json +34 -0
  62. package/dist/agent-src/commands/evals/memory.json +34 -0
  63. package/dist/agent-src/commands/evals/mode.json +34 -0
  64. package/dist/agent-src/commands/evals/optimize.json +34 -0
  65. package/dist/agent-src/commands/evals/refine-ticket.json +34 -0
  66. package/dist/agent-src/commands/evals/review-changes.json +34 -0
  67. package/dist/agent-src/commands/evals/roadmap.json +34 -0
  68. package/dist/agent-src/commands/evals/work.json +34 -0
  69. package/dist/agent-src/commands/feature/dev.md +125 -0
  70. package/dist/agent-src/commands/feature/explore.md +192 -0
  71. package/dist/agent-src/commands/feature/plan.md +333 -0
  72. package/dist/agent-src/commands/feature/refactor.md +195 -0
  73. package/dist/agent-src/commands/feature/roadmap.md +223 -0
  74. package/dist/agent-src/commands/feature.md +64 -0
  75. package/dist/agent-src/commands/fix/ci.md +60 -0
  76. package/dist/agent-src/commands/fix/portability.md +109 -0
  77. package/dist/agent-src/commands/fix/pr-comments.md +201 -0
  78. package/dist/agent-src/commands/fix/refs.md +106 -0
  79. package/dist/agent-src/commands/fix/seeder.md +159 -0
  80. package/dist/agent-src/commands/fix.md +88 -0
  81. package/dist/agent-src/commands/ghostwriter/delete.md +125 -0
  82. package/dist/agent-src/commands/ghostwriter/fetch.md +191 -0
  83. package/dist/agent-src/commands/ghostwriter/list.md +109 -0
  84. package/dist/agent-src/commands/ghostwriter/show.md +120 -0
  85. package/dist/agent-src/commands/ghostwriter/write.md +166 -0
  86. package/dist/agent-src/commands/ghostwriter.md +102 -0
  87. package/dist/agent-src/commands/grill-me.md +46 -0
  88. package/dist/agent-src/commands/image/analyse.md +53 -0
  89. package/dist/agent-src/commands/image/create.md +55 -0
  90. package/dist/agent-src/commands/image/verify.md +50 -0
  91. package/dist/agent-src/commands/image.md +71 -0
  92. package/dist/agent-src/commands/implement-ticket.md +170 -0
  93. package/dist/agent-src/commands/jira-ticket.md +85 -0
  94. package/dist/agent-src/commands/judge/on-diff.md +125 -0
  95. package/dist/agent-src/commands/judge/solo.md +97 -0
  96. package/dist/agent-src/commands/judge/steps.md +95 -0
  97. package/dist/agent-src/commands/judge.md +87 -0
  98. package/dist/agent-src/commands/knowledge/cross-repo.md +73 -0
  99. package/dist/agent-src/commands/knowledge/forget.md +98 -0
  100. package/dist/agent-src/commands/knowledge/ingest.md +116 -0
  101. package/dist/agent-src/commands/knowledge/list.md +96 -0
  102. package/dist/agent-src/commands/knowledge.md +71 -0
  103. package/dist/agent-src/commands/memory/add.md +149 -0
  104. package/dist/agent-src/commands/memory/learn-low-impact.md +149 -0
  105. package/dist/agent-src/commands/memory/load.md +176 -0
  106. package/dist/agent-src/commands/memory/mine-session.md +184 -0
  107. package/dist/agent-src/commands/memory/promote.md +196 -0
  108. package/dist/agent-src/commands/memory/propose.md +123 -0
  109. package/dist/agent-src/commands/memory.md +62 -0
  110. package/dist/agent-src/commands/mode.md +134 -0
  111. package/dist/agent-src/commands/module/create.md +145 -0
  112. package/dist/agent-src/commands/module/explore.md +199 -0
  113. package/dist/agent-src/commands/module.md +53 -0
  114. package/dist/agent-src/commands/optimize/agents-dir.md +120 -0
  115. package/dist/agent-src/commands/optimize/augmentignore.md +313 -0
  116. package/dist/agent-src/commands/optimize/rtk.md +162 -0
  117. package/dist/agent-src/commands/optimize/skills.md +133 -0
  118. package/dist/agent-src/commands/optimize-prompt.md +68 -0
  119. package/dist/agent-src/commands/optimize.md +62 -0
  120. package/dist/agent-src/commands/orchestrate.md +130 -0
  121. package/dist/agent-src/commands/override/create.md +109 -0
  122. package/dist/agent-src/commands/override/manage.md +108 -0
  123. package/dist/agent-src/commands/override.md +73 -0
  124. package/dist/agent-src/commands/package-reset.md +164 -0
  125. package/dist/agent-src/commands/package-test.md +240 -0
  126. package/dist/agent-src/commands/post-as/ghostwriter.md +73 -0
  127. package/dist/agent-src/commands/post-as/me.md +131 -0
  128. package/dist/agent-src/commands/post-as.md +64 -0
  129. package/dist/agent-src/commands/pr/create/description-only.md +162 -0
  130. package/dist/agent-src/commands/pr/create.md +279 -0
  131. package/dist/agent-src/commands/prediction-pool.md +236 -0
  132. package/dist/agent-src/commands/prepare-for-review.md +108 -0
  133. package/dist/agent-src/commands/profile/activate.md +83 -0
  134. package/dist/agent-src/commands/profile/deactivate.md +70 -0
  135. package/dist/agent-src/commands/profile/show.md +81 -0
  136. package/dist/agent-src/commands/profile.md +70 -0
  137. package/dist/agent-src/commands/project-analyze.md +322 -0
  138. package/dist/agent-src/commands/project-health.md +107 -0
  139. package/dist/agent-src/commands/quality-fix.md +146 -0
  140. package/dist/agent-src/commands/refine-ticket.md +99 -0
  141. package/dist/agent-src/commands/research/deep.md +156 -0
  142. package/dist/agent-src/commands/research/report.md +141 -0
  143. package/dist/agent-src/commands/research.md +180 -0
  144. package/dist/agent-src/commands/review-changes.md +214 -0
  145. package/dist/agent-src/commands/review-routing.md +126 -0
  146. package/dist/agent-src/commands/roadmap/ai-council.md +190 -0
  147. package/dist/agent-src/commands/roadmap/create.md +215 -0
  148. package/dist/agent-src/commands/roadmap/process-full.md +110 -0
  149. package/dist/agent-src/commands/roadmap/process-phase.md +76 -0
  150. package/dist/agent-src/commands/roadmap/process-step.md +64 -0
  151. package/dist/agent-src/commands/roadmap.md +84 -0
  152. package/dist/agent-src/commands/rule-compliance-audit.md +157 -0
  153. package/dist/agent-src/commands/security-audit-config.md +84 -0
  154. package/dist/agent-src/commands/set-cost-profile.md +119 -0
  155. package/dist/agent-src/commands/skill/preview.md +69 -0
  156. package/dist/agent-src/commands/skill.md +50 -0
  157. package/dist/agent-src/commands/skills/discover.md +78 -0
  158. package/dist/agent-src/commands/skills.md +58 -0
  159. package/dist/agent-src/commands/sync-agent-settings.md +142 -0
  160. package/dist/agent-src/commands/sync-gitignore/fix.md +150 -0
  161. package/dist/agent-src/commands/sync-gitignore.md +141 -0
  162. package/dist/agent-src/commands/tests/create.md +92 -0
  163. package/dist/agent-src/commands/tests/execute.md +86 -0
  164. package/dist/agent-src/commands/tests.md +77 -0
  165. package/dist/agent-src/commands/threat-model.md +127 -0
  166. package/dist/agent-src/commands/update-form-request-messages.md +201 -0
  167. package/dist/agent-src/commands/upstream-contribute.md +183 -0
  168. package/dist/agent-src/commands/video/from-script.md +159 -0
  169. package/dist/agent-src/commands/video/from-song.md +491 -0
  170. package/dist/agent-src/commands/video/scene.md +131 -0
  171. package/dist/agent-src/commands/video/stitch.md +89 -0
  172. package/dist/agent-src/commands/video/storyboard.md +101 -0
  173. package/dist/agent-src/commands/video.md +75 -0
  174. package/dist/agent-src/commands/work.md +176 -0
  175. package/dist/agent-src/contexts/augment-infrastructure.md +178 -0
  176. package/dist/agent-src/contexts/authority/commit-mechanics.md +93 -0
  177. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +138 -0
  178. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +89 -0
  179. package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +99 -0
  180. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +98 -0
  181. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +259 -0
  182. package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +127 -0
  183. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +53 -0
  184. package/dist/agent-src/contexts/execution/non-interactive-contract.md +132 -0
  185. package/dist/agent-src/contexts/execution/rdp-gate.md +75 -0
  186. package/dist/agent-src/contexts/execution/toolchain-resolver.md +113 -0
  187. package/dist/agent-src/contexts/subagent-configuration.md +63 -0
  188. package/dist/agent-src/personas/README.md +114 -0
  189. package/dist/agent-src/personas/advisors/contrarian.md +95 -0
  190. package/dist/agent-src/personas/advisors/executor.md +99 -0
  191. package/dist/agent-src/personas/advisors/expansionist.md +98 -0
  192. package/dist/agent-src/personas/advisors/first-principles.md +98 -0
  193. package/dist/agent-src/personas/advisors/outsider.md +102 -0
  194. package/dist/agent-src/profiles/agency.yml +36 -0
  195. package/dist/agent-src/profiles/content_creator.yml +34 -0
  196. package/dist/agent-src/profiles/developer.yml +31 -0
  197. package/dist/agent-src/profiles/finance.yml +30 -0
  198. package/dist/agent-src/profiles/founder.yml +33 -0
  199. package/dist/agent-src/profiles/ops.yml +33 -0
  200. package/dist/agent-src/rules/ask-when-uncertain.md +70 -0
  201. package/dist/agent-src/rules/augment-edit-discipline.md +31 -0
  202. package/dist/agent-src/rules/autonomous-execution.md +113 -0
  203. package/dist/agent-src/rules/commit-policy.md +59 -0
  204. package/dist/agent-src/rules/direct-answers.md +64 -0
  205. package/dist/agent-src/rules/domain-adoption-policy.md +160 -0
  206. package/dist/agent-src/rules/external-reference-deep-dive.md +72 -0
  207. package/dist/agent-src/rules/git-history-discipline.md +148 -0
  208. package/dist/agent-src/rules/improve-before-implement.md +124 -0
  209. package/dist/agent-src/rules/language-and-tone.md +64 -0
  210. package/dist/agent-src/rules/lethal-trifecta-guard.md +80 -0
  211. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +38 -0
  212. package/dist/agent-src/rules/media-governance-routing.md +85 -0
  213. package/dist/agent-src/rules/missing-tool-handling.md +22 -0
  214. package/dist/agent-src/rules/model-recommendation.md +25 -0
  215. package/dist/agent-src/rules/no-attribution-footers.md +57 -0
  216. package/dist/agent-src/rules/no-cheap-questions.md +75 -0
  217. package/dist/agent-src/rules/no-pr-progress-comments.md +108 -0
  218. package/dist/agent-src/rules/no-roadmap-references.md +141 -0
  219. package/dist/agent-src/rules/non-destructive-by-default.md +58 -0
  220. package/dist/agent-src/rules/notes-first-reasoning.md +71 -0
  221. package/dist/agent-src/rules/persona-governance.md +93 -0
  222. package/dist/agent-src/rules/preservation-guard.md +97 -0
  223. package/dist/agent-src/rules/provider-lifecycle-discipline.md +78 -0
  224. package/dist/agent-src/rules/roadmap-progress-sync.md +131 -0
  225. package/dist/agent-src/rules/scope-control.md +68 -0
  226. package/dist/agent-src/rules/security-sensitive-stop.md +100 -0
  227. package/dist/agent-src/rules/source-confidentiality.md +97 -0
  228. package/dist/agent-src/rules/source-of-truth.md +80 -0
  229. package/dist/agent-src/rules/think-before-action.md +49 -0
  230. package/dist/agent-src/rules/untrusted-input-defense.md +76 -0
  231. package/dist/agent-src/rules/user-interrupt-priority.md +49 -0
  232. package/dist/agent-src/rules/verify-before-complete.md +78 -0
  233. package/dist/agent-src/scripts/archive_completed_roadmaps.py +171 -0
  234. package/dist/agent-src/scripts/update_roadmap_progress.py +537 -0
  235. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +147 -0
  236. package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +13 -0
  237. package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +34 -0
  238. package/dist/agent-src/skills/adversarial-review/SKILL.md +170 -0
  239. package/dist/agent-src/skills/agent-security-review/SKILL.md +113 -0
  240. package/dist/agent-src/skills/agent-security-review/evals/triggers.json +51 -0
  241. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +143 -0
  242. package/dist/agent-src/skills/ai-council/SKILL.md +912 -0
  243. package/dist/agent-src/skills/api-design/SKILL.md +120 -0
  244. package/dist/agent-src/skills/api-design/data/api-patterns.csv +13 -0
  245. package/dist/agent-src/skills/api-design/data/manifest.json +34 -0
  246. package/dist/agent-src/skills/api-endpoint/SKILL.md +100 -0
  247. package/dist/agent-src/skills/async-python-patterns/SKILL.md +158 -0
  248. package/dist/agent-src/skills/authz-review/SKILL.md +188 -0
  249. package/dist/agent-src/skills/blade-ui/SKILL.md +135 -0
  250. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +193 -0
  251. package/dist/agent-src/skills/character-consistency/SKILL.md +192 -0
  252. package/dist/agent-src/skills/check-refs/SKILL.md +96 -0
  253. package/dist/agent-src/skills/code-review/SKILL.md +224 -0
  254. package/dist/agent-src/skills/command-routing/SKILL.md +134 -0
  255. package/dist/agent-src/skills/command-writing/SKILL.md +301 -0
  256. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +96 -0
  257. package/dist/agent-src/skills/complexity-first-planning/evals/triggers.json +16 -0
  258. package/dist/agent-src/skills/condense-memory/SKILL.md +123 -0
  259. package/dist/agent-src/skills/context-document/SKILL.md +160 -0
  260. package/dist/agent-src/skills/copilot-config/SKILL.md +207 -0
  261. package/dist/agent-src/skills/corpus-grounding/SKILL.md +205 -0
  262. package/dist/agent-src/skills/corpus-grounding/evals/triggers.json +16 -0
  263. package/dist/agent-src/skills/corpus-grounding/scripts/bm25_search.py +212 -0
  264. package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.py +438 -0
  265. package/dist/agent-src/skills/corpus-grounding/scripts/ground.py +166 -0
  266. package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.py +160 -0
  267. package/dist/agent-src/skills/dashboard-design/SKILL.md +129 -0
  268. package/dist/agent-src/skills/database/SKILL.md +111 -0
  269. package/dist/agent-src/skills/database/data/manifest.json +35 -0
  270. package/dist/agent-src/skills/database/data/query-tuning.csv +13 -0
  271. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +188 -0
  272. package/dist/agent-src/skills/defense-in-depth/SKILL.md +157 -0
  273. package/dist/agent-src/skills/design-intelligence/ATTRIBUTION.md +54 -0
  274. package/dist/agent-src/skills/design-intelligence/LICENSE.apache-2.0.txt +202 -0
  275. package/dist/agent-src/skills/design-intelligence/SKILL.md +177 -0
  276. package/dist/agent-src/skills/design-intelligence/data/app-interface.csv +31 -0
  277. package/dist/agent-src/skills/design-intelligence/data/charts.csv +26 -0
  278. package/dist/agent-src/skills/design-intelligence/data/colors.csv +162 -0
  279. package/dist/agent-src/skills/design-intelligence/data/design-languages/academia.txt +120 -0
  280. package/dist/agent-src/skills/design-intelligence/data/design-languages/bauhaus.txt +140 -0
  281. package/dist/agent-src/skills/design-intelligence/data/design-languages/bold-typography.txt +107 -0
  282. package/dist/agent-src/skills/design-intelligence/data/design-languages/claymorphism.txt +76 -0
  283. package/dist/agent-src/skills/design-intelligence/data/design-languages/cyberpunk.txt +157 -0
  284. package/dist/agent-src/skills/design-intelligence/data/design-languages/enterprise.txt +89 -0
  285. package/dist/agent-src/skills/design-intelligence/data/design-languages/flat-design.txt +66 -0
  286. package/dist/agent-src/skills/design-intelligence/data/design-languages/kinetic.txt +98 -0
  287. package/dist/agent-src/skills/design-intelligence/data/design-languages/material-design.txt +133 -0
  288. package/dist/agent-src/skills/design-intelligence/data/design-languages/modern-dark.txt +123 -0
  289. package/dist/agent-src/skills/design-intelligence/data/design-languages/monochrome.txt +216 -0
  290. package/dist/agent-src/skills/design-intelligence/data/design-languages/neo-brutalism.txt +65 -0
  291. package/dist/agent-src/skills/design-intelligence/data/design-languages/neumorphism.txt +75 -0
  292. package/dist/agent-src/skills/design-intelligence/data/design-languages/saas.txt +109 -0
  293. package/dist/agent-src/skills/design-intelligence/data/design-languages/sketch.txt +83 -0
  294. package/dist/agent-src/skills/design-intelligence/data/design-languages/terminal.txt +80 -0
  295. package/dist/agent-src/skills/design-intelligence/data/icons.csv +106 -0
  296. package/dist/agent-src/skills/design-intelligence/data/landing.csv +35 -0
  297. package/dist/agent-src/skills/design-intelligence/data/manifest.json +500 -0
  298. package/dist/agent-src/skills/design-intelligence/data/products.csv +162 -0
  299. package/dist/agent-src/skills/design-intelligence/data/react-performance.csv +45 -0
  300. package/dist/agent-src/skills/design-intelligence/data/stacks/angular.csv +51 -0
  301. package/dist/agent-src/skills/design-intelligence/data/stacks/astro.csv +54 -0
  302. package/dist/agent-src/skills/design-intelligence/data/stacks/flutter.csv +53 -0
  303. package/dist/agent-src/skills/design-intelligence/data/stacks/html-tailwind.csv +56 -0
  304. package/dist/agent-src/skills/design-intelligence/data/stacks/jetpack-compose.csv +53 -0
  305. package/dist/agent-src/skills/design-intelligence/data/stacks/laravel.csv +51 -0
  306. package/dist/agent-src/skills/design-intelligence/data/stacks/nextjs.csv +53 -0
  307. package/dist/agent-src/skills/design-intelligence/data/stacks/nuxt-ui.csv +51 -0
  308. package/dist/agent-src/skills/design-intelligence/data/stacks/nuxtjs.csv +59 -0
  309. package/dist/agent-src/skills/design-intelligence/data/stacks/react-native.csv +52 -0
  310. package/dist/agent-src/skills/design-intelligence/data/stacks/react.csv +54 -0
  311. package/dist/agent-src/skills/design-intelligence/data/stacks/shadcn.csv +61 -0
  312. package/dist/agent-src/skills/design-intelligence/data/stacks/svelte.csv +54 -0
  313. package/dist/agent-src/skills/design-intelligence/data/stacks/swiftui.csv +51 -0
  314. package/dist/agent-src/skills/design-intelligence/data/stacks/threejs.csv +54 -0
  315. package/dist/agent-src/skills/design-intelligence/data/stacks/vue.csv +50 -0
  316. package/dist/agent-src/skills/design-intelligence/data/styles.csv +85 -0
  317. package/dist/agent-src/skills/design-intelligence/data/typography.csv +74 -0
  318. package/dist/agent-src/skills/design-intelligence/data/ui-reasoning.csv +162 -0
  319. package/dist/agent-src/skills/design-intelligence/data/ux-guidelines.csv +100 -0
  320. package/dist/agent-src/skills/design-intelligence/evals/triggers.json +16 -0
  321. package/dist/agent-src/skills/design-intelligence/references/design-languages.md +45 -0
  322. package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +268 -0
  323. package/dist/agent-src/skills/design-review/SKILL.md +233 -0
  324. package/dist/agent-src/skills/design-tokens/SKILL.md +135 -0
  325. package/dist/agent-src/skills/design-tokens/evals/triggers.json +16 -0
  326. package/dist/agent-src/skills/design-tokens/scripts/tokens.py +296 -0
  327. package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +143 -0
  328. package/dist/agent-src/skills/developer-like-execution/SKILL.md +293 -0
  329. package/dist/agent-src/skills/error-handling-patterns/SKILL.md +139 -0
  330. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +217 -0
  331. package/dist/agent-src/skills/fe-design/SKILL.md +265 -0
  332. package/dist/agent-src/skills/feature-planning/SKILL.md +271 -0
  333. package/dist/agent-src/skills/flux/SKILL.md +126 -0
  334. package/dist/agent-src/skills/jira-integration/SKILL.md +187 -0
  335. package/dist/agent-src/skills/lint-skills/SKILL.md +95 -0
  336. package/dist/agent-src/skills/livewire/SKILL.md +139 -0
  337. package/dist/agent-src/skills/mcp-builder/SKILL.md +113 -0
  338. package/dist/agent-src/skills/md-language-check/SKILL.md +130 -0
  339. package/dist/agent-src/skills/memory-consolidation/SKILL.md +266 -0
  340. package/dist/agent-src/skills/merge-conflicts/SKILL.md +195 -0
  341. package/dist/agent-src/skills/motion-choreographer/SKILL.md +197 -0
  342. package/dist/agent-src/skills/persona-writing/SKILL.md +158 -0
  343. package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +150 -0
  344. package/dist/agent-src/skills/prompt-validator/SKILL.md +167 -0
  345. package/dist/agent-src/skills/prompt-validator/evals/triggers.json +16 -0
  346. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +235 -0
  347. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.py +299 -0
  348. package/dist/agent-src/skills/readme-reviewer/SKILL.md +242 -0
  349. package/dist/agent-src/skills/readme-writing/SKILL.md +240 -0
  350. package/dist/agent-src/skills/readme-writing-package/SKILL.md +350 -0
  351. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +119 -0
  352. package/dist/agent-src/skills/reasoning-orchestrator/evals/triggers.json +16 -0
  353. package/dist/agent-src/skills/receiving-code-review/SKILL.md +200 -0
  354. package/dist/agent-src/skills/refine-prompt/SKILL.md +291 -0
  355. package/dist/agent-src/skills/refine-ticket/SKILL.md +338 -0
  356. package/dist/agent-src/skills/repomix-packer/SKILL.md +141 -0
  357. package/dist/agent-src/skills/roadmap-management/SKILL.md +461 -0
  358. package/dist/agent-src/skills/rule-refactor/SKILL.md +149 -0
  359. package/dist/agent-src/skills/rule-writing/SKILL.md +277 -0
  360. package/dist/agent-src/skills/scene-expander/SKILL.md +158 -0
  361. package/dist/agent-src/skills/scene-expander/scene-blueprint.schema.yaml +114 -0
  362. package/dist/agent-src/skills/script-writing/SKILL.md +231 -0
  363. package/dist/agent-src/skills/secrets-management/SKILL.md +148 -0
  364. package/dist/agent-src/skills/sentry-integration/SKILL.md +175 -0
  365. package/dist/agent-src/skills/song-to-script/SKILL.md +303 -0
  366. package/dist/agent-src/skills/sql-writing/SKILL.md +85 -0
  367. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +356 -0
  368. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +154 -0
  369. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.py +463 -0
  370. package/dist/agent-src/skills/technical-specification/SKILL.md +251 -0
  371. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +164 -0
  372. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +67 -0
  373. package/dist/agent-src/skills/threat-modeling/SKILL.md +207 -0
  374. package/dist/agent-src/skills/threat-modeling/data/manifest.json +83 -0
  375. package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -0
  376. package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +10 -0
  377. package/dist/agent-src/skills/threat-modeling/data/threats.csv +16 -0
  378. package/dist/agent-src/skills/token-optimizer/SKILL.md +115 -0
  379. package/dist/agent-src/skills/upstream-contribute/SKILL.md +261 -0
  380. package/dist/agent-src/templates/AGENTS.md +34 -0
  381. package/dist/agent-src/templates/agents/.gitattributes.fragment +15 -0
  382. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +286 -0
  383. package/dist/agent-src/templates/agents/proposal.example.md +155 -0
  384. package/dist/agent-src/templates/command.md +105 -0
  385. package/dist/agent-src/templates/copilot-instructions.md +167 -0
  386. package/dist/agent-src/templates/github-workflows/proposal-drift.yml +118 -0
  387. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +66 -0
  388. package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +99 -0
  389. package/dist/agent-src/templates/persona.md +99 -0
  390. package/dist/agent-src/templates/rule.md +135 -0
  391. package/dist/agent-src/templates/scripts/check_memory.py +282 -0
  392. package/dist/agent-src/templates/scripts/check_memory_proposal.py +180 -0
  393. package/dist/agent-src/templates/scripts/memory_lookup.py +436 -0
  394. package/dist/agent-src/templates/scripts/memory_report.py +314 -0
  395. package/dist/agent-src/templates/scripts/memory_signal.py +165 -0
  396. package/dist/agent-src/templates/scripts/memory_status.py +76 -0
  397. package/dist/agent-src/templates/scripts/work_engine/directives/backend/memory.py +136 -0
  398. package/dist/agent-src/templates/scripts/work_engine/directives/ui/_passthrough.py +44 -0
  399. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.py +513 -0
  400. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.py +471 -0
  401. package/dist/agent-src/templates/scripts/work_engine/orchestration.py +193 -0
  402. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +283 -0
  403. package/dist/agent-src/templates/scripts/work_engine/stack/runner.py +481 -0
  404. package/dist/agent-src/user-types/README.md +124 -0
  405. package/dist/cli/agent-config.js +31 -252
  406. package/dist/cli/agent-config.js.map +1 -1
  407. package/dist/cli/commands/commands.js +157 -0
  408. package/dist/cli/commands/commands.js.map +1 -0
  409. package/dist/cli/commands/mcpServer.js +54 -0
  410. package/dist/cli/commands/mcpServer.js.map +1 -0
  411. package/dist/cli/commands/packs.js +1 -1
  412. package/dist/cli/commands/packs.js.map +1 -1
  413. package/dist/cli/commands/profiles.js +77 -0
  414. package/dist/cli/commands/profiles.js.map +1 -0
  415. package/dist/cli/commands/profiles.test.js +88 -0
  416. package/dist/cli/commands/profiles.test.js.map +1 -0
  417. package/dist/cli/commands/workspaces.js +1 -1
  418. package/dist/cli/commands/workspaces.js.map +1 -1
  419. package/dist/cli/discovery/loadManifest.js.map +1 -1
  420. package/dist/cli/main.js +309 -0
  421. package/dist/cli/main.js.map +1 -0
  422. package/dist/cli/mcp/content.js +127 -0
  423. package/dist/cli/mcp/content.js.map +1 -0
  424. package/dist/cli/mcp/content.test.js +54 -0
  425. package/dist/cli/mcp/content.test.js.map +1 -0
  426. package/dist/cli/mcp/dispatch.js +167 -0
  427. package/dist/cli/mcp/dispatch.js.map +1 -0
  428. package/dist/cli/mcp/dispatch.test.js +108 -0
  429. package/dist/cli/mcp/dispatch.test.js.map +1 -0
  430. package/dist/cli/mcp/stdio.js +69 -0
  431. package/dist/cli/mcp/stdio.js.map +1 -0
  432. package/dist/cli/paths.js +8 -2
  433. package/dist/cli/paths.js.map +1 -1
  434. package/dist/cli/registry.js +2 -0
  435. package/dist/cli/registry.js.map +1 -1
  436. package/dist/discovery/deprecation-report.md +1 -1
  437. package/dist/discovery/discovery-manifest.json +3231 -2099
  438. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  439. package/dist/discovery/discovery-manifest.summary.md +11 -6
  440. package/dist/discovery/orphan-report.md +1 -1
  441. package/dist/discovery/packs.json +802 -467
  442. package/dist/discovery/trust-report.md +6 -6
  443. package/dist/discovery/workspaces.json +521 -478
  444. package/dist/install/detect.js +2 -2
  445. package/dist/install/detect.js.map +1 -1
  446. package/dist/install/wizard-plan.js +18 -18
  447. package/dist/install/wizard-plan.js.map +1 -1
  448. package/dist/mcp/registry-manifest.json +4 -4
  449. package/dist/router.json +1 -1
  450. package/dist/server/io/substituteTemplate.js +5 -5
  451. package/dist/server/io/substituteTemplate.js.map +1 -1
  452. package/dist/server/routes/settings.js +2 -2
  453. package/dist/server/routes/settings.js.map +1 -1
  454. package/dist/server/routes/userMd.js +1 -1
  455. package/dist/server/routes/userMd.js.map +1 -1
  456. package/dist/server/routes/wizard.js +31 -16
  457. package/dist/server/routes/wizard.js.map +1 -1
  458. package/dist/server/routes/workspace.js +556 -117
  459. package/dist/server/routes/workspace.js.map +1 -1
  460. package/dist/server/schemas/settings.js +25 -2
  461. package/dist/server/schemas/settings.js.map +1 -1
  462. package/dist/shared/userMd/formAdapter.js +2 -2
  463. package/dist/ui/assets/index-CoQo90sz.js +40 -0
  464. package/dist/ui/assets/index-CoQo90sz.js.map +1 -0
  465. package/dist/ui/index.html +1 -1
  466. package/docs/DISTRIBUTION_CHECKLIST.md +2 -2
  467. package/docs/MIGRATION.md +1 -1
  468. package/docs/adrs/cost/0001-hard-stop-hook.md +10 -10
  469. package/docs/adrs/memory/0001-consumer-side-snapshot.md +19 -11
  470. package/docs/adrs/memory/README.md +6 -5
  471. package/docs/adrs/router/0001-three-tier-routing.md +5 -5
  472. package/docs/adrs/schema/0001-json-schema-frontmatter.md +8 -8
  473. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +11 -11
  474. package/docs/adrs/telegraph/0001-default-off-until-bench.md +3 -3
  475. package/docs/architecture/augment-projection.md +10 -10
  476. package/docs/architecture/claude-bundle.md +5 -5
  477. package/docs/architecture/current-onboard-baseline.md +4 -4
  478. package/docs/architecture/current-safety-behavior.md +16 -16
  479. package/docs/architecture/multi-tool-projection.md +8 -8
  480. package/docs/architecture/source-projection.md +11 -11
  481. package/docs/architecture.md +17 -17
  482. package/docs/archive/CHANGELOG-pre-2.17.0.md +1 -1
  483. package/docs/archive/CHANGELOG-pre-2.2.0.md +37 -37
  484. package/docs/archive/CHANGELOG-pre-2.20.0.md +1 -1
  485. package/docs/archive/CHANGELOG-pre-2.25.0.md +2 -2
  486. package/docs/archive/CHANGELOG-pre-2.7.0.md +1 -1
  487. package/docs/archive/CHANGELOG-pre-3.0.0.md +1 -1
  488. package/docs/archive/CHANGELOG-pre-3.1.0.md +1 -1
  489. package/docs/archive/CHANGELOG-pre-3.2.0.md +1 -1
  490. package/docs/archive/CHANGELOG-pre-4.5.0.md +2 -2
  491. package/docs/archive/CHANGELOG-pre-5.4.0.md +1 -1
  492. package/docs/archive/CHANGELOG-pre-5.9.0.md +1 -1
  493. package/docs/archive/CHANGELOG-pre-6.0.0.md +473 -0
  494. package/docs/artefact-census.md +71 -0
  495. package/docs/benchmark.md +54 -53
  496. package/docs/benchmarks.md +2 -2
  497. package/docs/case-studies/frontend-design-positioning.md +86 -0
  498. package/docs/catalog.md +472 -456
  499. package/docs/command-flows.md +230 -0
  500. package/docs/contracts/CHANGELOG-conventions.md +2 -2
  501. package/docs/contracts/STABILITY.md +1 -1
  502. package/docs/contracts/adoption-signal-floor.md +2 -2
  503. package/docs/contracts/adr-architectural-consensus-mechanism.md +1 -1
  504. package/docs/contracts/adr-chat-history-split.md +1 -1
  505. package/docs/contracts/adr-gtm-context-spine.md +2 -2
  506. package/docs/contracts/adr-install-user-type-axis.md +3 -3
  507. package/docs/contracts/adr-layout.md +5 -6
  508. package/docs/contracts/adr-level-6-productization.md +1 -1
  509. package/docs/contracts/adr-mcp-runtime.md +8 -8
  510. package/docs/contracts/adr-prompt-driven-execution.md +1 -1
  511. package/docs/contracts/adr-settings-sync-engine.md +3 -3
  512. package/docs/contracts/adr-user-types-axis.md +2 -2
  513. package/docs/contracts/adr-wing4-context-spine.md +2 -2
  514. package/docs/contracts/agent-user-schema.md +6 -6
  515. package/docs/contracts/agents-md-tech-stack.md +2 -2
  516. package/docs/contracts/ai-council-config.md +46 -11
  517. package/docs/contracts/at-rest-encryption.md +48 -7
  518. package/docs/contracts/audit-log-v1.md +3 -3
  519. package/docs/contracts/benchmark-ab-contract.md +6 -1
  520. package/docs/contracts/benchmark-corpus-spec.md +2 -2
  521. package/docs/contracts/benchmark-report-schema.md +4 -4
  522. package/docs/contracts/branch-protection-policy.md +5 -0
  523. package/docs/contracts/capability-packs.md +217 -0
  524. package/docs/contracts/ci-cost-budget.md +6 -1
  525. package/docs/contracts/ci-green-floor.md +1 -1
  526. package/docs/contracts/command-category-governance.md +79 -0
  527. package/docs/contracts/command-clusters.md +43 -5
  528. package/docs/contracts/config-presets.md +1 -1
  529. package/docs/contracts/cost-dashboard.md +1 -1
  530. package/docs/contracts/cost-enforcement.md +1 -1
  531. package/docs/contracts/cost-profile-defaults.md +2 -2
  532. package/docs/contracts/cost-summary-schema.md +5 -5
  533. package/docs/contracts/creative-pack-boundary.md +58 -0
  534. package/docs/contracts/daily-workspace.md +9 -3
  535. package/docs/contracts/discovery-manifest.md +5 -5
  536. package/docs/contracts/discovery-manifest.schema.json +16 -3
  537. package/docs/contracts/evidence-based-pruning.md +101 -0
  538. package/docs/contracts/explain-modes.md +38 -1
  539. package/docs/contracts/file-ownership-matrix.json +1804 -4620
  540. package/docs/contracts/frontmatter-contract.md +6 -6
  541. package/docs/contracts/ghostwriter-schema.md +1 -1
  542. package/docs/contracts/gui-wizard.md +1 -1
  543. package/docs/contracts/harness-expectations.md +5 -0
  544. package/docs/contracts/hook-architecture-v1.md +1 -1
  545. package/docs/contracts/host-agent-protocol.md +19 -1
  546. package/docs/contracts/implement-ticket-flow.md +6 -7
  547. package/docs/contracts/install-scopes.md +7 -2
  548. package/docs/contracts/installed-tools-lockfile.md +2 -2
  549. package/docs/contracts/linear-ai-rules-inclusion.md +2 -2
  550. package/docs/contracts/linear-ai-three-layers.md +1 -1
  551. package/docs/contracts/linter-structural-model.md +2 -2
  552. package/docs/contracts/load-context-budget-model.md +1 -1
  553. package/docs/contracts/load-context-schema.md +1 -1
  554. package/docs/contracts/local-analytics.md +9 -1
  555. package/docs/contracts/low-impact-corpus-format.md +1 -1
  556. package/docs/contracts/mcp-cloud-scope.md +6 -6
  557. package/docs/contracts/mcp-phase-1-scope.md +5 -5
  558. package/docs/contracts/mcp-tool-inventory.md +10 -10
  559. package/docs/contracts/measurement-baseline.md +6 -6
  560. package/docs/contracts/memory-visibility-v1.md +1 -5
  561. package/docs/contracts/migrate-command.md +44 -8
  562. package/docs/contracts/multi-tool-projection-fidelity.md +3 -3
  563. package/docs/contracts/namespace.md +2 -2
  564. package/docs/contracts/orchestration-dsl-v1.md +2 -2
  565. package/docs/contracts/package-self-orientation.md +17 -17
  566. package/docs/contracts/persona-schema.md +1 -1
  567. package/docs/contracts/pilot/language-and-tone.md +1 -1
  568. package/docs/contracts/plain-language-surface.md +2 -2
  569. package/docs/contracts/profile-system.md +26 -1
  570. package/docs/contracts/provider-lifecycle.md +3 -3
  571. package/docs/contracts/release-pr-gating.md +5 -0
  572. package/docs/contracts/release-trunk-sync.md +3 -3
  573. package/docs/contracts/review-lens-schema.md +59 -0
  574. package/docs/contracts/role-experience.md +10 -6
  575. package/docs/contracts/router-blending.md +2 -2
  576. package/docs/contracts/rule-classification.md +1 -1
  577. package/docs/contracts/rule-interactions.md +1 -1
  578. package/docs/contracts/rule-router.md +3 -3
  579. package/docs/contracts/safety-model.md +2 -2
  580. package/docs/contracts/session-profile-overlay.md +40 -3
  581. package/docs/contracts/settings-api.md +3 -3
  582. package/docs/contracts/settings-sync-yaml-subset.md +4 -4
  583. package/docs/contracts/skill-bundled-assets.md +62 -0
  584. package/docs/contracts/skill-discovery.md +1 -1
  585. package/docs/contracts/skill-distribution-channels.md +6 -1
  586. package/docs/contracts/skill-dry-run.md +2 -2
  587. package/docs/contracts/skill-family-map.yml +915 -0
  588. package/docs/contracts/smoke-contracts.md +5 -5
  589. package/docs/contracts/telegraph-telemetry.md +2 -2
  590. package/docs/contracts/trust-and-safety.md +3 -3
  591. package/docs/contracts/universal-skills.md +16 -17
  592. package/docs/contracts/value-dashboard-spec.md +21 -21
  593. package/docs/contracts/value-report-schema.md +8 -8
  594. package/docs/contracts/workspace-boundary.md +84 -0
  595. package/docs/customization.md +11 -11
  596. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +2 -2
  597. package/docs/decisions/ADR-007-agent-discovery-scopes.md +1 -1
  598. package/docs/decisions/ADR-008-installed-tools-manifest.md +1 -1
  599. package/docs/decisions/ADR-009-event4u-namespace.md +4 -4
  600. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +27 -8
  601. package/docs/decisions/ADR-015-discovery-manifest-contract.md +5 -5
  602. package/docs/decisions/ADR-017-monorepo-physical-layout.md +5 -5
  603. package/docs/decisions/ADR-018-trust-and-safety-layer.md +2 -2
  604. package/docs/decisions/ADR-019-router-json-dist-location.md +2 -2
  605. package/docs/decisions/ADR-020-global-only-consumer-scope.md +27 -2
  606. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +2 -2
  607. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +1 -1
  608. package/docs/decisions/ADR-026-explain-mode-translation.md +1 -1
  609. package/docs/decisions/ADR-028-root-layout.md +1 -1
  610. package/docs/decisions/ADR-030-claude-code-command-projection.md +2 -2
  611. package/docs/decisions/ADR-038-canonical-settings-path.md +20 -0
  612. package/docs/decisions/ADR-041-controlled-command-verbs.md +133 -0
  613. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +113 -0
  614. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +128 -0
  615. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +250 -0
  616. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +111 -0
  617. package/docs/decisions/ADR-046-thin-command-principle.md +93 -0
  618. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +94 -0
  619. package/docs/decisions/ADR-048-command-justification-rule.md +106 -0
  620. package/docs/decisions/ADR-049-configuration-trust-boundary.md +114 -0
  621. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +121 -0
  622. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +114 -0
  623. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +86 -0
  624. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +132 -0
  625. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +143 -0
  626. package/docs/decisions/ADR-055-flow-layer-data-model.md +235 -0
  627. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +124 -0
  628. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +135 -0
  629. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +94 -0
  630. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +161 -0
  631. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +154 -0
  632. package/docs/decisions/ADR-061-corpus-grounding-layer.md +170 -0
  633. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +121 -0
  634. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +83 -0
  635. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +113 -0
  636. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +86 -0
  637. package/docs/decisions/ADR-066-skill-body-prerendering.md +93 -0
  638. package/docs/decisions/ADR-067-glama-registry-listing.md +259 -0
  639. package/docs/decisions/ADR-068-host-tier-detection.md +90 -0
  640. package/docs/decisions/ADR-069-prompt-renderer.md +97 -0
  641. package/docs/decisions/ADR-070-tier1-drive-loop.md +94 -0
  642. package/docs/decisions/ADR-071-launch-drive-integration.md +95 -0
  643. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +90 -0
  644. package/docs/decisions/ADR-073-drive-health-kill-switch.md +81 -0
  645. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +84 -0
  646. package/docs/decisions/ADR-075-workspace-gui-drive.md +83 -0
  647. package/docs/decisions/ADR-076-workspace-multi-turn.md +92 -0
  648. package/docs/decisions/ADR-077-workspace-followup-gui.md +70 -0
  649. package/docs/decisions/ADR-078-drive-health-panel.md +70 -0
  650. package/docs/decisions/ADR-079-workspace-host-picker.md +81 -0
  651. package/docs/decisions/ADR-080-host-session-expired-410.md +92 -0
  652. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +71 -0
  653. package/docs/decisions/ADR-082-410-one-click-relaunch.md +58 -0
  654. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +85 -0
  655. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +52 -0
  656. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +158 -0
  657. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +171 -0
  658. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +111 -0
  659. package/docs/decisions/ADR-088-no-external-runtime-federation.md +144 -0
  660. package/docs/decisions/ADR-089-lean-local-plugin-install.md +111 -0
  661. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +95 -0
  662. package/docs/decisions/ADR-091-split-meta-capability-packs.md +113 -0
  663. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +93 -0
  664. package/docs/decisions/ADR-093-ai-council-config-user-global.md +111 -0
  665. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +94 -0
  666. package/docs/decisions/ADR-095-workspace-boundary-contract.md +108 -0
  667. package/docs/decisions/INDEX.md +55 -0
  668. package/docs/deploy/small-team-recipe.md +1 -1
  669. package/docs/deploy/team-deployment-posture.md +1 -1
  670. package/docs/development.md +9 -11
  671. package/docs/distribution/public-install-smoke.md +1 -1
  672. package/docs/distribution/registries.md +5 -5
  673. package/docs/distribution/registry-submissions.md +2 -2
  674. package/docs/end-to-end-walkthroughs.md +10 -10
  675. package/docs/experiences/agency.md +49 -0
  676. package/docs/experiences/content_creator.md +47 -0
  677. package/docs/experiences/developer.md +49 -0
  678. package/docs/experiences/finance.md +48 -0
  679. package/docs/experiences/founder.md +47 -0
  680. package/docs/experiences/ops.md +47 -0
  681. package/docs/featured-commands.md +12 -12
  682. package/docs/featured-skills.md +32 -32
  683. package/docs/flows.md +67 -0
  684. package/docs/getting-started-by-role.md +41 -41
  685. package/docs/getting-started-laravel.md +26 -26
  686. package/docs/getting-started-local-stdio.md +77 -0
  687. package/docs/getting-started.md +5 -5
  688. package/docs/governance.md +96 -0
  689. package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
  690. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +6 -6
  691. package/docs/guidelines/agent-infra/comparison-matrix.md +179 -0
  692. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
  693. package/docs/guidelines/agent-infra/critical-thinking.md +1 -1
  694. package/docs/guidelines/agent-infra/direct-answers-demos.md +23 -26
  695. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +1 -5
  696. package/docs/guidelines/agent-infra/first-principles.md +1 -1
  697. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +164 -0
  698. package/docs/guidelines/agent-infra/inversion-thinking.md +1 -1
  699. package/docs/guidelines/agent-infra/ios-simulator-guide.md +9 -14
  700. package/docs/guidelines/agent-infra/language-and-tone-examples.md +29 -2
  701. package/docs/guidelines/agent-infra/layered-settings.md +3 -3
  702. package/docs/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
  703. package/docs/guidelines/agent-infra/mcp-request-signing.md +19 -22
  704. package/docs/guidelines/agent-infra/memory-access.md +25 -31
  705. package/docs/guidelines/agent-infra/mental-models.md +1 -1
  706. package/docs/guidelines/agent-infra/missing-tool-handling.md +66 -0
  707. package/docs/guidelines/agent-infra/model-recommendation.md +101 -0
  708. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  709. package/docs/guidelines/agent-infra/scqa-framework.md +3 -3
  710. package/docs/guidelines/agent-infra/security-lint-containment.md +81 -0
  711. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
  712. package/docs/guidelines/agent-infra/six-hats.md +1 -1
  713. package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
  714. package/docs/guidelines/agent-infra/untrusted-input-spotlighting.md +72 -0
  715. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +1 -1
  716. package/docs/guidelines/augment-portability-patterns.md +1 -1
  717. package/docs/guides/local-analytics.md +1 -1
  718. package/docs/guides/local-knowledge.md +3 -3
  719. package/docs/hook-payload-capture.md +5 -5
  720. package/docs/installation.md +4 -4
  721. package/docs/mcp-registries.md +94 -0
  722. package/docs/mcp-server.md +4 -4
  723. package/docs/mcp.md +5 -2
  724. package/docs/parity/bench-external.json +58 -0
  725. package/docs/parity/external-runtime.md +46 -0
  726. package/docs/personas.md +3 -3
  727. package/docs/profiles.md +15 -11
  728. package/docs/quality.md +4 -4
  729. package/docs/safety.md +3 -3
  730. package/docs/setup/mcp-client-config.md +134 -9
  731. package/docs/setup/mcp-server-docker.md +9 -7
  732. package/docs/setup/per-ide/claude-code.md +3 -3
  733. package/docs/setup/per-ide/claude-desktop.md +1 -1
  734. package/docs/setup/per-ide/cursor.md +2 -2
  735. package/docs/setup/per-ide/windsurf.md +1 -1
  736. package/docs/showcase.md +12 -12
  737. package/docs/skill-duplication-findings.md +91 -0
  738. package/docs/skills-catalog.md +231 -224
  739. package/docs/skills-taxonomy.md +90 -0
  740. package/docs/ui-track-mental-model.md +2 -2
  741. package/docs/value.md +50 -50
  742. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  743. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  744. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  745. package/docs/walkthroughs/daily-workspace.md +127 -0
  746. package/llms.txt +21 -14
  747. package/package.json +10 -9
  748. package/src/config/agent-settings.template.yml +674 -0
  749. package/src/config/discovery/command-verbs.yml +56 -0
  750. package/src/config/discovery/packs.yml +284 -0
  751. package/src/config/discovery/workspaces.yml +74 -0
  752. package/src/config/gitignore-block.txt +94 -0
  753. package/src/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  754. package/src/scripts/_archive/README.md +59 -0
  755. package/src/scripts/_archive/_bootstrap_tier_frontmatter.py +151 -0
  756. package/src/scripts/_archive/_p43_bodies.py +235 -0
  757. package/src/scripts/_archive/_p43_condense.py +118 -0
  758. package/src/scripts/_archive/_p4_migrate.py +199 -0
  759. package/src/scripts/_cli/cmd_doctor.py +1669 -0
  760. package/src/scripts/_cli/cmd_export.py +157 -0
  761. package/src/scripts/_cli/cmd_migrate.py +524 -0
  762. package/src/scripts/_cli/cmd_refresh.py +179 -0
  763. package/src/scripts/_cli/cmd_settings_migrate.py +147 -0
  764. package/src/scripts/_cli/cmd_update.py +279 -0
  765. package/src/scripts/_cli/cmd_upgrade.py +172 -0
  766. package/src/scripts/_cli/cmd_versions.py +160 -0
  767. package/src/scripts/_dispatch.bash +1129 -0
  768. package/src/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  769. package/src/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  770. package/src/scripts/_lib/agent_src.py +491 -0
  771. package/src/scripts/_lib/bench_ab_cache.py +162 -0
  772. package/src/scripts/_lib/bench_ab_scoring_v2.py +227 -0
  773. package/src/scripts/_lib/changelog_eras.py +330 -0
  774. package/src/scripts/_lib/claude_desktop_bundler.py +238 -0
  775. package/src/scripts/_lib/cli_wrapper.py +64 -0
  776. package/src/scripts/_lib/global_deploy_inventory.py +312 -0
  777. package/src/scripts/_lib/install_regenerator.py +134 -0
  778. package/src/scripts/_lib/installed_lock.py +256 -0
  779. package/src/scripts/_lib/link_crypto.py +206 -0
  780. package/src/scripts/_lib/model_tier.py +52 -0
  781. package/src/scripts/_lib/scope_guard.sh +163 -0
  782. package/src/scripts/_lib/security_lint.py +228 -0
  783. package/src/scripts/_lib/value_ladder.py +696 -0
  784. package/src/scripts/_lib/value_report.py +455 -0
  785. package/src/scripts/_phase4_bucket.py +210 -0
  786. package/src/scripts/_pilot_measure.py +53 -0
  787. package/src/scripts/adoption_report.py +195 -0
  788. package/src/scripts/adoption_snapshot.py +219 -0
  789. package/src/scripts/adoption_status.py +166 -0
  790. package/src/scripts/agent-config +57 -0
  791. package/src/scripts/ai-video/adapters/comfyui.sh +392 -0
  792. package/src/scripts/ai-video/adapters/fal.sh +311 -0
  793. package/src/scripts/ai-video/adapters/gemini-veo.sh +246 -0
  794. package/src/scripts/ai-video/adapters/higgsfield.sh +310 -0
  795. package/src/scripts/ai-video/adapters/kling.sh +248 -0
  796. package/src/scripts/ai-video/adapters/musetalk.sh +120 -0
  797. package/src/scripts/ai-video/adapters/openai-images.sh +147 -0
  798. package/src/scripts/ai-video/adapters/replicate.sh +289 -0
  799. package/src/scripts/ai-video/adapters/sora.sh +207 -0
  800. package/src/scripts/ai-video/adapters/syncso.sh +200 -0
  801. package/src/scripts/ai-video/audio-adapters/allin1.sh +115 -0
  802. package/src/scripts/ai-video/audio-adapters/whisperx.sh +128 -0
  803. package/src/scripts/ai-video/lib/adapter-common.sh +231 -0
  804. package/src/scripts/ai-video/lib/adapter-contract.md +329 -0
  805. package/src/scripts/ai-video/lib/audio-adapter-contract.md +210 -0
  806. package/src/scripts/ai-video/lib/comfyui-nodes.allowlist.json +21 -0
  807. package/src/scripts/ai-video/lib/comfyui-templates/ltx-2.json +79 -0
  808. package/src/scripts/ai-video/lib/comfyui-templates/wan22-ti2v-5b.json +78 -0
  809. package/src/scripts/ai-video/lib/embed-provenance.sh +194 -0
  810. package/src/scripts/ai-video/lib/fixtures/allin1/analysis.json +13 -0
  811. package/src/scripts/ai-video/lib/fixtures/comfyui/result.json +1 -0
  812. package/src/scripts/ai-video/lib/fixtures/fal/result.json +1 -0
  813. package/src/scripts/ai-video/lib/fixtures/fal/scene-0001.mp4 +1 -0
  814. package/src/scripts/ai-video/lib/fixtures/gemini-veo/result.json +1 -0
  815. package/src/scripts/ai-video/lib/fixtures/higgsfield/result.json +1 -0
  816. package/src/scripts/ai-video/lib/fixtures/kling/result.json +1 -0
  817. package/src/scripts/ai-video/lib/fixtures/kling/scene-0001.mp4 +1 -0
  818. package/src/scripts/ai-video/lib/fixtures/musetalk/lipsync-0001.mp4 +1 -0
  819. package/src/scripts/ai-video/lib/fixtures/musetalk/result.json +1 -0
  820. package/src/scripts/ai-video/lib/fixtures/openai-images/result.json +1 -0
  821. package/src/scripts/ai-video/lib/fixtures/replicate/result.json +1 -0
  822. package/src/scripts/ai-video/lib/fixtures/replicate/scene-0001.mp4 +1 -0
  823. package/src/scripts/ai-video/lib/fixtures/sora/result.json +1 -0
  824. package/src/scripts/ai-video/lib/fixtures/syncso/lipsync-0001.mp4 +1 -0
  825. package/src/scripts/ai-video/lib/fixtures/syncso/result.json +1 -0
  826. package/src/scripts/ai-video/lib/fixtures/whisperx/transcript.json +26 -0
  827. package/src/scripts/ai-video/lib/ingest-song.sh +89 -0
  828. package/src/scripts/ai-video/lib/load-config.sh +180 -0
  829. package/src/scripts/ai-video/lib/model-capabilities/README.md +82 -0
  830. package/src/scripts/ai-video/lib/model-capabilities/comfyui.json +31 -0
  831. package/src/scripts/ai-video/lib/model-capabilities/fal.json +77 -0
  832. package/src/scripts/ai-video/lib/model-capabilities/musetalk.json +24 -0
  833. package/src/scripts/ai-video/lib/model-capabilities/replicate.json +82 -0
  834. package/src/scripts/ai-video/lib/model-capabilities/syncso.json +23 -0
  835. package/src/scripts/ai-video/lib/resume-scan.sh +212 -0
  836. package/src/scripts/ai-video/lib/telemetry.sh +115 -0
  837. package/src/scripts/ai-video/lib/validate-deps.sh +132 -0
  838. package/src/scripts/ai-video/lib/validate-vocal-map.sh +121 -0
  839. package/src/scripts/ai-video/smoke-trace.sh +179 -0
  840. package/src/scripts/ai-video/stitch.sh +161 -0
  841. package/src/scripts/ai-video/test-pipeline.sh +169 -0
  842. package/src/scripts/ai_council/advisors.py +148 -0
  843. package/src/scripts/ai_council/clients.py +1385 -0
  844. package/src/scripts/ai_council/compile_corpus.py +179 -0
  845. package/src/scripts/ai_council/config.py +1419 -0
  846. package/src/scripts/ai_council/events_log.py +141 -0
  847. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_2a4_acceptance.py +208 -0
  848. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +206 -0
  849. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_estimate.py +67 -0
  850. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +292 -0
  851. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_followups_review.py +259 -0
  852. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +209 -0
  853. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase4_dispatch_latency.py +108 -0
  854. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +92 -0
  855. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +257 -0
  856. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_post_revert.py +197 -0
  857. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +149 -0
  858. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_roundtrip.py +111 -0
  859. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_rule_hardening_v1.py +251 -0
  860. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py +98 -0
  861. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_open_questions.py +232 -0
  862. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +144 -0
  863. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_gaps.py +252 -0
  864. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_review.py +240 -0
  865. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +180 -0
  866. package/src/scripts/ai_council/pricing.py +215 -0
  867. package/src/scripts/ai_council/session.py +366 -0
  868. package/src/scripts/annotate_discovery.py +149 -0
  869. package/src/scripts/apply_modules_config.py +290 -0
  870. package/src/scripts/audit_adr_coverage.py +173 -0
  871. package/src/scripts/audit_auto_rules.py +175 -0
  872. package/src/scripts/audit_cloud_compatibility.py +362 -0
  873. package/src/scripts/audit_command_surface.py +682 -0
  874. package/src/scripts/audit_initial_context.py +237 -0
  875. package/src/scripts/audit_likelihood.py +148 -0
  876. package/src/scripts/audit_mcp_tools.py +146 -0
  877. package/src/scripts/audit_overlap.py +145 -0
  878. package/src/scripts/audit_skill_descriptions.py +180 -0
  879. package/src/scripts/audit_skill_overlap.py +207 -0
  880. package/src/scripts/audit_user_type_axis.py +140 -0
  881. package/src/scripts/backfill_model_tier.py +184 -0
  882. package/src/scripts/bench_ab_cache_dispatch.py +68 -0
  883. package/src/scripts/bench_ab_clone.py +220 -0
  884. package/src/scripts/bench_ab_diff.py +220 -0
  885. package/src/scripts/bench_ab_integrity.py +143 -0
  886. package/src/scripts/bench_ab_run.py +235 -0
  887. package/src/scripts/bench_ab_task_runner.py +814 -0
  888. package/src/scripts/bench_ab_tracka_run.py +202 -0
  889. package/src/scripts/bench_ab_v2_run.py +247 -0
  890. package/src/scripts/bench_ab_v2_stats.py +347 -0
  891. package/src/scripts/bench_baseline_ready.py +108 -0
  892. package/src/scripts/bench_condense_memory.py +168 -0
  893. package/src/scripts/bench_drift_check.py +151 -0
  894. package/src/scripts/bench_per_tool.py +216 -0
  895. package/src/scripts/bench_rtk_savings.py +320 -0
  896. package/src/scripts/bench_run.py +272 -0
  897. package/src/scripts/bench_runner.py +158 -0
  898. package/src/scripts/build_cloud_bundle.py +458 -0
  899. package/src/scripts/build_discovery_manifest.py +757 -0
  900. package/src/scripts/build_linear_digest.py +260 -0
  901. package/src/scripts/build_mcp_registry_manifest.py +181 -0
  902. package/src/scripts/build_rule_trigger_matrix.py +350 -0
  903. package/src/scripts/capture_showcase_session.py +361 -0
  904. package/src/scripts/check_always_budget.py +532 -0
  905. package/src/scripts/check_artefact_checksums.py +111 -0
  906. package/src/scripts/check_augment_description_cap.py +79 -0
  907. package/src/scripts/check_augmentignore.py +72 -0
  908. package/src/scripts/check_beta_review_markers.py +127 -0
  909. package/src/scripts/check_bite_sized_granularity.py +98 -0
  910. package/src/scripts/check_cluster_patterns.py +206 -0
  911. package/src/scripts/check_command_count_messaging.py +152 -0
  912. package/src/scripts/check_condensation.py +375 -0
  913. package/src/scripts/check_condensed_paths.py +231 -0
  914. package/src/scripts/check_context_paths.py +202 -0
  915. package/src/scripts/check_council_references.py +228 -0
  916. package/src/scripts/check_discovery_determinism.py +70 -0
  917. package/src/scripts/check_gate_paths.py +128 -0
  918. package/src/scripts/check_memory.py +429 -0
  919. package/src/scripts/check_memory_proposal.py +182 -0
  920. package/src/scripts/check_module_management_neutral.py +147 -0
  921. package/src/scripts/check_no_external_sources.py +101 -0
  922. package/src/scripts/check_no_new_legacy_path.py +100 -0
  923. package/src/scripts/check_no_roadmap_refs.py +155 -0
  924. package/src/scripts/check_one_off_location.py +81 -0
  925. package/src/scripts/check_overlay_cascade_subdirs.py +129 -0
  926. package/src/scripts/check_portability.py +574 -0
  927. package/src/scripts/check_public_catalog_links.py +125 -0
  928. package/src/scripts/check_public_links.py +185 -0
  929. package/src/scripts/check_references.py +559 -0
  930. package/src/scripts/check_release_includes_discovery.py +61 -0
  931. package/src/scripts/check_release_pr_shape.py +123 -0
  932. package/src/scripts/check_release_published.py +145 -0
  933. package/src/scripts/check_reply_consistency.py +169 -0
  934. package/src/scripts/check_roadmap_trackable.py +114 -0
  935. package/src/scripts/check_role_doc_links.py +110 -0
  936. package/src/scripts/check_safety_floor_untouched.py +125 -0
  937. package/src/scripts/check_skill_requires.py +147 -0
  938. package/src/scripts/check_template_pin_drift.py +129 -0
  939. package/src/scripts/check_test_coverage_diff.py +180 -0
  940. package/src/scripts/check_token_optimizer_freshness.py +146 -0
  941. package/src/scripts/check_update_banner.py +86 -0
  942. package/src/scripts/ci_time_ratio.py +168 -0
  943. package/src/scripts/compile_router.py +232 -0
  944. package/src/scripts/condense.py +1919 -0
  945. package/src/scripts/condense_memory.py +178 -0
  946. package/src/scripts/config/packs.py +157 -0
  947. package/src/scripts/config/profile_explain.py +89 -0
  948. package/src/scripts/config/profiles.py +191 -0
  949. package/src/scripts/config/session_profiles.py +542 -0
  950. package/src/scripts/cost_by_conversation.py +78 -0
  951. package/src/scripts/cost_summary.py +97 -0
  952. package/src/scripts/council_cli.py +2571 -0
  953. package/src/scripts/cross_repo_retrieve.py +172 -0
  954. package/src/scripts/discovery_stats.py +70 -0
  955. package/src/scripts/external_sources_denylist.json +91 -0
  956. package/src/scripts/extract_audit_patterns.py +202 -0
  957. package/src/scripts/first_run_gate_hook.py +179 -0
  958. package/src/scripts/gen_discovery_baseline.py +127 -0
  959. package/src/scripts/generate_catalog.py +116 -0
  960. package/src/scripts/generate_command_flows.py +191 -0
  961. package/src/scripts/generate_index.py +303 -0
  962. package/src/scripts/generate_ownership_matrix.py +378 -0
  963. package/src/scripts/generate_pack_manifests.py +340 -0
  964. package/src/scripts/hook_manifest.yaml +251 -0
  965. package/src/scripts/hooks/dispatch_hook.py +461 -0
  966. package/src/scripts/hooks/replay_hook.py +144 -0
  967. package/src/scripts/hooks_doctor.py +223 -0
  968. package/src/scripts/hooks_status.py +157 -0
  969. package/src/scripts/injection_scan_hook.py +145 -0
  970. package/src/scripts/install +425 -0
  971. package/src/scripts/install-hooks.sh +215 -0
  972. package/src/scripts/install.py +5258 -0
  973. package/src/scripts/install.sh +1156 -0
  974. package/src/scripts/inventory_abstraction_budget.py +622 -0
  975. package/src/scripts/inventory_frontmatter.py +164 -0
  976. package/src/scripts/inventory_meta_layers.py +288 -0
  977. package/src/scripts/iron_law_sha.py +107 -0
  978. package/src/scripts/linked_projects_list.py +91 -0
  979. package/src/scripts/lint_agent_security.py +112 -0
  980. package/src/scripts/lint_agent_skill_names.py +150 -0
  981. package/src/scripts/lint_agents_layout.py +197 -0
  982. package/src/scripts/lint_agents_md.py +210 -0
  983. package/src/scripts/lint_archived_skills.py +159 -0
  984. package/src/scripts/lint_artefact_frontmatter.py +188 -0
  985. package/src/scripts/lint_bench_ab.py +173 -0
  986. package/src/scripts/lint_bench_corpus.py +255 -0
  987. package/src/scripts/lint_command_flow_coverage.py +132 -0
  988. package/src/scripts/lint_command_routing.py +160 -0
  989. package/src/scripts/lint_command_tiers.py +216 -0
  990. package/src/scripts/lint_command_verbs.py +206 -0
  991. package/src/scripts/lint_commit_subjects.py +139 -0
  992. package/src/scripts/lint_context_spine_usage.py +137 -0
  993. package/src/scripts/lint_discovery_manifest.py +176 -0
  994. package/src/scripts/lint_discovery_vocabulary.py +222 -0
  995. package/src/scripts/lint_empty_roadmaps.py +80 -0
  996. package/src/scripts/lint_examples.py +102 -0
  997. package/src/scripts/lint_explain_trace.py +80 -0
  998. package/src/scripts/lint_featured_skills.py +144 -0
  999. package/src/scripts/lint_flows.py +215 -0
  1000. package/src/scripts/lint_framework_leakage.py +375 -0
  1001. package/src/scripts/lint_framework_leakage_allowlist.json +575 -0
  1002. package/src/scripts/lint_frontmatter_boilerplate.py +77 -0
  1003. package/src/scripts/lint_ghostwriter_source.py +242 -0
  1004. package/src/scripts/lint_handoffs.py +217 -0
  1005. package/src/scripts/lint_hidden_unicode.py +132 -0
  1006. package/src/scripts/lint_hook_concern_budget.py +207 -0
  1007. package/src/scripts/lint_hook_manifest.py +217 -0
  1008. package/src/scripts/lint_instruction_smuggling.py +107 -0
  1009. package/src/scripts/lint_load_context.py +196 -0
  1010. package/src/scripts/lint_marketplace.py +180 -0
  1011. package/src/scripts/lint_marketplace_install_completeness.py +198 -0
  1012. package/src/scripts/lint_mcp_config_security.py +124 -0
  1013. package/src/scripts/lint_mcp_registry_manifest.py +69 -0
  1014. package/src/scripts/lint_media_policy_linkage.py +140 -0
  1015. package/src/scripts/lint_model_tier_coverage.py +73 -0
  1016. package/src/scripts/lint_namespace.py +135 -0
  1017. package/src/scripts/lint_namespace_collisions.py +103 -0
  1018. package/src/scripts/lint_new_skill_gate.py +144 -0
  1019. package/src/scripts/lint_no_new_atomic_commands.py +180 -0
  1020. package/src/scripts/lint_one_off_age.py +184 -0
  1021. package/src/scripts/lint_orchestration_dsl.py +217 -0
  1022. package/src/scripts/lint_orchestrator_auto_detect.py +111 -0
  1023. package/src/scripts/lint_pack_boundaries.py +147 -0
  1024. package/src/scripts/lint_pack_dependencies.py +137 -0
  1025. package/src/scripts/lint_pack_first_win.py +121 -0
  1026. package/src/scripts/lint_persona_governance.py +164 -0
  1027. package/src/scripts/lint_positioning.py +143 -0
  1028. package/src/scripts/lint_profile_overlay_set_only.py +179 -0
  1029. package/src/scripts/lint_regression.py +251 -0
  1030. package/src/scripts/lint_roadmap_ci_steps.py +186 -0
  1031. package/src/scripts/lint_roadmap_complexity.py +220 -0
  1032. package/src/scripts/lint_role_experiences.py +255 -0
  1033. package/src/scripts/lint_rule_interactions.py +170 -0
  1034. package/src/scripts/lint_rule_tiers.py +90 -0
  1035. package/src/scripts/lint_showcase_sessions.py +148 -0
  1036. package/src/scripts/lint_skill_frontmatter_safety.py +144 -0
  1037. package/src/scripts/lint_skill_tools.py +168 -0
  1038. package/src/scripts/lint_topics_yaml.py +89 -0
  1039. package/src/scripts/lint_trust_coherence.py +212 -0
  1040. package/src/scripts/lint_value_dashboard.py +218 -0
  1041. package/src/scripts/lint_workspace_boundary.py +122 -0
  1042. package/src/scripts/mcp_parity_smoke.py +316 -0
  1043. package/src/scripts/mcp_registry_submit.sh +187 -0
  1044. package/src/scripts/mcp_server/__init__.py +19 -0
  1045. package/src/scripts/mcp_server/consumer_tool_catalog.json +275 -0
  1046. package/src/scripts/mcp_server/prompts.py +442 -0
  1047. package/src/scripts/mcp_server/resources.py +201 -0
  1048. package/src/scripts/mcp_server/tools.py +926 -0
  1049. package/src/scripts/measure_augment_budget.py +214 -0
  1050. package/src/scripts/measure_density.py +232 -0
  1051. package/src/scripts/measure_frugality_savings.py +164 -0
  1052. package/src/scripts/measure_markitdown_lift.py +127 -0
  1053. package/src/scripts/measure_patterns.py +376 -0
  1054. package/src/scripts/measure_projection_bytes.py +159 -0
  1055. package/src/scripts/measure_rule_budget.py +347 -0
  1056. package/src/scripts/measure_skill_reduction.py +102 -0
  1057. package/src/scripts/memory_lookup.py +436 -0
  1058. package/src/scripts/memory_report.py +314 -0
  1059. package/src/scripts/memory_signal.py +165 -0
  1060. package/src/scripts/memory_status.py +76 -0
  1061. package/src/scripts/migrate_command_suggestions.py +151 -0
  1062. package/src/scripts/migrate_frontmatter_defaults.py +245 -0
  1063. package/src/scripts/mine_session.py +356 -0
  1064. package/src/scripts/move_artefact.py +143 -0
  1065. package/src/scripts/new_skill.py +148 -0
  1066. package/src/scripts/pack_dependency_allowlist.json +70 -0
  1067. package/src/scripts/pack_mcp_content.py +293 -0
  1068. package/src/scripts/plan_physical_move.py +353 -0
  1069. package/src/scripts/print_required_checks.py +196 -0
  1070. package/src/scripts/probe_projection_fidelity.py +202 -0
  1071. package/src/scripts/profile_staleness_hook.py +69 -0
  1072. package/src/scripts/profile_use.py +164 -0
  1073. package/src/scripts/project_thin_rules.py +168 -0
  1074. package/src/scripts/prototype_lint_contradictions.py +150 -0
  1075. package/src/scripts/prove_pack_extractable.py +187 -0
  1076. package/src/scripts/recruit_preflight.sh +152 -0
  1077. package/src/scripts/refine_ticket_detect.py +646 -0
  1078. package/src/scripts/release.py +1091 -0
  1079. package/src/scripts/render_benchmark_md.py +401 -0
  1080. package/src/scripts/render_value_md.py +347 -0
  1081. package/src/scripts/repro/repro_marketplace_install_gap.sh +161 -0
  1082. package/src/scripts/roadmap_progress_hook.py +274 -0
  1083. package/src/scripts/router_telemetry.py +470 -0
  1084. package/src/scripts/run_skill_evals.py +185 -0
  1085. package/src/scripts/runtime_registry.py +166 -0
  1086. package/src/scripts/schemas/command.schema.json +224 -0
  1087. package/src/scripts/schemas/flow.schema.json +59 -0
  1088. package/src/scripts/schemas/pack.schema.json +95 -0
  1089. package/src/scripts/schemas/rule.schema.json +145 -0
  1090. package/src/scripts/score_skill_selection.py +198 -0
  1091. package/src/scripts/security_audit_config.py +153 -0
  1092. package/src/scripts/skill_collision_clusters.py +162 -0
  1093. package/src/scripts/skill_discovery.py +254 -0
  1094. package/src/scripts/skill_linter.py +3694 -0
  1095. package/src/scripts/skill_overlap.py +204 -0
  1096. package/src/scripts/skill_preview.py +179 -0
  1097. package/src/scripts/skill_tools/audit_persona_coverage.py +147 -0
  1098. package/src/scripts/skill_tools/audit_user_type_coverage.py +148 -0
  1099. package/src/scripts/skill_tools/run_block_d_eval.py +129 -0
  1100. package/src/scripts/skill_tools/score_skill_relevance.py +169 -0
  1101. package/src/scripts/skill_tools/suggest_skill_for_task.py +113 -0
  1102. package/src/scripts/skill_trigger_eval.py +682 -0
  1103. package/src/scripts/skill_usage_collect.py +191 -0
  1104. package/src/scripts/skill_usage_report.py +162 -0
  1105. package/src/scripts/smoke/kernel.sh +107 -0
  1106. package/src/scripts/smoke/router.sh +148 -0
  1107. package/src/scripts/smoke/schema.sh +78 -0
  1108. package/src/scripts/smoke/skills.sh +112 -0
  1109. package/src/scripts/smoke_path_resolution.py +93 -0
  1110. package/src/scripts/smoke_quickstart.py +144 -0
  1111. package/src/scripts/snapshot_agent_outputs.py +144 -0
  1112. package/src/scripts/spotcheck_thin_root.py +134 -0
  1113. package/src/scripts/sync_agent_settings.py +180 -0
  1114. package/src/scripts/sync_github_metadata.py +147 -0
  1115. package/src/scripts/sync_gitignore.py +291 -0
  1116. package/src/scripts/telegraph_stats.py +119 -0
  1117. package/src/scripts/trigger_coverage.py +129 -0
  1118. package/src/scripts/update_counts.py +199 -0
  1119. package/src/scripts/update_prices.py +125 -0
  1120. package/src/scripts/validate_agent_settings.py +124 -0
  1121. package/src/scripts/validate_decision_engine.py +136 -0
  1122. package/src/scripts/validate_discovery_manifest.py +94 -0
  1123. package/src/scripts/validate_frontmatter.py +647 -0
  1124. package/src/scripts/validate_pack_yaml.py +179 -0
  1125. package/src/scripts/verify_physical_move.py +185 -0
  1126. package/src/scripts/wrapper_freshness_hook.py +86 -0
  1127. package/.agent-src/README.md +0 -64
  1128. package/.agent-src/commands/agent-handoff.md +0 -120
  1129. package/.agent-src/commands/agent-status.md +0 -136
  1130. package/.agent-src/commands/agents/audit.md +0 -157
  1131. package/.agent-src/commands/agents/init.md +0 -191
  1132. package/.agent-src/commands/agents/optimize.md +0 -186
  1133. package/.agent-src/commands/agents/user/accept.md +0 -121
  1134. package/.agent-src/commands/agents/user/init.md +0 -161
  1135. package/.agent-src/commands/agents/user/review.md +0 -111
  1136. package/.agent-src/commands/agents/user/show.md +0 -113
  1137. package/.agent-src/commands/agents/user/update.md +0 -102
  1138. package/.agent-src/commands/agents/user.md +0 -70
  1139. package/.agent-src/commands/agents.md +0 -61
  1140. package/.agent-src/commands/analytics/prune.md +0 -70
  1141. package/.agent-src/commands/analytics/show.md +0 -99
  1142. package/.agent-src/commands/analytics.md +0 -56
  1143. package/.agent-src/commands/analyze-reference-repo.md +0 -203
  1144. package/.agent-src/commands/bug-fix.md +0 -192
  1145. package/.agent-src/commands/bug-investigate.md +0 -185
  1146. package/.agent-src/commands/challenge-me/vision.md +0 -353
  1147. package/.agent-src/commands/challenge-me/with-docs.md +0 -338
  1148. package/.agent-src/commands/challenge-me.md +0 -67
  1149. package/.agent-src/commands/chat-history/import.md +0 -171
  1150. package/.agent-src/commands/chat-history/learn.md +0 -183
  1151. package/.agent-src/commands/chat-history/show.md +0 -111
  1152. package/.agent-src/commands/chat-history.md +0 -58
  1153. package/.agent-src/commands/check-current-md.md +0 -142
  1154. package/.agent-src/commands/commit/in-chunks.md +0 -145
  1155. package/.agent-src/commands/commit.md +0 -190
  1156. package/.agent-src/commands/condense.md +0 -235
  1157. package/.agent-src/commands/context/create.md +0 -180
  1158. package/.agent-src/commands/context/refactor.md +0 -182
  1159. package/.agent-src/commands/context.md +0 -50
  1160. package/.agent-src/commands/cost-report.md +0 -130
  1161. package/.agent-src/commands/council/analysis.md +0 -146
  1162. package/.agent-src/commands/council/debate.md +0 -133
  1163. package/.agent-src/commands/council/default.md +0 -288
  1164. package/.agent-src/commands/council/design.md +0 -106
  1165. package/.agent-src/commands/council/optimize.md +0 -122
  1166. package/.agent-src/commands/council/pr.md +0 -129
  1167. package/.agent-src/commands/council.md +0 -106
  1168. package/.agent-src/commands/create-pr/description-only.md +0 -159
  1169. package/.agent-src/commands/create-pr.md +0 -249
  1170. package/.agent-src/commands/e2e-heal.md +0 -109
  1171. package/.agent-src/commands/e2e-plan.md +0 -96
  1172. package/.agent-src/commands/estimate-ticket.md +0 -88
  1173. package/.agent-src/commands/feature/dev.md +0 -123
  1174. package/.agent-src/commands/feature/explore.md +0 -190
  1175. package/.agent-src/commands/feature/plan.md +0 -332
  1176. package/.agent-src/commands/feature/refactor.md +0 -193
  1177. package/.agent-src/commands/feature/roadmap.md +0 -221
  1178. package/.agent-src/commands/feature.md +0 -58
  1179. package/.agent-src/commands/fix/ci.md +0 -58
  1180. package/.agent-src/commands/fix/portability.md +0 -106
  1181. package/.agent-src/commands/fix/pr-bot-comments.md +0 -156
  1182. package/.agent-src/commands/fix/pr-comments.md +0 -68
  1183. package/.agent-src/commands/fix/pr-developer-comments.md +0 -162
  1184. package/.agent-src/commands/fix/refs.md +0 -103
  1185. package/.agent-src/commands/fix/seeder.md +0 -157
  1186. package/.agent-src/commands/fix.md +0 -60
  1187. package/.agent-src/commands/ghostwriter/delete.md +0 -122
  1188. package/.agent-src/commands/ghostwriter/fetch.md +0 -189
  1189. package/.agent-src/commands/ghostwriter/list.md +0 -106
  1190. package/.agent-src/commands/ghostwriter/show.md +0 -117
  1191. package/.agent-src/commands/ghostwriter/write.md +0 -164
  1192. package/.agent-src/commands/ghostwriter.md +0 -100
  1193. package/.agent-src/commands/grill-me.md +0 -44
  1194. package/.agent-src/commands/image/analyse.md +0 -51
  1195. package/.agent-src/commands/image/create.md +0 -53
  1196. package/.agent-src/commands/image/verify.md +0 -48
  1197. package/.agent-src/commands/image.md +0 -69
  1198. package/.agent-src/commands/implement-ticket.md +0 -165
  1199. package/.agent-src/commands/jira-ticket.md +0 -80
  1200. package/.agent-src/commands/judge/on-diff.md +0 -123
  1201. package/.agent-src/commands/judge/solo.md +0 -95
  1202. package/.agent-src/commands/judge/steps.md +0 -93
  1203. package/.agent-src/commands/judge.md +0 -60
  1204. package/.agent-src/commands/knowledge/cross-repo.md +0 -71
  1205. package/.agent-src/commands/knowledge/forget.md +0 -96
  1206. package/.agent-src/commands/knowledge/ingest.md +0 -114
  1207. package/.agent-src/commands/knowledge/list.md +0 -94
  1208. package/.agent-src/commands/knowledge.md +0 -69
  1209. package/.agent-src/commands/memory/add.md +0 -146
  1210. package/.agent-src/commands/memory/learn-low-impact.md +0 -147
  1211. package/.agent-src/commands/memory/load.md +0 -175
  1212. package/.agent-src/commands/memory/mine-session.md +0 -156
  1213. package/.agent-src/commands/memory/promote.md +0 -194
  1214. package/.agent-src/commands/memory/propose.md +0 -121
  1215. package/.agent-src/commands/memory.md +0 -56
  1216. package/.agent-src/commands/mode.md +0 -129
  1217. package/.agent-src/commands/module/create.md +0 -143
  1218. package/.agent-src/commands/module/explore.md +0 -197
  1219. package/.agent-src/commands/module.md +0 -50
  1220. package/.agent-src/commands/optimize/agents-dir.md +0 -118
  1221. package/.agent-src/commands/optimize/augmentignore.md +0 -311
  1222. package/.agent-src/commands/optimize/rtk.md +0 -160
  1223. package/.agent-src/commands/optimize/skills.md +0 -131
  1224. package/.agent-src/commands/optimize-prompt.md +0 -66
  1225. package/.agent-src/commands/optimize.md +0 -56
  1226. package/.agent-src/commands/orchestrate.md +0 -128
  1227. package/.agent-src/commands/override/create.md +0 -107
  1228. package/.agent-src/commands/override/manage.md +0 -106
  1229. package/.agent-src/commands/override.md +0 -50
  1230. package/.agent-src/commands/package-reset.md +0 -162
  1231. package/.agent-src/commands/package-test.md +0 -238
  1232. package/.agent-src/commands/post-as/ghostwriter.md +0 -70
  1233. package/.agent-src/commands/post-as/me.md +0 -128
  1234. package/.agent-src/commands/post-as.md +0 -62
  1235. package/.agent-src/commands/prediction-pool.md +0 -234
  1236. package/.agent-src/commands/prepare-for-review.md +0 -106
  1237. package/.agent-src/commands/profile/activate.md +0 -81
  1238. package/.agent-src/commands/profile/deactivate.md +0 -68
  1239. package/.agent-src/commands/profile/show.md +0 -70
  1240. package/.agent-src/commands/profile.md +0 -68
  1241. package/.agent-src/commands/project-analyze.md +0 -320
  1242. package/.agent-src/commands/project-health.md +0 -105
  1243. package/.agent-src/commands/quality-fix.md +0 -137
  1244. package/.agent-src/commands/refine-ticket.md +0 -94
  1245. package/.agent-src/commands/research/deep.md +0 -154
  1246. package/.agent-src/commands/research/report.md +0 -139
  1247. package/.agent-src/commands/research.md +0 -177
  1248. package/.agent-src/commands/review-changes.md +0 -205
  1249. package/.agent-src/commands/review-routing.md +0 -117
  1250. package/.agent-src/commands/roadmap/ai-council.md +0 -188
  1251. package/.agent-src/commands/roadmap/create.md +0 -213
  1252. package/.agent-src/commands/roadmap/process-full.md +0 -108
  1253. package/.agent-src/commands/roadmap/process-phase.md +0 -74
  1254. package/.agent-src/commands/roadmap/process-step.md +0 -62
  1255. package/.agent-src/commands/roadmap.md +0 -78
  1256. package/.agent-src/commands/rule-compliance-audit.md +0 -148
  1257. package/.agent-src/commands/set-cost-profile.md +0 -117
  1258. package/.agent-src/commands/skill/preview.md +0 -67
  1259. package/.agent-src/commands/skill.md +0 -48
  1260. package/.agent-src/commands/skills/discover.md +0 -76
  1261. package/.agent-src/commands/skills.md +0 -56
  1262. package/.agent-src/commands/sync-agent-settings.md +0 -139
  1263. package/.agent-src/commands/sync-gitignore/fix.md +0 -147
  1264. package/.agent-src/commands/sync-gitignore.md +0 -138
  1265. package/.agent-src/commands/tests/create.md +0 -83
  1266. package/.agent-src/commands/tests/execute.md +0 -67
  1267. package/.agent-src/commands/tests.md +0 -50
  1268. package/.agent-src/commands/threat-model.md +0 -125
  1269. package/.agent-src/commands/update-form-request-messages.md +0 -199
  1270. package/.agent-src/commands/upstream-contribute.md +0 -181
  1271. package/.agent-src/commands/video/from-script.md +0 -127
  1272. package/.agent-src/commands/video/from-song.md +0 -351
  1273. package/.agent-src/commands/video/scene.md +0 -96
  1274. package/.agent-src/commands/video/stitch.md +0 -87
  1275. package/.agent-src/commands/video/storyboard.md +0 -99
  1276. package/.agent-src/commands/video.md +0 -73
  1277. package/.agent-src/commands/work.md +0 -166
  1278. package/.agent-src/contexts/augment-infrastructure.md +0 -178
  1279. package/.agent-src/contexts/authority/commit-mechanics.md +0 -93
  1280. package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +0 -98
  1281. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +0 -138
  1282. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +0 -89
  1283. package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +0 -98
  1284. package/.agent-src/contexts/contracts/artifact-engagement-flow.md +0 -259
  1285. package/.agent-src/contexts/contracts/consumer-agents-md-guide.md +0 -127
  1286. package/.agent-src/contexts/contracts/emergency-triage-block.md +0 -53
  1287. package/.agent-src/contexts/subagent-configuration.md +0 -62
  1288. package/.agent-src/personas/README.md +0 -114
  1289. package/.agent-src/personas/advisors/contrarian.md +0 -95
  1290. package/.agent-src/personas/advisors/executor.md +0 -99
  1291. package/.agent-src/personas/advisors/expansionist.md +0 -98
  1292. package/.agent-src/personas/advisors/first-principles.md +0 -98
  1293. package/.agent-src/personas/advisors/outsider.md +0 -102
  1294. package/.agent-src/profiles/agency.yml +0 -27
  1295. package/.agent-src/profiles/content_creator.yml +0 -30
  1296. package/.agent-src/profiles/developer.yml +0 -26
  1297. package/.agent-src/profiles/finance.yml +0 -24
  1298. package/.agent-src/profiles/founder.yml +0 -25
  1299. package/.agent-src/profiles/ops.yml +0 -25
  1300. package/.agent-src/rules/ask-when-uncertain.md +0 -70
  1301. package/.agent-src/rules/augment-edit-discipline.md +0 -31
  1302. package/.agent-src/rules/augment-source-of-truth.md +0 -75
  1303. package/.agent-src/rules/autonomous-execution.md +0 -101
  1304. package/.agent-src/rules/commit-policy.md +0 -59
  1305. package/.agent-src/rules/direct-answers.md +0 -64
  1306. package/.agent-src/rules/domain-adoption-policy.md +0 -160
  1307. package/.agent-src/rules/external-reference-deep-dive.md +0 -72
  1308. package/.agent-src/rules/git-history-discipline.md +0 -102
  1309. package/.agent-src/rules/improve-before-implement.md +0 -112
  1310. package/.agent-src/rules/language-and-tone.md +0 -64
  1311. package/.agent-src/rules/linked-projects-onboarding-gate.md +0 -79
  1312. package/.agent-src/rules/media-governance-routing.md +0 -85
  1313. package/.agent-src/rules/missing-tool-handling.md +0 -76
  1314. package/.agent-src/rules/model-recommendation.md +0 -85
  1315. package/.agent-src/rules/no-attribution-footers.md +0 -57
  1316. package/.agent-src/rules/no-cheap-questions.md +0 -75
  1317. package/.agent-src/rules/no-pr-progress-comments.md +0 -109
  1318. package/.agent-src/rules/no-roadmap-references.md +0 -141
  1319. package/.agent-src/rules/non-destructive-by-default.md +0 -58
  1320. package/.agent-src/rules/persona-governance.md +0 -93
  1321. package/.agent-src/rules/preservation-guard.md +0 -97
  1322. package/.agent-src/rules/provider-lifecycle-discipline.md +0 -78
  1323. package/.agent-src/rules/roadmap-progress-sync.md +0 -99
  1324. package/.agent-src/rules/scope-control.md +0 -68
  1325. package/.agent-src/rules/security-sensitive-stop.md +0 -87
  1326. package/.agent-src/rules/think-before-action.md +0 -41
  1327. package/.agent-src/rules/user-interrupt-priority.md +0 -49
  1328. package/.agent-src/rules/verify-before-complete.md +0 -78
  1329. package/.agent-src/scripts/update_roadmap_progress.py +0 -416
  1330. package/.agent-src/skills/accessibility-auditor/SKILL.md +0 -136
  1331. package/.agent-src/skills/adversarial-review/SKILL.md +0 -156
  1332. package/.agent-src/skills/agents-md-thin-root/SKILL.md +0 -143
  1333. package/.agent-src/skills/ai-council/SKILL.md +0 -912
  1334. package/.agent-src/skills/api-design/SKILL.md +0 -112
  1335. package/.agent-src/skills/api-endpoint/SKILL.md +0 -94
  1336. package/.agent-src/skills/async-python-patterns/SKILL.md +0 -158
  1337. package/.agent-src/skills/authz-review/SKILL.md +0 -180
  1338. package/.agent-src/skills/blade-ui/SKILL.md +0 -129
  1339. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +0 -192
  1340. package/.agent-src/skills/character-consistency/SKILL.md +0 -141
  1341. package/.agent-src/skills/check-refs/SKILL.md +0 -96
  1342. package/.agent-src/skills/code-review/SKILL.md +0 -224
  1343. package/.agent-src/skills/command-routing/SKILL.md +0 -134
  1344. package/.agent-src/skills/command-writing/SKILL.md +0 -282
  1345. package/.agent-src/skills/condense-memory/SKILL.md +0 -123
  1346. package/.agent-src/skills/context-document/SKILL.md +0 -160
  1347. package/.agent-src/skills/copilot-config/SKILL.md +0 -208
  1348. package/.agent-src/skills/dashboard-design/SKILL.md +0 -123
  1349. package/.agent-src/skills/database/SKILL.md +0 -103
  1350. package/.agent-src/skills/deep-reading-analyst/SKILL.md +0 -198
  1351. package/.agent-src/skills/defense-in-depth/SKILL.md +0 -157
  1352. package/.agent-src/skills/design-review/SKILL.md +0 -233
  1353. package/.agent-src/skills/developer-like-execution/SKILL.md +0 -292
  1354. package/.agent-src/skills/error-handling-patterns/SKILL.md +0 -139
  1355. package/.agent-src/skills/existing-ui-audit/SKILL.md +0 -209
  1356. package/.agent-src/skills/fe-design/SKILL.md +0 -255
  1357. package/.agent-src/skills/feature-planning/SKILL.md +0 -271
  1358. package/.agent-src/skills/flux/SKILL.md +0 -121
  1359. package/.agent-src/skills/jira-integration/SKILL.md +0 -187
  1360. package/.agent-src/skills/lint-skills/SKILL.md +0 -95
  1361. package/.agent-src/skills/livewire/SKILL.md +0 -134
  1362. package/.agent-src/skills/mcp-builder/SKILL.md +0 -113
  1363. package/.agent-src/skills/md-language-check/SKILL.md +0 -130
  1364. package/.agent-src/skills/memory-consolidation/SKILL.md +0 -220
  1365. package/.agent-src/skills/merge-conflicts/SKILL.md +0 -195
  1366. package/.agent-src/skills/motion-choreographer/SKILL.md +0 -171
  1367. package/.agent-src/skills/persona-writing/SKILL.md +0 -158
  1368. package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +0 -150
  1369. package/.agent-src/skills/react-shadcn-ui/SKILL.md +0 -213
  1370. package/.agent-src/skills/readme-reviewer/SKILL.md +0 -242
  1371. package/.agent-src/skills/readme-writing/SKILL.md +0 -240
  1372. package/.agent-src/skills/readme-writing-package/SKILL.md +0 -350
  1373. package/.agent-src/skills/receiving-code-review/SKILL.md +0 -200
  1374. package/.agent-src/skills/refine-prompt/SKILL.md +0 -291
  1375. package/.agent-src/skills/refine-ticket/SKILL.md +0 -338
  1376. package/.agent-src/skills/repomix-packer/SKILL.md +0 -141
  1377. package/.agent-src/skills/roadmap-management/SKILL.md +0 -461
  1378. package/.agent-src/skills/rule-refactor/SKILL.md +0 -149
  1379. package/.agent-src/skills/rule-writing/SKILL.md +0 -277
  1380. package/.agent-src/skills/scene-expander/SKILL.md +0 -147
  1381. package/.agent-src/skills/scene-expander/scene-blueprint.schema.yaml +0 -108
  1382. package/.agent-src/skills/script-writing/SKILL.md +0 -231
  1383. package/.agent-src/skills/secrets-management/SKILL.md +0 -148
  1384. package/.agent-src/skills/sentry-integration/SKILL.md +0 -175
  1385. package/.agent-src/skills/song-to-script/SKILL.md +0 -216
  1386. package/.agent-src/skills/sql-writing/SKILL.md +0 -79
  1387. package/.agent-src/skills/subagent-orchestration/SKILL.md +0 -349
  1388. package/.agent-src/skills/tailwind-engineer/SKILL.md +0 -148
  1389. package/.agent-src/skills/technical-specification/SKILL.md +0 -251
  1390. package/.agent-src/skills/testing-anti-patterns/SKILL.md +0 -164
  1391. package/.agent-src/skills/testing-anti-patterns/process-anti-patterns.md +0 -67
  1392. package/.agent-src/skills/threat-modeling/SKILL.md +0 -197
  1393. package/.agent-src/skills/token-optimizer/SKILL.md +0 -115
  1394. package/.agent-src/skills/upstream-contribute/SKILL.md +0 -261
  1395. package/.agent-src/templates/AGENTS.md +0 -34
  1396. package/.agent-src/templates/agents/.gitattributes.fragment +0 -16
  1397. package/.agent-src/templates/agents/agent-project-settings.example.yml +0 -286
  1398. package/.agent-src/templates/agents/memory/architecture-decisions.example.yml +0 -95
  1399. package/.agent-src/templates/agents/proposal.example.md +0 -155
  1400. package/.agent-src/templates/command.md +0 -105
  1401. package/.agent-src/templates/copilot-instructions.md +0 -167
  1402. package/.agent-src/templates/github-workflows/proposal-drift.yml +0 -118
  1403. package/.agent-src/templates/hooks/pre-commit-frontmatter +0 -66
  1404. package/.agent-src/templates/hooks/pre-commit-roadmap-progress +0 -99
  1405. package/.agent-src/templates/persona.md +0 -99
  1406. package/.agent-src/templates/rule.md +0 -135
  1407. package/.agent-src/templates/scripts/check_memory.py +0 -283
  1408. package/.agent-src/templates/scripts/check_memory_proposal.py +0 -180
  1409. package/.agent-src/templates/scripts/memory_lookup.py +0 -577
  1410. package/.agent-src/templates/scripts/memory_report.py +0 -184
  1411. package/.agent-src/templates/scripts/memory_signal.py +0 -167
  1412. package/.agent-src/templates/scripts/memory_status.py +0 -257
  1413. package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +0 -136
  1414. package/.agent-src/templates/scripts/work_engine/directives/ui/_passthrough.py +0 -44
  1415. package/.agent-src/templates/scripts/work_engine/directives/ui/polish.py +0 -510
  1416. package/.agent-src/templates/scripts/work_engine/directives/ui/review.py +0 -468
  1417. package/.agent-src/templates/scripts/work_engine/orchestration.py +0 -182
  1418. package/.agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +0 -284
  1419. package/.agent-src/user-types/README.md +0 -124
  1420. package/config/agent-settings.template.yml +0 -578
  1421. package/config/discovery/packs.yml +0 -181
  1422. package/config/discovery/workspaces.yml +0 -72
  1423. package/config/gitignore-block.txt +0 -88
  1424. package/dist/ui/assets/index-DcAWIwwY.js +0 -40
  1425. package/dist/ui/assets/index-DcAWIwwY.js.map +0 -1
  1426. package/docs/contracts/agent-memory-contract.md +0 -159
  1427. package/docs/parity/bench-ruflo.json +0 -58
  1428. package/docs/parity/ruflo.md +0 -46
  1429. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  1430. package/scripts/_archive/README.md +0 -59
  1431. package/scripts/_archive/_bootstrap_tier_frontmatter.py +0 -151
  1432. package/scripts/_archive/_p43_bodies.py +0 -235
  1433. package/scripts/_archive/_p43_condense.py +0 -118
  1434. package/scripts/_archive/_p4_migrate.py +0 -199
  1435. package/scripts/_cli/cmd_doctor.py +0 -1583
  1436. package/scripts/_cli/cmd_export.py +0 -157
  1437. package/scripts/_cli/cmd_migrate.py +0 -437
  1438. package/scripts/_cli/cmd_refresh.py +0 -179
  1439. package/scripts/_cli/cmd_settings_migrate.py +0 -147
  1440. package/scripts/_cli/cmd_update.py +0 -279
  1441. package/scripts/_cli/cmd_upgrade.py +0 -172
  1442. package/scripts/_cli/cmd_versions.py +0 -160
  1443. package/scripts/_dispatch.bash +0 -1126
  1444. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  1445. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  1446. package/scripts/_lib/agent_src.py +0 -187
  1447. package/scripts/_lib/bench_ab_cache.py +0 -162
  1448. package/scripts/_lib/changelog_eras.py +0 -330
  1449. package/scripts/_lib/claude_desktop_bundler.py +0 -238
  1450. package/scripts/_lib/cli_wrapper.py +0 -64
  1451. package/scripts/_lib/install_regenerator.py +0 -129
  1452. package/scripts/_lib/installed_lock.py +0 -256
  1453. package/scripts/_lib/scope_guard.sh +0 -162
  1454. package/scripts/_lib/value_ladder.py +0 -696
  1455. package/scripts/_lib/value_report.py +0 -455
  1456. package/scripts/_phase4_bucket.py +0 -210
  1457. package/scripts/_pilot_measure.py +0 -53
  1458. package/scripts/adoption_report.py +0 -195
  1459. package/scripts/adoption_snapshot.py +0 -219
  1460. package/scripts/adoption_status.py +0 -166
  1461. package/scripts/agent-config +0 -57
  1462. package/scripts/ai-video/adapters/gemini-veo.sh +0 -62
  1463. package/scripts/ai-video/adapters/higgsfield.sh +0 -245
  1464. package/scripts/ai-video/adapters/kling.sh +0 -59
  1465. package/scripts/ai-video/adapters/openai-images.sh +0 -143
  1466. package/scripts/ai-video/adapters/sora.sh +0 -60
  1467. package/scripts/ai-video/lib/adapter-common.sh +0 -116
  1468. package/scripts/ai-video/lib/adapter-contract.md +0 -163
  1469. package/scripts/ai-video/lib/fixtures/gemini-veo/result.json +0 -1
  1470. package/scripts/ai-video/lib/fixtures/higgsfield/result.json +0 -1
  1471. package/scripts/ai-video/lib/fixtures/kling/result.json +0 -1
  1472. package/scripts/ai-video/lib/fixtures/openai-images/result.json +0 -1
  1473. package/scripts/ai-video/lib/fixtures/sora/result.json +0 -1
  1474. package/scripts/ai-video/lib/load-config.sh +0 -140
  1475. package/scripts/ai-video/lib/validate-deps.sh +0 -132
  1476. package/scripts/ai-video/stitch.sh +0 -154
  1477. package/scripts/ai-video/test-pipeline.sh +0 -169
  1478. package/scripts/ai_council/advisors.py +0 -148
  1479. package/scripts/ai_council/clients.py +0 -1385
  1480. package/scripts/ai_council/compile_corpus.py +0 -179
  1481. package/scripts/ai_council/config.py +0 -1364
  1482. package/scripts/ai_council/events_log.py +0 -141
  1483. package/scripts/ai_council/one_off_archive/2026-05/_one_off_2a4_acceptance.py +0 -208
  1484. package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +0 -206
  1485. package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_estimate.py +0 -67
  1486. package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +0 -292
  1487. package/scripts/ai_council/one_off_archive/2026-05/_one_off_followups_review.py +0 -259
  1488. package/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +0 -209
  1489. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase4_dispatch_latency.py +0 -108
  1490. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +0 -92
  1491. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +0 -257
  1492. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_post_revert.py +0 -197
  1493. package/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +0 -149
  1494. package/scripts/ai_council/one_off_archive/2026-05/_one_off_roundtrip.py +0 -111
  1495. package/scripts/ai_council/one_off_archive/2026-05/_one_off_rule_hardening_v1.py +0 -251
  1496. package/scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py +0 -98
  1497. package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_open_questions.py +0 -232
  1498. package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +0 -144
  1499. package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_gaps.py +0 -252
  1500. package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_review.py +0 -240
  1501. package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +0 -180
  1502. package/scripts/ai_council/pricing.py +0 -215
  1503. package/scripts/ai_council/session.py +0 -366
  1504. package/scripts/annotate_discovery.py +0 -149
  1505. package/scripts/apply_modules_config.py +0 -290
  1506. package/scripts/audit_adr_coverage.py +0 -175
  1507. package/scripts/audit_auto_rules.py +0 -175
  1508. package/scripts/audit_cloud_compatibility.py +0 -362
  1509. package/scripts/audit_command_surface.py +0 -374
  1510. package/scripts/audit_initial_context.py +0 -234
  1511. package/scripts/audit_likelihood.py +0 -148
  1512. package/scripts/audit_mcp_tools.py +0 -146
  1513. package/scripts/audit_overlap.py +0 -145
  1514. package/scripts/audit_skill_descriptions.py +0 -180
  1515. package/scripts/audit_user_type_axis.py +0 -140
  1516. package/scripts/backfill_model_tier.py +0 -182
  1517. package/scripts/bench_ab_cache_dispatch.py +0 -68
  1518. package/scripts/bench_ab_clone.py +0 -170
  1519. package/scripts/bench_ab_diff.py +0 -220
  1520. package/scripts/bench_ab_integrity.py +0 -143
  1521. package/scripts/bench_ab_run.py +0 -235
  1522. package/scripts/bench_ab_task_runner.py +0 -369
  1523. package/scripts/bench_ab_tracka_run.py +0 -202
  1524. package/scripts/bench_baseline_ready.py +0 -108
  1525. package/scripts/bench_condense_memory.py +0 -168
  1526. package/scripts/bench_drift_check.py +0 -151
  1527. package/scripts/bench_per_tool.py +0 -216
  1528. package/scripts/bench_rtk_savings.py +0 -320
  1529. package/scripts/bench_run.py +0 -272
  1530. package/scripts/bench_runner.py +0 -158
  1531. package/scripts/build_cloud_bundle.py +0 -458
  1532. package/scripts/build_discovery_manifest.py +0 -679
  1533. package/scripts/build_linear_digest.py +0 -260
  1534. package/scripts/build_mcp_registry_manifest.py +0 -181
  1535. package/scripts/build_rule_trigger_matrix.py +0 -350
  1536. package/scripts/capture_showcase_session.py +0 -361
  1537. package/scripts/check_always_budget.py +0 -532
  1538. package/scripts/check_artefact_checksums.py +0 -111
  1539. package/scripts/check_augment_description_cap.py +0 -79
  1540. package/scripts/check_augmentignore.py +0 -72
  1541. package/scripts/check_beta_review_markers.py +0 -127
  1542. package/scripts/check_bite_sized_granularity.py +0 -99
  1543. package/scripts/check_cluster_patterns.py +0 -175
  1544. package/scripts/check_command_count_messaging.py +0 -158
  1545. package/scripts/check_condensation.py +0 -375
  1546. package/scripts/check_condensed_paths.py +0 -221
  1547. package/scripts/check_context_paths.py +0 -202
  1548. package/scripts/check_council_references.py +0 -228
  1549. package/scripts/check_discovery_determinism.py +0 -70
  1550. package/scripts/check_gate_paths.py +0 -117
  1551. package/scripts/check_memory.py +0 -443
  1552. package/scripts/check_memory_proposal.py +0 -182
  1553. package/scripts/check_module_management_neutral.py +0 -149
  1554. package/scripts/check_no_roadmap_refs.py +0 -155
  1555. package/scripts/check_one_off_location.py +0 -81
  1556. package/scripts/check_overlay_cascade_subdirs.py +0 -129
  1557. package/scripts/check_portability.py +0 -574
  1558. package/scripts/check_public_catalog_links.py +0 -125
  1559. package/scripts/check_public_links.py +0 -185
  1560. package/scripts/check_references.py +0 -541
  1561. package/scripts/check_release_includes_discovery.py +0 -61
  1562. package/scripts/check_release_pr_shape.py +0 -119
  1563. package/scripts/check_release_published.py +0 -145
  1564. package/scripts/check_reply_consistency.py +0 -169
  1565. package/scripts/check_roadmap_trackable.py +0 -114
  1566. package/scripts/check_role_doc_links.py +0 -110
  1567. package/scripts/check_safety_floor_untouched.py +0 -125
  1568. package/scripts/check_skill_requires.py +0 -143
  1569. package/scripts/check_template_pin_drift.py +0 -129
  1570. package/scripts/check_test_coverage_diff.py +0 -180
  1571. package/scripts/check_token_optimizer_freshness.py +0 -146
  1572. package/scripts/check_update_banner.py +0 -86
  1573. package/scripts/ci_time_ratio.py +0 -168
  1574. package/scripts/compile_router.py +0 -232
  1575. package/scripts/condense.py +0 -1649
  1576. package/scripts/condense_memory.py +0 -178
  1577. package/scripts/config/profiles.py +0 -188
  1578. package/scripts/config/session_profiles.py +0 -492
  1579. package/scripts/cost_by_conversation.py +0 -78
  1580. package/scripts/cost_summary.py +0 -97
  1581. package/scripts/council_cli.py +0 -2544
  1582. package/scripts/cross_repo_retrieve.py +0 -172
  1583. package/scripts/discovery_stats.py +0 -70
  1584. package/scripts/extract_audit_patterns.py +0 -202
  1585. package/scripts/first_run_gate_hook.py +0 -178
  1586. package/scripts/gen_discovery_baseline.py +0 -127
  1587. package/scripts/generate_catalog.py +0 -116
  1588. package/scripts/generate_index.py +0 -302
  1589. package/scripts/generate_ownership_matrix.py +0 -378
  1590. package/scripts/generate_pack_manifests.py +0 -183
  1591. package/scripts/hook_manifest.yaml +0 -243
  1592. package/scripts/hooks/dispatch_hook.py +0 -461
  1593. package/scripts/hooks/replay_hook.py +0 -144
  1594. package/scripts/hooks_doctor.py +0 -223
  1595. package/scripts/hooks_status.py +0 -157
  1596. package/scripts/install +0 -424
  1597. package/scripts/install-hooks.sh +0 -185
  1598. package/scripts/install.py +0 -5027
  1599. package/scripts/install.sh +0 -1140
  1600. package/scripts/inventory_abstraction_budget.py +0 -621
  1601. package/scripts/inventory_frontmatter.py +0 -164
  1602. package/scripts/inventory_meta_layers.py +0 -288
  1603. package/scripts/iron_law_sha.py +0 -107
  1604. package/scripts/linked_projects_list.py +0 -91
  1605. package/scripts/lint_agents_layout.py +0 -191
  1606. package/scripts/lint_agents_md.py +0 -208
  1607. package/scripts/lint_archived_skills.py +0 -159
  1608. package/scripts/lint_artefact_frontmatter.py +0 -180
  1609. package/scripts/lint_bench_ab.py +0 -172
  1610. package/scripts/lint_bench_corpus.py +0 -255
  1611. package/scripts/lint_command_tiers.py +0 -128
  1612. package/scripts/lint_commit_subjects.py +0 -139
  1613. package/scripts/lint_context_spine_usage.py +0 -137
  1614. package/scripts/lint_discovery_manifest.py +0 -136
  1615. package/scripts/lint_discovery_vocabulary.py +0 -156
  1616. package/scripts/lint_examples.py +0 -102
  1617. package/scripts/lint_explain_trace.py +0 -80
  1618. package/scripts/lint_featured_skills.py +0 -139
  1619. package/scripts/lint_framework_leakage.py +0 -375
  1620. package/scripts/lint_framework_leakage_allowlist.json +0 -575
  1621. package/scripts/lint_frontmatter_boilerplate.py +0 -77
  1622. package/scripts/lint_ghostwriter_source.py +0 -240
  1623. package/scripts/lint_handoffs.py +0 -217
  1624. package/scripts/lint_hook_concern_budget.py +0 -207
  1625. package/scripts/lint_hook_manifest.py +0 -217
  1626. package/scripts/lint_load_context.py +0 -196
  1627. package/scripts/lint_marketplace.py +0 -180
  1628. package/scripts/lint_marketplace_install_completeness.py +0 -188
  1629. package/scripts/lint_mcp_registry_manifest.py +0 -69
  1630. package/scripts/lint_media_policy_linkage.py +0 -140
  1631. package/scripts/lint_model_tier_coverage.py +0 -73
  1632. package/scripts/lint_namespace.py +0 -135
  1633. package/scripts/lint_no_new_atomic_commands.py +0 -180
  1634. package/scripts/lint_one_off_age.py +0 -184
  1635. package/scripts/lint_orchestration_dsl.py +0 -217
  1636. package/scripts/lint_pack_boundaries.py +0 -147
  1637. package/scripts/lint_pack_first_win.py +0 -103
  1638. package/scripts/lint_persona_governance.py +0 -164
  1639. package/scripts/lint_positioning.py +0 -143
  1640. package/scripts/lint_regression.py +0 -232
  1641. package/scripts/lint_roadmap_ci_steps.py +0 -186
  1642. package/scripts/lint_roadmap_complexity.py +0 -220
  1643. package/scripts/lint_role_experiences.py +0 -237
  1644. package/scripts/lint_rule_interactions.py +0 -170
  1645. package/scripts/lint_rule_tiers.py +0 -90
  1646. package/scripts/lint_showcase_sessions.py +0 -148
  1647. package/scripts/lint_skill_tools.py +0 -168
  1648. package/scripts/lint_topics_yaml.py +0 -89
  1649. package/scripts/lint_trust_coherence.py +0 -212
  1650. package/scripts/lint_value_dashboard.py +0 -218
  1651. package/scripts/mcp_parity_smoke.py +0 -164
  1652. package/scripts/mcp_registry_submit.sh +0 -187
  1653. package/scripts/mcp_server/__init__.py +0 -19
  1654. package/scripts/mcp_server/consumer_tool_catalog.json +0 -275
  1655. package/scripts/mcp_server/prompts.py +0 -441
  1656. package/scripts/mcp_server/resources.py +0 -201
  1657. package/scripts/mcp_server/tools.py +0 -838
  1658. package/scripts/measure_augment_budget.py +0 -214
  1659. package/scripts/measure_density.py +0 -232
  1660. package/scripts/measure_frugality_savings.py +0 -164
  1661. package/scripts/measure_markitdown_lift.py +0 -127
  1662. package/scripts/measure_patterns.py +0 -376
  1663. package/scripts/measure_projection_bytes.py +0 -159
  1664. package/scripts/measure_rule_budget.py +0 -347
  1665. package/scripts/measure_skill_reduction.py +0 -102
  1666. package/scripts/memory_lookup.py +0 -705
  1667. package/scripts/memory_report.py +0 -336
  1668. package/scripts/memory_signal.py +0 -212
  1669. package/scripts/memory_status.py +0 -257
  1670. package/scripts/migrate_command_suggestions.py +0 -151
  1671. package/scripts/migrate_frontmatter_defaults.py +0 -245
  1672. package/scripts/mine_session.py +0 -279
  1673. package/scripts/move_artefact.py +0 -143
  1674. package/scripts/new_skill.py +0 -148
  1675. package/scripts/pack_mcp_content.py +0 -288
  1676. package/scripts/plan_physical_move.py +0 -353
  1677. package/scripts/print_required_checks.py +0 -196
  1678. package/scripts/probe_projection_fidelity.py +0 -202
  1679. package/scripts/profile_staleness_hook.py +0 -69
  1680. package/scripts/profile_use.py +0 -125
  1681. package/scripts/project_thin_rules.py +0 -168
  1682. package/scripts/prototype_lint_contradictions.py +0 -150
  1683. package/scripts/recruit_preflight.sh +0 -152
  1684. package/scripts/refine_ticket_detect.py +0 -646
  1685. package/scripts/release.py +0 -1049
  1686. package/scripts/render_benchmark_md.py +0 -312
  1687. package/scripts/render_value_md.py +0 -347
  1688. package/scripts/repro/repro_marketplace_install_gap.sh +0 -161
  1689. package/scripts/roadmap_progress_hook.py +0 -274
  1690. package/scripts/router_telemetry.py +0 -470
  1691. package/scripts/run_skill_evals.py +0 -185
  1692. package/scripts/runtime_registry.py +0 -166
  1693. package/scripts/schemas/command.schema.json +0 -178
  1694. package/scripts/schemas/rule.schema.json +0 -145
  1695. package/scripts/score_skill_selection.py +0 -198
  1696. package/scripts/skill_collision_clusters.py +0 -162
  1697. package/scripts/skill_discovery.py +0 -254
  1698. package/scripts/skill_linter.py +0 -3686
  1699. package/scripts/skill_overlap.py +0 -204
  1700. package/scripts/skill_preview.py +0 -179
  1701. package/scripts/skill_tools/audit_persona_coverage.py +0 -147
  1702. package/scripts/skill_tools/audit_user_type_coverage.py +0 -148
  1703. package/scripts/skill_tools/run_block_d_eval.py +0 -129
  1704. package/scripts/skill_tools/score_skill_relevance.py +0 -169
  1705. package/scripts/skill_tools/suggest_skill_for_task.py +0 -113
  1706. package/scripts/skill_trigger_eval.py +0 -682
  1707. package/scripts/skill_usage_collect.py +0 -191
  1708. package/scripts/skill_usage_report.py +0 -162
  1709. package/scripts/smoke/kernel.sh +0 -107
  1710. package/scripts/smoke/router.sh +0 -148
  1711. package/scripts/smoke/schema.sh +0 -71
  1712. package/scripts/smoke/skills.sh +0 -112
  1713. package/scripts/smoke_path_resolution.py +0 -93
  1714. package/scripts/smoke_quickstart.py +0 -144
  1715. package/scripts/snapshot_agent_outputs.py +0 -144
  1716. package/scripts/spotcheck_thin_root.py +0 -134
  1717. package/scripts/sync_agent_settings.py +0 -180
  1718. package/scripts/sync_github_metadata.py +0 -147
  1719. package/scripts/sync_gitignore.py +0 -291
  1720. package/scripts/telegraph_stats.py +0 -119
  1721. package/scripts/trigger_coverage.py +0 -129
  1722. package/scripts/update_counts.py +0 -195
  1723. package/scripts/update_prices.py +0 -125
  1724. package/scripts/validate_agent_settings.py +0 -124
  1725. package/scripts/validate_decision_engine.py +0 -136
  1726. package/scripts/validate_discovery_manifest.py +0 -94
  1727. package/scripts/validate_frontmatter.py +0 -571
  1728. package/scripts/verify_physical_move.py +0 -185
  1729. package/scripts/wrapper_freshness_hook.py +0 -86
  1730. /package/{.agent-src → dist/agent-src}/contexts/authority/destructive-mechanics.md +0 -0
  1731. /package/{.agent-src → dist/agent-src}/contexts/authority/kernel-rule-edits.md +0 -0
  1732. /package/{.agent-src → dist/agent-src}/contexts/authority/scope-mechanics.md +0 -0
  1733. /package/{.agent-src → dist/agent-src}/contexts/communication/rules-auto/guidelines-mechanics.md +0 -0
  1734. /package/{.agent-src → dist/agent-src}/contexts/communication/rules-auto/token-efficiency-mechanics.md +0 -0
  1735. /package/{.agent-src → dist/agent-src}/contexts/communication/rules-auto/user-interaction-mechanics.md +0 -0
  1736. /package/{.agent-src → dist/agent-src}/contexts/contracts/agents-md-anatomy.md +0 -0
  1737. /package/{.agent-src → dist/agent-src}/contexts/contracts/command-suggestion-flow.md +0 -0
  1738. /package/{.agent-src → dist/agent-src}/contexts/contracts/frugality-charter.md +0 -0
  1739. /package/{.agent-src → dist/agent-src}/contexts/contracts/research-schema.md +0 -0
  1740. /package/{.agent-src → dist/agent-src}/contexts/documentation-hierarchy.md +0 -0
  1741. /package/{.agent-src → dist/agent-src}/contexts/execution/autonomy-detection.md +0 -0
  1742. /package/{.agent-src → dist/agent-src}/contexts/execution/autonomy-examples.md +0 -0
  1743. /package/{.agent-src → dist/agent-src}/contexts/execution/autonomy-mechanics.md +0 -0
  1744. /package/{.agent-src → dist/agent-src}/contexts/execution/cheap-question-mechanics.md +0 -0
  1745. /package/{.agent-src → dist/agent-src}/contexts/execution/interrupt-examples.md +0 -0
  1746. /package/{.agent-src → dist/agent-src}/contexts/execution/roadmap-process-loop.md +0 -0
  1747. /package/{.agent-src → dist/agent-src}/contexts/execution/verification-mechanics.md +0 -0
  1748. /package/{.agent-src → dist/agent-src}/contexts/judges/no-consolidate-rationale.md +0 -0
  1749. /package/{.agent-src → dist/agent-src}/contexts/judges/persona-voice-rubric.md +0 -0
  1750. /package/{.agent-src → dist/agent-src}/contexts/model-recommendations.md +0 -0
  1751. /package/{.agent-src → dist/agent-src}/contexts/override-system.md +0 -0
  1752. /package/{.agent-src → dist/agent-src}/contexts/skills-and-commands.md +0 -0
  1753. /package/{.agent-src → dist/agent-src}/ghostwriter/README.md +0 -0
  1754. /package/{.agent-src → dist/agent-src}/ghostwriter/fictional-fixture-v1.md +0 -0
  1755. /package/{.agent-src → dist/agent-src}/packs/README.md +0 -0
  1756. /package/{.agent-src → dist/agent-src}/packs/agency-delivery.yml +0 -0
  1757. /package/{.agent-src → dist/agent-src}/packs/content-engine.yml +0 -0
  1758. /package/{.agent-src → dist/agent-src}/packs/founder-mvp.yml +0 -0
  1759. /package/{.agent-src → dist/agent-src}/personas/_template-specialist/persona.md +0 -0
  1760. /package/{.agent-src → dist/agent-src}/personas/ai-agent.md +0 -0
  1761. /package/{.agent-src → dist/agent-src}/personas/ai-video-technical-director.md +0 -0
  1762. /package/{.agent-src → dist/agent-src}/personas/backend-architect.md +0 -0
  1763. /package/{.agent-src → dist/agent-src}/personas/cmo.md +0 -0
  1764. /package/{.agent-src → dist/agent-src}/personas/critical-challenger.md +0 -0
  1765. /package/{.agent-src → dist/agent-src}/personas/customer-success-lead.md +0 -0
  1766. /package/{.agent-src → dist/agent-src}/personas/developer.md +0 -0
  1767. /package/{.agent-src → dist/agent-src}/personas/discovery-lead.md +0 -0
  1768. /package/{.agent-src → dist/agent-src}/personas/eloquent-tamer.md +0 -0
  1769. /package/{.agent-src → dist/agent-src}/personas/engineering-manager.md +0 -0
  1770. /package/{.agent-src → dist/agent-src}/personas/finance-partner.md +0 -0
  1771. /package/{.agent-src → dist/agent-src}/personas/frontend-engineer.md +0 -0
  1772. /package/{.agent-src → dist/agent-src}/personas/growth-pm.md +0 -0
  1773. /package/{.agent-src → dist/agent-src}/personas/hollywood-director.md +0 -0
  1774. /package/{.agent-src → dist/agent-src}/personas/people-strategist.md +0 -0
  1775. /package/{.agent-src → dist/agent-src}/personas/product-owner.md +0 -0
  1776. /package/{.agent-src → dist/agent-src}/personas/qa.md +0 -0
  1777. /package/{.agent-src → dist/agent-src}/personas/revops-maintainer.md +0 -0
  1778. /package/{.agent-src → dist/agent-src}/personas/revops.md +0 -0
  1779. /package/{.agent-src → dist/agent-src}/personas/security-engineer.md +0 -0
  1780. /package/{.agent-src → dist/agent-src}/personas/senior-engineer.md +0 -0
  1781. /package/{.agent-src → dist/agent-src}/personas/stakeholder.md +0 -0
  1782. /package/{.agent-src → dist/agent-src}/personas/strategist.md +0 -0
  1783. /package/{.agent-src → dist/agent-src}/personas/tech-writer.md +0 -0
  1784. /package/{.agent-src → dist/agent-src}/presets/README.md +0 -0
  1785. /package/{.agent-src → dist/agent-src}/presets/balanced.yml +0 -0
  1786. /package/{.agent-src → dist/agent-src}/presets/fast.yml +0 -0
  1787. /package/{.agent-src → dist/agent-src}/presets/strict.yml +0 -0
  1788. /package/{.agent-src → dist/agent-src}/profiles/README.md +0 -0
  1789. /package/{.agent-src → dist/agent-src}/rules/agent-authority.md +0 -0
  1790. /package/{.agent-src → dist/agent-src}/rules/analysis-skill-routing.md +0 -0
  1791. /package/{.agent-src → dist/agent-src}/rules/architecture.md +0 -0
  1792. /package/{.agent-src → dist/agent-src}/rules/artifact-drafting-protocol.md +0 -0
  1793. /package/{.agent-src → dist/agent-src}/rules/artifact-engagement-recording.md +0 -0
  1794. /package/{.agent-src → dist/agent-src}/rules/cli-output-handling.md +0 -0
  1795. /package/{.agent-src → dist/agent-src}/rules/command-suggestion-policy.md +0 -0
  1796. /package/{.agent-src → dist/agent-src}/rules/commit-conventions.md +0 -0
  1797. /package/{.agent-src → dist/agent-src}/rules/context-hygiene.md +0 -0
  1798. /package/{.agent-src → dist/agent-src}/rules/copilot-routing.md +0 -0
  1799. /package/{.agent-src → dist/agent-src}/rules/devcontainer-routing.md +0 -0
  1800. /package/{.agent-src → dist/agent-src}/rules/docker-commands.md +0 -0
  1801. /package/{.agent-src → dist/agent-src}/rules/domain-safety-disclaimer.md +0 -0
  1802. /package/{.agent-src → dist/agent-src}/rules/domain-safety-pii.md +0 -0
  1803. /package/{.agent-src → dist/agent-src}/rules/domain-safety-retention.md +0 -0
  1804. /package/{.agent-src → dist/agent-src}/rules/downstream-changes.md +0 -0
  1805. /package/{.agent-src → dist/agent-src}/rules/engineering-safety-floor.md +0 -0
  1806. /package/{.agent-src → dist/agent-src}/rules/fast-path-marker-visibility.md +0 -0
  1807. /package/{.agent-src → dist/agent-src}/rules/finance-safety-floor.md +0 -0
  1808. /package/{.agent-src → dist/agent-src}/rules/framework-neutrality-in-generic-skills.md +0 -0
  1809. /package/{.agent-src → dist/agent-src}/rules/guidelines.md +0 -0
  1810. /package/{.agent-src → dist/agent-src}/rules/invite-challenge.md +0 -0
  1811. /package/{.agent-src → dist/agent-src}/rules/laravel-routing.md +0 -0
  1812. /package/{.agent-src → dist/agent-src}/rules/laravel-translations.md +0 -0
  1813. /package/{.agent-src → dist/agent-src}/rules/low-impact-corpus-privacy-floor.md +0 -0
  1814. /package/{.agent-src → dist/agent-src}/rules/markdown-safe-codeblocks.md +0 -0
  1815. /package/{.agent-src → dist/agent-src}/rules/media-sync-ground-truth.md +0 -0
  1816. /package/{.agent-src → dist/agent-src}/rules/minimal-safe-diff.md +0 -0
  1817. /package/{.agent-src → dist/agent-src}/rules/no-decorative-emojis-in-git-surfaces.md +0 -0
  1818. /package/{.agent-src → dist/agent-src}/rules/onboarding-gate.md +0 -0
  1819. /package/{.agent-src → dist/agent-src}/rules/package-ci-checks.md +0 -0
  1820. /package/{.agent-src → dist/agent-src}/rules/php-coding.md +0 -0
  1821. /package/{.agent-src → dist/agent-src}/rules/reviewer-awareness.md +0 -0
  1822. /package/{.agent-src → dist/agent-src}/rules/roadmap-ci-steps-policy.md +0 -0
  1823. /package/{.agent-src → dist/agent-src}/rules/role-mode-adherence.md +0 -0
  1824. /package/{.agent-src → dist/agent-src}/rules/rule-type-governance.md +0 -0
  1825. /package/{.agent-src → dist/agent-src}/rules/runtime-safety.md +0 -0
  1826. /package/{.agent-src → dist/agent-src}/rules/size-enforcement.md +0 -0
  1827. /package/{.agent-src → dist/agent-src}/rules/skill-improvement-trigger.md +0 -0
  1828. /package/{.agent-src → dist/agent-src}/rules/skill-quality.md +0 -0
  1829. /package/{.agent-src → dist/agent-src}/rules/slash-command-routing-policy.md +0 -0
  1830. /package/{.agent-src → dist/agent-src}/rules/strategy-safety-floor.md +0 -0
  1831. /package/{.agent-src → dist/agent-src}/rules/symfony-routing.md +0 -0
  1832. /package/{.agent-src → dist/agent-src}/rules/telegraph-speak.md +0 -0
  1833. /package/{.agent-src → dist/agent-src}/rules/token-efficiency.md +0 -0
  1834. /package/{.agent-src → dist/agent-src}/rules/token-optimizer-maintenance.md +0 -0
  1835. /package/{.agent-src → dist/agent-src}/rules/tool-safety.md +0 -0
  1836. /package/{.agent-src → dist/agent-src}/rules/ui-audit-gate.md +0 -0
  1837. /package/{.agent-src → dist/agent-src}/rules/upstream-proposal.md +0 -0
  1838. /package/{.agent-src → dist/agent-src}/rules/user-interaction.md +0 -0
  1839. /package/{.agent-src → dist/agent-src}/scripts/scan-seeder-violations.php +0 -0
  1840. /package/{.agent-src → dist/agent-src}/skills/activation-design/SKILL.md +0 -0
  1841. /package/{.agent-src → dist/agent-src}/skills/adr-create/SKILL.md +0 -0
  1842. /package/{.agent-src → dist/agent-src}/skills/agent-docs-writing/SKILL.md +0 -0
  1843. /package/{.agent-src → dist/agent-src}/skills/analysis-autonomous-mode/SKILL.md +0 -0
  1844. /package/{.agent-src → dist/agent-src}/skills/analysis-skill-router/SKILL.md +0 -0
  1845. /package/{.agent-src → dist/agent-src}/skills/api-testing/SKILL.md +0 -0
  1846. /package/{.agent-src → dist/agent-src}/skills/architecture-review-lens/SKILL.md +0 -0
  1847. /package/{.agent-src → dist/agent-src}/skills/artisan-commands/SKILL.md +0 -0
  1848. /package/{.agent-src → dist/agent-src}/skills/aws-infrastructure/SKILL.md +0 -0
  1849. /package/{.agent-src → dist/agent-src}/skills/bug-analyzer/SKILL.md +0 -0
  1850. /package/{.agent-src → dist/agent-src}/skills/build-buy-partner/SKILL.md +0 -0
  1851. /package/{.agent-src → dist/agent-src}/skills/canvas-design/SKILL.md +0 -0
  1852. /package/{.agent-src → dist/agent-src}/skills/canvas-design/evals/triggers.json +0 -0
  1853. /package/{.agent-src → dist/agent-src}/skills/churn-prevention/SKILL.md +0 -0
  1854. /package/{.agent-src → dist/agent-src}/skills/code-refactoring/SKILL.md +0 -0
  1855. /package/{.agent-src → dist/agent-src}/skills/comp-banding/SKILL.md +0 -0
  1856. /package/{.agent-src → dist/agent-src}/skills/competitive-moat-analysis/SKILL.md +0 -0
  1857. /package/{.agent-src → dist/agent-src}/skills/competitive-positioning/SKILL.md +0 -0
  1858. /package/{.agent-src → dist/agent-src}/skills/composer-packages/SKILL.md +0 -0
  1859. /package/{.agent-src → dist/agent-src}/skills/content-funnel-design/SKILL.md +0 -0
  1860. /package/{.agent-src → dist/agent-src}/skills/context-authoring/SKILL.md +0 -0
  1861. /package/{.agent-src → dist/agent-src}/skills/contracts-cognition/SKILL.md +0 -0
  1862. /package/{.agent-src → dist/agent-src}/skills/conventional-commits-writing/SKILL.md +0 -0
  1863. /package/{.agent-src → dist/agent-src}/skills/copilot-agents-optimization/SKILL.md +0 -0
  1864. /package/{.agent-src → dist/agent-src}/skills/customer-research/SKILL.md +0 -0
  1865. /package/{.agent-src → dist/agent-src}/skills/data-flow-mapper/SKILL.md +0 -0
  1866. /package/{.agent-src → dist/agent-src}/skills/data-handling-judgment/SKILL.md +0 -0
  1867. /package/{.agent-src → dist/agent-src}/skills/dcf-modeling/SKILL.md +0 -0
  1868. /package/{.agent-src → dist/agent-src}/skills/deal-qualification-meddic/SKILL.md +0 -0
  1869. /package/{.agent-src → dist/agent-src}/skills/decision-record/SKILL.md +0 -0
  1870. /package/{.agent-src → dist/agent-src}/skills/dependency-upgrade/SKILL.md +0 -0
  1871. /package/{.agent-src → dist/agent-src}/skills/description-assist/SKILL.md +0 -0
  1872. /package/{.agent-src → dist/agent-src}/skills/devcontainer/SKILL.md +0 -0
  1873. /package/{.agent-src → dist/agent-src}/skills/discovery-interview/SKILL.md +0 -0
  1874. /package/{.agent-src → dist/agent-src}/skills/doc-coauthoring/SKILL.md +0 -0
  1875. /package/{.agent-src → dist/agent-src}/skills/doc-coauthoring/evals/triggers.json +0 -0
  1876. /package/{.agent-src → dist/agent-src}/skills/docker/SKILL.md +0 -0
  1877. /package/{.agent-src → dist/agent-src}/skills/editorial-calendar/SKILL.md +0 -0
  1878. /package/{.agent-src → dist/agent-src}/skills/eloquent/SKILL.md +0 -0
  1879. /package/{.agent-src → dist/agent-src}/skills/eloquent/evals/triggers.json +0 -0
  1880. /package/{.agent-src → dist/agent-src}/skills/estimate-ticket/SKILL.md +0 -0
  1881. /package/{.agent-src → dist/agent-src}/skills/estimate-ticket/evals/output-schema.yml +0 -0
  1882. /package/{.agent-src → dist/agent-src}/skills/estimate-ticket/evals/triggers.json +0 -0
  1883. /package/{.agent-src → dist/agent-src}/skills/expansion-playbook/SKILL.md +0 -0
  1884. /package/{.agent-src → dist/agent-src}/skills/file-editor/SKILL.md +0 -0
  1885. /package/{.agent-src → dist/agent-src}/skills/finishing-a-development-branch/SKILL.md +0 -0
  1886. /package/{.agent-src → dist/agent-src}/skills/forecast-accuracy/SKILL.md +0 -0
  1887. /package/{.agent-src → dist/agent-src}/skills/forecasting/SKILL.md +0 -0
  1888. /package/{.agent-src → dist/agent-src}/skills/form-handler/SKILL.md +0 -0
  1889. /package/{.agent-src → dist/agent-src}/skills/fundraising-narrative/SKILL.md +0 -0
  1890. /package/{.agent-src → dist/agent-src}/skills/funnel-analysis/SKILL.md +0 -0
  1891. /package/{.agent-src → dist/agent-src}/skills/git-workflow/SKILL.md +0 -0
  1892. /package/{.agent-src → dist/agent-src}/skills/github-ci/SKILL.md +0 -0
  1893. /package/{.agent-src → dist/agent-src}/skills/grafana/SKILL.md +0 -0
  1894. /package/{.agent-src → dist/agent-src}/skills/gtm-launch/SKILL.md +0 -0
  1895. /package/{.agent-src → dist/agent-src}/skills/guideline-writing/SKILL.md +0 -0
  1896. /package/{.agent-src → dist/agent-src}/skills/hiring-loop-design/SKILL.md +0 -0
  1897. /package/{.agent-src → dist/agent-src}/skills/image-analyser/SKILL.md +0 -0
  1898. /package/{.agent-src → dist/agent-src}/skills/image-analyser/canon-spec.md +0 -0
  1899. /package/{.agent-src → dist/agent-src}/skills/image-analyser/evals/triggers.json +0 -0
  1900. /package/{.agent-src → dist/agent-src}/skills/image-creator/SKILL.md +0 -0
  1901. /package/{.agent-src → dist/agent-src}/skills/image-creator/evals/triggers.json +0 -0
  1902. /package/{.agent-src → dist/agent-src}/skills/incident-commander/SKILL.md +0 -0
  1903. /package/{.agent-src → dist/agent-src}/skills/jobs-events/SKILL.md +0 -0
  1904. /package/{.agent-src → dist/agent-src}/skills/judge-bug-hunter/SKILL.md +0 -0
  1905. /package/{.agent-src → dist/agent-src}/skills/judge-code-quality/SKILL.md +0 -0
  1906. /package/{.agent-src → dist/agent-src}/skills/judge-security-auditor/SKILL.md +0 -0
  1907. /package/{.agent-src → dist/agent-src}/skills/judge-test-coverage/SKILL.md +0 -0
  1908. /package/{.agent-src → dist/agent-src}/skills/laravel/SKILL.md +0 -0
  1909. /package/{.agent-src → dist/agent-src}/skills/laravel-api-endpoint/SKILL.md +0 -0
  1910. /package/{.agent-src → dist/agent-src}/skills/laravel-dto/SKILL.md +0 -0
  1911. /package/{.agent-src → dist/agent-src}/skills/laravel-horizon/SKILL.md +0 -0
  1912. /package/{.agent-src → dist/agent-src}/skills/laravel-mail/SKILL.md +0 -0
  1913. /package/{.agent-src → dist/agent-src}/skills/laravel-middleware/SKILL.md +0 -0
  1914. /package/{.agent-src → dist/agent-src}/skills/laravel-migration/SKILL.md +0 -0
  1915. /package/{.agent-src → dist/agent-src}/skills/laravel-notifications/SKILL.md +0 -0
  1916. /package/{.agent-src → dist/agent-src}/skills/laravel-pennant/SKILL.md +0 -0
  1917. /package/{.agent-src → dist/agent-src}/skills/laravel-pulse/SKILL.md +0 -0
  1918. /package/{.agent-src → dist/agent-src}/skills/laravel-reverb/SKILL.md +0 -0
  1919. /package/{.agent-src → dist/agent-src}/skills/laravel-scheduling/SKILL.md +0 -0
  1920. /package/{.agent-src → dist/agent-src}/skills/laravel-validation/SKILL.md +0 -0
  1921. /package/{.agent-src → dist/agent-src}/skills/laravel-websocket/SKILL.md +0 -0
  1922. /package/{.agent-src → dist/agent-src}/skills/launch-readiness/SKILL.md +0 -0
  1923. /package/{.agent-src → dist/agent-src}/skills/learning-to-rule-or-skill/SKILL.md +0 -0
  1924. /package/{.agent-src → dist/agent-src}/skills/livewire-architect/SKILL.md +0 -0
  1925. /package/{.agent-src → dist/agent-src}/skills/logging-monitoring/SKILL.md +0 -0
  1926. /package/{.agent-src → dist/agent-src}/skills/market-entry-analysis/SKILL.md +0 -0
  1927. /package/{.agent-src → dist/agent-src}/skills/markitdown/SKILL.md +0 -0
  1928. /package/{.agent-src → dist/agent-src}/skills/mcp/SKILL.md +0 -0
  1929. /package/{.agent-src → dist/agent-src}/skills/messaging-architecture/SKILL.md +0 -0
  1930. /package/{.agent-src → dist/agent-src}/skills/migration-architect/SKILL.md +0 -0
  1931. /package/{.agent-src → dist/agent-src}/skills/mobile-e2e-strategy/SKILL.md +0 -0
  1932. /package/{.agent-src → dist/agent-src}/skills/module-detect-on-the-fly/SKILL.md +0 -0
  1933. /package/{.agent-src → dist/agent-src}/skills/module-management/SKILL.md +0 -0
  1934. /package/{.agent-src → dist/agent-src}/skills/multi-tenancy/SKILL.md +0 -0
  1935. /package/{.agent-src → dist/agent-src}/skills/nextjs-patterns/SKILL.md +0 -0
  1936. /package/{.agent-src → dist/agent-src}/skills/okr-tree-modeling/SKILL.md +0 -0
  1937. /package/{.agent-src → dist/agent-src}/skills/onboarding-design/SKILL.md +0 -0
  1938. /package/{.agent-src → dist/agent-src}/skills/onboarding-program/SKILL.md +0 -0
  1939. /package/{.agent-src → dist/agent-src}/skills/one-on-one-cadence/SKILL.md +0 -0
  1940. /package/{.agent-src → dist/agent-src}/skills/openapi/SKILL.md +0 -0
  1941. /package/{.agent-src → dist/agent-src}/skills/org-design/SKILL.md +0 -0
  1942. /package/{.agent-src → dist/agent-src}/skills/override-management/SKILL.md +0 -0
  1943. /package/{.agent-src → dist/agent-src}/skills/perf-feedback-craft/SKILL.md +0 -0
  1944. /package/{.agent-src → dist/agent-src}/skills/performance/SKILL.md +0 -0
  1945. /package/{.agent-src → dist/agent-src}/skills/performance-analysis/SKILL.md +0 -0
  1946. /package/{.agent-src → dist/agent-src}/skills/pest-testing/SKILL.md +0 -0
  1947. /package/{.agent-src → dist/agent-src}/skills/php-coder/SKILL.md +0 -0
  1948. /package/{.agent-src → dist/agent-src}/skills/php-coder/evals/triggers.json +0 -0
  1949. /package/{.agent-src → dist/agent-src}/skills/php-debugging/SKILL.md +0 -0
  1950. /package/{.agent-src → dist/agent-src}/skills/php-service/SKILL.md +0 -0
  1951. /package/{.agent-src → dist/agent-src}/skills/pipeline-strategy/SKILL.md +0 -0
  1952. /package/{.agent-src → dist/agent-src}/skills/pixar-storyteller/SKILL.md +0 -0
  1953. /package/{.agent-src → dist/agent-src}/skills/playwright-architect/SKILL.md +0 -0
  1954. /package/{.agent-src → dist/agent-src}/skills/playwright-testing/SKILL.md +0 -0
  1955. /package/{.agent-src → dist/agent-src}/skills/po-discovery/SKILL.md +0 -0
  1956. /package/{.agent-src → dist/agent-src}/skills/positioning-strategy/SKILL.md +0 -0
  1957. /package/{.agent-src → dist/agent-src}/skills/prediction-pool-optimizer/SKILL.md +0 -0
  1958. /package/{.agent-src → dist/agent-src}/skills/prediction-pool-optimizer/evals/triggers.json +0 -0
  1959. /package/{.agent-src → dist/agent-src}/skills/prediction-pool-optimizer/reference/ev-fixtures.md +0 -0
  1960. /package/{.agent-src → dist/agent-src}/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +0 -0
  1961. /package/{.agent-src → dist/agent-src}/skills/privacy-review/SKILL.md +0 -0
  1962. /package/{.agent-src → dist/agent-src}/skills/project-analysis-core/SKILL.md +0 -0
  1963. /package/{.agent-src → dist/agent-src}/skills/project-analysis-hypothesis-driven/SKILL.md +0 -0
  1964. /package/{.agent-src → dist/agent-src}/skills/project-analysis-laravel/SKILL.md +0 -0
  1965. /package/{.agent-src → dist/agent-src}/skills/project-analysis-nextjs/SKILL.md +0 -0
  1966. /package/{.agent-src → dist/agent-src}/skills/project-analysis-node-express/SKILL.md +0 -0
  1967. /package/{.agent-src → dist/agent-src}/skills/project-analysis-react/SKILL.md +0 -0
  1968. /package/{.agent-src → dist/agent-src}/skills/project-analysis-symfony/SKILL.md +0 -0
  1969. /package/{.agent-src → dist/agent-src}/skills/project-analysis-zend-laminas/SKILL.md +0 -0
  1970. /package/{.agent-src → dist/agent-src}/skills/project-analyzer/SKILL.md +0 -0
  1971. /package/{.agent-src → dist/agent-src}/skills/project-docs/SKILL.md +0 -0
  1972. /package/{.agent-src → dist/agent-src}/skills/prompt-optimizer/SKILL.md +0 -0
  1973. /package/{.agent-src → dist/agent-src}/skills/quality-tools/SKILL.md +0 -0
  1974. /package/{.agent-src → dist/agent-src}/skills/react-native-setup/SKILL.md +0 -0
  1975. /package/{.agent-src → dist/agent-src}/skills/refine-ticket/detection-map.yml +0 -0
  1976. /package/{.agent-src → dist/agent-src}/skills/refine-ticket/evals/output-schema.yml +0 -0
  1977. /package/{.agent-src → dist/agent-src}/skills/refine-ticket/evals/triggers.json +0 -0
  1978. /package/{.agent-src → dist/agent-src}/skills/release-comms/SKILL.md +0 -0
  1979. /package/{.agent-src → dist/agent-src}/skills/requesting-code-review/SKILL.md +0 -0
  1980. /package/{.agent-src → dist/agent-src}/skills/retention-loops/SKILL.md +0 -0
  1981. /package/{.agent-src → dist/agent-src}/skills/review-routing/SKILL.md +0 -0
  1982. /package/{.agent-src → dist/agent-src}/skills/rice-prioritization/SKILL.md +0 -0
  1983. /package/{.agent-src → dist/agent-src}/skills/risk-officer/SKILL.md +0 -0
  1984. /package/{.agent-src → dist/agent-src}/skills/roadmap-writing/SKILL.md +0 -0
  1985. /package/{.agent-src → dist/agent-src}/skills/rtk-output-filtering/SKILL.md +0 -0
  1986. /package/{.agent-src → dist/agent-src}/skills/runway-cognition/SKILL.md +0 -0
  1987. /package/{.agent-src → dist/agent-src}/skills/scenario-modeling/SKILL.md +0 -0
  1988. /package/{.agent-src → dist/agent-src}/skills/security/SKILL.md +0 -0
  1989. /package/{.agent-src → dist/agent-src}/skills/security-audit/SKILL.md +0 -0
  1990. /package/{.agent-src → dist/agent-src}/skills/sequential-thinking/SKILL.md +0 -0
  1991. /package/{.agent-src → dist/agent-src}/skills/skill-improvement-pipeline/SKILL.md +0 -0
  1992. /package/{.agent-src → dist/agent-src}/skills/skill-management/SKILL.md +0 -0
  1993. /package/{.agent-src → dist/agent-src}/skills/skill-reviewer/SKILL.md +0 -0
  1994. /package/{.agent-src → dist/agent-src}/skills/skill-writing/SKILL.md +0 -0
  1995. /package/{.agent-src → dist/agent-src}/skills/skill-writing/evals/triggers.json +0 -0
  1996. /package/{.agent-src → dist/agent-src}/skills/stakeholder-tradeoff/SKILL.md +0 -0
  1997. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/README.md +0 -0
  1998. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +0 -0
  1999. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/do-and-judge.md +0 -0
  2000. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/do-competitively.md +0 -0
  2001. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/do-in-parallel.md +0 -0
  2002. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/do-in-steps.md +0 -0
  2003. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/do-in-worktrees.md +0 -0
  2004. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/prompts/judge-with-debate.md +0 -0
  2005. /package/{.agent-src → dist/agent-src}/skills/subagent-orchestration/schemas/subagent-status.json +0 -0
  2006. /package/{.agent-src → dist/agent-src}/skills/symfony-workflow/SKILL.md +0 -0
  2007. /package/{.agent-src → dist/agent-src}/skills/systematic-debugging/SKILL.md +0 -0
  2008. /package/{.agent-src → dist/agent-src}/skills/tech-debt-tracker/SKILL.md +0 -0
  2009. /package/{.agent-src → dist/agent-src}/skills/terraform/SKILL.md +0 -0
  2010. /package/{.agent-src → dist/agent-src}/skills/terragrunt/SKILL.md +0 -0
  2011. /package/{.agent-src → dist/agent-src}/skills/test-driven-development/SKILL.md +0 -0
  2012. /package/{.agent-src → dist/agent-src}/skills/test-performance/SKILL.md +0 -0
  2013. /package/{.agent-src → dist/agent-src}/skills/throughput-vs-morale-tradeoff/SKILL.md +0 -0
  2014. /package/{.agent-src → dist/agent-src}/skills/traefik/SKILL.md +0 -0
  2015. /package/{.agent-src → dist/agent-src}/skills/ui-component-architect/SKILL.md +0 -0
  2016. /package/{.agent-src → dist/agent-src}/skills/unit-economics-modeling/SKILL.md +0 -0
  2017. /package/{.agent-src → dist/agent-src}/skills/universal-project-analysis/SKILL.md +0 -0
  2018. /package/{.agent-src → dist/agent-src}/skills/using-git-worktrees/SKILL.md +0 -0
  2019. /package/{.agent-src → dist/agent-src}/skills/validate-feature-fit/SKILL.md +0 -0
  2020. /package/{.agent-src → dist/agent-src}/skills/verify-completion-evidence/SKILL.md +0 -0
  2021. /package/{.agent-src → dist/agent-src}/skills/video-director/SKILL.md +0 -0
  2022. /package/{.agent-src → dist/agent-src}/skills/vision-articulation/SKILL.md +0 -0
  2023. /package/{.agent-src → dist/agent-src}/skills/voc-extract/SKILL.md +0 -0
  2024. /package/{.agent-src → dist/agent-src}/skills/voice-and-tone-design/SKILL.md +0 -0
  2025. /package/{.agent-src → dist/agent-src}/templates/agent-settings.md +0 -0
  2026. /package/{.agent-src → dist/agent-src}/templates/agents/memory/domain-invariants.example.yml +0 -0
  2027. /package/{.agent-src → dist/agent-src}/templates/agents/memory/historical-patterns.example.yml +0 -0
  2028. /package/{.agent-src → dist/agent-src}/templates/agents/memory/incident-learnings.example.yml +0 -0
  2029. /package/{.agent-src → dist/agent-src}/templates/agents/memory/ownership.example.yml +0 -0
  2030. /package/{.agent-src → dist/agent-src}/templates/agents/memory/product-rules.example.yml +0 -0
  2031. /package/{.agent-src → dist/agent-src}/templates/contexts/auth-model.md +0 -0
  2032. /package/{.agent-src → dist/agent-src}/templates/contexts/data-sensitivity.md +0 -0
  2033. /package/{.agent-src → dist/agent-src}/templates/contexts/deployment-order.md +0 -0
  2034. /package/{.agent-src → dist/agent-src}/templates/contexts/observability.md +0 -0
  2035. /package/{.agent-src → dist/agent-src}/templates/contexts/tenant-boundaries.md +0 -0
  2036. /package/{.agent-src → dist/agent-src}/templates/contexts.md +0 -0
  2037. /package/{.agent-src → dist/agent-src}/templates/features.md +0 -0
  2038. /package/{.agent-src → dist/agent-src}/templates/github-workflows/memory-hygiene.yml +0 -0
  2039. /package/{.agent-src → dist/agent-src}/templates/github-workflows/pr-risk-review.yml +0 -0
  2040. /package/{.agent-src → dist/agent-src}/templates/github-workflows/roadmap-progress-check.yml +0 -0
  2041. /package/{.agent-src → dist/agent-src}/templates/overrides/command.md +0 -0
  2042. /package/{.agent-src → dist/agent-src}/templates/overrides/guideline.md +0 -0
  2043. /package/{.agent-src → dist/agent-src}/templates/overrides/rule.md +0 -0
  2044. /package/{.agent-src → dist/agent-src}/templates/overrides/skill.md +0 -0
  2045. /package/{.agent-src → dist/agent-src}/templates/overrides/template.md +0 -0
  2046. /package/{.agent-src → dist/agent-src}/templates/roadmaps.md +0 -0
  2047. /package/{.agent-src → dist/agent-src}/templates/scripts/README.md +0 -0
  2048. /package/{.agent-src → dist/agent-src}/templates/scripts/historical-bug-patterns.example.yml +0 -0
  2049. /package/{.agent-src → dist/agent-src}/templates/scripts/implement_ticket/__init__.py +0 -0
  2050. /package/{.agent-src → dist/agent-src}/templates/scripts/implement_ticket/__main__.py +0 -0
  2051. /package/{.agent-src → dist/agent-src}/templates/scripts/memory_hash.py +0 -0
  2052. /package/{.agent-src → dist/agent-src}/templates/scripts/ownership-map.example.yml +0 -0
  2053. /package/{.agent-src → dist/agent-src}/templates/scripts/pr-risk-config.example.yml +0 -0
  2054. /package/{.agent-src → dist/agent-src}/templates/scripts/pr_review_routing.py +0 -0
  2055. /package/{.agent-src → dist/agent-src}/templates/scripts/pr_risk_review.py +0 -0
  2056. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry/__init__.py +0 -0
  2057. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry/aggregator.py +0 -0
  2058. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry/boundary.py +0 -0
  2059. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry/engagement.py +0 -0
  2060. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry/report_renderer.py +0 -0
  2061. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry/settings.py +0 -0
  2062. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry_record.py +0 -0
  2063. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry_report.py +0 -0
  2064. /package/{.agent-src → dist/agent-src}/templates/scripts/telemetry_status.py +0 -0
  2065. /package/{.agent-src → dist/agent-src}/templates/scripts/tier_usage_report.py +0 -0
  2066. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/__init__.py +0 -0
  2067. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/__main__.py +0 -0
  2068. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/_lib/__init__.py +0 -0
  2069. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/_lib/agent_settings.py +0 -0
  2070. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/_lib/user_global_paths.py +0 -0
  2071. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/cli.py +0 -0
  2072. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/cli_args.py +0 -0
  2073. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/delivery_state.py +0 -0
  2074. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/__init__.py +0 -0
  2075. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/__init__.py +0 -0
  2076. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/analyze.py +0 -0
  2077. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/implement.py +0 -0
  2078. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/plan.py +0 -0
  2079. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/refine.py +0 -0
  2080. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/report.py +0 -0
  2081. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/test.py +0 -0
  2082. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/backend/verify.py +0 -0
  2083. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/mixed/__init__.py +0 -0
  2084. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/mixed/contract.py +0 -0
  2085. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/mixed/stitch.py +0 -0
  2086. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/mixed/ui.py +0 -0
  2087. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui/__init__.py +0 -0
  2088. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui/apply.py +0 -0
  2089. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui/audit.py +0 -0
  2090. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui/design.py +0 -0
  2091. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui_trivial/__init__.py +0 -0
  2092. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui_trivial/_skipped.py +0 -0
  2093. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui_trivial/apply.py +0 -0
  2094. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui_trivial/refine.py +0 -0
  2095. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui_trivial/report.py +0 -0
  2096. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/directives/ui_trivial/test.py +0 -0
  2097. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/dispatcher.py +0 -0
  2098. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/emitters.py +0 -0
  2099. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/errors.py +0 -0
  2100. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hook_bootstrap.py +0 -0
  2101. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/__init__.py +0 -0
  2102. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/__init__.py +0 -0
  2103. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +0 -0
  2104. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +0 -0
  2105. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +0 -0
  2106. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/decision_gate.py +0 -0
  2107. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/decision_trace.py +0 -0
  2108. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/directive_set_guard.py +0 -0
  2109. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.py +0 -0
  2110. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +0 -0
  2111. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/state_shape_validation.py +0 -0
  2112. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/builtin/trace.py +0 -0
  2113. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/context.py +0 -0
  2114. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/events.py +0 -0
  2115. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/exceptions.py +0 -0
  2116. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/registry.py +0 -0
  2117. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/runner.py +0 -0
  2118. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/hooks/settings.py +0 -0
  2119. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/input_builders.py +0 -0
  2120. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/intent/__init__.py +0 -0
  2121. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/intent/classify.py +0 -0
  2122. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/migration/__init__.py +0 -0
  2123. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/migration/v0_to_v1.py +0 -0
  2124. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/persona_policy.py +0 -0
  2125. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/resolvers/__init__.py +0 -0
  2126. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/resolvers/diff.py +0 -0
  2127. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/resolvers/file.py +0 -0
  2128. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/resolvers/prompt.py +0 -0
  2129. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/scoring/__init__.py +0 -0
  2130. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/scoring/confidence.py +0 -0
  2131. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/scoring/decision_engine.py +0 -0
  2132. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/scoring/decision_trace.py +0 -0
  2133. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/stack/__init__.py +0 -0
  2134. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/stack/detect.py +0 -0
  2135. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/state.py +0 -0
  2136. /package/{.agent-src → dist/agent-src}/templates/scripts/work_engine/state_io.py +0 -0
  2137. /package/{.agent-src → dist/agent-src}/templates/skill-archive-note.md +0 -0
  2138. /package/{.agent-src → dist/agent-src}/templates/skill.md +0 -0
  2139. /package/{.agent-src → dist/agent-src}/user-types/_template/user-type.md +0 -0
  2140. /package/{.agent-src → dist/agent-src}/user-types/galabau-field-crew.md +0 -0
  2141. /package/{.agent-src → dist/agent-src}/user-types/metalworking-shop.md +0 -0
  2142. /package/{.agent-src → dist/agent-src}/user-types/truck-driver.md +0 -0
  2143. /package/{config → src/config}/discovery/session-profiles.yml +0 -0
  2144. /package/{config → src/config}/discovery/unassigned-artefacts.yml +0 -0
  2145. /package/{config → src/config}/profiles/balanced.ini +0 -0
  2146. /package/{config → src/config}/profiles/full.ini +0 -0
  2147. /package/{config → src/config}/profiles/minimal.ini +0 -0
  2148. /package/{scripts → src/scripts}/_archive/_backfill_skill_domains.py +0 -0
  2149. /package/{scripts → src/scripts}/_archive/_phase2_shim_helper.py +0 -0
  2150. /package/{scripts → src/scripts}/_archive/_pilot_council_question.py +0 -0
  2151. /package/{scripts → src/scripts}/_cli/__init__.py +0 -0
  2152. /package/{scripts → src/scripts}/_cli/cmd_explain.py +0 -0
  2153. /package/{scripts → src/scripts}/_cli/cmd_prune.py +0 -0
  2154. /package/{scripts → src/scripts}/_cli/cmd_settings_check.py +0 -0
  2155. /package/{scripts → src/scripts}/_cli/cmd_sync.py +0 -0
  2156. /package/{scripts → src/scripts}/_cli/cmd_uninstall.py +0 -0
  2157. /package/{scripts → src/scripts}/_cli/cmd_validate.py +0 -0
  2158. /package/{scripts → src/scripts}/_cli/explain_last/__init__.py +0 -0
  2159. /package/{scripts → src/scripts}/_cli/explain_last/assumptions.py +0 -0
  2160. /package/{scripts → src/scripts}/_cli/explain_last/council.py +0 -0
  2161. /package/{scripts → src/scripts}/_cli/explain_last/halt.py +0 -0
  2162. /package/{scripts → src/scripts}/_cli/explain_last/inputs.py +0 -0
  2163. /package/{scripts → src/scripts}/_cli/explain_last/memory.py +0 -0
  2164. /package/{scripts → src/scripts}/_cli/explain_last/provider.py +0 -0
  2165. /package/{scripts → src/scripts}/_cli/explain_last/render.py +0 -0
  2166. /package/{scripts → src/scripts}/_cli/explain_last/route.py +0 -0
  2167. /package/{scripts → src/scripts}/_cli/explain_last/scrubber.py +0 -0
  2168. /package/{scripts → src/scripts}/_cli/explain_last/sections/__init__.py +0 -0
  2169. /package/{scripts → src/scripts}/_cli/explain_last/sections/assumptions.py +0 -0
  2170. /package/{scripts → src/scripts}/_cli/explain_last/sections/council.py +0 -0
  2171. /package/{scripts → src/scripts}/_cli/explain_last/sections/halt.py +0 -0
  2172. /package/{scripts → src/scripts}/_cli/explain_last/sections/header.py +0 -0
  2173. /package/{scripts → src/scripts}/_cli/explain_last/sections/inputs.py +0 -0
  2174. /package/{scripts → src/scripts}/_cli/explain_last/sections/memory.py +0 -0
  2175. /package/{scripts → src/scripts}/_cli/explain_last/sections/pack.py +0 -0
  2176. /package/{scripts → src/scripts}/_cli/explain_last/sections/provider.py +0 -0
  2177. /package/{scripts → src/scripts}/_cli/explain_last/sections/route.py +0 -0
  2178. /package/{scripts → src/scripts}/_cli/explain_last/state_loader.py +0 -0
  2179. /package/{scripts → src/scripts}/_emit_domain_table.py +0 -0
  2180. /package/{scripts → src/scripts}/_lib/__init__.py +0 -0
  2181. /package/{scripts → src/scripts}/_lib/agent_settings.py +0 -0
  2182. /package/{scripts → src/scripts}/_lib/agents_overlay.py +0 -0
  2183. /package/{scripts → src/scripts}/_lib/bench_ab_scoring.py +0 -0
  2184. /package/{scripts → src/scripts}/_lib/bench_cost.py +0 -0
  2185. /package/{scripts → src/scripts}/_lib/bench_quality.py +0 -0
  2186. /package/{scripts → src/scripts}/_lib/bench_report.py +0 -0
  2187. /package/{scripts → src/scripts}/_lib/bench_telegraph.py +0 -0
  2188. /package/{scripts → src/scripts}/_lib/bench_telegraph_report.py +0 -0
  2189. /package/{scripts → src/scripts}/_lib/fs_atomic.py +0 -0
  2190. /package/{scripts → src/scripts}/_lib/installed_tools.py +0 -0
  2191. /package/{scripts → src/scripts}/_lib/json_pointers.py +0 -0
  2192. /package/{scripts → src/scripts}/_lib/linked_projects.py +0 -0
  2193. /package/{scripts → src/scripts}/_lib/module_detection.py +0 -0
  2194. /package/{scripts → src/scripts}/_lib/pin_resolver.py +0 -0
  2195. /package/{scripts → src/scripts}/_lib/script_output.py +0 -0
  2196. /package/{scripts → src/scripts}/_lib/token_count.py +0 -0
  2197. /package/{scripts → src/scripts}/_lib/update_check.py +0 -0
  2198. /package/{scripts → src/scripts}/_lib/user_global_paths.py +0 -0
  2199. /package/{scripts → src/scripts}/_tmp_scan_framework_leakage.py +0 -0
  2200. /package/{scripts → src/scripts}/adr/regenerate_index.py +0 -0
  2201. /package/{scripts/ai-video/lib/fixtures/kling → src/scripts/ai-video/lib/fixtures/comfyui}/scene-0001.mp4 +0 -0
  2202. /package/{scripts → src/scripts}/ai-video/lib/fixtures/gemini-veo/scene-0001.mp4 +0 -0
  2203. /package/{scripts → src/scripts}/ai-video/lib/fixtures/higgsfield/scene-0001.mp4 +0 -0
  2204. /package/{scripts → src/scripts}/ai-video/lib/fixtures/openai-images/scene-0001.png +0 -0
  2205. /package/{scripts → src/scripts}/ai-video/lib/fixtures/sora/scene-0001.mp4 +0 -0
  2206. /package/{scripts → src/scripts}/ai-video/lib/operator-pick.sh +0 -0
  2207. /package/{scripts → src/scripts}/ai-video/lib/parse-blueprint.sh +0 -0
  2208. /package/{scripts → src/scripts}/ai-video/lib/probe-audio.sh +0 -0
  2209. /package/{scripts → src/scripts}/ai-video/lib/redact.sh +0 -0
  2210. /package/{scripts → src/scripts}/ai_council/__init__.py +0 -0
  2211. /package/{scripts → src/scripts}/ai_council/_default_prices.py +0 -0
  2212. /package/{scripts → src/scripts}/ai_council/airgap.py +0 -0
  2213. /package/{scripts → src/scripts}/ai_council/budget_guard.py +0 -0
  2214. /package/{scripts → src/scripts}/ai_council/bundler.py +0 -0
  2215. /package/{scripts → src/scripts}/ai_council/cli_hints.py +0 -0
  2216. /package/{scripts → src/scripts}/ai_council/confidence_gate.py +0 -0
  2217. /package/{scripts → src/scripts}/ai_council/consensus.py +0 -0
  2218. /package/{scripts → src/scripts}/ai_council/learn_low_impact_preview.py +0 -0
  2219. /package/{scripts → src/scripts}/ai_council/low_impact.py +0 -0
  2220. /package/{scripts → src/scripts}/ai_council/low_impact_corpus.py +0 -0
  2221. /package/{scripts → src/scripts}/ai_council/low_impact_intake.py +0 -0
  2222. /package/{scripts → src/scripts}/ai_council/modes.py +0 -0
  2223. /package/{scripts → src/scripts}/ai_council/necessity.py +0 -0
  2224. /package/{scripts → src/scripts}/ai_council/one_off_archive/2026-05/README.md +0 -0
  2225. /package/{scripts → src/scripts}/ai_council/one_off_archive/2026-05/_one_off_add_quiet.py +0 -0
  2226. /package/{scripts → src/scripts}/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +0 -0
  2227. /package/{scripts → src/scripts}/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +0 -0
  2228. /package/{scripts → src/scripts}/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +0 -0
  2229. /package/{scripts → src/scripts}/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +0 -0
  2230. /package/{scripts → src/scripts}/ai_council/orchestrator.py +0 -0
  2231. /package/{scripts → src/scripts}/ai_council/probation_gate.py +0 -0
  2232. /package/{scripts → src/scripts}/ai_council/project_context.py +0 -0
  2233. /package/{scripts → src/scripts}/ai_council/prompts.py +0 -0
  2234. /package/{scripts → src/scripts}/ai_council/redact_low_impact_entry.py +0 -0
  2235. /package/{scripts → src/scripts}/ai_council/replay.py +0 -0
  2236. /package/{scripts → src/scripts}/ai_council/shadow_dispatch.py +0 -0
  2237. /package/{scripts → src/scripts}/ai_council/solo_dispatch.py +0 -0
  2238. /package/{scripts → src/scripts}/bootstrap.sh +0 -0
  2239. /package/{scripts → src/scripts}/chat_history.py +0 -0
  2240. /package/{scripts → src/scripts}/check_council_layout.py +0 -0
  2241. /package/{scripts → src/scripts}/check_iron_law_prominence.py +0 -0
  2242. /package/{scripts → src/scripts}/check_kernel_rule_bundle.py +0 -0
  2243. /package/{scripts → src/scripts}/check_md_language.py +0 -0
  2244. /package/{scripts → src/scripts}/check_no_local_settings_committed.py +0 -0
  2245. /package/{scripts → src/scripts}/check_proposal.py +0 -0
  2246. /package/{scripts → src/scripts}/check_release_trunk_sync.py +0 -0
  2247. /package/{scripts → src/scripts}/ci_status.py +0 -0
  2248. /package/{scripts → src/scripts}/ci_summary.py +0 -0
  2249. /package/{scripts → src/scripts}/cleanup_other_scope.sh +0 -0
  2250. /package/{scripts → src/scripts}/command_suggester/__init__.py +0 -0
  2251. /package/{scripts → src/scripts}/command_suggester/cooldown.py +0 -0
  2252. /package/{scripts → src/scripts}/command_suggester/loader.py +0 -0
  2253. /package/{scripts → src/scripts}/command_suggester/match.py +0 -0
  2254. /package/{scripts → src/scripts}/command_suggester/rank.py +0 -0
  2255. /package/{scripts → src/scripts}/command_suggester/render.py +0 -0
  2256. /package/{scripts → src/scripts}/command_suggester/sanitize.py +0 -0
  2257. /package/{scripts → src/scripts}/command_suggester/settings.py +0 -0
  2258. /package/{scripts → src/scripts}/command_suggester/types.py +0 -0
  2259. /package/{scripts → src/scripts}/condense.sh +0 -0
  2260. /package/{scripts → src/scripts}/config/__init__.py +0 -0
  2261. /package/{scripts → src/scripts}/config/presets.py +0 -0
  2262. /package/{scripts → src/scripts}/context_hygiene_hook.py +0 -0
  2263. /package/{scripts → src/scripts}/cost/budget.mjs +0 -0
  2264. /package/{scripts → src/scripts}/cost/preflight.mjs +0 -0
  2265. /package/{scripts → src/scripts}/cost/track.mjs +0 -0
  2266. /package/{scripts → src/scripts}/council_prune.py +0 -0
  2267. /package/{scripts → src/scripts}/count_token_optimizer_usage.sh +0 -0
  2268. /package/{scripts → src/scripts}/expected_perms.json +0 -0
  2269. /package/{scripts → src/scripts}/first-run.sh +0 -0
  2270. /package/{scripts → src/scripts}/ghostwriter_fixture_allowlist.txt +0 -0
  2271. /package/{scripts → src/scripts}/hermetic-install.sh +0 -0
  2272. /package/{scripts → src/scripts}/hooks/__init__.py +0 -0
  2273. /package/{scripts → src/scripts}/hooks/augment-chat-history.sh +0 -0
  2274. /package/{scripts → src/scripts}/hooks/augment-context-hygiene.sh +0 -0
  2275. /package/{scripts → src/scripts}/hooks/augment-dispatcher.sh +0 -0
  2276. /package/{scripts → src/scripts}/hooks/augment-onboarding-gate.sh +0 -0
  2277. /package/{scripts → src/scripts}/hooks/augment-roadmap-progress.sh +0 -0
  2278. /package/{scripts → src/scripts}/hooks/cline-dispatcher.sh +0 -0
  2279. /package/{scripts → src/scripts}/hooks/cowork-dispatcher.sh +0 -0
  2280. /package/{scripts → src/scripts}/hooks/cursor-dispatcher.sh +0 -0
  2281. /package/{scripts → src/scripts}/hooks/dispatch_issues.py +0 -0
  2282. /package/{scripts → src/scripts}/hooks/envelope.py +0 -0
  2283. /package/{scripts → src/scripts}/hooks/gemini-dispatcher.sh +0 -0
  2284. /package/{scripts → src/scripts}/hooks/state_io.py +0 -0
  2285. /package/{scripts → src/scripts}/hooks/windsurf-dispatcher.sh +0 -0
  2286. /package/{scripts → src/scripts}/install_anthropic_key.sh +0 -0
  2287. /package/{scripts → src/scripts}/install_openai_key.sh +0 -0
  2288. /package/{scripts → src/scripts}/lint_global_paths.py +0 -0
  2289. /package/{scripts → src/scripts}/lint_readme_jargon.py +0 -0
  2290. /package/{scripts → src/scripts}/lint_readme_size.py +0 -0
  2291. /package/{scripts → src/scripts}/mcp_render.py +0 -0
  2292. /package/{scripts → src/scripts}/mcp_server/__main__.py +0 -0
  2293. /package/{scripts → src/scripts}/mcp_server/catalog.py +0 -0
  2294. /package/{scripts → src/scripts}/mcp_server/metadata.py +0 -0
  2295. /package/{scripts → src/scripts}/mcp_server/requirements.txt +0 -0
  2296. /package/{scripts → src/scripts}/mcp_server/server.py +0 -0
  2297. /package/{scripts → src/scripts}/mcp_server/telemetry.py +0 -0
  2298. /package/{scripts → src/scripts}/mcp_setup.sh +0 -0
  2299. /package/{scripts → src/scripts}/mcp_telemetry_health.py +0 -0
  2300. /package/{scripts → src/scripts}/mcp_telemetry_query.py +0 -0
  2301. /package/{scripts → src/scripts}/mcp_telemetry_store.py +0 -0
  2302. /package/{scripts → src/scripts}/memory_hash.py +0 -0
  2303. /package/{scripts → src/scripts}/minimal_safe_diff_hook.py +0 -0
  2304. /package/{scripts → src/scripts}/onboarding_gate_hook.py +0 -0
  2305. /package/{scripts → src/scripts}/prediction-pool/adapters/_schema.md +0 -0
  2306. /package/{scripts → src/scripts}/prediction-pool/adapters/kicktipp.yml +0 -0
  2307. /package/{scripts → src/scripts}/prediction-pool/poisson_sim.py +0 -0
  2308. /package/{scripts → src/scripts}/prediction-pool/pool_winsim.py +0 -0
  2309. /package/{scripts → src/scripts}/prediction-pool/score_ev.py +0 -0
  2310. /package/{scripts → src/scripts}/prepack-check.mjs +0 -0
  2311. /package/{scripts → src/scripts}/probe_skill_registration.py +0 -0
  2312. /package/{scripts → src/scripts}/propose_modules_config.py +0 -0
  2313. /package/{scripts → src/scripts}/readme_linter.py +0 -0
  2314. /package/{scripts → src/scripts}/redact_hook_capture.py +0 -0
  2315. /package/{scripts → src/scripts}/requirements-evals.txt +0 -0
  2316. /package/{scripts → src/scripts}/runtime_dispatcher.py +0 -0
  2317. /package/{scripts → src/scripts}/runtime_handler.py +0 -0
  2318. /package/{scripts → src/scripts}/schemas/agent-settings.schema.json +0 -0
  2319. /package/{scripts → src/scripts}/schemas/persona.schema.json +0 -0
  2320. /package/{scripts → src/scripts}/schemas/skill.schema.json +0 -0
  2321. /package/{scripts → src/scripts}/schemas/user-type-axis.schema.json +0 -0
  2322. /package/{scripts → src/scripts}/schemas/user-type.schema.json +0 -0
  2323. /package/{scripts → src/scripts}/setup_eval_venv.sh +0 -0
  2324. /package/{scripts → src/scripts}/skill_tools/__init__.py +0 -0
  2325. /package/{scripts → src/scripts}/sync_yaml_rt.py +0 -0
  2326. /package/{scripts → src/scripts}/tool_registry.py +0 -0
  2327. /package/{scripts → src/scripts}/tools/__init__.py +0 -0
  2328. /package/{scripts → src/scripts}/tools/adapter_errors.py +0 -0
  2329. /package/{scripts → src/scripts}/tools/base_adapter.py +0 -0
  2330. /package/{scripts → src/scripts}/tools/github_adapter.py +0 -0
  2331. /package/{scripts → src/scripts}/tools/jira_adapter.py +0 -0
  2332. /package/{scripts → src/scripts}/update-github-metadata.sh +0 -0
  2333. /package/{scripts → src/scripts}/validate_safe_paths.py +0 -0
  2334. /package/{scripts → src/scripts}/validate_telegraph_carveouts.py +0 -0
  2335. /package/{scripts → src/scripts}/verify_before_complete_hook.py +0 -0
  2336. /package/{templates → src/templates}/agent-config-wrapper.sh +0 -0
  2337. /package/{templates → src/templates}/agent-user.md +0 -0
  2338. /package/{templates → src/templates}/agent-user.yml +0 -0
  2339. /package/{templates → src/templates}/claude_desktop_config.json.template +0 -0
  2340. /package/{templates → src/templates}/consumer-settings/ONBOARDING.md +0 -0
  2341. /package/{templates → src/templates}/consumer-settings/README.md +0 -0
  2342. /package/{templates → src/templates}/consumer-settings/augment-cli-hooks.json +0 -0
  2343. /package/{templates → src/templates}/consumer-settings/augment-settings.json +0 -0
  2344. /package/{templates → src/templates}/consumer-settings/claude-settings.json +0 -0
  2345. /package/{templates → src/templates}/consumer-settings/copilot-settings.json +0 -0
  2346. /package/{templates → src/templates}/cursor-rule.mdc.j2 +0 -0
  2347. /package/{templates → src/templates}/marketing-copy.yml +0 -0
  2348. /package/{templates → src/templates}/minimal/.agent-settings.yml +0 -0
  2349. /package/{templates → src/templates}/minimal/agents-overrides-readme.md +0 -0
  2350. /package/{templates → src/templates}/minimal/overrides-gitkeep +0 -0
  2351. /package/{templates → src/templates}/windsurf-rule.md.j2 +0 -0
@@ -1,1583 +0,0 @@
1
- """``agent-config doctor`` — install + manifest health report.
2
-
3
- Phase 4 of road-to-multi-package-coexistence (drift detection) and
4
- Phase 2 of road-to-surface-discipline (diagnostic hub). Read-only
5
- sibling to ``prune``/``validate``: walks the project manifest and the
6
- on-disk deploy roots, runs a battery of health checks, and produces:
7
-
8
- Drift categories (manifest ↔ filesystem):
9
-
10
- * ``missing`` — manifest entry has a ``path`` that is **not** on disk.
11
- * ``modified`` — manifest entry records a ``sha256`` that does not
12
- match the current bytes on disk.
13
- * ``foreign`` — file present under one of the ``deploy_roots`` that
14
- no manifest entry claims (potential neighbour-tool drift).
15
- * ``tag-drift`` — manifest-claimed ``.md`` file carries a frontmatter
16
- ``package:`` value that disagrees with this package's identifier
17
- (P5.2). Hand-edited tags or accidental cross-package writes show up
18
- here; files without frontmatter are skipped (P5.1 contract).
19
-
20
- Health checks (see :data:`CHECK_IDS`):
21
- scope · manifest-integrity · lockfile-freshness · bridge-drift ·
22
- mcp-mode · mcp-beta-readiness · offline-readiness · python-runtime ·
23
- tier-usage-readiness · council-cli · unsupported-combos ·
24
- wizard-state.
25
- Each emits a structured ``{id, status, message, remedy}`` record with
26
- ``status`` ∈ ``ok`` / ``warn`` / ``fail`` / ``skipped`` (rendered
27
- ``✅`` / ``⚠️`` / ``❌`` / ``⏭️``). ``--check <id>`` runs a single check.
28
-
29
- Checks are split by scope (:data:`GLOBAL_CHECK_IDS` vs
30
- :data:`MANIFEST_REQUIRED_CHECK_IDS`) so an ADR-020 global-only consumer
31
- (bridge marker present, no ``agents/installed-tools.lock``) gets a
32
- green-capable report instead of a hard bail: the global checks run, the
33
- manifest-required checks report ``skipped``, and ``bridge-drift`` returns
34
- a scope-aware "drift not applicable" verdict. See :func:`main` for the
35
- no-manifest branch and exit-code contract.
36
-
37
- Repair affordances: ``--repair wizard-state`` resets a malformed or
38
- orphaned ``state/wizard-state.json`` under the user-global root (the
39
- file the unified Setup-Wizard uses for resume continuity). Used as the
40
- recovery path when ``1.9``'s npm downgrade is not viable
41
- (road-to-global-only-install § 1.10 / A6).
42
-
43
- Exit codes: ``0`` (clean) · ``1`` (drift or any ``fail`` check) · ``2``
44
- (error such as "manifest missing"). Both human and ``--json`` output
45
- emit the drift category lists and the structured checks array. Every
46
- drift entry carries a one-line ``fix`` hint (P4.3).
47
- """
48
- from __future__ import annotations
49
-
50
- import argparse
51
- import hashlib
52
- import json
53
- import os
54
- import re
55
- import shutil
56
- import sys
57
- from pathlib import Path
58
- from typing import Any
59
-
60
- from scripts._lib import installed_lock, installed_tools
61
- from scripts._lib.agent_settings import (
62
- PROJECT_ROOT_ENV,
63
- ROOT_OVERRIDE_ENV,
64
- ProjectRootError,
65
- find_project_root_with_trace,
66
- project_settings_path,
67
- resolve_project_root,
68
- )
69
-
70
-
71
- class _Sentinel:
72
- """Tiny stand-in for a private sentinel value type."""
73
-
74
- __slots__ = ()
75
-
76
-
77
- #: Returned by :func:`_read_inline_package_tag` when the file is out
78
- #: of scope for tag-drift detection (no ``.md`` suffix, unreadable, or
79
- #: no leading frontmatter block).
80
- NO_FRONTMATTER = _Sentinel()
81
-
82
-
83
- def _resolve_project_root(arg: str | None) -> tuple[Path, str]:
84
- """Resolve the doctor's project root via the shared Phase-3 helper.
85
-
86
- Returns ``(root, origin)`` where ``origin`` is one of the anchor
87
- names from :mod:`scripts._lib.agent_settings` (``agents-dir``,
88
- ``git``, ``agent-settings``) or one of the origin tags
89
- ``root-flag`` / ``explicit`` / ``env`` / ``cwd-fallback``. The tag
90
- is surfaced in both human and JSON output so subdir invocations
91
- are auditable.
92
- """
93
- return resolve_project_root(arg)
94
-
95
-
96
- #: Path of the install-mode marker file (Step 8 A5). One-line file:
97
- #: ``minimal\n`` or ``full\n``. Written by ``install.py``; consumed by
98
- #: ``doctor --context`` to surface install state without re-deriving it
99
- #: from filesystem heuristics.
100
- _INSTALL_MODE_MARKER_REL = "agents/.agent-state/install-mode.txt"
101
-
102
-
103
- def _detect_install_mode(project_root: Path) -> tuple[str, str]:
104
- """Return ``(mode, source)`` for the project install state.
105
-
106
- Hybrid detection (Step 8 council decision Q5):
107
-
108
- 1. ``agents/.agent-state/install-mode.txt`` if present (authoritative
109
- for installs since Step 8) → ``source="marker-file"``.
110
- 2. Filesystem heuristic for back-compat: ``AGENTS.md`` + copilot
111
- bridges → ``full``; otherwise ``minimal`` → ``source="heuristic"``.
112
-
113
- Heuristic is fragile by design — users who delete ``AGENTS.md`` but
114
- keep copilot bridges get misreported. The marker file is the
115
- intended source of truth for installs from Step 8 onward.
116
- """
117
- marker = project_root / _INSTALL_MODE_MARKER_REL
118
- if marker.is_file():
119
- try:
120
- value = marker.read_text(encoding="utf-8").strip()
121
- except OSError:
122
- value = ""
123
- if value in ("minimal", "full"):
124
- return value, "marker-file"
125
- has_agents_md = (project_root / "AGENTS.md").exists()
126
- has_copilot = (project_root / ".github" / "copilot-instructions.md").exists()
127
- if has_agents_md and has_copilot:
128
- return "full", "heuristic"
129
- return "minimal", "heuristic"
130
-
131
-
132
- def _settings_layer_chain(project_root: Path) -> list[str]:
133
- """Return the ordered ``.agent-settings.yml`` layer files that exist.
134
-
135
- Shallowest first (user-global → project root). Used by ``--context``
136
- to surface which layers will participate in the cascade merge.
137
- """
138
- layers: list[str] = []
139
- from scripts._lib import user_global_paths
140
- user_global = user_global_paths.resolve_with_fallback("agent-settings.yml")
141
- if user_global is not None and user_global.is_file():
142
- layers.append(str(user_global))
143
- project_settings = project_settings_path(project_root)
144
- if project_settings.is_file():
145
- layers.append(str(project_settings))
146
- return layers
147
-
148
-
149
- def _detect_wrapper(project_root: Path) -> dict[str, Any]:
150
- """Return ``{path, exists, embedded_root}`` for the project wrapper.
151
-
152
- The ``./agent-config`` wrapper at the project root pins
153
- ``AGENT_CONFIG_PROJECT_ROOT`` to its own ``SELF_DIR``, so the
154
- "embedded root" is just the wrapper's directory. Surfaced for
155
- debugging wrapper-coupling issues (Step 8 A3-coupling).
156
- """
157
- wrapper = project_root / "agent-config"
158
- if not wrapper.exists():
159
- return {"path": str(wrapper), "exists": False, "embedded_root": None}
160
- return {
161
- "path": str(wrapper),
162
- "exists": True,
163
- "embedded_root": str(project_root),
164
- }
165
-
166
-
167
- def _emit_trace_text(
168
- root: Path | None,
169
- anchor: str | None,
170
- trace: list[dict[str, Any]],
171
- origin: str,
172
- ) -> None:
173
- """Render the discovery trace as human-readable text."""
174
- print(f" 📍 start: {Path.cwd()}")
175
- print(f" 📍 origin: {origin}")
176
- if trace:
177
- print(" trace:")
178
- for record in trace:
179
- hit = record["hit"]
180
- symbol = "✅" if hit else "·"
181
- tag = f"[{record['pass']}]"
182
- anchor_str = f" → {hit}" if hit else ""
183
- print(
184
- f" {symbol} {tag} {record['ancestor']}"
185
- f"{anchor_str} ({record['reason']})"
186
- )
187
- if root is not None:
188
- print(f" 📍 resolved root: {root} (anchor: {anchor or 'n/a'})")
189
- else:
190
- print(" ⚠️ no anchor found in chain")
191
-
192
-
193
- def _emit_trace_json(
194
- root: Path | None,
195
- anchor: str | None,
196
- trace: list[dict[str, Any]],
197
- origin: str,
198
- ) -> None:
199
- """Render the discovery trace as a JSON payload."""
200
- payload: dict[str, Any] = {
201
- "start": str(Path.cwd()),
202
- "origin": origin,
203
- "resolved_root": str(root) if root is not None else None,
204
- "anchor": anchor,
205
- "trace": trace,
206
- }
207
- print(json.dumps(payload, indent=2))
208
-
209
-
210
- def _emit_context_text(ctx: dict[str, Any]) -> None:
211
- """Render the install / discovery context as human-readable text."""
212
- print(f" 📍 project_root: {ctx['project_root']} (origin: {ctx['origin']})")
213
- print(f" 📦 install_mode: {ctx['install_mode']} (source: {ctx['install_mode_source']})")
214
- env_pin = ctx.get("env_pin")
215
- if env_pin:
216
- marker = " (--root override)" if ctx.get("root_override") else ""
217
- print(f" 🔒 env_pin: {env_pin}{marker}")
218
- else:
219
- print(" 🔒 env_pin: (unset)")
220
- layers = ctx.get("settings_layers") or []
221
- if layers:
222
- print(f" 📑 settings layers ({len(layers)}):")
223
- for layer in layers:
224
- print(f" - {layer}")
225
- else:
226
- print(" 📑 settings layers: (none)")
227
- wrapper = ctx.get("wrapper") or {}
228
- if wrapper.get("exists"):
229
- print(f" 🧩 wrapper: {wrapper['path']} (embedded root: {wrapper.get('embedded_root')})")
230
- else:
231
- print(f" 🧩 wrapper: (not present at {wrapper.get('path')})")
232
-
233
-
234
- def _resolve_path(project_root: Path, raw: str) -> Path:
235
- p = Path(raw).expanduser()
236
- if not p.is_absolute():
237
- p = project_root / p
238
- return p
239
-
240
-
241
- def _sha256(path: Path) -> str | None:
242
- try:
243
- return hashlib.sha256(path.read_bytes()).hexdigest()
244
- except OSError:
245
- return None
246
-
247
-
248
- #: Inline-tag identifier this package writes into deployed Markdown
249
- #: frontmatter (P5.1). Kept in sync with ``install.PACKAGE_TAG_ID``;
250
- #: duplicated here to keep ``cmd_doctor`` import-light (no pull on the
251
- #: installer module from the CLI).
252
- PACKAGE_TAG_ID = "event4u/agent-config"
253
-
254
- _FRONTMATTER_PACKAGE_RE = re.compile(
255
- r"^package:\s*(.+?)\s*$", re.MULTILINE,
256
- )
257
-
258
-
259
- def _read_inline_package_tag(path: Path) -> str | None | _Sentinel:
260
- """Extract the inline ``package:`` value from a Markdown frontmatter.
261
-
262
- Returns ``NO_FRONTMATTER`` when ``path`` is not a Markdown file or
263
- has no leading ``---`` block (P5.1: those files are out of scope).
264
- Returns ``None`` when frontmatter is present but lacks a
265
- ``package:`` key. Returns the string value otherwise.
266
- """
267
- if path.suffix != ".md":
268
- return NO_FRONTMATTER
269
- try:
270
- text = path.read_text(encoding="utf-8")
271
- except OSError:
272
- return NO_FRONTMATTER
273
- if not (text.startswith("---\n") or text.startswith("---\r\n")):
274
- return NO_FRONTMATTER
275
- lines = text.splitlines()
276
- close_idx: int | None = None
277
- for i in range(1, len(lines)):
278
- if lines[i].rstrip() == "---":
279
- close_idx = i
280
- break
281
- if close_idx is None:
282
- return NO_FRONTMATTER
283
- block = "\n".join(lines[1:close_idx])
284
- m = _FRONTMATTER_PACKAGE_RE.search(block)
285
- if not m:
286
- return None
287
- return m.group(1).strip().strip("'\"")
288
-
289
-
290
- def _fix_hint(category: str, kind: str | None) -> str:
291
- """Return a one-line remediation hint for the surfaced item."""
292
- if category == "missing":
293
- return "run `./agent-config sync` to re-install"
294
- if category == "modified":
295
- return "commit the local change, or re-install with --force"
296
- if category == "foreign":
297
- return (
298
- "identify owning tool, or run `./agent-config prune` "
299
- "if confirmed orphan"
300
- )
301
- if category == "tag-drift":
302
- return (
303
- "re-install with --force to restore the inline tag, "
304
- "or remove the file if it is no longer ours"
305
- )
306
- return ""
307
-
308
-
309
- def _collect_manifest_entries(
310
- project_root: Path, manifest: dict[str, Any],
311
- ) -> tuple[
312
- list[tuple[str, Path, str, str | None]], # (tool, abs_path, kind, sha)
313
- set[Path], # resolved-known set
314
- ]:
315
- """Flatten v2 ``tools[].files[]`` into per-file records.
316
-
317
- Returns the records list and a set of resolved absolute paths so
318
- the foreign-file scan can skip anything the manifest claims.
319
- """
320
- records: list[tuple[str, Path, str, str | None]] = []
321
- known: set[Path] = set()
322
- for tool in manifest.get("tools") or []:
323
- if tool.get("scope") != "project":
324
- continue
325
- tool_id = str(tool.get("name", ""))
326
- for entry in tool.get("files") or []:
327
- raw = entry.get("path") or ""
328
- if not raw:
329
- continue
330
- kind = entry.get("kind") or ""
331
- target = _resolve_path(project_root, raw)
332
- try:
333
- resolved = target.resolve()
334
- except OSError:
335
- resolved = target
336
- records.append((tool_id, target, kind, entry.get("sha256")))
337
- known.add(resolved)
338
- return records, known
339
-
340
-
341
- def _scan_foreign(
342
- project_root: Path,
343
- manifest: dict[str, Any],
344
- known: set[Path],
345
- ) -> list[Path]:
346
- """Walk every declared deploy root and surface unclaimed files.
347
-
348
- Only ``regular files`` under ``deploy_roots`` count; directories and
349
- symlinks are followed but the bookkeeping is on the resolved final
350
- path so a manifest claim via either path silences both surfaces.
351
- Falls back to :data:`installed_tools.DEFAULT_DEPLOY_ROOTS` when the
352
- manifest lacks an explicit ``deploy_roots`` list.
353
- """
354
- roots = manifest.get("deploy_roots") or list(
355
- installed_tools.DEFAULT_DEPLOY_ROOTS,
356
- )
357
- foreign: list[Path] = []
358
- seen: set[Path] = set()
359
- for root_rel in roots:
360
- root = _resolve_path(project_root, str(root_rel))
361
- if not root.exists() or not root.is_dir():
362
- continue
363
- for child in root.rglob("*"):
364
- if not child.is_file():
365
- continue
366
- try:
367
- resolved = child.resolve()
368
- except OSError:
369
- resolved = child
370
- if resolved in known or resolved in seen:
371
- continue
372
- seen.add(resolved)
373
- foreign.append(child)
374
- foreign.sort()
375
- return foreign
376
-
377
-
378
- def _classify(
379
- records: list[tuple[str, Path, str, str | None]],
380
- ) -> tuple[
381
- list[dict[str, Any]],
382
- list[dict[str, Any]],
383
- list[dict[str, Any]],
384
- ]:
385
- """Split manifest records into missing / modified / tag-drift lists.
386
-
387
- Tag-drift inspection (P5.2) is restricted to manifest entries that
388
- point at a present ``.md`` file with a frontmatter block. A file
389
- that has frontmatter but whose ``package:`` value disagrees with
390
- :data:`PACKAGE_TAG_ID` — or that has dropped the key entirely —
391
- surfaces here. Files without frontmatter are silently ignored per
392
- the P5.1 contract (we never synthesise frontmatter).
393
- """
394
- missing: list[dict[str, Any]] = []
395
- modified: list[dict[str, Any]] = []
396
- tag_drift: list[dict[str, Any]] = []
397
- for tool_id, target, kind, expected in records:
398
- if not target.exists():
399
- missing.append({
400
- "tool": tool_id, "path": str(target), "kind": kind,
401
- "fix": _fix_hint("missing", kind),
402
- })
403
- continue
404
- tag = _read_inline_package_tag(target)
405
- if not isinstance(tag, _Sentinel) and tag != PACKAGE_TAG_ID:
406
- tag_drift.append({
407
- "tool": tool_id, "path": str(target), "kind": kind,
408
- "expected": PACKAGE_TAG_ID,
409
- "found": "" if tag is None else tag,
410
- "fix": _fix_hint("tag-drift", kind),
411
- })
412
- if expected is None:
413
- continue
414
- actual = _sha256(target)
415
- if actual is None or actual == expected:
416
- continue
417
- modified.append({
418
- "tool": tool_id, "path": str(target), "kind": kind,
419
- "fix": _fix_hint("modified", kind),
420
- })
421
- return missing, modified, tag_drift
422
-
423
-
424
- def _foreign_records(
425
- project_root: Path, foreign: list[Path],
426
- ) -> list[dict[str, Any]]:
427
- out: list[dict[str, Any]] = []
428
- for p in foreign:
429
- try:
430
- rel = p.relative_to(project_root)
431
- path_str = str(rel)
432
- except ValueError:
433
- path_str = str(p)
434
- out.append({
435
- "tool": "",
436
- "path": path_str,
437
- "kind": "deployed",
438
- "fix": _fix_hint("foreign", "deployed"),
439
- })
440
- return out
441
-
442
-
443
- # ---------------------------------------------------------------------------
444
- # Health checks (Phase 2 of road-to-surface-discipline).
445
- # ---------------------------------------------------------------------------
446
-
447
- #: Ordered registry of structured health-check identifiers. The order
448
- #: is preserved in text and JSON output. Adding a check requires both
449
- #: a runner below and an entry in :func:`_run_checks`.
450
- CHECK_IDS = (
451
- "scope",
452
- "global-binary",
453
- "manifest-integrity",
454
- "lockfile-freshness",
455
- "bridge-drift",
456
- "mcp-mode",
457
- "mcp-beta-readiness",
458
- "offline-readiness",
459
- "python-runtime",
460
- "tier-usage-readiness",
461
- "council-cli",
462
- "unsupported-combos",
463
- "wizard-state",
464
- )
465
-
466
- #: Checks that need only the project root (or no input at all) and run
467
- #: regardless of whether a project lockfile exists. Under ADR-020
468
- #: global-only (bridge marker present, no ``installed-tools.lock``) these
469
- #: still produce a real verdict. ``scope`` lives here because
470
- #: :func:`_check_scope` reads only ``project_root`` — the roadmap prose
471
- #: that grouped it with the manifest checks predates this code reality
472
- #: (AI council, claude-sonnet-4-5 + gpt-4o, design lens, 2026-06-02).
473
- GLOBAL_CHECK_IDS: frozenset[str] = frozenset({
474
- "scope",
475
- "global-binary",
476
- "mcp-mode",
477
- "mcp-beta-readiness",
478
- "offline-readiness",
479
- "python-runtime",
480
- "tier-usage-readiness",
481
- "council-cli",
482
- "wizard-state",
483
- })
484
-
485
- #: Checks that genuinely cannot run without the project manifest. Without
486
- #: a lockfile they report ``skipped`` rather than a misleading verdict.
487
- #: ``bridge-drift`` is deliberately **not** here: it is scope-aware —
488
- #: a manifest-derived drift roll-up when the lockfile exists, and a
489
- #: "drift not applicable (global-only consumer)" verdict when it does
490
- #: not (computed in :func:`_check_bridge_drift_no_manifest`, keeping
491
- #: :func:`_check_bridge_drift` a pure roll-up per the council's SRP point).
492
- MANIFEST_REQUIRED_CHECK_IDS: frozenset[str] = frozenset({
493
- "manifest-integrity",
494
- "lockfile-freshness",
495
- "unsupported-combos",
496
- })
497
-
498
- #: Project-root-relative path of the ADR-020 global-only consumer marker.
499
- BRIDGE_MARKER_RELATIVE = "agents/.event4u-bridge.yml"
500
-
501
- #: Repair targets that ``--repair <id>`` accepts. Each id maps to a
502
- #: function in :func:`_run_repair` that resets the named artefact and
503
- #: returns an exit code. Additive set: introduce by adding a new id
504
- #: here, a runner inside :func:`_run_repair`, and (optionally) a
505
- #: matching health check above.
506
- REPAIR_IDS = ("wizard-state",)
507
-
508
- #: Six gates that govern the MCP `experimental → beta` promotion. The
509
- #: artefact path under each gate id mirrors `tests/test_mcp_beta_gates.py`
510
- #: and the contract in `docs/contracts/mcp-beta-criteria.md`.
511
- MCP_BETA_GATES: tuple[tuple[str, str], ...] = (
512
- ("gate-1-external-client", "tests/mcp/external-clients"),
513
- ("gate-2-bearer-auth", "tests/mcp/auth"),
514
- ("gate-3-parity-smoke", "tests/mcp/parity"),
515
- ("gate-4-healthz-load", "tests/mcp/load/healthz.k6.js"),
516
- ("gate-5-rate-limit", "docs/contracts/mcp-rate-limit.md"),
517
- ("gate-6-no-drift", ".github/workflows/mcp-no-drift.yml"),
518
- )
519
-
520
- #: Visible status → glyph map. ``warn`` keeps a trailing space so the
521
- #: rendered output stays in a single visual column with the other glyphs.
522
- STATUS_SYMBOLS = {"ok": "✅", "warn": "⚠️ ", "fail": "❌", "skipped": "⏭️ "}
523
-
524
- #: Minimum Python interpreter the CLI targets. Bumped in lockstep with
525
- #: ``from __future__ import annotations`` + PEP-604 syntax usage.
526
- MIN_PYTHON = (3, 10)
527
-
528
-
529
- def _check_scope(project_root: Path) -> dict[str, Any]:
530
- """Distinguish a standalone project root from a monorepo workspace.
531
-
532
- Surfaces ``warn`` when ``project_root`` looks like a monorepo root
533
- so the operator knows to run ``doctor`` per-package; otherwise
534
- reports the project as a standalone target.
535
- """
536
- for marker in ("pnpm-workspace.yaml", "lerna.json"):
537
- if (project_root / marker).exists():
538
- return {
539
- "id": "scope", "status": "warn",
540
- "message": f"monorepo root detected ({marker})",
541
- "remedy": "run `agent-config doctor` from each workspace package",
542
- }
543
- pkg = project_root / "package.json"
544
- if pkg.exists():
545
- try:
546
- data = json.loads(pkg.read_text(encoding="utf-8"))
547
- if data.get("workspaces"):
548
- return {
549
- "id": "scope", "status": "warn",
550
- "message": "package.json declares workspaces (monorepo root)",
551
- "remedy": "run `agent-config doctor` from each workspace package",
552
- }
553
- except (OSError, ValueError):
554
- pass
555
- return {
556
- "id": "scope", "status": "ok",
557
- "message": "standalone project root",
558
- "remedy": "",
559
- }
560
-
561
-
562
- def _check_manifest_integrity(manifest: dict[str, Any]) -> dict[str, Any]:
563
- """Verify the manifest carries a writer version and a known schema."""
564
- schema = manifest.get("schema_version")
565
- version = manifest.get("agent_config_version")
566
- if not version:
567
- return {
568
- "id": "manifest-integrity", "status": "warn",
569
- "message": "manifest lacks `agent_config_version`",
570
- "remedy": "re-run `./agent-config init` to record the writer version",
571
- }
572
- if schema not in installed_tools.SCHEMA_VERSIONS_SUPPORTED:
573
- return {
574
- "id": "manifest-integrity", "status": "warn",
575
- "message": f"unknown schema_version: {schema!r}",
576
- "remedy": "upgrade @event4u/agent-config to a writer that "
577
- "recognises this schema",
578
- }
579
- return {
580
- "id": "manifest-integrity", "status": "ok",
581
- "message": f"schema v{schema}, written by agent-config {version}",
582
- "remedy": "",
583
- }
584
-
585
-
586
- def _package_root() -> Path:
587
- """Resolve the @event4u/agent-config package root (this repo)."""
588
- return Path(__file__).resolve().parents[2]
589
-
590
-
591
- def _current_package_version() -> str | None:
592
- """Read ``version`` from this package's ``package.json``; ``None`` on error."""
593
- try:
594
- data = json.loads(
595
- (_package_root() / "package.json").read_text(encoding="utf-8"),
596
- )
597
- v = data.get("version")
598
- if isinstance(v, str) and v.strip():
599
- return v.strip()
600
- except (OSError, ValueError):
601
- pass
602
- return None
603
-
604
-
605
- def _check_lockfile_freshness(manifest: dict[str, Any]) -> dict[str, Any]:
606
- """Compare the manifest writer version against the current package."""
607
- recorded = manifest.get("agent_config_version")
608
- current = _current_package_version()
609
- if not recorded:
610
- return {
611
- "id": "lockfile-freshness", "status": "warn",
612
- "message": "manifest has no writer version recorded",
613
- "remedy": "re-run `./agent-config init` to refresh the manifest",
614
- }
615
- if current is None:
616
- return {
617
- "id": "lockfile-freshness", "status": "warn",
618
- "message": f"manifest written by {recorded}; current package version unknown",
619
- "remedy": "verify the package install (package.json missing or unreadable)",
620
- }
621
- if recorded != current:
622
- return {
623
- "id": "lockfile-freshness", "status": "warn",
624
- "message": f"manifest writer {recorded} != current package {current}",
625
- "remedy": "re-run `./agent-config sync` to refresh the manifest "
626
- "against the current package",
627
- }
628
- return {
629
- "id": "lockfile-freshness", "status": "ok",
630
- "message": f"manifest and package both at {current}",
631
- "remedy": "",
632
- }
633
-
634
-
635
- def _check_global_binary(project_root: Path) -> dict[str, Any]:
636
- """`agent-config` PATH resolution + global-install version parity.
637
-
638
- The Claude plugin hook resolves `agent-config` from PATH (ADR-020
639
- global-only); if it is missing, every PostToolUse hook fails silently —
640
- this is the root cause of the "dashboard never updates" report. Version
641
- drift between the binary on PATH and the global install root means the
642
- plugin may emit a hook spec the installed binary predates.
643
- """
644
- binary = shutil.which("agent-config")
645
- if not binary:
646
- return {
647
- "id": "global-binary", "status": "fail",
648
- "message": "`agent-config` is not on PATH — Claude plugin hooks "
649
- "cannot resolve it (hooks silently no-op)",
650
- "remedy": "npm install -g @event4u/agent-config, then re-run doctor",
651
- }
652
- lock = installed_lock.read_lockfile()
653
- global_v = ""
654
- if isinstance(lock, dict):
655
- raw = lock.get("agent_config_version")
656
- global_v = raw.strip().lstrip("v") if isinstance(raw, str) else ""
657
- binary_v = (_current_package_version() or "").lstrip("v")
658
- if global_v and binary_v and global_v != binary_v:
659
- return {
660
- "id": "global-binary", "status": "warn",
661
- "message": f"version drift — binary {binary_v}, global install "
662
- f"{global_v}",
663
- "remedy": "agent-config upgrade (refresh the global install + plugin)",
664
- }
665
- bridge = project_root / "agents" / ".event4u-bridge.yml"
666
- bridge_note = "" if bridge.is_file() else " · no project bridge marker"
667
- return {
668
- "id": "global-binary", "status": "ok",
669
- "message": f"on PATH ({binary}); version {binary_v or 'unknown'}"
670
- f"{bridge_note}",
671
- "remedy": "" if not bridge_note else
672
- "agent-config refresh --project (scaffold the bridge marker)",
673
- }
674
-
675
-
676
- def _check_bridge_drift(
677
- missing: list[dict[str, Any]],
678
- modified: list[dict[str, Any]],
679
- foreign: list[dict[str, Any]],
680
- tag_drift: list[dict[str, Any]],
681
- ) -> dict[str, Any]:
682
- """Roll the four drift category counts into a single health verdict."""
683
- total = len(missing) + len(modified) + len(foreign) + len(tag_drift)
684
- if total == 0:
685
- return {
686
- "id": "bridge-drift", "status": "ok",
687
- "message": "manifest matches filesystem (no drift)",
688
- "remedy": "",
689
- }
690
- parts = []
691
- if missing:
692
- parts.append(f"{len(missing)} missing")
693
- if modified:
694
- parts.append(f"{len(modified)} modified")
695
- if foreign:
696
- parts.append(f"{len(foreign)} foreign")
697
- if tag_drift:
698
- parts.append(f"{len(tag_drift)} tag-drift")
699
- return {
700
- "id": "bridge-drift", "status": "fail",
701
- "message": f"{total} drift item(s): {', '.join(parts)}",
702
- "remedy": "see the drift section below or run `./agent-config sync`",
703
- }
704
-
705
-
706
- def _check_mcp_mode(project_root: Path) -> dict[str, Any]:
707
- """Detect which MCP config file the project advertises, if any."""
708
- candidates = (
709
- (".cursor/mcp.json", "cursor"),
710
- (".ai/mcp/mcp.json", "ai-mcp"),
711
- ("mcp.json", "root"),
712
- )
713
- found: list[str] = []
714
- for rel, label in candidates:
715
- path = project_root / rel
716
- if not path.exists():
717
- continue
718
- try:
719
- json.loads(path.read_text(encoding="utf-8"))
720
- found.append(f"{label} ({rel})")
721
- except (OSError, ValueError):
722
- return {
723
- "id": "mcp-mode", "status": "warn",
724
- "message": f"MCP config at {rel} is not valid JSON",
725
- "remedy": f"fix or remove `{rel}` (see docs/architecture.md § MCP)",
726
- }
727
- if not found:
728
- return {
729
- "id": "mcp-mode", "status": "ok",
730
- "message": "no MCP config present (MCP Beta off)",
731
- "remedy": "",
732
- }
733
- return {
734
- "id": "mcp-mode", "status": "ok",
735
- "message": f"MCP config detected: {', '.join(found)}",
736
- "remedy": "",
737
- }
738
-
739
-
740
- def _check_offline_readiness() -> dict[str, Any]:
741
- """Verify the verified-offline install entrypoint ships with the package."""
742
- script = _package_root() / "scripts" / "hermetic-install.sh"
743
- if not script.exists():
744
- return {
745
- "id": "offline-readiness", "status": "warn",
746
- "message": "scripts/hermetic-install.sh not found in package",
747
- "remedy": "reinstall @event4u/agent-config or pull missing files",
748
- }
749
- return {
750
- "id": "offline-readiness", "status": "ok",
751
- "message": "verified-offline install entrypoint present",
752
- "remedy": "",
753
- }
754
-
755
-
756
- def _check_python_runtime() -> dict[str, Any]:
757
- """Confirm the interpreter is at least :data:`MIN_PYTHON`."""
758
- cur = sys.version_info[:2]
759
- need = MIN_PYTHON
760
- if cur < need:
761
- return {
762
- "id": "python-runtime", "status": "fail",
763
- "message": f"python {cur[0]}.{cur[1]} below required {need[0]}.{need[1]}",
764
- "remedy": f"install python >= {need[0]}.{need[1]} and re-run",
765
- }
766
- return {
767
- "id": "python-runtime", "status": "ok",
768
- "message": f"python {cur[0]}.{cur[1]} meets {need[0]}.{need[1]}+ requirement",
769
- "remedy": "",
770
- }
771
-
772
-
773
- def _check_mcp_beta_readiness(project_root: Path) -> dict[str, Any]:
774
- """Report the MCP `experimental → beta` promotion gate sheet.
775
-
776
- Walks the six gates in :data:`MCP_BETA_GATES` and asks whether the
777
- artefact named by each gate (test directory, k6 script, contract
778
- doc, or workflow file) is present. Green when all six pass, warn
779
- when any are missing — the gate stays red until evidence lands.
780
- Mirrors `tests/test_mcp_beta_gates.py` so the doctor verdict and
781
- the pytest sheet cannot drift.
782
- """
783
- pending: list[str] = []
784
- for gate_id, rel in MCP_BETA_GATES:
785
- if not (project_root / rel).exists():
786
- pending.append(f"{gate_id} ({rel})")
787
- if not pending:
788
- return {
789
- "id": "mcp-beta-readiness", "status": "ok",
790
- "message": "all 6 MCP beta gates green — promotion authorized",
791
- "remedy": "",
792
- }
793
- return {
794
- "id": "mcp-beta-readiness", "status": "warn",
795
- "message": (
796
- f"{len(pending)}/6 MCP beta gate(s) pending: "
797
- f"{', '.join(pending)}"
798
- ),
799
- "remedy": (
800
- "produce the artefacts listed in "
801
- "docs/contracts/mcp-beta-criteria.md (one per gate); "
802
- "do not flip `experimental` wording until all 6 are green"
803
- ),
804
- }
805
-
806
-
807
- def _check_tier_usage_readiness(project_root: Path) -> dict[str, Any]:
808
- """Report whether tier-usage telemetry can drive empirical retiering.
809
-
810
- Phase 5 of road-to-surface-discipline. Three terminal states:
811
-
812
- * **ok** — telemetry on, log present, at least one record survived
813
- the privacy floor.
814
- * **warn (disabled)** — telemetry off; no signal collected.
815
- Default-off doctrine; user opt-in is the unlock.
816
- * **warn (no data)** — telemetry on but the log is absent / empty;
817
- retiering decisions still rely on operator judgement until
818
- enough records accumulate.
819
- * **fail (poisoned)** — every record was rejected by the privacy
820
- floor; the report would refuse to render. The log needs a manual
821
- inspection.
822
-
823
- Contract: ``docs/contracts/command-clusters.md`` § tier-usage signal.
824
- """
825
- settings_file = project_settings_path(project_root)
826
- log_path = project_root / ".agent-tier-usage.jsonl"
827
- enabled = False
828
- if settings_file.is_file():
829
- try:
830
- import yaml # type: ignore[import-not-found]
831
- except ImportError:
832
- yaml = None # type: ignore[assignment]
833
- if yaml is not None:
834
- try:
835
- raw = yaml.safe_load(settings_file.read_text(encoding="utf-8")) or {}
836
- except Exception:
837
- raw = {}
838
- tele = (raw.get("telemetry") if isinstance(raw, dict) else None) or {}
839
- tu = tele.get("tier_usage") if isinstance(tele, dict) else None
840
- if isinstance(tu, dict):
841
- output = tu.get("output") if isinstance(tu.get("output"), dict) else {}
842
- if isinstance(output.get("path"), str) and output["path"].strip():
843
- log_path = project_root / output["path"].strip()
844
- val = tu.get("enabled")
845
- enabled = bool(val) if isinstance(val, bool) else (
846
- isinstance(val, str) and val.strip().lower() in ("true", "yes", "on", "1")
847
- )
848
-
849
- if not enabled:
850
- return {
851
- "id": "tier-usage-readiness", "status": "warn",
852
- "message": (
853
- "tier-usage telemetry disabled — empirical retiering "
854
- "decisions fall back to operator judgement"
855
- ),
856
- "remedy": (
857
- "set `telemetry.tier_usage.enabled: true` in "
858
- ".agent-settings.yml (default-off; opt-in)"
859
- ),
860
- }
861
- if not log_path.exists():
862
- return {
863
- "id": "tier-usage-readiness", "status": "warn",
864
- "message": (
865
- f"tier-usage telemetry on but {log_path.name} not yet "
866
- "written — no signal accumulated"
867
- ),
868
- "remedy": (
869
- "run any tracked command to seed the log; the dispatcher "
870
- "writes one record per invocation"
871
- ),
872
- }
873
- total = 0
874
- valid = 0
875
- allowed_fields = {"ts_bucket", "command", "tier", "outcome", "user_hash"}
876
- allowed_outcomes = {"success", "error", "blocked"}
877
- try:
878
- with log_path.open("r", encoding="utf-8") as fh:
879
- for line in fh:
880
- line = line.strip()
881
- if not line:
882
- continue
883
- total += 1
884
- try:
885
- obj = json.loads(line)
886
- except json.JSONDecodeError:
887
- continue
888
- if not isinstance(obj, dict):
889
- continue
890
- if not set(obj.keys()).issubset(allowed_fields):
891
- continue
892
- if (
893
- isinstance(obj.get("command"), str) and obj["command"]
894
- and isinstance(obj.get("tier"), int) and obj["tier"] in (0, 1, 2, 3)
895
- and obj.get("outcome") in allowed_outcomes
896
- and isinstance(obj.get("user_hash"), str) and len(obj["user_hash"]) == 16
897
- and isinstance(obj.get("ts_bucket"), str)
898
- ):
899
- valid += 1
900
- except OSError as exc:
901
- return {
902
- "id": "tier-usage-readiness", "status": "fail",
903
- "message": f"cannot read {log_path.name}: {exc}",
904
- "remedy": "fix permissions on the tier-usage log",
905
- }
906
- if total > 0 and valid == 0:
907
- return {
908
- "id": "tier-usage-readiness", "status": "fail",
909
- "message": (
910
- f"{total} record(s) in {log_path.name} but 0 passed the "
911
- "privacy floor — report would refuse to render"
912
- ),
913
- "remedy": (
914
- "inspect the log; the dispatcher is writing records the "
915
- "contract forbids (paths, argv, message bodies)"
916
- ),
917
- }
918
- if valid == 0:
919
- return {
920
- "id": "tier-usage-readiness", "status": "warn",
921
- "message": f"{log_path.name} present but empty — no signal yet",
922
- "remedy": "run any tracked command to seed the log",
923
- }
924
- return {
925
- "id": "tier-usage-readiness", "status": "ok",
926
- "message": (
927
- f"{valid} record(s) past the privacy floor in {log_path.name} "
928
- "— retiering signal available"
929
- ),
930
- "remedy": "",
931
- }
932
-
933
-
934
- #: Provider → (default binary, billable flag). Mirrors the
935
- #: ``CliClient`` subclass attributes in ``scripts/ai_council/clients.py``
936
- #: without importing them at module load time (keeps doctor lightweight
937
- #: and robust if council deps fail to load).
938
- _CLI_PROVIDER_META: dict[str, tuple[str, bool]] = {
939
- "anthropic": ("claude", False),
940
- "openai": ("codex", False),
941
- "gemini": ("gemini", False),
942
- "xai": ("grok", True),
943
- "perplexity": ("perplexity", True),
944
- }
945
-
946
-
947
- def _check_council_cli(project_root: Path) -> dict[str, Any]:
948
- """Health-probe each enabled ``mode: cli`` council member.
949
-
950
- For every CLI member in ``agents/settings/.ai-council.yml`` reports binary
951
- presence (via ``shutil.which``), billable flag, daily-quota state
952
- (used/cap or used/—), and rolls up to a single status icon.
953
-
954
- No subprocess is spawned: ``--version`` probes would defeat the
955
- cheap-by-default contract and surface flaky network paths (Codex
956
- talks home on first run). Binary presence + the cached
957
- ``cli-calls.json`` counter cover the actionable failure modes.
958
-
959
- Status rules:
960
-
961
- - ``ok`` — every enabled CLI member has its binary on PATH AND
962
- (when capped) usage is below ``warn_at``.
963
- - ``warn`` — at least one binary is missing OR usage crosses
964
- ``warn_at`` for at least one capped member.
965
- - returns ``ok`` with "no council config" if
966
- ``agents/settings/.ai-council.yml`` is absent (consumer project that
967
- hasn't enabled the council yet).
968
- """
969
- council_path = project_root / "agents" / "settings" / ".ai-council.yml"
970
- if not council_path.exists():
971
- return {
972
- "id": "council-cli", "status": "ok",
973
- "message": "no council config (agents/settings/.ai-council.yml not present)",
974
- "remedy": "",
975
- }
976
- try:
977
- from scripts.ai_council.clients import load_cli_call_counts
978
- from scripts.ai_council.config import load_council_config
979
- except Exception as exc: # noqa: BLE001 — defensive: doctor must not crash
980
- return {
981
- "id": "council-cli", "status": "warn",
982
- "message": f"council deps unavailable ({type(exc).__name__})",
983
- "remedy": "install PyYAML and ensure scripts/ai_council is importable",
984
- }
985
- try:
986
- cfg = load_council_config(council_path)
987
- except Exception as exc: # noqa: BLE001
988
- return {
989
- "id": "council-cli", "status": "warn",
990
- "message": f"council config invalid: {exc}",
991
- "remedy": "fix agents/settings/.ai-council.yml and re-run doctor",
992
- }
993
- cli_members: list[tuple[str, Any]] = [
994
- (name, m) for name, m in cfg.members.items()
995
- if m.enabled and m.mode == "cli" and name in _CLI_PROVIDER_META
996
- ]
997
- if not cli_members:
998
- return {
999
- "id": "council-cli", "status": "ok",
1000
- "message": "no enabled CLI-mode members",
1001
- "remedy": "",
1002
- }
1003
- counts = load_cli_call_counts()
1004
- caps = cfg.cli_call_budget.max_calls_per_day
1005
- warn_at = float(cfg.cli_call_budget.warn_at)
1006
- missing: list[str] = []
1007
- over_warn: list[str] = []
1008
- lines: list[str] = []
1009
- for name, member in cli_members:
1010
- default_bin, billable = _CLI_PROVIDER_META[name]
1011
- binary_name = member.binary or default_bin
1012
- resolved = shutil.which(binary_name)
1013
- binary_glyph = "✅" if resolved else "❌"
1014
- if resolved is None:
1015
- missing.append(name)
1016
- used = int(counts.get(name, 0))
1017
- cap = caps.get(name)
1018
- if cap is not None:
1019
- ratio = used / cap if cap > 0 else 0.0
1020
- quota_glyph = "⚠️" if ratio >= warn_at else "✅"
1021
- if ratio >= warn_at:
1022
- over_warn.append(name)
1023
- quota_str = f"{used}/{cap}"
1024
- else:
1025
- quota_glyph = "—"
1026
- quota_str = f"{used}/—"
1027
- billable_str = "billable" if billable else "subscription"
1028
- lines.append(
1029
- f"{name}: binary {binary_glyph} ({binary_name}) · "
1030
- f"quota {quota_glyph} {quota_str} · {billable_str}"
1031
- )
1032
- detail = " | ".join(lines)
1033
- if missing:
1034
- return {
1035
- "id": "council-cli", "status": "warn",
1036
- "message": (
1037
- f"{len(missing)}/{len(cli_members)} CLI member(s) missing binary "
1038
- f"({', '.join(missing)}) · {detail}"
1039
- ),
1040
- "remedy": (
1041
- "install the missing CLI(s) — see `council:estimate` pre-flight "
1042
- "for per-provider install hints, or flip "
1043
- "ai_council.members.<name>.mode to 'api'"
1044
- ),
1045
- }
1046
- if over_warn:
1047
- return {
1048
- "id": "council-cli", "status": "warn",
1049
- "message": (
1050
- f"{len(over_warn)}/{len(cli_members)} CLI member(s) at/over "
1051
- f"quota warn_at={warn_at} ({', '.join(over_warn)}) · {detail}"
1052
- ),
1053
- "remedy": (
1054
- "wait for UTC rollover or run "
1055
- "`python3 scripts/council_cli.py quota --reset` to clear the counter"
1056
- ),
1057
- }
1058
- return {
1059
- "id": "council-cli", "status": "ok",
1060
- "message": f"{len(cli_members)} CLI member(s) healthy · {detail}",
1061
- "remedy": "",
1062
- }
1063
-
1064
-
1065
- def _check_unsupported_combos(manifest: dict[str, Any]) -> dict[str, Any]:
1066
- """Flag tools whose ``scope`` violates the global-only or project-only rules."""
1067
- global_only = {"droid", "qoder"}
1068
- bad: list[str] = []
1069
- for tool in manifest.get("tools") or []:
1070
- name = str(tool.get("name", ""))
1071
- scope = tool.get("scope")
1072
- if name in global_only and scope != "global":
1073
- bad.append(f"{name} (scope={scope}, requires global)")
1074
- if bad:
1075
- return {
1076
- "id": "unsupported-combos", "status": "fail",
1077
- "message": f"{len(bad)} tool(s) with unsupported scope: {', '.join(bad)}",
1078
- "remedy": "re-install the listed tools with `--global --force`",
1079
- }
1080
- return {
1081
- "id": "unsupported-combos", "status": "ok",
1082
- "message": "all installed tools use supported scopes",
1083
- "remedy": "",
1084
- }
1085
-
1086
-
1087
- def _wizard_state_path() -> Path:
1088
- """Return the on-disk location of the unified Setup-Wizard state file.
1089
-
1090
- Mirrors ``STATE_REL`` in :mod:`src/server/routes/wizard.ts` — the
1091
- server writes ``<writeRoot>/state/wizard-state.json``. Under the
1092
- global-only install scope (ADR-020) ``writeRoot`` resolves to
1093
- :func:`user_global_paths.event4u_root` (typically
1094
- ``~/.event4u/agent-config/``); the ``EVENT4U_CONFIG_HOME`` override
1095
- is honoured implicitly so tests stay hermetic.
1096
- """
1097
- from scripts._lib.user_global_paths import event4u_root
1098
- return event4u_root() / "state" / "wizard-state.json"
1099
-
1100
-
1101
- def _check_wizard_state() -> dict[str, Any]:
1102
- """Health-check the resumable Setup-Wizard state file.
1103
-
1104
- Returns ``ok`` when the file is absent (no active session) or when
1105
- its JSON shape matches the contract from
1106
- :mod:`src/server/routes/wizard.ts` (``step: int``, ``partial: dict``,
1107
- optional ``totalSteps: int``, ``startedAt: str | null``).
1108
- Returns ``fail`` when the file exists but is unreadable, not valid
1109
- JSON, or violates the shape — ``--repair wizard-state`` resets it.
1110
- """
1111
- state_pth = _wizard_state_path()
1112
- if not state_pth.exists():
1113
- return {
1114
- "id": "wizard-state", "status": "ok",
1115
- "message": "no active wizard session",
1116
- "remedy": "",
1117
- }
1118
- try:
1119
- raw = state_pth.read_text(encoding="utf-8")
1120
- except OSError as exc:
1121
- return {
1122
- "id": "wizard-state", "status": "fail",
1123
- "message": f"unreadable wizard-state at {state_pth}: {exc}",
1124
- "remedy": "agent-config doctor --repair wizard-state",
1125
- }
1126
- try:
1127
- data = json.loads(raw)
1128
- except json.JSONDecodeError as exc:
1129
- return {
1130
- "id": "wizard-state", "status": "fail",
1131
- "message": f"malformed JSON in wizard-state ({exc.msg} at line {exc.lineno})",
1132
- "remedy": "agent-config doctor --repair wizard-state",
1133
- }
1134
- if not isinstance(data, dict):
1135
- return {
1136
- "id": "wizard-state", "status": "fail",
1137
- "message": f"wizard-state root is {type(data).__name__}, expected object",
1138
- "remedy": "agent-config doctor --repair wizard-state",
1139
- }
1140
- step = data.get("step")
1141
- partial = data.get("partial", {})
1142
- if not isinstance(step, int) or step < 0:
1143
- return {
1144
- "id": "wizard-state", "status": "fail",
1145
- "message": f"wizard-state.step is {step!r}, expected non-negative integer",
1146
- "remedy": "agent-config doctor --repair wizard-state",
1147
- }
1148
- if not isinstance(partial, dict):
1149
- return {
1150
- "id": "wizard-state", "status": "fail",
1151
- "message": f"wizard-state.partial is {type(partial).__name__}, expected object",
1152
- "remedy": "agent-config doctor --repair wizard-state",
1153
- }
1154
- total = data.get("totalSteps")
1155
- if total is not None and (not isinstance(total, int) or total < 1):
1156
- return {
1157
- "id": "wizard-state", "status": "fail",
1158
- "message": f"wizard-state.totalSteps is {total!r}, expected positive integer or omitted",
1159
- "remedy": "agent-config doctor --repair wizard-state",
1160
- }
1161
- suffix = f" of {total}" if isinstance(total, int) else ""
1162
- return {
1163
- "id": "wizard-state", "status": "ok",
1164
- "message": f"resumable wizard session at step {step + 1}{suffix}",
1165
- "remedy": "",
1166
- }
1167
-
1168
-
1169
- def _run_checks(
1170
- project_root: Path,
1171
- manifest: dict[str, Any],
1172
- drift: dict[str, list[dict[str, Any]]],
1173
- only: str | None = None,
1174
- ) -> list[dict[str, Any]]:
1175
- """Run the health-check registry and return ordered structured results.
1176
-
1177
- ``only`` filters to a single check id; ``None`` runs the full set.
1178
- """
1179
- runners: dict[str, Any] = {
1180
- "scope": lambda: _check_scope(project_root),
1181
- "global-binary": lambda: _check_global_binary(project_root),
1182
- "manifest-integrity": lambda: _check_manifest_integrity(manifest),
1183
- "lockfile-freshness": lambda: _check_lockfile_freshness(manifest),
1184
- "bridge-drift": lambda: _check_bridge_drift(
1185
- drift["missing"], drift["modified"],
1186
- drift["foreign"], drift["tag_drift"],
1187
- ),
1188
- "mcp-mode": lambda: _check_mcp_mode(project_root),
1189
- "mcp-beta-readiness": lambda: _check_mcp_beta_readiness(project_root),
1190
- "offline-readiness": lambda: _check_offline_readiness(),
1191
- "python-runtime": lambda: _check_python_runtime(),
1192
- "tier-usage-readiness": lambda: _check_tier_usage_readiness(project_root),
1193
- "council-cli": lambda: _check_council_cli(project_root),
1194
- "unsupported-combos": lambda: _check_unsupported_combos(manifest),
1195
- "wizard-state": _check_wizard_state,
1196
- }
1197
- out: list[dict[str, Any]] = []
1198
- for cid in CHECK_IDS:
1199
- if only is not None and cid != only:
1200
- continue
1201
- out.append(runners[cid]())
1202
- return out
1203
-
1204
-
1205
- def _skipped_manifest_check(check_id: str) -> dict[str, Any]:
1206
- """A ``skipped`` verdict for a manifest-required check with no lockfile.
1207
-
1208
- Explicit machine-readable record (not omitted, not ``null``) so the
1209
- ``--json`` ``checks`` array keeps a stable shape for a global-only
1210
- consumer — a council convergence point (2026-06-02).
1211
- """
1212
- return {
1213
- "id": check_id, "status": "skipped",
1214
- "message": "requires a project lockfile (agents/installed-tools.lock)",
1215
- "remedy": "run `agent-config init` to create a project lockfile, "
1216
- "then re-run this check",
1217
- }
1218
-
1219
-
1220
- def _check_bridge_drift_no_manifest(bridge_present: bool) -> dict[str, Any]:
1221
- """Scope-aware ``bridge-drift`` verdict when no project manifest exists.
1222
-
1223
- Kept out of :func:`_check_bridge_drift` (which stays a pure
1224
- manifest-derived roll-up) per the council's single-responsibility
1225
- point. A global-only consumer has no distributed tools to drift, so
1226
- a bridge-present repo reports ``ok`` ("not applicable"); a repo with
1227
- neither lockfile nor bridge marker reports ``skipped``.
1228
- """
1229
- if bridge_present:
1230
- return {
1231
- "id": "bridge-drift", "status": "ok",
1232
- "message": "no project lockfile → distributed-tool drift not "
1233
- "applicable (global-only consumer)",
1234
- "remedy": "",
1235
- }
1236
- return {
1237
- "id": "bridge-drift", "status": "skipped",
1238
- "message": "no project lockfile and no bridge marker → drift check "
1239
- "not applicable",
1240
- "remedy": "run `agent-config init` (project install) or "
1241
- "`agent-config refresh --project` (global-only consumer)",
1242
- }
1243
-
1244
-
1245
- def _run_checks_no_manifest(
1246
- project_root: Path,
1247
- bridge_present: bool,
1248
- only: str | None = None,
1249
- ) -> list[dict[str, Any]]:
1250
- """Run the registry with no project manifest available.
1251
-
1252
- Mirrors :func:`_run_checks` and preserves :data:`CHECK_IDS` order.
1253
- Global checks (:data:`GLOBAL_CHECK_IDS`) run unchanged; manifest-required
1254
- checks (:data:`MANIFEST_REQUIRED_CHECK_IDS`) report ``skipped``;
1255
- ``bridge-drift`` gets the scope-aware no-manifest verdict.
1256
- """
1257
- runners: dict[str, Any] = {
1258
- "scope": lambda: _check_scope(project_root),
1259
- "global-binary": lambda: _check_global_binary(project_root),
1260
- "manifest-integrity": lambda: _skipped_manifest_check("manifest-integrity"),
1261
- "lockfile-freshness": lambda: _skipped_manifest_check("lockfile-freshness"),
1262
- "bridge-drift": lambda: _check_bridge_drift_no_manifest(bridge_present),
1263
- "mcp-mode": lambda: _check_mcp_mode(project_root),
1264
- "mcp-beta-readiness": lambda: _check_mcp_beta_readiness(project_root),
1265
- "offline-readiness": lambda: _check_offline_readiness(),
1266
- "python-runtime": lambda: _check_python_runtime(),
1267
- "tier-usage-readiness": lambda: _check_tier_usage_readiness(project_root),
1268
- "council-cli": lambda: _check_council_cli(project_root),
1269
- "unsupported-combos": lambda: _skipped_manifest_check("unsupported-combos"),
1270
- "wizard-state": _check_wizard_state,
1271
- }
1272
- out: list[dict[str, Any]] = []
1273
- for cid in CHECK_IDS:
1274
- if only is not None and cid != only:
1275
- continue
1276
- out.append(runners[cid]())
1277
- return out
1278
-
1279
-
1280
- def _run_no_manifest(
1281
- opts: argparse.Namespace,
1282
- project_root: Path,
1283
- origin: str,
1284
- bridge_present: bool,
1285
- ) -> int:
1286
- """Handle the no-project-lockfile path without the old hard bail.
1287
-
1288
- Exit-code contract (council-defined, 2026-06-02):
1289
-
1290
- * ``0`` — bare report for a recognised global-only consumer
1291
- (bridge marker present), or a single global ``--check`` that passed.
1292
- * ``1`` — a runnable health check requested via ``--check`` failed.
1293
- * ``2`` — a requested ``--check`` cannot run (manifest-required check
1294
- with no lockfile, or ``bridge-drift`` with neither lockfile nor
1295
- bridge marker), or a bare report in an **uninitialised** repo
1296
- (neither lockfile nor bridge marker) — preserves the spirit of the
1297
- pre-existing "run init" signal while still printing a real report.
1298
- """
1299
- checks = _run_checks_no_manifest(project_root, bridge_present, only=opts.check)
1300
- fail_check = any(c["status"] == "fail" for c in checks)
1301
- skipped_requested = opts.check is not None and any(
1302
- c["id"] == opts.check and c["status"] == "skipped" for c in checks
1303
- )
1304
-
1305
- if opts.json:
1306
- _emit_json(project_root, [], [], [], [], checks=checks, origin=origin)
1307
- elif opts.check is None:
1308
- print(f" 📍 project_root: {project_root} (origin: {origin})")
1309
- if bridge_present:
1310
- print(" ℹ️ global-only consumer: bridge marker present, no "
1311
- "project lockfile (expected under ADR-020)")
1312
- print(" project-manifest checks are skipped — they apply only "
1313
- "to project-local distributed tools")
1314
- else:
1315
- print(" ⚠️ no project lockfile and no bridge marker at "
1316
- f"{project_root}", file=sys.stderr)
1317
- print(" run `agent-config init` (project install) or "
1318
- "`agent-config refresh --project` (global-only consumer)",
1319
- file=sys.stderr)
1320
- _emit_checks_text(checks)
1321
- else:
1322
- _emit_checks_text(checks)
1323
-
1324
- if opts.check is not None:
1325
- if skipped_requested:
1326
- return 2
1327
- return 1 if fail_check else 0
1328
- return 0 if bridge_present else 2
1329
-
1330
-
1331
- def _emit_json(
1332
- project_root: Path,
1333
- missing: list[dict[str, Any]],
1334
- modified: list[dict[str, Any]],
1335
- foreign: list[dict[str, Any]],
1336
- tag_drift: list[dict[str, Any]],
1337
- checks: list[dict[str, Any]] | None = None,
1338
- origin: str | None = None,
1339
- ) -> None:
1340
- payload: dict[str, Any] = {
1341
- "project_root": str(project_root),
1342
- "missing": missing,
1343
- "modified": modified,
1344
- "foreign": foreign,
1345
- "tag_drift": tag_drift,
1346
- }
1347
- if origin is not None:
1348
- payload["project_root_origin"] = origin
1349
- if checks is not None:
1350
- payload["checks"] = checks
1351
- print(json.dumps(payload, indent=2))
1352
-
1353
-
1354
- def _emit_checks_text(checks: list[dict[str, Any]]) -> None:
1355
- """Render the health-check block above the drift section."""
1356
- if not checks:
1357
- return
1358
- print("checks:")
1359
- for c in checks:
1360
- sym = STATUS_SYMBOLS.get(c["status"], "?")
1361
- print(f" {sym} {c['id']}: {c['message']}")
1362
- if c["status"] != "ok" and c.get("remedy"):
1363
- print(f" fix: {c['remedy']}")
1364
- print("")
1365
-
1366
-
1367
- def _emit_text(
1368
- project_root: Path,
1369
- missing: list[dict[str, Any]],
1370
- modified: list[dict[str, Any]],
1371
- foreign: list[dict[str, Any]],
1372
- tag_drift: list[dict[str, Any]],
1373
- ) -> None:
1374
- total = len(missing) + len(modified) + len(foreign) + len(tag_drift)
1375
- if total == 0:
1376
- print(f"✅ doctor: manifest matches filesystem under {project_root}")
1377
- return
1378
- print(f"⚠️ doctor: {total} drift item(s) under {project_root}")
1379
- for label, items in (
1380
- ("missing", missing),
1381
- ("modified", modified),
1382
- ("foreign", foreign),
1383
- ("tag-drift", tag_drift),
1384
- ):
1385
- if not items:
1386
- continue
1387
- print(f"\n {label} ({len(items)}):")
1388
- for it in items:
1389
- tool = it["tool"] or "?"
1390
- print(f" · [{tool}] {it['path']}")
1391
- if label == "tag-drift":
1392
- found = it.get("found") or "(missing)"
1393
- expected = it.get("expected", PACKAGE_TAG_ID)
1394
- print(f" expected: {expected}")
1395
- print(f" found: {found}")
1396
- print(f" fix: {it['fix']}")
1397
-
1398
-
1399
- def _parse(argv: list[str]) -> argparse.Namespace:
1400
- parser = argparse.ArgumentParser(
1401
- prog="agent-config doctor",
1402
- description=(
1403
- "Manifest ↔ filesystem drift report plus install health "
1404
- "checks. See --check for the individual check ids."
1405
- ),
1406
- )
1407
- parser.add_argument("--project", default=None,
1408
- help="project root (default: cwd)")
1409
- parser.add_argument("--json", action="store_true",
1410
- help="emit a JSON report instead of human text")
1411
- parser.add_argument(
1412
- "--check", default=None, metavar="ID",
1413
- choices=list(CHECK_IDS),
1414
- help=("run a single health check by id "
1415
- f"({' · '.join(CHECK_IDS)})"),
1416
- )
1417
- parser.add_argument(
1418
- "--trace-root", action="store_true",
1419
- help=("print every ancestor checked during project-root discovery "
1420
- "plus the winning anchor; short-circuits the drift report"),
1421
- )
1422
- parser.add_argument(
1423
- "--context", action="store_true",
1424
- help=("print effective project root, anchor, env-pin, settings "
1425
- "layer chain, wrapper, and install-mode; short-circuits "
1426
- "the drift report"),
1427
- )
1428
- parser.add_argument(
1429
- "--repair", default=None, metavar="ID",
1430
- choices=list(REPAIR_IDS),
1431
- help=("reset a recoverable artefact and exit "
1432
- f"({' · '.join(REPAIR_IDS)}); short-circuits the drift "
1433
- "report. Idempotent — absent files report 'nothing to "
1434
- "repair' and exit 0."),
1435
- )
1436
- return parser.parse_args(argv)
1437
-
1438
-
1439
- def _run_trace_root(opts: argparse.Namespace) -> int:
1440
- """Handle ``--trace-root``: discovery walk + records, no drift report."""
1441
- start = Path.cwd()
1442
- root, anchor, trace = find_project_root_with_trace(start)
1443
- # Determine origin label even when no anchor is found.
1444
- if os.environ.get(ROOT_OVERRIDE_ENV) == "1" and os.environ.get(PROJECT_ROOT_ENV):
1445
- origin = "root-flag"
1446
- elif opts.project:
1447
- origin = "explicit"
1448
- elif os.environ.get(PROJECT_ROOT_ENV):
1449
- origin = "env"
1450
- elif root is not None:
1451
- origin = anchor or "unknown"
1452
- else:
1453
- origin = "cwd-fallback"
1454
- if opts.json:
1455
- _emit_trace_json(root, anchor, trace, origin)
1456
- else:
1457
- _emit_trace_text(root, anchor, trace, origin)
1458
- return 0
1459
-
1460
-
1461
- def _run_context(opts: argparse.Namespace) -> int:
1462
- """Handle ``--context``: install + discovery snapshot, no drift report."""
1463
- try:
1464
- project_root, origin = _resolve_project_root(opts.project)
1465
- except ProjectRootError as exc:
1466
- print(f"❌ doctor: {exc}", file=sys.stderr)
1467
- return 2
1468
- mode, mode_source = _detect_install_mode(project_root)
1469
- ctx: dict[str, Any] = {
1470
- "project_root": str(project_root),
1471
- "origin": origin,
1472
- "install_mode": mode,
1473
- "install_mode_source": mode_source,
1474
- "env_pin": os.environ.get(PROJECT_ROOT_ENV) or None,
1475
- "root_override": os.environ.get(ROOT_OVERRIDE_ENV) == "1",
1476
- "settings_layers": _settings_layer_chain(project_root),
1477
- "wrapper": _detect_wrapper(project_root),
1478
- }
1479
- if opts.json:
1480
- print(json.dumps(ctx, indent=2))
1481
- else:
1482
- _emit_context_text(ctx)
1483
- return 0
1484
-
1485
-
1486
- def _run_repair(opts: argparse.Namespace) -> int:
1487
- """Handle ``--repair <id>``: reset the named artefact, no drift report.
1488
-
1489
- Currently the only target is ``wizard-state`` — unlinks the
1490
- resumable session file so the next ``agent-config setup`` boots
1491
- from step 1. Absent files are a no-op (idempotent re-run).
1492
- """
1493
- target = opts.repair
1494
- if target == "wizard-state":
1495
- state_pth = _wizard_state_path()
1496
- payload = {
1497
- "id": "wizard-state",
1498
- "path": str(state_pth),
1499
- "action": "remove" if state_pth.exists() else "noop",
1500
- }
1501
- if state_pth.exists():
1502
- try:
1503
- state_pth.unlink()
1504
- except OSError as exc:
1505
- payload["action"] = "error"
1506
- payload["error"] = str(exc)
1507
- if opts.json:
1508
- print(json.dumps(payload, indent=2))
1509
- else:
1510
- print(f"❌ doctor: could not remove {state_pth}: {exc}",
1511
- file=sys.stderr)
1512
- return 2
1513
- if opts.json:
1514
- print(json.dumps(payload, indent=2))
1515
- else:
1516
- if payload["action"] == "remove":
1517
- print(f"✅ doctor: reset wizard-state ({state_pth})")
1518
- else:
1519
- print(f"✅ doctor: nothing to repair (no wizard-state at {state_pth})")
1520
- return 0
1521
- # argparse `choices=` already constrains target; defensive default.
1522
- print(f"❌ doctor: unknown repair target {target!r}", file=sys.stderr)
1523
- return 2
1524
-
1525
-
1526
- def main(argv: list[str] | None = None) -> int:
1527
- opts = _parse(list(argv) if argv is not None else sys.argv[1:])
1528
- if opts.repair is not None:
1529
- return _run_repair(opts)
1530
- if opts.trace_root:
1531
- return _run_trace_root(opts)
1532
- if opts.context:
1533
- return _run_context(opts)
1534
- try:
1535
- project_root, origin = _resolve_project_root(opts.project)
1536
- except ProjectRootError as exc:
1537
- print(f"❌ doctor: {exc}", file=sys.stderr)
1538
- return 2
1539
- manifest_pth = installed_tools.manifest_path(project_root)
1540
- manifest = installed_tools.read_manifest(manifest_pth)
1541
- if manifest is None:
1542
- # No project lockfile. Under ADR-020 global-only this is a
1543
- # legitimate state, not an error — run the lockfile-independent
1544
- # checks and report consumer state instead of a hard bail. The
1545
- # per-scope split + exit-code contract live in _run_no_manifest.
1546
- bridge_present = (project_root / BRIDGE_MARKER_RELATIVE).is_file()
1547
- return _run_no_manifest(opts, project_root, origin, bridge_present)
1548
-
1549
- records, known = _collect_manifest_entries(project_root, manifest)
1550
- missing, modified, tag_drift = _classify(records)
1551
- foreign = _foreign_records(
1552
- project_root, _scan_foreign(project_root, manifest, known),
1553
- )
1554
- drift_groups = {
1555
- "missing": missing, "modified": modified,
1556
- "foreign": foreign, "tag_drift": tag_drift,
1557
- }
1558
- checks = _run_checks(project_root, manifest, drift_groups, only=opts.check)
1559
- fail_check = any(c["status"] == "fail" for c in checks)
1560
-
1561
- if opts.json:
1562
- _emit_json(
1563
- project_root, missing, modified, foreign, tag_drift,
1564
- checks=checks, origin=origin,
1565
- )
1566
- else:
1567
- if opts.check is None:
1568
- print(f" 📍 project_root: {project_root} (origin: {origin})")
1569
- _emit_checks_text(checks)
1570
- if opts.check is None:
1571
- _emit_text(project_root, missing, modified, foreign, tag_drift)
1572
-
1573
- # Full-suite mode: exit code reflects drift only; failing health
1574
- # checks are surfaced visually but do not change the rc, preserving
1575
- # the original drift-detection contract. ``--check <id>`` mode is
1576
- # explicit and propagates the single check's verdict.
1577
- if opts.check is not None:
1578
- return 1 if fail_check else 0
1579
- return 1 if (missing or modified or foreign or tag_drift) else 0
1580
-
1581
-
1582
- if __name__ == "__main__": # pragma: no cover
1583
- raise SystemExit(main())