@event4u/agent-config 8.0.0 → 8.2.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 (593) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +53 -568
  3. package/dist/agent-src/commands/agents/init.md +3 -3
  4. package/dist/agent-src/commands/chat-history/import.md +5 -5
  5. package/dist/agent-src/commands/chat-history.md +1 -1
  6. package/dist/agent-src/commands/condense.md +1 -1
  7. package/dist/agent-src/commands/context/create.md +1 -1
  8. package/dist/agent-src/commands/council/analysis.md +2 -2
  9. package/dist/agent-src/commands/council/default.md +3 -3
  10. package/dist/agent-src/commands/council/design.md +2 -2
  11. package/dist/agent-src/commands/council/optimize.md +1 -1
  12. package/dist/agent-src/commands/council/pr.md +2 -2
  13. package/dist/agent-src/commands/council.md +1 -1
  14. package/dist/agent-src/commands/feature/plan.md +1 -1
  15. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  16. package/dist/agent-src/commands/ghostwriter/write.md +1 -1
  17. package/dist/agent-src/commands/ghostwriter.md +1 -1
  18. package/dist/agent-src/commands/implement-ticket.md +2 -2
  19. package/dist/agent-src/commands/judge/on-diff.md +1 -1
  20. package/dist/agent-src/commands/judge/steps.md +3 -1
  21. package/dist/agent-src/commands/memory/add.md +2 -2
  22. package/dist/agent-src/commands/memory/learn-low-impact.md +1 -1
  23. package/dist/agent-src/commands/memory/load.md +1 -1
  24. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  25. package/dist/agent-src/commands/memory/promote.md +1 -1
  26. package/dist/agent-src/commands/memory/propose.md +1 -1
  27. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  28. package/dist/agent-src/commands/module/explore.md +3 -3
  29. package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
  30. package/dist/agent-src/commands/optimize/skills.md +1 -1
  31. package/dist/agent-src/commands/optimize-project.md +1 -1
  32. package/dist/agent-src/commands/orchestrate.md +2 -2
  33. package/dist/agent-src/commands/project-analyze.md +1 -1
  34. package/dist/agent-src/commands/project-health.md +1 -1
  35. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  36. package/dist/agent-src/commands/roadmap/create.md +2 -2
  37. package/dist/agent-src/commands/roadmap/process-full.md +3 -1
  38. package/dist/agent-src/commands/roadmap/process-phase.md +4 -2
  39. package/dist/agent-src/commands/roadmap/process-step.md +3 -1
  40. package/dist/agent-src/commands/security-audit-config.md +1 -1
  41. package/dist/agent-src/commands/sync-agent-settings.md +7 -7
  42. package/dist/agent-src/commands/sync-gitignore/fix.md +3 -3
  43. package/dist/agent-src/commands/sync-gitignore.md +4 -4
  44. package/dist/agent-src/commands/work.md +3 -3
  45. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  46. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
  47. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +1 -1
  48. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -7
  49. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  50. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +9 -4
  51. package/dist/agent-src/contexts/execution/toolchain-resolver.md +10 -9
  52. package/dist/agent-src/contexts/execution/verification-mechanics.md +13 -1
  53. package/dist/agent-src/packs/README.md +1 -1
  54. package/dist/agent-src/presets/README.md +1 -1
  55. package/dist/agent-src/profiles/README.md +1 -1
  56. package/dist/agent-src/rules/architecture.md +2 -2
  57. package/dist/agent-src/rules/commit-policy.md +10 -0
  58. package/dist/agent-src/rules/context-hygiene.md +2 -2
  59. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
  60. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  61. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
  62. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
  63. package/dist/agent-src/rules/media-governance-routing.md +1 -1
  64. package/dist/agent-src/rules/no-roadmap-references.md +3 -3
  65. package/dist/agent-src/rules/preservation-guard.md +2 -2
  66. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
  67. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
  68. package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
  69. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  70. package/dist/agent-src/rules/telegraph-speak.md +1 -1
  71. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  72. package/dist/agent-src/rules/ui-audit-gate.md +1 -1
  73. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
  74. package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
  75. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
  76. package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
  77. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  78. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  79. package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
  80. package/dist/agent-src/skills/api-design/SKILL.md +1 -1
  81. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
  82. package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
  83. package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
  84. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
  85. package/dist/agent-src/skills/code-review/SKILL.md +3 -4
  86. package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
  87. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  88. package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
  89. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  90. package/dist/agent-src/skills/context-document/SKILL.md +1 -1
  91. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
  92. package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
  93. package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
  94. package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
  95. package/dist/agent-src/skills/database/SKILL.md +2 -1
  96. package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
  97. package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
  98. package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
  99. package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
  100. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
  101. package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
  102. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
  103. package/dist/agent-src/skills/flux/SKILL.md +10 -9
  104. package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
  105. package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
  106. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
  107. package/dist/agent-src/skills/livewire/SKILL.md +10 -9
  108. package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
  109. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
  110. package/dist/agent-src/skills/module-management/SKILL.md +2 -2
  111. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
  112. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
  113. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
  114. package/dist/agent-src/skills/premortem/SKILL.md +1 -1
  115. package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
  116. package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
  117. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
  118. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
  119. package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
  120. package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
  121. package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
  122. package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
  123. package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
  124. package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
  125. package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
  126. package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
  127. package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
  128. package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
  129. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
  130. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  131. package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
  132. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
  133. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
  134. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  135. package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
  136. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
  137. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
  138. package/dist/agent-src/templates/agent-settings.md +34 -25
  139. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  140. package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
  141. package/dist/agent-src/templates/agents/proposal.example.md +4 -4
  142. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  143. package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
  144. package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
  145. package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
  146. package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
  147. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
  148. package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
  149. package/dist/agent-src/templates/roadmaps.md +9 -4
  150. package/dist/agent-src/templates/rule.md +3 -3
  151. package/dist/agent-src/templates/scripts/README.md +6 -6
  152. package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
  153. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
  154. package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
  155. package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
  156. package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
  157. package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
  158. package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
  159. package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
  160. package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  161. package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
  162. package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
  163. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  164. package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
  165. package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
  166. package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
  167. package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
  168. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
  169. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
  170. package/dist/agent-src/templates/skill.md +2 -2
  171. package/dist/cli/python/knowledge_ingest.js +24 -3
  172. package/dist/cli/python/knowledge_ingest.js.map +1 -1
  173. package/dist/cli/python/workspace_analytics.js +23 -3
  174. package/dist/cli/python/workspace_analytics.js.map +1 -1
  175. package/dist/cli/python/workspace_crypto.js +23 -3
  176. package/dist/cli/python/workspace_crypto.js.map +1 -1
  177. package/dist/cli/python/workspace_documents.js +23 -3
  178. package/dist/cli/python/workspace_documents.js.map +1 -1
  179. package/dist/cli/python/workspace_drive.js +24 -3
  180. package/dist/cli/python/workspace_drive.js.map +1 -1
  181. package/dist/cli/python/workspace_drive_health.js +23 -3
  182. package/dist/cli/python/workspace_drive_health.js.map +1 -1
  183. package/dist/cli/python/workspace_explain.js +23 -3
  184. package/dist/cli/python/workspace_explain.js.map +1 -1
  185. package/dist/cli/python/workspace_hosts.js +23 -3
  186. package/dist/cli/python/workspace_hosts.js.map +1 -1
  187. package/dist/cli/python/workspace_inbox.js +23 -3
  188. package/dist/cli/python/workspace_inbox.js.map +1 -1
  189. package/dist/cli/python/workspace_render.js +23 -3
  190. package/dist/cli/python/workspace_render.js.map +1 -1
  191. package/dist/cli/python/workspace_roles.js +23 -3
  192. package/dist/cli/python/workspace_roles.js.map +1 -1
  193. package/dist/cli/python/workspace_sessions.js +23 -3
  194. package/dist/cli/python/workspace_sessions.js.map +1 -1
  195. package/dist/cli/python/workspace_skills.js +23 -3
  196. package/dist/cli/python/workspace_skills.js.map +1 -1
  197. package/dist/cli/registry.js +2 -0
  198. package/dist/cli/registry.js.map +1 -1
  199. package/dist/discovery/deprecation-report.md +1 -1
  200. package/dist/discovery/discovery-manifest.json +119 -119
  201. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  202. package/dist/discovery/discovery-manifest.summary.md +2 -2
  203. package/dist/discovery/orphan-report.md +1 -1
  204. package/dist/discovery/packs.json +3 -3
  205. package/dist/discovery/trust-report.md +1 -1
  206. package/dist/discovery/workspaces.json +3 -3
  207. package/dist/install/install.mjs +67 -28
  208. package/dist/mcp/registry-manifest.json +2 -2
  209. package/dist/server/routes/settings.js +4 -4
  210. package/dist/server/routes/settings.js.map +1 -1
  211. package/dist/server/schemas/settings.js +1 -1
  212. package/dist/server/schemas/settings.js.map +1 -1
  213. package/docs/CLAIMS.md +2 -2
  214. package/docs/archive/CHANGELOG-pre-8.0.0.md +301 -0
  215. package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
  216. package/docs/benchmark.md +40 -0
  217. package/docs/contracts/skill-bundled-assets.md +2 -2
  218. package/docs/customization.md +1 -1
  219. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
  220. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
  221. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
  222. package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
  223. package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
  224. package/docs/guidelines/agent-infra/layered-settings.md +4 -4
  225. package/docs/guidelines/agent-infra/memory-access.md +19 -18
  226. package/docs/guidelines/agent-infra/naming.md +1 -1
  227. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
  228. package/docs/guidelines/agent-infra/role-contracts.md +1 -1
  229. package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
  230. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
  231. package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
  232. package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
  233. package/docs/guidelines/augment-portability-patterns.md +1 -1
  234. package/docs/proof.md +1 -1
  235. package/docs/setup/per-ide/claude-code.md +10 -4
  236. package/package.json +3 -2
  237. package/src/config/agent-settings.template.yml +31 -17
  238. package/src/config/host-capabilities.yml +25 -16
  239. package/src/config/profiles/balanced.ini +5 -3
  240. package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
  241. package/src/scripts/_cli/cmd_conformance.ts +23 -4
  242. package/src/scripts/_cli/cmd_doctor.ts +96 -8
  243. package/src/scripts/_cli/cmd_explain.ts +23 -4
  244. package/src/scripts/_cli/cmd_export.ts +23 -4
  245. package/src/scripts/_cli/cmd_fleet.ts +23 -4
  246. package/src/scripts/_cli/cmd_migrate.ts +23 -4
  247. package/src/scripts/_cli/cmd_preflight.ts +24 -4
  248. package/src/scripts/_cli/cmd_prune.ts +23 -4
  249. package/src/scripts/_cli/cmd_refresh.ts +23 -4
  250. package/src/scripts/_cli/cmd_settings_check.ts +23 -4
  251. package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
  252. package/src/scripts/_cli/cmd_sync.ts +23 -4
  253. package/src/scripts/_cli/cmd_uninstall.ts +23 -4
  254. package/src/scripts/_cli/cmd_update.ts +23 -4
  255. package/src/scripts/_cli/cmd_upgrade.ts +238 -9
  256. package/src/scripts/_cli/cmd_validate.ts +23 -4
  257. package/src/scripts/_cli/cmd_versions.ts +23 -4
  258. package/src/scripts/_dispatch.bash +62 -19
  259. package/src/scripts/_lib/claude_plugin.ts +83 -0
  260. package/src/scripts/_lib/knowledge_global.ts +24 -2
  261. package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
  262. package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
  263. package/src/scripts/_lib/link_crypto.ts +24 -5
  264. package/src/scripts/_lib/pin_resolver.ts +24 -3
  265. package/src/scripts/adoption_report.ts +23 -4
  266. package/src/scripts/adoption_snapshot.ts +23 -1
  267. package/src/scripts/adoption_status.ts +23 -4
  268. package/src/scripts/adr/regenerate_index.ts +24 -3
  269. package/src/scripts/ai_council/airgap.ts +25 -2
  270. package/src/scripts/ai_council/compile_corpus.ts +24 -2
  271. package/src/scripts/ai_council/pricing.ts +11 -1
  272. package/src/scripts/analysis_freshness.ts +23 -4
  273. package/src/scripts/annotate_discovery.ts +23 -1
  274. package/src/scripts/apply_modules_config.ts +23 -4
  275. package/src/scripts/audit_adr_coverage.ts +23 -4
  276. package/src/scripts/audit_auto_rules.ts +23 -1
  277. package/src/scripts/audit_cloud_compatibility.ts +23 -4
  278. package/src/scripts/audit_command_surface.ts +23 -4
  279. package/src/scripts/audit_initial_context.ts +23 -3
  280. package/src/scripts/audit_likelihood.ts +23 -1
  281. package/src/scripts/audit_mcp_tools.ts +23 -3
  282. package/src/scripts/audit_overlap.ts +23 -1
  283. package/src/scripts/audit_skill_descriptions.ts +24 -2
  284. package/src/scripts/audit_skill_overlap.ts +23 -1
  285. package/src/scripts/audit_user_type_axis.ts +23 -4
  286. package/src/scripts/backfill_model_tier.ts +23 -4
  287. package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
  288. package/src/scripts/bench_ab_clone.ts +23 -1
  289. package/src/scripts/bench_ab_diff.ts +23 -1
  290. package/src/scripts/bench_ab_integrity.ts +23 -1
  291. package/src/scripts/bench_ab_run.ts +23 -2
  292. package/src/scripts/bench_ab_task_runner.ts +23 -1
  293. package/src/scripts/bench_ab_tracka_run.ts +23 -2
  294. package/src/scripts/bench_ab_v2_run.ts +23 -1
  295. package/src/scripts/bench_ab_v2_stats.ts +23 -1
  296. package/src/scripts/bench_baseline_ready.ts +23 -1
  297. package/src/scripts/bench_condense_memory.ts +23 -1
  298. package/src/scripts/bench_drift_check.ts +23 -2
  299. package/src/scripts/bench_matrix.ts +23 -4
  300. package/src/scripts/bench_per_tool.ts +23 -1
  301. package/src/scripts/bench_quality_run.ts +23 -2
  302. package/src/scripts/bench_rtk_savings.ts +23 -1
  303. package/src/scripts/bench_rule_load_latency.ts +23 -2
  304. package/src/scripts/bench_run.ts +23 -2
  305. package/src/scripts/bench_runner.ts +23 -1
  306. package/src/scripts/build_cloud_bundle.ts +23 -3
  307. package/src/scripts/build_discovery_manifest.ts +23 -4
  308. package/src/scripts/build_linear_digest.ts +23 -3
  309. package/src/scripts/build_mcp_registry_manifest.ts +23 -4
  310. package/src/scripts/build_rule_trigger_matrix.ts +23 -4
  311. package/src/scripts/capture_showcase_session.ts +23 -1
  312. package/src/scripts/chat_history.ts +24 -3
  313. package/src/scripts/check_always_budget.ts +23 -2
  314. package/src/scripts/check_artefact_checksums.ts +23 -4
  315. package/src/scripts/check_augment_description_cap.ts +23 -4
  316. package/src/scripts/check_augmentignore.ts +23 -4
  317. package/src/scripts/check_beta_review_markers.ts +23 -4
  318. package/src/scripts/check_cluster_patterns.ts +23 -4
  319. package/src/scripts/check_command_count_messaging.ts +23 -4
  320. package/src/scripts/check_comparison.ts +23 -1
  321. package/src/scripts/check_condensation.ts +24 -3
  322. package/src/scripts/check_condensed_paths.ts +23 -2
  323. package/src/scripts/check_context_paths.ts +23 -4
  324. package/src/scripts/check_council_config_location.ts +23 -4
  325. package/src/scripts/check_council_layout.ts +23 -4
  326. package/src/scripts/check_council_references.ts +23 -4
  327. package/src/scripts/check_discovery_determinism.ts +24 -4
  328. package/src/scripts/check_gate_paths.ts +23 -4
  329. package/src/scripts/check_generated_artefact_headers.ts +23 -4
  330. package/src/scripts/check_generator_output_coverage.ts +23 -4
  331. package/src/scripts/check_gitignore_freshness.ts +23 -4
  332. package/src/scripts/check_iron_law_prominence.ts +23 -4
  333. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  334. package/src/scripts/check_kernel_rule_bundle.ts +23 -4
  335. package/src/scripts/check_knowledge_cards.ts +23 -1
  336. package/src/scripts/check_md_language.ts +23 -4
  337. package/src/scripts/check_media_deps.ts +24 -1
  338. package/src/scripts/check_memory.ts +24 -2
  339. package/src/scripts/check_memory_proposal.ts +23 -4
  340. package/src/scripts/check_module_management_neutral.ts +23 -4
  341. package/src/scripts/check_no_conflict_markers.ts +23 -4
  342. package/src/scripts/check_no_external_sources.ts +23 -4
  343. package/src/scripts/check_no_local_settings_committed.ts +24 -4
  344. package/src/scripts/check_no_new_legacy_path.ts +23 -4
  345. package/src/scripts/check_no_roadmap_refs.ts +23 -4
  346. package/src/scripts/check_one_off_location.ts +23 -4
  347. package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
  348. package/src/scripts/check_portability.ts +24 -3
  349. package/src/scripts/check_proposal.ts +0 -0
  350. package/src/scripts/check_public_catalog_links.ts +23 -4
  351. package/src/scripts/check_public_links.ts +23 -4
  352. package/src/scripts/check_quality_regression.ts +23 -2
  353. package/src/scripts/check_references.ts +23 -4
  354. package/src/scripts/check_release_includes_discovery.ts +23 -4
  355. package/src/scripts/check_release_pr_shape.ts +23 -4
  356. package/src/scripts/check_release_published.ts +23 -4
  357. package/src/scripts/check_release_trunk_sync.ts +23 -4
  358. package/src/scripts/check_reply_consistency.ts +23 -4
  359. package/src/scripts/check_roadmap_trackable.ts +23 -4
  360. package/src/scripts/check_role_doc_links.ts +23 -4
  361. package/src/scripts/check_safety_floor_untouched.ts +24 -4
  362. package/src/scripts/check_site_links.ts +23 -1
  363. package/src/scripts/check_skill_gaps.ts +23 -1
  364. package/src/scripts/check_skill_requires.ts +23 -4
  365. package/src/scripts/check_structural_breaking.ts +24 -4
  366. package/src/scripts/check_surface_tiers.ts +23 -4
  367. package/src/scripts/check_template_pin_drift.ts +23 -4
  368. package/src/scripts/check_test_coverage_diff.ts +23 -4
  369. package/src/scripts/check_token_optimizer_freshness.ts +23 -4
  370. package/src/scripts/check_token_quality_golden.ts +23 -2
  371. package/src/scripts/check_token_regression.ts +23 -2
  372. package/src/scripts/check_tracked_but_ignored.ts +24 -4
  373. package/src/scripts/check_trigger_evals.ts +23 -4
  374. package/src/scripts/check_trunk_drift.ts +24 -1
  375. package/src/scripts/check_update_banner.ts +23 -4
  376. package/src/scripts/ci_summary.ts +23 -4
  377. package/src/scripts/ci_time_ratio.ts +23 -4
  378. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  379. package/src/scripts/compile_router.ts +23 -4
  380. package/src/scripts/condense.ts +23 -2
  381. package/src/scripts/condense_memory.ts +24 -2
  382. package/src/scripts/config/packs.ts +24 -4
  383. package/src/scripts/config/session_profiles.ts +23 -4
  384. package/src/scripts/context_hygiene_hook.ts +24 -3
  385. package/src/scripts/cost_by_conversation.ts +23 -4
  386. package/src/scripts/cost_summary.ts +23 -4
  387. package/src/scripts/council_cli.ts +35 -7
  388. package/src/scripts/council_prune.ts +25 -2
  389. package/src/scripts/cross_repo_retrieve.ts +23 -4
  390. package/src/scripts/discovery_stats.ts +23 -4
  391. package/src/scripts/evidence_report.ts +23 -1
  392. package/src/scripts/export_replay_corpus.ts +23 -2
  393. package/src/scripts/extract_audit_patterns.ts +23 -1
  394. package/src/scripts/first_run_gate_hook.ts +24 -3
  395. package/src/scripts/gen_discovery_baseline.ts +23 -4
  396. package/src/scripts/generate_capabilities_index.ts +24 -5
  397. package/src/scripts/generate_capability_matrix.ts +23 -4
  398. package/src/scripts/generate_catalog.ts +23 -1
  399. package/src/scripts/generate_command_flows.ts +23 -4
  400. package/src/scripts/generate_cookbook.ts +23 -4
  401. package/src/scripts/generate_index.ts +23 -4
  402. package/src/scripts/generate_ownership_matrix.ts +23 -1
  403. package/src/scripts/generate_pack_manifests.ts +24 -5
  404. package/src/scripts/generate_role_experiences_catalog.ts +23 -4
  405. package/src/scripts/hooks/block_no_verify.ts +23 -4
  406. package/src/scripts/hooks/design_slop_hook.ts +24 -3
  407. package/src/scripts/hooks/dispatch_hook.ts +47 -14
  408. package/src/scripts/hooks/replay_hook.ts +23 -2
  409. package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
  410. package/src/scripts/hooks_doctor.ts +23 -2
  411. package/src/scripts/hooks_status.ts +23 -2
  412. package/src/scripts/injection_scan_hook.ts +24 -5
  413. package/src/scripts/install.ts +72 -44
  414. package/src/scripts/inventory_abstraction_budget.ts +23 -1
  415. package/src/scripts/inventory_frontmatter.ts +23 -1
  416. package/src/scripts/inventory_meta_layers.ts +23 -1
  417. package/src/scripts/iron_law_sha.ts +23 -4
  418. package/src/scripts/janitor.ts +23 -4
  419. package/src/scripts/knowledge_global_cli.ts +24 -2
  420. package/src/scripts/linked_projects_list.ts +23 -4
  421. package/src/scripts/lint_agent_security.ts +23 -4
  422. package/src/scripts/lint_agent_skill_names.ts +23 -4
  423. package/src/scripts/lint_agents_layout.ts +23 -4
  424. package/src/scripts/lint_agents_md.ts +23 -4
  425. package/src/scripts/lint_archived_skills.ts +23 -4
  426. package/src/scripts/lint_artefact_frontmatter.ts +23 -4
  427. package/src/scripts/lint_bench_ab.ts +23 -4
  428. package/src/scripts/lint_bench_corpus.ts +23 -2
  429. package/src/scripts/lint_command_flow_coverage.ts +23 -4
  430. package/src/scripts/lint_command_routing.ts +23 -4
  431. package/src/scripts/lint_command_tiers.ts +23 -2
  432. package/src/scripts/lint_command_verbs.ts +23 -4
  433. package/src/scripts/lint_commit_subjects.ts +24 -4
  434. package/src/scripts/lint_confusables.ts +25 -5
  435. package/src/scripts/lint_context_spine_usage.ts +23 -4
  436. package/src/scripts/lint_discovery_manifest.ts +23 -4
  437. package/src/scripts/lint_discovery_vocabulary.ts +23 -4
  438. package/src/scripts/lint_empty_roadmaps.ts +23 -4
  439. package/src/scripts/lint_eval_freshness.ts +23 -4
  440. package/src/scripts/lint_examples.ts +23 -4
  441. package/src/scripts/lint_explain_trace.ts +23 -4
  442. package/src/scripts/lint_featured_skills.ts +0 -0
  443. package/src/scripts/lint_flows.ts +23 -4
  444. package/src/scripts/lint_framework_leakage.ts +23 -4
  445. package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
  446. package/src/scripts/lint_ghostwriter_source.ts +23 -4
  447. package/src/scripts/lint_global_paths.ts +23 -2
  448. package/src/scripts/lint_handoffs.ts +23 -4
  449. package/src/scripts/lint_hidden_unicode.ts +24 -5
  450. package/src/scripts/lint_hook_concern_budget.ts +23 -4
  451. package/src/scripts/lint_hook_manifest.ts +23 -2
  452. package/src/scripts/lint_instruction_smuggling.ts +25 -5
  453. package/src/scripts/lint_legal_pack.ts +23 -1
  454. package/src/scripts/lint_load_context.ts +23 -4
  455. package/src/scripts/lint_marketplace.ts +24 -3
  456. package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
  457. package/src/scripts/lint_mcp_config_security.ts +25 -5
  458. package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
  459. package/src/scripts/lint_media_policy_linkage.ts +23 -4
  460. package/src/scripts/lint_missions.ts +23 -4
  461. package/src/scripts/lint_model_tier_coverage.ts +23 -4
  462. package/src/scripts/lint_namespace.ts +23 -4
  463. package/src/scripts/lint_namespace_collisions.ts +23 -4
  464. package/src/scripts/lint_new_skill_gate.ts +23 -4
  465. package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
  466. package/src/scripts/lint_one_off_age.ts +23 -4
  467. package/src/scripts/lint_orchestration_dsl.ts +23 -4
  468. package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
  469. package/src/scripts/lint_pack_boundaries.ts +23 -4
  470. package/src/scripts/lint_pack_dependencies.ts +23 -2
  471. package/src/scripts/lint_pack_first_win.ts +23 -4
  472. package/src/scripts/lint_pack_risk_class.ts +23 -1
  473. package/src/scripts/lint_persona_governance.ts +23 -4
  474. package/src/scripts/lint_positioning.ts +23 -4
  475. package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
  476. package/src/scripts/lint_readme_jargon.ts +23 -4
  477. package/src/scripts/lint_readme_size.ts +23 -4
  478. package/src/scripts/lint_regression.ts +23 -4
  479. package/src/scripts/lint_roadmap_blockers.ts +23 -4
  480. package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
  481. package/src/scripts/lint_roadmap_complexity.ts +23 -4
  482. package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
  483. package/src/scripts/lint_role_experiences.ts +23 -4
  484. package/src/scripts/lint_rule_interactions.ts +23 -4
  485. package/src/scripts/lint_rule_tiers.ts +24 -3
  486. package/src/scripts/lint_showcase_sessions.ts +23 -4
  487. package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
  488. package/src/scripts/lint_skill_originality.ts +23 -4
  489. package/src/scripts/lint_skill_tools.ts +23 -4
  490. package/src/scripts/lint_subagent_determinism.ts +23 -4
  491. package/src/scripts/lint_ticket_buildable.ts +23 -4
  492. package/src/scripts/lint_topics_yaml.ts +23 -4
  493. package/src/scripts/lint_trust_coherence.ts +23 -4
  494. package/src/scripts/lint_value_dashboard.ts +23 -4
  495. package/src/scripts/lint_workflow_security.ts +23 -4
  496. package/src/scripts/lint_workspace_boundary.ts +23 -4
  497. package/src/scripts/mcp_parity_smoke.ts +23 -2
  498. package/src/scripts/mcp_render.ts +23 -4
  499. package/src/scripts/mcp_telemetry_health.ts +23 -4
  500. package/src/scripts/mcp_telemetry_query.ts +23 -4
  501. package/src/scripts/mcp_telemetry_store.ts +23 -4
  502. package/src/scripts/measure_augment_budget.ts +23 -1
  503. package/src/scripts/measure_density.ts +23 -1
  504. package/src/scripts/measure_frugality_savings.ts +23 -1
  505. package/src/scripts/measure_markitdown_lift.ts +23 -1
  506. package/src/scripts/measure_patterns.ts +23 -1
  507. package/src/scripts/measure_projection_bytes.ts +23 -1
  508. package/src/scripts/measure_rule_budget.ts +23 -4
  509. package/src/scripts/measure_skill_reduction.ts +23 -1
  510. package/src/scripts/memory_hash.ts +24 -2
  511. package/src/scripts/memory_lookup.ts +24 -2
  512. package/src/scripts/memory_report.ts +24 -2
  513. package/src/scripts/memory_signal.ts +24 -2
  514. package/src/scripts/memory_status.ts +26 -2
  515. package/src/scripts/migrate_command_suggestions.ts +23 -4
  516. package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
  517. package/src/scripts/migration_status.ts +25 -4
  518. package/src/scripts/mine_missing_guardrails.ts +23 -1
  519. package/src/scripts/mine_session.ts +23 -1
  520. package/src/scripts/minimal_safe_diff_hook.ts +24 -3
  521. package/src/scripts/new_skill.ts +23 -3
  522. package/src/scripts/onboarding_gate_hook.ts +24 -3
  523. package/src/scripts/parity/coverage_diff.ts +25 -3
  524. package/src/scripts/parity/phase_gate.ts +25 -4
  525. package/src/scripts/parity/replay.ts +25 -3
  526. package/src/scripts/pattern_share.ts +23 -4
  527. package/src/scripts/plan_physical_move.ts +23 -4
  528. package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
  529. package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
  530. package/src/scripts/prediction-pool/score_ev.ts +24 -3
  531. package/src/scripts/print_required_checks.ts +24 -4
  532. package/src/scripts/probe_host_compliance.ts +23 -2
  533. package/src/scripts/probe_projection_fidelity.ts +23 -1
  534. package/src/scripts/probe_skill_registration.ts +24 -2
  535. package/src/scripts/profile_staleness_hook.ts +24 -3
  536. package/src/scripts/profile_use.ts +23 -4
  537. package/src/scripts/project_thin_rules.ts +23 -3
  538. package/src/scripts/propose_modules_config.ts +23 -4
  539. package/src/scripts/prototype_lint_contradictions.ts +23 -1
  540. package/src/scripts/prove_pack_extractable.ts +23 -4
  541. package/src/scripts/readme_linter.ts +23 -3
  542. package/src/scripts/redact_hook_capture.ts +23 -4
  543. package/src/scripts/refine_ticket_detect.ts +23 -4
  544. package/src/scripts/release.ts +23 -4
  545. package/src/scripts/render_benchmark_composite.ts +23 -4
  546. package/src/scripts/render_benchmark_md.ts +23 -4
  547. package/src/scripts/roadmap_progress_hook.ts +46 -16
  548. package/src/scripts/run_skill_evals.ts +23 -4
  549. package/src/scripts/runtime_dispatcher.ts +23 -4
  550. package/src/scripts/runtime_registry.ts +23 -4
  551. package/src/scripts/score_skill_selection.ts +23 -1
  552. package/src/scripts/security_audit_config.ts +24 -5
  553. package/src/scripts/skill_collision_clusters.ts +23 -4
  554. package/src/scripts/skill_discovery.ts +23 -4
  555. package/src/scripts/skill_linter.ts +23 -2
  556. package/src/scripts/skill_preview.ts +23 -4
  557. package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
  558. package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
  559. package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
  560. package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
  561. package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
  562. package/src/scripts/skill_usage_collect.ts +23 -4
  563. package/src/scripts/smoke_path_resolution.ts +23 -4
  564. package/src/scripts/smoke_quickstart.ts +23 -4
  565. package/src/scripts/snapshot_agent_outputs.ts +23 -4
  566. package/src/scripts/spotcheck_thin_root.ts +23 -4
  567. package/src/scripts/sync_agent_settings.ts +23 -4
  568. package/src/scripts/sync_github_metadata.ts +23 -4
  569. package/src/scripts/sync_gitignore.ts +23 -4
  570. package/src/scripts/telegraph_stats.ts +23 -4
  571. package/src/scripts/tool_registry.ts +24 -4
  572. package/src/scripts/trigger_coverage.ts +23 -4
  573. package/src/scripts/update_counts.ts +23 -4
  574. package/src/scripts/update_prices.ts +23 -1
  575. package/src/scripts/validate_agent_settings.ts +23 -4
  576. package/src/scripts/validate_decision_engine.ts +23 -4
  577. package/src/scripts/validate_discovery_manifest.ts +23 -4
  578. package/src/scripts/validate_frontmatter.ts +23 -2
  579. package/src/scripts/validate_pack_yaml.ts +0 -0
  580. package/src/scripts/validate_safe_paths.ts +24 -4
  581. package/src/scripts/validate_telegraph_carveouts.ts +23 -4
  582. package/src/scripts/verify_before_complete_hook.ts +24 -3
  583. package/src/scripts/verify_physical_move.ts +23 -4
  584. package/src/scripts/wrapper_freshness_hook.ts +107 -8
  585. package/tests/fixtures/hooks/README.md +92 -0
  586. package/tests/fixtures/hooks/agent_error.json +7 -0
  587. package/tests/fixtures/hooks/post_tool_use.json +13 -0
  588. package/tests/fixtures/hooks/pre_compact.json +7 -0
  589. package/tests/fixtures/hooks/pre_tool_use.json +9 -0
  590. package/tests/fixtures/hooks/session_end.json +6 -0
  591. package/tests/fixtures/hooks/session_start.json +6 -0
  592. package/tests/fixtures/hooks/stop.json +6 -0
  593. package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
@@ -26,10 +26,10 @@
26
26
  * here; files without frontmatter are skipped (P5.1 contract).
27
27
  *
28
28
  * Health checks (see `CHECK_IDS`):
29
- * scope · stale-orphans · manifest-integrity · lockfile-freshness · bridge-drift ·
30
- * mcp-mode · mcp-beta-readiness · offline-readiness · python-runtime ·
31
- * tier-usage-readiness · council-cli · unsupported-combos ·
32
- * wizard-state.
29
+ * scope · global-binary · claude-plugin · stale-orphans · manifest-integrity ·
30
+ * lockfile-freshness · bridge-drift · mcp-mode · mcp-beta-readiness ·
31
+ * offline-readiness · python-runtime · tier-usage-readiness · council-cli ·
32
+ * unsupported-combos · wizard-state.
33
33
  * Each emits a structured `{id, status, message, remedy}` record with
34
34
  * `status` ∈ `ok` / `warn` / `fail` / `skipped` (rendered
35
35
  * `✅` / `⚠️` / `❌` / `⏭️`). `--check <id>` runs a single check.
@@ -80,6 +80,8 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
80
80
 
81
81
  import * as YAML from 'yaml';
82
82
 
83
+ import * as claude_plugin from '../_lib/claude_plugin.js';
84
+ import { _is_source_repo } from './cmd_refresh.js';
83
85
  import * as installed_lock from '../_lib/installed_lock.js';
84
86
  import * as installed_tools from '../_lib/installed_tools.js';
85
87
  import * as user_global_paths from '../_lib/user_global_paths.js';
@@ -727,6 +729,7 @@ function relativeTo(p: string, base: string): string | null {
727
729
  const CHECK_IDS = [
728
730
  'scope',
729
731
  'global-binary',
732
+ 'claude-plugin',
730
733
  'stale-orphans',
731
734
  'manifest-integrity',
732
735
  'lockfile-freshness',
@@ -745,6 +748,7 @@ const CHECK_IDS = [
745
748
  const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
746
749
  'scope',
747
750
  'global-binary',
751
+ 'claude-plugin',
748
752
  'stale-orphans',
749
753
  'mcp-mode',
750
754
  'mcp-beta-readiness',
@@ -1000,6 +1004,54 @@ function lstripV(s: string): string {
1000
1004
  return out;
1001
1005
  }
1002
1006
 
1007
+ /**
1008
+ * Claude Code plugin state. The plugin is OPTIONAL — the `~/.claude/` file
1009
+ * projection is a full install on its own — so a missing plugin is `ok`,
1010
+ * never a warning. What DOES warn is a stale installed plugin: Claude Code
1011
+ * pins the plugin to its install-time git SHA, so its command surface
1012
+ * silently lags every upgrade until `claude plugin update` runs
1013
+ * (`agent-config upgrade` now does that automatically).
1014
+ */
1015
+ function _check_claude_plugin(): Dict {
1016
+ const claude = shutilWhich('claude');
1017
+ if (claude === null) {
1018
+ return {
1019
+ id: 'claude-plugin',
1020
+ status: 'skipped',
1021
+ message: 'Claude Code CLI not on PATH — plugin check not applicable',
1022
+ remedy: '',
1023
+ };
1024
+ }
1025
+ if (!claude_plugin.claude_plugin_installed()) {
1026
+ return {
1027
+ id: 'claude-plugin',
1028
+ status: 'ok',
1029
+ message:
1030
+ 'plugin not installed (optional — the ~/.claude/ file projection ' +
1031
+ 'already carries the full skill/command set)',
1032
+ remedy: '',
1033
+ };
1034
+ }
1035
+ const snapshot_v = lstripV(claude_plugin.claude_plugin_snapshot_version() || '');
1036
+ const binary_v = lstripV(_current_package_version() || '');
1037
+ if (snapshot_v && binary_v && snapshot_v !== binary_v) {
1038
+ return {
1039
+ id: 'claude-plugin',
1040
+ status: 'warn',
1041
+ message: `plugin snapshot ${snapshot_v} lags binary ${binary_v} — its command surface is stale`,
1042
+ remedy:
1043
+ 'agent-config upgrade (refreshes the plugin), or ' +
1044
+ `claude plugin update ${claude_plugin.CLAUDE_PLUGIN_ID}@${claude_plugin.CLAUDE_MARKETPLACE_NAME}`,
1045
+ };
1046
+ }
1047
+ return {
1048
+ id: 'claude-plugin',
1049
+ status: 'ok',
1050
+ message: `plugin installed${snapshot_v ? ` (snapshot ${snapshot_v})` : ''}`,
1051
+ remedy: '',
1052
+ };
1053
+ }
1054
+
1003
1055
  function _check_bridge_drift(
1004
1056
  missing: Dict[],
1005
1057
  modified: Dict[],
@@ -1196,6 +1248,20 @@ function _check_python_runtime(): Dict {
1196
1248
  }
1197
1249
 
1198
1250
  function _check_mcp_beta_readiness(project_root: string): Dict {
1251
+ // Maintainer-scoped gate: the six artefacts live in the agent-config
1252
+ // SOURCE repo. In a consumer project the paths can never exist, so the
1253
+ // check used to emit a meaningless "6/6 gates pending" warning on every
1254
+ // consumer doctor run — skip instead.
1255
+ if (!_is_source_repo(project_root)) {
1256
+ return {
1257
+ id: 'mcp-beta-readiness',
1258
+ status: 'skipped',
1259
+ message:
1260
+ 'MCP beta promotion gates apply to the agent-config source repo, ' +
1261
+ 'not consumer projects',
1262
+ remedy: '',
1263
+ };
1264
+ }
1199
1265
  const pending: string[] = [];
1200
1266
  for (const [gate_id, rel] of MCP_BETA_GATES) {
1201
1267
  if (!pathExists(path.join(project_root, rel))) {
@@ -1751,6 +1817,7 @@ function _run_checks(
1751
1817
  const runners: Record<string, CheckRunner> = {
1752
1818
  scope: () => _check_scope(project_root),
1753
1819
  'global-binary': () => _check_global_binary(project_root),
1820
+ 'claude-plugin': _check_claude_plugin,
1754
1821
  'stale-orphans': _check_stale_orphans,
1755
1822
  'manifest-integrity': () => _check_manifest_integrity(manifest),
1756
1823
  'lockfile-freshness': () => _check_lockfile_freshness(manifest),
@@ -1822,6 +1889,7 @@ function _run_checks_no_manifest(
1822
1889
  const runners: Record<string, CheckRunner> = {
1823
1890
  scope: () => _check_scope(project_root),
1824
1891
  'global-binary': () => _check_global_binary(project_root),
1892
+ 'claude-plugin': _check_claude_plugin,
1825
1893
  'stale-orphans': _check_stale_orphans,
1826
1894
  'manifest-integrity': () => _skipped_manifest_check('manifest-integrity'),
1827
1895
  'lockfile-freshness': () => _skipped_manifest_check('lockfile-freshness'),
@@ -2258,10 +2326,29 @@ function main(argv: string[] | null = null): number {
2258
2326
 
2259
2327
  // --- CLI entry ---
2260
2328
 
2261
- const _isCliEntry =
2262
- process.argv[1] !== undefined &&
2263
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
2264
- if (_isCliEntry || process.argv[1] === _HERE) {
2329
+ function _isCliEntry(): boolean {
2330
+ if (process.argv[1] === undefined) {
2331
+ return false;
2332
+ }
2333
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
2334
+ if (import.meta.url === argvUrl) {
2335
+ return true;
2336
+ }
2337
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
2338
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
2339
+ // import.meta.url is the resolved real path while argv[1] keeps the
2340
+ // symlink path. Compare realpaths so the entry guard still fires
2341
+ // (without this the CLI silently no-ops when run through a symlink).
2342
+ try {
2343
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
2344
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
2345
+ return here === argv;
2346
+ } catch {
2347
+ return false;
2348
+ }
2349
+ }
2350
+
2351
+ if (_isCliEntry() || process.argv[1] === _HERE) {
2265
2352
  try {
2266
2353
  process.exitCode = main(process.argv.slice(2));
2267
2354
  } catch (e) {
@@ -2290,6 +2377,7 @@ export {
2290
2377
  _check_manifest_integrity,
2291
2378
  _check_lockfile_freshness,
2292
2379
  _check_global_binary,
2380
+ _check_claude_plugin,
2293
2381
  _check_bridge_drift,
2294
2382
  _check_mcp_mode,
2295
2383
  _check_offline_readiness,
@@ -713,10 +713,29 @@ export function main(argv: string[] | null = null): number {
713
713
 
714
714
  // --- CLI entry ---
715
715
 
716
- const _isCliEntry =
717
- process.argv[1] !== undefined &&
718
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
719
- if (_isCliEntry || process.argv[1] === _HERE) {
716
+ function _isCliEntry(): boolean {
717
+ if (process.argv[1] === undefined) {
718
+ return false;
719
+ }
720
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
721
+ if (import.meta.url === argvUrl) {
722
+ return true;
723
+ }
724
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
725
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
726
+ // import.meta.url is the resolved real path while argv[1] keeps the
727
+ // symlink path. Compare realpaths so the entry guard still fires
728
+ // (without this the CLI silently no-ops when run through a symlink).
729
+ try {
730
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
731
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
732
+ return here === argv;
733
+ } catch {
734
+ return false;
735
+ }
736
+ }
737
+
738
+ if (_isCliEntry() || process.argv[1] === _HERE) {
720
739
  try {
721
740
  process.exitCode = main(process.argv.slice(2));
722
741
  } catch (e) {
@@ -359,10 +359,29 @@ export function main(argv: string[] | null = null, options: MainOptions = {}): n
359
359
  // Python: `if __name__ == "__main__": sys.exit(main())` (argparse reads
360
360
  // sys.argv[1:] inside the parser default).
361
361
  const _HERE = fileURLToPath(import.meta.url);
362
- const _isCliEntry =
363
- process.argv[1] !== undefined &&
364
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
365
- if (_isCliEntry || process.argv[1] === _HERE) {
362
+ function _isCliEntry(): boolean {
363
+ if (process.argv[1] === undefined) {
364
+ return false;
365
+ }
366
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
367
+ if (import.meta.url === argvUrl) {
368
+ return true;
369
+ }
370
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
371
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
372
+ // import.meta.url is the resolved real path while argv[1] keeps the
373
+ // symlink path. Compare realpaths so the entry guard still fires
374
+ // (without this the CLI silently no-ops when run through a symlink).
375
+ try {
376
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
377
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
378
+ return here === argv;
379
+ } catch {
380
+ return false;
381
+ }
382
+ }
383
+
384
+ if (_isCliEntry() || process.argv[1] === _HERE) {
366
385
  try {
367
386
  process.exitCode = main();
368
387
  } catch (exc) {
@@ -385,10 +385,29 @@ export async function main(argv: string[] | null = null): Promise<number> {
385
385
 
386
386
  // --- CLI entry ---
387
387
 
388
- const _isCliEntry =
389
- process.argv[1] !== undefined &&
390
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
391
- if (_isCliEntry || process.argv[1] === _HERE) {
388
+ function _isCliEntry(): boolean {
389
+ if (process.argv[1] === undefined) {
390
+ return false;
391
+ }
392
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
393
+ if (import.meta.url === argvUrl) {
394
+ return true;
395
+ }
396
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
397
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
398
+ // import.meta.url is the resolved real path while argv[1] keeps the
399
+ // symlink path. Compare realpaths so the entry guard still fires
400
+ // (without this the CLI silently no-ops when run through a symlink).
401
+ try {
402
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
403
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
404
+ return here === argv;
405
+ } catch {
406
+ return false;
407
+ }
408
+ }
409
+
410
+ if (_isCliEntry() || process.argv[1] === _HERE) {
392
411
  main(process.argv.slice(2)).then(
393
412
  (code) => {
394
413
  process.exitCode = code;
@@ -935,10 +935,29 @@ declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
935
935
  const _bundled =
936
936
  typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__;
937
937
  const _HERE = fileURLToPath(import.meta.url);
938
- const _isCliEntry =
939
- process.argv[1] !== undefined &&
940
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
941
- if (!_bundled && (_isCliEntry || process.argv[1] === _HERE)) {
938
+ function _isCliEntry(): boolean {
939
+ if (process.argv[1] === undefined) {
940
+ return false;
941
+ }
942
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
943
+ if (import.meta.url === argvUrl) {
944
+ return true;
945
+ }
946
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
947
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
948
+ // import.meta.url is the resolved real path while argv[1] keeps the
949
+ // symlink path. Compare realpaths so the entry guard still fires
950
+ // (without this the CLI silently no-ops when run through a symlink).
951
+ try {
952
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
953
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
954
+ return here === argv;
955
+ } catch {
956
+ return false;
957
+ }
958
+ }
959
+
960
+ if (!_bundled && (_isCliEntry() || process.argv[1] === _HERE)) {
942
961
  try {
943
962
  process.exitCode = main(process.argv.slice(2));
944
963
  } catch (exc) {
@@ -18,6 +18,7 @@
18
18
  import * as os from 'node:os';
19
19
  import * as path from 'node:path';
20
20
  import process from 'node:process';
21
+ import * as fs from 'node:fs';
21
22
  import { fileURLToPath, pathToFileURL } from 'node:url';
22
23
 
23
24
  import {
@@ -151,9 +152,28 @@ export function main(argv: string[] | null = null): number {
151
152
 
152
153
  // --- CLI entry ---
153
154
 
154
- const _isCliEntry =
155
- process.argv[1] !== undefined &&
156
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
157
- if (_isCliEntry || process.argv[1] === _HERE) {
155
+ function _isCliEntry(): boolean {
156
+ if (process.argv[1] === undefined) {
157
+ return false;
158
+ }
159
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
160
+ if (import.meta.url === argvUrl) {
161
+ return true;
162
+ }
163
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
164
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
165
+ // import.meta.url is the resolved real path while argv[1] keeps the
166
+ // symlink path. Compare realpaths so the entry guard still fires
167
+ // (without this the CLI silently no-ops when run through a symlink).
168
+ try {
169
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
170
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
171
+ return here === argv;
172
+ } catch {
173
+ return false;
174
+ }
175
+ }
176
+
177
+ if (_isCliEntry() || process.argv[1] === _HERE) {
158
178
  process.exitCode = main(process.argv.slice(2));
159
179
  }
@@ -594,10 +594,29 @@ export function main(argv: string[] | null = null): number {
594
594
 
595
595
  // CLI entry guard — set process.exitCode; never call process.exit().
596
596
  const _HERE = fileURLToPath(import.meta.url);
597
- const _isCliEntry =
598
- process.argv[1] !== undefined &&
599
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
600
- if (_isCliEntry || process.argv[1] === _HERE) {
597
+ function _isCliEntry(): boolean {
598
+ if (process.argv[1] === undefined) {
599
+ return false;
600
+ }
601
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
602
+ if (import.meta.url === argvUrl) {
603
+ return true;
604
+ }
605
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
606
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
607
+ // import.meta.url is the resolved real path while argv[1] keeps the
608
+ // symlink path. Compare realpaths so the entry guard still fires
609
+ // (without this the CLI silently no-ops when run through a symlink).
610
+ try {
611
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
612
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
613
+ return here === argv;
614
+ } catch {
615
+ return false;
616
+ }
617
+ }
618
+
619
+ if (_isCliEntry() || process.argv[1] === _HERE) {
601
620
  try {
602
621
  process.exitCode = main(process.argv.slice(2));
603
622
  } catch (exc) {
@@ -502,10 +502,29 @@ export function main(argv: string[] | null = null, options: MainOptions = {}): n
502
502
 
503
503
  // --- CLI entry ---
504
504
 
505
- const _isCliEntry =
506
- process.argv[1] !== undefined &&
507
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
508
- if (_isCliEntry || process.argv[1] === _HERE) {
505
+ function _isCliEntry(): boolean {
506
+ if (process.argv[1] === undefined) {
507
+ return false;
508
+ }
509
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
510
+ if (import.meta.url === argvUrl) {
511
+ return true;
512
+ }
513
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
514
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
515
+ // import.meta.url is the resolved real path while argv[1] keeps the
516
+ // symlink path. Compare realpaths so the entry guard still fires
517
+ // (without this the CLI silently no-ops when run through a symlink).
518
+ try {
519
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
520
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
521
+ return here === argv;
522
+ } catch {
523
+ return false;
524
+ }
525
+ }
526
+
527
+ if (_isCliEntry() || process.argv[1] === _HERE) {
509
528
  try {
510
529
  process.exitCode = main(process.argv.slice(2));
511
530
  } catch (e) {
@@ -391,10 +391,29 @@ export function main(argv: string[] | null = null, options: MainOptions = {}): n
391
391
 
392
392
  // CLI entry guard — set process.exitCode; never call process.exit().
393
393
  const _HERE = fileURLToPath(import.meta.url);
394
- const _isCliEntry =
395
- process.argv[1] !== undefined &&
396
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
397
- if (_isCliEntry || process.argv[1] === _HERE) {
394
+ function _isCliEntry(): boolean {
395
+ if (process.argv[1] === undefined) {
396
+ return false;
397
+ }
398
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
399
+ if (import.meta.url === argvUrl) {
400
+ return true;
401
+ }
402
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
403
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
404
+ // import.meta.url is the resolved real path while argv[1] keeps the
405
+ // symlink path. Compare realpaths so the entry guard still fires
406
+ // (without this the CLI silently no-ops when run through a symlink).
407
+ try {
408
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
409
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
410
+ return here === argv;
411
+ } catch {
412
+ return false;
413
+ }
414
+ }
415
+
416
+ if (_isCliEntry() || process.argv[1] === _HERE) {
398
417
  try {
399
418
  process.exitCode = main(process.argv.slice(2));
400
419
  } catch (exc) {
@@ -328,10 +328,29 @@ export function main(argv: string[] | null = null, options: MainOptions = {}): n
328
328
  // CLI entry guard — set process.exitCode; never call process.exit().
329
329
  // Python: `if __name__ == "__main__": sys.exit(main())`.
330
330
  const _HERE = fileURLToPath(import.meta.url);
331
- const _isCliEntry =
332
- process.argv[1] !== undefined &&
333
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
334
- if (_isCliEntry || process.argv[1] === _HERE) {
331
+ function _isCliEntry(): boolean {
332
+ if (process.argv[1] === undefined) {
333
+ return false;
334
+ }
335
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
336
+ if (import.meta.url === argvUrl) {
337
+ return true;
338
+ }
339
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
340
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
341
+ // import.meta.url is the resolved real path while argv[1] keeps the
342
+ // symlink path. Compare realpaths so the entry guard still fires
343
+ // (without this the CLI silently no-ops when run through a symlink).
344
+ try {
345
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
346
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
347
+ return here === argv;
348
+ } catch {
349
+ return false;
350
+ }
351
+ }
352
+
353
+ if (_isCliEntry() || process.argv[1] === _HERE) {
335
354
  try {
336
355
  process.exitCode = main();
337
356
  } catch (exc) {
@@ -365,10 +365,29 @@ export function main(argv: string[] | null = null, options: MainOptions = {}): n
365
365
  // CLI entry guard — set process.exitCode; never call process.exit().
366
366
  // Python: `if __name__ == "__main__": sys.exit(main(sys.argv[1:]))`.
367
367
  const _HERE = fileURLToPath(import.meta.url);
368
- const _isCliEntry =
369
- process.argv[1] !== undefined &&
370
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
371
- if (_isCliEntry || process.argv[1] === _HERE) {
368
+ function _isCliEntry(): boolean {
369
+ if (process.argv[1] === undefined) {
370
+ return false;
371
+ }
372
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
373
+ if (import.meta.url === argvUrl) {
374
+ return true;
375
+ }
376
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
377
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
378
+ // import.meta.url is the resolved real path while argv[1] keeps the
379
+ // symlink path. Compare realpaths so the entry guard still fires
380
+ // (without this the CLI silently no-ops when run through a symlink).
381
+ try {
382
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
383
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
384
+ return here === argv;
385
+ } catch {
386
+ return false;
387
+ }
388
+ }
389
+
390
+ if (_isCliEntry() || process.argv[1] === _HERE) {
372
391
  try {
373
392
  process.exitCode = main(process.argv.slice(2));
374
393
  } catch (exc) {
@@ -817,10 +817,29 @@ export function main(argv: string[] | null = null): number {
817
817
 
818
818
  // CLI entry guard — set process.exitCode; never call process.exit().
819
819
  const _HERE = fileURLToPath(import.meta.url);
820
- const _isCliEntry =
821
- process.argv[1] !== undefined &&
822
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
823
- if (_isCliEntry || process.argv[1] === _HERE) {
820
+ function _isCliEntry(): boolean {
821
+ if (process.argv[1] === undefined) {
822
+ return false;
823
+ }
824
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
825
+ if (import.meta.url === argvUrl) {
826
+ return true;
827
+ }
828
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
829
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
830
+ // import.meta.url is the resolved real path while argv[1] keeps the
831
+ // symlink path. Compare realpaths so the entry guard still fires
832
+ // (without this the CLI silently no-ops when run through a symlink).
833
+ try {
834
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
835
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
836
+ return here === argv;
837
+ } catch {
838
+ return false;
839
+ }
840
+ }
841
+
842
+ if (_isCliEntry() || process.argv[1] === _HERE) {
824
843
  try {
825
844
  process.exitCode = main(process.argv.slice(2));
826
845
  } catch (exc) {
@@ -567,10 +567,29 @@ function _detect_installed_version(): string {
567
567
  }
568
568
 
569
569
  // CLI entry guard — set process.exitCode; never call process.exit().
570
- const _isCliEntry =
571
- process.argv[1] !== undefined &&
572
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
573
- if (_isCliEntry || process.argv[1] === _HERE) {
570
+ function _isCliEntry(): boolean {
571
+ if (process.argv[1] === undefined) {
572
+ return false;
573
+ }
574
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
575
+ if (import.meta.url === argvUrl) {
576
+ return true;
577
+ }
578
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
579
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
580
+ // import.meta.url is the resolved real path while argv[1] keeps the
581
+ // symlink path. Compare realpaths so the entry guard still fires
582
+ // (without this the CLI silently no-ops when run through a symlink).
583
+ try {
584
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
585
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
586
+ return here === argv;
587
+ } catch {
588
+ return false;
589
+ }
590
+ }
591
+
592
+ if (_isCliEntry() || process.argv[1] === _HERE) {
574
593
  main(process.argv.slice(2))
575
594
  .then((code) => {
576
595
  process.exitCode = code;