@event4u/agent-config 8.1.0 → 8.3.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 (615) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +83 -292
  3. package/MIGRATION.md +18 -0
  4. package/README.md +86 -3
  5. package/dist/agent-src/commands/agents/init.md +3 -3
  6. package/dist/agent-src/commands/chat-history/import.md +5 -5
  7. package/dist/agent-src/commands/chat-history.md +1 -1
  8. package/dist/agent-src/commands/condense.md +1 -1
  9. package/dist/agent-src/commands/context/create.md +1 -1
  10. package/dist/agent-src/commands/council/analysis.md +2 -2
  11. package/dist/agent-src/commands/council/default.md +3 -3
  12. package/dist/agent-src/commands/council/design.md +2 -2
  13. package/dist/agent-src/commands/council/optimize.md +1 -1
  14. package/dist/agent-src/commands/council/pr.md +2 -2
  15. package/dist/agent-src/commands/council.md +1 -1
  16. package/dist/agent-src/commands/feature/plan.md +1 -1
  17. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  18. package/dist/agent-src/commands/ghostwriter/write.md +1 -1
  19. package/dist/agent-src/commands/ghostwriter.md +1 -1
  20. package/dist/agent-src/commands/implement-ticket.md +2 -2
  21. package/dist/agent-src/commands/judge/on-diff.md +1 -1
  22. package/dist/agent-src/commands/judge/steps.md +3 -1
  23. package/dist/agent-src/commands/memory/add.md +2 -2
  24. package/dist/agent-src/commands/memory/learn-low-impact.md +1 -1
  25. package/dist/agent-src/commands/memory/load.md +1 -1
  26. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  27. package/dist/agent-src/commands/memory/promote.md +1 -1
  28. package/dist/agent-src/commands/memory/propose.md +1 -1
  29. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  30. package/dist/agent-src/commands/module/explore.md +3 -3
  31. package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
  32. package/dist/agent-src/commands/optimize/skills.md +1 -1
  33. package/dist/agent-src/commands/optimize-project.md +1 -1
  34. package/dist/agent-src/commands/orchestrate.md +2 -2
  35. package/dist/agent-src/commands/project-analyze.md +1 -1
  36. package/dist/agent-src/commands/project-health.md +1 -1
  37. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  38. package/dist/agent-src/commands/roadmap/create.md +2 -2
  39. package/dist/agent-src/commands/roadmap/process-full.md +3 -1
  40. package/dist/agent-src/commands/roadmap/process-phase.md +4 -2
  41. package/dist/agent-src/commands/roadmap/process-step.md +3 -1
  42. package/dist/agent-src/commands/security-audit-config.md +1 -1
  43. package/dist/agent-src/commands/sync-agent-settings.md +7 -7
  44. package/dist/agent-src/commands/sync-gitignore/fix.md +3 -3
  45. package/dist/agent-src/commands/sync-gitignore.md +4 -4
  46. package/dist/agent-src/commands/work.md +3 -3
  47. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  48. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
  49. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +1 -1
  50. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -7
  51. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  52. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +9 -4
  53. package/dist/agent-src/contexts/execution/toolchain-resolver.md +10 -9
  54. package/dist/agent-src/contexts/execution/verification-mechanics.md +13 -1
  55. package/dist/agent-src/packs/README.md +1 -1
  56. package/dist/agent-src/presets/README.md +1 -1
  57. package/dist/agent-src/profiles/README.md +1 -1
  58. package/dist/agent-src/rules/architecture.md +2 -2
  59. package/dist/agent-src/rules/context-hygiene.md +2 -2
  60. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
  61. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  62. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
  63. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
  64. package/dist/agent-src/rules/media-governance-routing.md +1 -1
  65. package/dist/agent-src/rules/no-roadmap-references.md +3 -3
  66. package/dist/agent-src/rules/preservation-guard.md +2 -2
  67. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
  68. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
  69. package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
  70. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  71. package/dist/agent-src/rules/telegraph-speak.md +1 -1
  72. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  73. package/dist/agent-src/rules/ui-audit-gate.md +1 -1
  74. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
  75. package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
  76. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
  77. package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
  78. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  79. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  80. package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
  81. package/dist/agent-src/skills/api-design/SKILL.md +1 -1
  82. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
  83. package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
  84. package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
  85. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
  86. package/dist/agent-src/skills/code-review/SKILL.md +3 -4
  87. package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
  88. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  89. package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
  90. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  91. package/dist/agent-src/skills/context-document/SKILL.md +1 -1
  92. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
  93. package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
  94. package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
  95. package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
  96. package/dist/agent-src/skills/database/SKILL.md +2 -1
  97. package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
  98. package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
  99. package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
  100. package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
  101. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
  102. package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
  103. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
  104. package/dist/agent-src/skills/flux/SKILL.md +10 -9
  105. package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
  106. package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
  107. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
  108. package/dist/agent-src/skills/livewire/SKILL.md +10 -9
  109. package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
  110. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
  111. package/dist/agent-src/skills/module-management/SKILL.md +2 -2
  112. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
  113. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
  114. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
  115. package/dist/agent-src/skills/premortem/SKILL.md +1 -1
  116. package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
  117. package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
  118. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
  119. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
  120. package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
  121. package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
  122. package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
  123. package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
  124. package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
  125. package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
  126. package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
  127. package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
  128. package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
  129. package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
  130. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
  131. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  132. package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
  133. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
  134. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
  135. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  136. package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
  137. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
  138. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
  139. package/dist/agent-src/templates/agent-settings.md +34 -25
  140. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  141. package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
  142. package/dist/agent-src/templates/agents/proposal.example.md +4 -4
  143. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  144. package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
  145. package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
  146. package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
  147. package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
  148. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
  149. package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
  150. package/dist/agent-src/templates/roadmaps.md +9 -4
  151. package/dist/agent-src/templates/rule.md +3 -3
  152. package/dist/agent-src/templates/scripts/README.md +6 -6
  153. package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
  154. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
  155. package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
  156. package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
  157. package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
  158. package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
  159. package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
  160. package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
  161. package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  162. package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
  163. package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
  164. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  165. package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
  166. package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
  167. package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
  168. package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
  169. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
  170. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
  171. package/dist/agent-src/templates/skill.md +2 -2
  172. package/dist/cli/python/knowledge_ingest.js +24 -3
  173. package/dist/cli/python/knowledge_ingest.js.map +1 -1
  174. package/dist/cli/python/workspace_analytics.js +23 -3
  175. package/dist/cli/python/workspace_analytics.js.map +1 -1
  176. package/dist/cli/python/workspace_crypto.js +23 -3
  177. package/dist/cli/python/workspace_crypto.js.map +1 -1
  178. package/dist/cli/python/workspace_documents.js +23 -3
  179. package/dist/cli/python/workspace_documents.js.map +1 -1
  180. package/dist/cli/python/workspace_drive.js +24 -3
  181. package/dist/cli/python/workspace_drive.js.map +1 -1
  182. package/dist/cli/python/workspace_drive_health.js +23 -3
  183. package/dist/cli/python/workspace_drive_health.js.map +1 -1
  184. package/dist/cli/python/workspace_explain.js +23 -3
  185. package/dist/cli/python/workspace_explain.js.map +1 -1
  186. package/dist/cli/python/workspace_hosts.js +23 -3
  187. package/dist/cli/python/workspace_hosts.js.map +1 -1
  188. package/dist/cli/python/workspace_inbox.js +23 -3
  189. package/dist/cli/python/workspace_inbox.js.map +1 -1
  190. package/dist/cli/python/workspace_render.js +23 -3
  191. package/dist/cli/python/workspace_render.js.map +1 -1
  192. package/dist/cli/python/workspace_roles.js +23 -3
  193. package/dist/cli/python/workspace_roles.js.map +1 -1
  194. package/dist/cli/python/workspace_sessions.js +23 -3
  195. package/dist/cli/python/workspace_sessions.js.map +1 -1
  196. package/dist/cli/python/workspace_skills.js +23 -3
  197. package/dist/cli/python/workspace_skills.js.map +1 -1
  198. package/dist/cli/registry.js +2 -0
  199. package/dist/cli/registry.js.map +1 -1
  200. package/dist/discovery/deprecation-report.md +1 -1
  201. package/dist/discovery/discovery-manifest.json +118 -118
  202. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  203. package/dist/discovery/discovery-manifest.summary.md +2 -2
  204. package/dist/discovery/orphan-report.md +1 -1
  205. package/dist/discovery/packs.json +3 -3
  206. package/dist/discovery/trust-report.md +1 -1
  207. package/dist/discovery/workspaces.json +3 -3
  208. package/dist/install/install.mjs +647 -408
  209. package/dist/mcp/registry-manifest.json +3 -3
  210. package/dist/server/routes/settings.js +4 -4
  211. package/dist/server/routes/settings.js.map +1 -1
  212. package/dist/server/schemas/settings.js +1 -1
  213. package/dist/server/schemas/settings.js.map +1 -1
  214. package/docs/CLAIMS.md +2 -2
  215. package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
  216. package/docs/benchmark.md +40 -0
  217. package/docs/contracts/CHANGELOG-conventions.md +8 -5
  218. package/docs/contracts/branch-protection-policy.md +14 -5
  219. package/docs/contracts/mcp-phase-1-scope.md +75 -0
  220. package/docs/contracts/mcp-tool-inventory.md +22 -15
  221. package/docs/contracts/release-pr-gating.md +22 -11
  222. package/docs/contracts/skill-bundled-assets.md +2 -2
  223. package/docs/customization.md +1 -1
  224. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
  225. package/docs/decisions/ADR-111-canonical-glama-listing.md +97 -0
  226. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +92 -0
  227. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +201 -0
  228. package/docs/decisions/INDEX.md +3 -0
  229. package/docs/distribution/registry-submissions.md +1 -1
  230. package/docs/getting-started.md +8 -6
  231. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
  232. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
  233. package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
  234. package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
  235. package/docs/guidelines/agent-infra/layered-settings.md +4 -4
  236. package/docs/guidelines/agent-infra/memory-access.md +19 -18
  237. package/docs/guidelines/agent-infra/naming.md +1 -1
  238. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
  239. package/docs/guidelines/agent-infra/role-contracts.md +1 -1
  240. package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
  241. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
  242. package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
  243. package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
  244. package/docs/guidelines/augment-portability-patterns.md +1 -1
  245. package/docs/installation.md +13 -14
  246. package/docs/mcp-server.md +32 -20
  247. package/docs/proof.md +1 -1
  248. package/docs/setup/mcp-cloud-endpoints.md +9 -2
  249. package/docs/setup/per-ide/claude-code.md +10 -4
  250. package/package.json +4 -3
  251. package/src/config/agent-settings.template.yml +31 -17
  252. package/src/config/host-capabilities.yml +25 -16
  253. package/src/config/profiles/balanced.ini +5 -3
  254. package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
  255. package/src/scripts/_cli/cmd_conformance.ts +23 -4
  256. package/src/scripts/_cli/cmd_doctor.ts +196 -8
  257. package/src/scripts/_cli/cmd_explain.ts +23 -4
  258. package/src/scripts/_cli/cmd_export.ts +23 -4
  259. package/src/scripts/_cli/cmd_fleet.ts +23 -4
  260. package/src/scripts/_cli/cmd_migrate.ts +23 -4
  261. package/src/scripts/_cli/cmd_preflight.ts +24 -4
  262. package/src/scripts/_cli/cmd_prune.ts +23 -4
  263. package/src/scripts/_cli/cmd_refresh.ts +23 -4
  264. package/src/scripts/_cli/cmd_settings_check.ts +23 -4
  265. package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
  266. package/src/scripts/_cli/cmd_sync.ts +23 -4
  267. package/src/scripts/_cli/cmd_uninstall.ts +45 -4
  268. package/src/scripts/_cli/cmd_update.ts +23 -4
  269. package/src/scripts/_cli/cmd_upgrade.ts +307 -17
  270. package/src/scripts/_cli/cmd_validate.ts +23 -4
  271. package/src/scripts/_cli/cmd_versions.ts +23 -4
  272. package/src/scripts/_dispatch.bash +62 -19
  273. package/src/scripts/_lib/claude_plugin.ts +83 -0
  274. package/src/scripts/_lib/claude_settings_hooks.ts +251 -0
  275. package/src/scripts/_lib/knowledge_global.ts +24 -2
  276. package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
  277. package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
  278. package/src/scripts/_lib/link_crypto.ts +24 -5
  279. package/src/scripts/_lib/pin_resolver.ts +24 -3
  280. package/src/scripts/adoption_report.ts +23 -4
  281. package/src/scripts/adoption_snapshot.ts +23 -1
  282. package/src/scripts/adoption_status.ts +23 -4
  283. package/src/scripts/adr/regenerate_index.ts +24 -3
  284. package/src/scripts/ai_council/airgap.ts +25 -2
  285. package/src/scripts/ai_council/compile_corpus.ts +24 -2
  286. package/src/scripts/ai_council/pricing.ts +11 -1
  287. package/src/scripts/analysis_freshness.ts +23 -4
  288. package/src/scripts/annotate_discovery.ts +23 -1
  289. package/src/scripts/apply_modules_config.ts +23 -4
  290. package/src/scripts/audit_adr_coverage.ts +23 -4
  291. package/src/scripts/audit_auto_rules.ts +23 -1
  292. package/src/scripts/audit_cloud_compatibility.ts +23 -4
  293. package/src/scripts/audit_command_surface.ts +23 -4
  294. package/src/scripts/audit_initial_context.ts +23 -3
  295. package/src/scripts/audit_likelihood.ts +23 -1
  296. package/src/scripts/audit_mcp_tools.ts +23 -3
  297. package/src/scripts/audit_overlap.ts +23 -1
  298. package/src/scripts/audit_skill_descriptions.ts +24 -2
  299. package/src/scripts/audit_skill_overlap.ts +23 -1
  300. package/src/scripts/audit_user_type_axis.ts +23 -4
  301. package/src/scripts/backfill_model_tier.ts +23 -4
  302. package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
  303. package/src/scripts/bench_ab_clone.ts +23 -1
  304. package/src/scripts/bench_ab_diff.ts +23 -1
  305. package/src/scripts/bench_ab_integrity.ts +23 -1
  306. package/src/scripts/bench_ab_run.ts +23 -2
  307. package/src/scripts/bench_ab_task_runner.ts +23 -1
  308. package/src/scripts/bench_ab_tracka_run.ts +23 -2
  309. package/src/scripts/bench_ab_v2_run.ts +23 -1
  310. package/src/scripts/bench_ab_v2_stats.ts +23 -1
  311. package/src/scripts/bench_baseline_ready.ts +23 -1
  312. package/src/scripts/bench_condense_memory.ts +23 -1
  313. package/src/scripts/bench_drift_check.ts +23 -2
  314. package/src/scripts/bench_matrix.ts +23 -4
  315. package/src/scripts/bench_per_tool.ts +23 -1
  316. package/src/scripts/bench_quality_run.ts +23 -2
  317. package/src/scripts/bench_rtk_savings.ts +23 -1
  318. package/src/scripts/bench_rule_load_latency.ts +23 -2
  319. package/src/scripts/bench_run.ts +23 -2
  320. package/src/scripts/bench_runner.ts +23 -1
  321. package/src/scripts/build_cloud_bundle.ts +23 -3
  322. package/src/scripts/build_discovery_manifest.ts +23 -4
  323. package/src/scripts/build_linear_digest.ts +23 -3
  324. package/src/scripts/build_mcp_registry_manifest.ts +23 -4
  325. package/src/scripts/build_rule_trigger_matrix.ts +23 -4
  326. package/src/scripts/capture_showcase_session.ts +23 -1
  327. package/src/scripts/chat_history.ts +24 -3
  328. package/src/scripts/check_always_budget.ts +23 -2
  329. package/src/scripts/check_artefact_checksums.ts +23 -4
  330. package/src/scripts/check_augment_description_cap.ts +23 -4
  331. package/src/scripts/check_augmentignore.ts +23 -4
  332. package/src/scripts/check_beta_review_markers.ts +23 -4
  333. package/src/scripts/check_cluster_patterns.ts +23 -4
  334. package/src/scripts/check_command_count_messaging.ts +23 -4
  335. package/src/scripts/check_comparison.ts +23 -1
  336. package/src/scripts/check_condensation.ts +24 -3
  337. package/src/scripts/check_condensed_paths.ts +23 -2
  338. package/src/scripts/check_context_paths.ts +23 -4
  339. package/src/scripts/check_council_config_location.ts +23 -4
  340. package/src/scripts/check_council_layout.ts +23 -4
  341. package/src/scripts/check_council_references.ts +23 -4
  342. package/src/scripts/check_discovery_determinism.ts +24 -4
  343. package/src/scripts/check_gate_paths.ts +23 -4
  344. package/src/scripts/check_generated_artefact_headers.ts +23 -4
  345. package/src/scripts/check_generator_output_coverage.ts +23 -4
  346. package/src/scripts/check_gitignore_freshness.ts +23 -4
  347. package/src/scripts/check_iron_law_prominence.ts +23 -4
  348. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  349. package/src/scripts/check_kernel_rule_bundle.ts +23 -4
  350. package/src/scripts/check_knowledge_cards.ts +23 -1
  351. package/src/scripts/check_md_language.ts +23 -4
  352. package/src/scripts/check_media_deps.ts +24 -1
  353. package/src/scripts/check_memory.ts +24 -2
  354. package/src/scripts/check_memory_proposal.ts +23 -4
  355. package/src/scripts/check_module_management_neutral.ts +23 -4
  356. package/src/scripts/check_no_conflict_markers.ts +23 -4
  357. package/src/scripts/check_no_external_sources.ts +23 -4
  358. package/src/scripts/check_no_local_settings_committed.ts +24 -4
  359. package/src/scripts/check_no_new_legacy_path.ts +23 -4
  360. package/src/scripts/check_no_roadmap_refs.ts +23 -4
  361. package/src/scripts/check_one_off_location.ts +23 -4
  362. package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
  363. package/src/scripts/check_portability.ts +24 -3
  364. package/src/scripts/check_proposal.ts +0 -0
  365. package/src/scripts/check_public_catalog_links.ts +23 -4
  366. package/src/scripts/check_public_links.ts +23 -4
  367. package/src/scripts/check_quality_regression.ts +23 -2
  368. package/src/scripts/check_references.ts +23 -4
  369. package/src/scripts/check_release_includes_discovery.ts +23 -4
  370. package/src/scripts/check_release_pr_shape.ts +23 -4
  371. package/src/scripts/check_release_published.ts +23 -4
  372. package/src/scripts/check_release_trunk_sync.ts +23 -4
  373. package/src/scripts/check_reply_consistency.ts +23 -4
  374. package/src/scripts/check_roadmap_trackable.ts +23 -4
  375. package/src/scripts/check_role_doc_links.ts +23 -4
  376. package/src/scripts/check_safety_floor_untouched.ts +24 -4
  377. package/src/scripts/check_site_links.ts +23 -1
  378. package/src/scripts/check_skill_gaps.ts +23 -1
  379. package/src/scripts/check_skill_requires.ts +23 -4
  380. package/src/scripts/check_structural_breaking.ts +24 -4
  381. package/src/scripts/check_surface_tiers.ts +23 -4
  382. package/src/scripts/check_template_pin_drift.ts +23 -4
  383. package/src/scripts/check_test_coverage_diff.ts +23 -4
  384. package/src/scripts/check_token_optimizer_freshness.ts +23 -4
  385. package/src/scripts/check_token_quality_golden.ts +23 -2
  386. package/src/scripts/check_token_regression.ts +23 -2
  387. package/src/scripts/check_tracked_but_ignored.ts +24 -4
  388. package/src/scripts/check_trigger_evals.ts +23 -4
  389. package/src/scripts/check_trunk_drift.ts +24 -1
  390. package/src/scripts/check_update_banner.ts +23 -4
  391. package/src/scripts/ci_summary.ts +23 -4
  392. package/src/scripts/ci_time_ratio.ts +23 -4
  393. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  394. package/src/scripts/compile_router.ts +23 -4
  395. package/src/scripts/condense.ts +30 -31
  396. package/src/scripts/condense_memory.ts +24 -2
  397. package/src/scripts/config/packs.ts +24 -4
  398. package/src/scripts/config/session_profiles.ts +23 -4
  399. package/src/scripts/context_hygiene_hook.ts +24 -3
  400. package/src/scripts/cost_by_conversation.ts +23 -4
  401. package/src/scripts/cost_summary.ts +23 -4
  402. package/src/scripts/council_cli.ts +35 -7
  403. package/src/scripts/council_prune.ts +25 -2
  404. package/src/scripts/cross_repo_retrieve.ts +23 -4
  405. package/src/scripts/discovery_stats.ts +23 -4
  406. package/src/scripts/evidence_report.ts +23 -1
  407. package/src/scripts/export_replay_corpus.ts +23 -2
  408. package/src/scripts/extract_audit_patterns.ts +23 -1
  409. package/src/scripts/first_run_gate_hook.ts +24 -3
  410. package/src/scripts/gen_discovery_baseline.ts +23 -4
  411. package/src/scripts/generate_capabilities_index.ts +24 -5
  412. package/src/scripts/generate_capability_matrix.ts +23 -4
  413. package/src/scripts/generate_catalog.ts +23 -1
  414. package/src/scripts/generate_command_flows.ts +23 -4
  415. package/src/scripts/generate_cookbook.ts +23 -4
  416. package/src/scripts/generate_index.ts +23 -4
  417. package/src/scripts/generate_ownership_matrix.ts +23 -1
  418. package/src/scripts/generate_pack_manifests.ts +24 -5
  419. package/src/scripts/generate_role_experiences_catalog.ts +23 -4
  420. package/src/scripts/hooks/block_no_verify.ts +23 -4
  421. package/src/scripts/hooks/design_slop_hook.ts +24 -3
  422. package/src/scripts/hooks/dispatch_hook.ts +47 -14
  423. package/src/scripts/hooks/replay_hook.ts +23 -2
  424. package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
  425. package/src/scripts/hooks_doctor.ts +23 -2
  426. package/src/scripts/hooks_status.ts +23 -2
  427. package/src/scripts/injection_scan_hook.ts +24 -5
  428. package/src/scripts/install +23 -4
  429. package/src/scripts/install.ts +102 -44
  430. package/src/scripts/inventory_abstraction_budget.ts +23 -1
  431. package/src/scripts/inventory_frontmatter.ts +23 -1
  432. package/src/scripts/inventory_meta_layers.ts +23 -1
  433. package/src/scripts/iron_law_sha.ts +23 -4
  434. package/src/scripts/janitor.ts +23 -4
  435. package/src/scripts/knowledge_global_cli.ts +24 -2
  436. package/src/scripts/linked_projects_list.ts +23 -4
  437. package/src/scripts/lint_agent_security.ts +23 -4
  438. package/src/scripts/lint_agent_skill_names.ts +23 -4
  439. package/src/scripts/lint_agents_layout.ts +23 -4
  440. package/src/scripts/lint_agents_md.ts +23 -4
  441. package/src/scripts/lint_archived_skills.ts +23 -4
  442. package/src/scripts/lint_artefact_frontmatter.ts +23 -4
  443. package/src/scripts/lint_bench_ab.ts +23 -4
  444. package/src/scripts/lint_bench_corpus.ts +23 -2
  445. package/src/scripts/lint_command_flow_coverage.ts +23 -4
  446. package/src/scripts/lint_command_routing.ts +23 -4
  447. package/src/scripts/lint_command_tiers.ts +23 -2
  448. package/src/scripts/lint_command_verbs.ts +23 -4
  449. package/src/scripts/lint_commit_subjects.ts +24 -4
  450. package/src/scripts/lint_confusables.ts +25 -5
  451. package/src/scripts/lint_context_spine_usage.ts +23 -4
  452. package/src/scripts/lint_discovery_manifest.ts +23 -4
  453. package/src/scripts/lint_discovery_vocabulary.ts +23 -4
  454. package/src/scripts/lint_empty_roadmaps.ts +23 -4
  455. package/src/scripts/lint_eval_freshness.ts +23 -4
  456. package/src/scripts/lint_examples.ts +23 -4
  457. package/src/scripts/lint_explain_trace.ts +23 -4
  458. package/src/scripts/lint_featured_skills.ts +0 -0
  459. package/src/scripts/lint_flows.ts +23 -4
  460. package/src/scripts/lint_framework_leakage.ts +23 -4
  461. package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
  462. package/src/scripts/lint_ghostwriter_source.ts +23 -4
  463. package/src/scripts/lint_glama_drift.ts +75 -0
  464. package/src/scripts/lint_global_paths.ts +23 -2
  465. package/src/scripts/lint_handoffs.ts +23 -4
  466. package/src/scripts/lint_hidden_unicode.ts +24 -5
  467. package/src/scripts/lint_hook_concern_budget.ts +23 -4
  468. package/src/scripts/lint_hook_manifest.ts +23 -2
  469. package/src/scripts/lint_instruction_smuggling.ts +25 -5
  470. package/src/scripts/lint_legal_pack.ts +23 -1
  471. package/src/scripts/lint_load_context.ts +23 -4
  472. package/src/scripts/lint_marketplace.ts +24 -3
  473. package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
  474. package/src/scripts/lint_mcp_config_security.ts +25 -5
  475. package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
  476. package/src/scripts/lint_media_policy_linkage.ts +23 -4
  477. package/src/scripts/lint_missions.ts +23 -4
  478. package/src/scripts/lint_model_tier_coverage.ts +23 -4
  479. package/src/scripts/lint_namespace.ts +23 -4
  480. package/src/scripts/lint_namespace_collisions.ts +23 -4
  481. package/src/scripts/lint_new_skill_gate.ts +23 -4
  482. package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
  483. package/src/scripts/lint_one_off_age.ts +23 -4
  484. package/src/scripts/lint_orchestration_dsl.ts +23 -4
  485. package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
  486. package/src/scripts/lint_pack_boundaries.ts +23 -4
  487. package/src/scripts/lint_pack_dependencies.ts +23 -2
  488. package/src/scripts/lint_pack_first_win.ts +23 -4
  489. package/src/scripts/lint_pack_risk_class.ts +23 -1
  490. package/src/scripts/lint_persona_governance.ts +23 -4
  491. package/src/scripts/lint_positioning.ts +23 -4
  492. package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
  493. package/src/scripts/lint_readme_jargon.ts +23 -4
  494. package/src/scripts/lint_readme_size.ts +23 -4
  495. package/src/scripts/lint_regression.ts +23 -4
  496. package/src/scripts/lint_roadmap_blockers.ts +23 -4
  497. package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
  498. package/src/scripts/lint_roadmap_complexity.ts +23 -4
  499. package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
  500. package/src/scripts/lint_role_experiences.ts +23 -4
  501. package/src/scripts/lint_rule_interactions.ts +23 -4
  502. package/src/scripts/lint_rule_tiers.ts +24 -3
  503. package/src/scripts/lint_showcase_sessions.ts +23 -4
  504. package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
  505. package/src/scripts/lint_skill_originality.ts +23 -4
  506. package/src/scripts/lint_skill_tools.ts +23 -4
  507. package/src/scripts/lint_subagent_determinism.ts +23 -4
  508. package/src/scripts/lint_ticket_buildable.ts +23 -4
  509. package/src/scripts/lint_topics_yaml.ts +23 -4
  510. package/src/scripts/lint_trust_coherence.ts +23 -4
  511. package/src/scripts/lint_value_dashboard.ts +23 -4
  512. package/src/scripts/lint_workflow_security.ts +23 -4
  513. package/src/scripts/lint_workspace_boundary.ts +23 -4
  514. package/src/scripts/mcp_exec/safety_envelope.ts +105 -0
  515. package/src/scripts/mcp_parity_smoke.ts +23 -2
  516. package/src/scripts/mcp_registry_submit.sh +14 -3
  517. package/src/scripts/mcp_render.ts +23 -4
  518. package/src/scripts/mcp_server/__main__.ts +6 -8
  519. package/src/scripts/mcp_server/consumer_tool_catalog.json +78 -3
  520. package/src/scripts/mcp_server/tools.ts +731 -0
  521. package/src/scripts/mcp_telemetry_health.ts +23 -4
  522. package/src/scripts/mcp_telemetry_query.ts +23 -4
  523. package/src/scripts/mcp_telemetry_store.ts +23 -4
  524. package/src/scripts/measure_augment_budget.ts +23 -1
  525. package/src/scripts/measure_density.ts +23 -1
  526. package/src/scripts/measure_frugality_savings.ts +23 -1
  527. package/src/scripts/measure_markitdown_lift.ts +23 -1
  528. package/src/scripts/measure_patterns.ts +23 -1
  529. package/src/scripts/measure_projection_bytes.ts +23 -1
  530. package/src/scripts/measure_rule_budget.ts +23 -4
  531. package/src/scripts/measure_skill_reduction.ts +23 -1
  532. package/src/scripts/memory_hash.ts +24 -2
  533. package/src/scripts/memory_lookup.ts +24 -2
  534. package/src/scripts/memory_report.ts +24 -2
  535. package/src/scripts/memory_signal.ts +24 -2
  536. package/src/scripts/memory_status.ts +26 -2
  537. package/src/scripts/migrate_command_suggestions.ts +23 -4
  538. package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
  539. package/src/scripts/migration_status.ts +25 -4
  540. package/src/scripts/mine_missing_guardrails.ts +23 -1
  541. package/src/scripts/mine_session.ts +23 -1
  542. package/src/scripts/minimal_safe_diff_hook.ts +24 -3
  543. package/src/scripts/new_skill.ts +23 -3
  544. package/src/scripts/onboarding_gate_hook.ts +24 -3
  545. package/src/scripts/parity/coverage_diff.ts +25 -3
  546. package/src/scripts/parity/phase_gate.ts +25 -4
  547. package/src/scripts/parity/replay.ts +25 -3
  548. package/src/scripts/pattern_share.ts +23 -4
  549. package/src/scripts/plan_physical_move.ts +23 -4
  550. package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
  551. package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
  552. package/src/scripts/prediction-pool/score_ev.ts +24 -3
  553. package/src/scripts/print_required_checks.ts +24 -4
  554. package/src/scripts/probe_host_compliance.ts +23 -2
  555. package/src/scripts/probe_projection_fidelity.ts +23 -1
  556. package/src/scripts/probe_skill_registration.ts +24 -2
  557. package/src/scripts/profile_staleness_hook.ts +24 -3
  558. package/src/scripts/profile_use.ts +23 -4
  559. package/src/scripts/project_thin_rules.ts +23 -3
  560. package/src/scripts/propose_modules_config.ts +23 -4
  561. package/src/scripts/prototype_lint_contradictions.ts +23 -1
  562. package/src/scripts/prove_pack_extractable.ts +23 -4
  563. package/src/scripts/readme_linter.ts +23 -3
  564. package/src/scripts/redact_hook_capture.ts +23 -4
  565. package/src/scripts/refine_ticket_detect.ts +23 -4
  566. package/src/scripts/release.ts +226 -43
  567. package/src/scripts/render_benchmark_composite.ts +23 -4
  568. package/src/scripts/render_benchmark_md.ts +23 -4
  569. package/src/scripts/roadmap_progress_hook.ts +46 -16
  570. package/src/scripts/run_skill_evals.ts +23 -4
  571. package/src/scripts/runtime_dispatcher.ts +23 -4
  572. package/src/scripts/runtime_registry.ts +23 -4
  573. package/src/scripts/score_skill_selection.ts +23 -1
  574. package/src/scripts/security_audit_config.ts +24 -5
  575. package/src/scripts/skill_collision_clusters.ts +23 -4
  576. package/src/scripts/skill_discovery.ts +23 -4
  577. package/src/scripts/skill_linter.ts +23 -2
  578. package/src/scripts/skill_preview.ts +23 -4
  579. package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
  580. package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
  581. package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
  582. package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
  583. package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
  584. package/src/scripts/skill_usage_collect.ts +23 -4
  585. package/src/scripts/smoke_path_resolution.ts +23 -4
  586. package/src/scripts/smoke_quickstart.ts +23 -4
  587. package/src/scripts/snapshot_agent_outputs.ts +23 -4
  588. package/src/scripts/spotcheck_thin_root.ts +23 -4
  589. package/src/scripts/sync_agent_settings.ts +23 -4
  590. package/src/scripts/sync_github_metadata.ts +23 -4
  591. package/src/scripts/sync_gitignore.ts +23 -4
  592. package/src/scripts/telegraph_stats.ts +23 -4
  593. package/src/scripts/tool_registry.ts +24 -4
  594. package/src/scripts/trigger_coverage.ts +23 -4
  595. package/src/scripts/update_counts.ts +23 -4
  596. package/src/scripts/update_prices.ts +23 -1
  597. package/src/scripts/validate_agent_settings.ts +23 -4
  598. package/src/scripts/validate_decision_engine.ts +23 -4
  599. package/src/scripts/validate_discovery_manifest.ts +23 -4
  600. package/src/scripts/validate_frontmatter.ts +23 -2
  601. package/src/scripts/validate_pack_yaml.ts +0 -0
  602. package/src/scripts/validate_safe_paths.ts +24 -4
  603. package/src/scripts/validate_telegraph_carveouts.ts +23 -4
  604. package/src/scripts/verify_before_complete_hook.ts +24 -3
  605. package/src/scripts/verify_physical_move.ts +23 -4
  606. package/src/scripts/wrapper_freshness_hook.ts +107 -8
  607. package/tests/fixtures/hooks/README.md +92 -0
  608. package/tests/fixtures/hooks/agent_error.json +7 -0
  609. package/tests/fixtures/hooks/post_tool_use.json +13 -0
  610. package/tests/fixtures/hooks/pre_compact.json +7 -0
  611. package/tests/fixtures/hooks/pre_tool_use.json +9 -0
  612. package/tests/fixtures/hooks/session_end.json +6 -0
  613. package/tests/fixtures/hooks/session_start.json +6 -0
  614. package/tests/fixtures/hooks/stop.json +6 -0
  615. package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
@@ -179,9 +179,30 @@ export function main(argv: string[]): number {
179
179
  return 0;
180
180
  }
181
181
 
182
+ function _isCliEntry(): boolean {
183
+ if (process.argv[1] === undefined) {
184
+ return false;
185
+ }
186
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
187
+ if (import.meta.url === argvUrl) {
188
+ return true;
189
+ }
190
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
191
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
192
+ // import.meta.url is the resolved real path while argv[1] keeps the
193
+ // symlink path. Compare realpaths so the entry guard still fires
194
+ // (without this the CLI silently no-ops when run through a symlink).
195
+ try {
196
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
197
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
198
+ return here === argv;
199
+ } catch {
200
+ return false;
201
+ }
202
+ }
203
+
182
204
  const _IS_MAIN =
183
- process.argv[1] !== undefined &&
184
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
205
+ _isCliEntry();
185
206
  if (_IS_MAIN) {
186
207
  process.exit(main(process.argv.slice(2)));
187
208
  }
@@ -388,7 +388,29 @@ export function main(argv: string[] | null = null): number {
388
388
  return 0;
389
389
  }
390
390
 
391
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
391
+ function _isCliEntry(): boolean {
392
+ if (process.argv[1] === undefined) {
393
+ return false;
394
+ }
395
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
396
+ if (import.meta.url === argvUrl) {
397
+ return true;
398
+ }
399
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
400
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
401
+ // import.meta.url is the resolved real path while argv[1] keeps the
402
+ // symlink path. Compare realpaths so the entry guard still fires
403
+ // (without this the CLI silently no-ops when run through a symlink).
404
+ try {
405
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
406
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
407
+ return here === argv;
408
+ } catch {
409
+ return false;
410
+ }
411
+ }
412
+
413
+ const _isMain = _isCliEntry();
392
414
  if (_isMain) {
393
415
  process.exitCode = main();
394
416
  }
@@ -36,7 +36,7 @@
36
36
 
37
37
  import fs from "node:fs";
38
38
  import path from "node:path";
39
- import { pathToFileURL } from "node:url";
39
+ import { fileURLToPath, pathToFileURL } from "node:url";
40
40
 
41
41
  const PLUGIN_ID = "agent-config@event4u-agent-config";
42
42
  const ACTION_NEEDED_FILE = ".augment/.first-run-action-needed.md";
@@ -238,9 +238,30 @@ export function main(argv?: string[]): number {
238
238
  return run(consumer_root);
239
239
  }
240
240
 
241
+ function _isCliEntry(): boolean {
242
+ if (process.argv[1] === undefined) {
243
+ return false;
244
+ }
245
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
246
+ if (import.meta.url === argvUrl) {
247
+ return true;
248
+ }
249
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
250
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
251
+ // import.meta.url is the resolved real path while argv[1] keeps the
252
+ // symlink path. Compare realpaths so the entry guard still fires
253
+ // (without this the CLI silently no-ops when run through a symlink).
254
+ try {
255
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
256
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
257
+ return here === argv;
258
+ } catch {
259
+ return false;
260
+ }
261
+ }
262
+
241
263
  const isCliEntry =
242
- process.argv[1] !== undefined &&
243
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
264
+ _isCliEntry();
244
265
  if (isCliEntry) {
245
266
  process.exit(main(process.argv.slice(2)));
246
267
  }
@@ -289,9 +289,28 @@ function _mostCommon(counter: Map<string, number>): Array<[string, number]> {
289
289
  .map(([e]) => e);
290
290
  }
291
291
 
292
- const _isCliEntry =
293
- process.argv[1] !== undefined &&
294
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
295
- if (_isCliEntry || process.argv[1] === _HERE) {
292
+ function _isCliEntry(): boolean {
293
+ if (process.argv[1] === undefined) {
294
+ return false;
295
+ }
296
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
297
+ if (import.meta.url === argvUrl) {
298
+ return true;
299
+ }
300
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
301
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
302
+ // import.meta.url is the resolved real path while argv[1] keeps the
303
+ // symlink path. Compare realpaths so the entry guard still fires
304
+ // (without this the CLI silently no-ops when run through a symlink).
305
+ try {
306
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
307
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
308
+ return here === argv;
309
+ } catch {
310
+ return false;
311
+ }
312
+ }
313
+
314
+ if (_isCliEntry() || process.argv[1] === _HERE) {
296
315
  process.exitCode = main();
297
316
  }
@@ -319,7 +319,7 @@ export function build(): string {
319
319
  const lines: string[] = [];
320
320
  lines.push('# CAPABILITIES.yaml — what agent-config already covers');
321
321
  lines.push('#');
322
- lines.push('# GENERATED by src/scripts/generate_capabilities_index.py — do NOT hand-edit.');
322
+ lines.push('# GENERATED by src/scripts/generate_capabilities_index.ts — do NOT hand-edit.');
323
323
  lines.push('# Drift-checked in CI (`--check`). Regenerate after adding/removing a');
324
324
  lines.push('# skill, command, or capability pack.');
325
325
  lines.push('#');
@@ -488,9 +488,28 @@ export function main(argv: string[] | null = null): number {
488
488
  return 0;
489
489
  }
490
490
 
491
- const _isCliEntry =
492
- process.argv[1] !== undefined &&
493
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
494
- if (_isCliEntry || process.argv[1] === _HERE) {
491
+ function _isCliEntry(): boolean {
492
+ if (process.argv[1] === undefined) {
493
+ return false;
494
+ }
495
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
496
+ if (import.meta.url === argvUrl) {
497
+ return true;
498
+ }
499
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
500
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
501
+ // import.meta.url is the resolved real path while argv[1] keeps the
502
+ // symlink path. Compare realpaths so the entry guard still fires
503
+ // (without this the CLI silently no-ops when run through a symlink).
504
+ try {
505
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
506
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
507
+ return here === argv;
508
+ } catch {
509
+ return false;
510
+ }
511
+ }
512
+
513
+ if (_isCliEntry() || process.argv[1] === _HERE) {
495
514
  process.exitCode = main();
496
515
  }
@@ -430,9 +430,28 @@ function _pyListRepr(items: string[]): string {
430
430
  return '[' + items.map((s) => `'${s.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`).join(', ') + ']';
431
431
  }
432
432
 
433
- const _isCliEntry =
434
- process.argv[1] !== undefined &&
435
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
436
- if (_isCliEntry || process.argv[1] === _HERE) {
433
+ function _isCliEntry(): boolean {
434
+ if (process.argv[1] === undefined) {
435
+ return false;
436
+ }
437
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
438
+ if (import.meta.url === argvUrl) {
439
+ return true;
440
+ }
441
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
442
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
443
+ // import.meta.url is the resolved real path while argv[1] keeps the
444
+ // symlink path. Compare realpaths so the entry guard still fires
445
+ // (without this the CLI silently no-ops when run through a symlink).
446
+ try {
447
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
448
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
449
+ return here === argv;
450
+ } catch {
451
+ return false;
452
+ }
453
+ }
454
+
455
+ if (_isCliEntry() || process.argv[1] === _HERE) {
437
456
  process.exitCode = main();
438
457
  }
@@ -172,7 +172,29 @@ export function main(): number {
172
172
  return 0;
173
173
  }
174
174
 
175
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
175
+ function _isCliEntry(): boolean {
176
+ if (process.argv[1] === undefined) {
177
+ return false;
178
+ }
179
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
180
+ if (import.meta.url === argvUrl) {
181
+ return true;
182
+ }
183
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
184
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
185
+ // import.meta.url is the resolved real path while argv[1] keeps the
186
+ // symlink path. Compare realpaths so the entry guard still fires
187
+ // (without this the CLI silently no-ops when run through a symlink).
188
+ try {
189
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
190
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
191
+ return here === argv;
192
+ } catch {
193
+ return false;
194
+ }
195
+ }
196
+
197
+ const _isMain = _isCliEntry();
176
198
  if (_isMain) {
177
199
  process.exitCode = main();
178
200
  }
@@ -308,9 +308,28 @@ function _cmpStr(a: string, b: string): number {
308
308
  return 0;
309
309
  }
310
310
 
311
- const _isCliEntry =
312
- process.argv[1] !== undefined &&
313
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
314
- if (_isCliEntry || process.argv[1] === _HERE) {
311
+ function _isCliEntry(): boolean {
312
+ if (process.argv[1] === undefined) {
313
+ return false;
314
+ }
315
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
316
+ if (import.meta.url === argvUrl) {
317
+ return true;
318
+ }
319
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
320
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
321
+ // import.meta.url is the resolved real path while argv[1] keeps the
322
+ // symlink path. Compare realpaths so the entry guard still fires
323
+ // (without this the CLI silently no-ops when run through a symlink).
324
+ try {
325
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
326
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
327
+ return here === argv;
328
+ } catch {
329
+ return false;
330
+ }
331
+ }
332
+
333
+ if (_isCliEntry() || process.argv[1] === _HERE) {
315
334
  process.exit(main());
316
335
  }
@@ -294,9 +294,28 @@ export function main(argv: string[] | null = null): number {
294
294
  return 0;
295
295
  }
296
296
 
297
- const _isCliEntry =
298
- process.argv[1] !== undefined &&
299
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
300
- if (_isCliEntry || process.argv[1] === _HERE) {
297
+ function _isCliEntry(): boolean {
298
+ if (process.argv[1] === undefined) {
299
+ return false;
300
+ }
301
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
302
+ if (import.meta.url === argvUrl) {
303
+ return true;
304
+ }
305
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
306
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
307
+ // import.meta.url is the resolved real path while argv[1] keeps the
308
+ // symlink path. Compare realpaths so the entry guard still fires
309
+ // (without this the CLI silently no-ops when run through a symlink).
310
+ try {
311
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
312
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
313
+ return here === argv;
314
+ } catch {
315
+ return false;
316
+ }
317
+ }
318
+
319
+ if (_isCliEntry() || process.argv[1] === _HERE) {
301
320
  process.exitCode = main();
302
321
  }
@@ -492,9 +492,28 @@ export function main(argv: string[] | null = null): number {
492
492
  return 0;
493
493
  }
494
494
 
495
- const _isCliEntry =
496
- process.argv[1] !== undefined &&
497
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
498
- if (_isCliEntry || process.argv[1] === _HERE) {
495
+ function _isCliEntry(): boolean {
496
+ if (process.argv[1] === undefined) {
497
+ return false;
498
+ }
499
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
500
+ if (import.meta.url === argvUrl) {
501
+ return true;
502
+ }
503
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
504
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
505
+ // import.meta.url is the resolved real path while argv[1] keeps the
506
+ // symlink path. Compare realpaths so the entry guard still fires
507
+ // (without this the CLI silently no-ops when run through a symlink).
508
+ try {
509
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
510
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
511
+ return here === argv;
512
+ } catch {
513
+ return false;
514
+ }
515
+ }
516
+
517
+ if (_isCliEntry() || process.argv[1] === _HERE) {
499
518
  process.exit(main());
500
519
  }
@@ -638,7 +638,29 @@ export function main(argv: string[] | null = null): number {
638
638
  return 0;
639
639
  }
640
640
 
641
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
641
+ function _isCliEntry(): boolean {
642
+ if (process.argv[1] === undefined) {
643
+ return false;
644
+ }
645
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
646
+ if (import.meta.url === argvUrl) {
647
+ return true;
648
+ }
649
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
650
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
651
+ // import.meta.url is the resolved real path while argv[1] keeps the
652
+ // symlink path. Compare realpaths so the entry guard still fires
653
+ // (without this the CLI silently no-ops when run through a symlink).
654
+ try {
655
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
656
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
657
+ return here === argv;
658
+ } catch {
659
+ return false;
660
+ }
661
+ }
662
+
663
+ const _isMain = _isCliEntry();
642
664
  if (_isMain) {
643
665
  // Set exitCode rather than process.exit() so any large stdout/stderr write
644
666
  // fully drains to the pipe before the process exits.
@@ -42,7 +42,7 @@ const SRC_PACKS = path.join(ROOT, 'src', 'packs');
42
42
  const PACKS_VOCAB = path.join(ROOT, 'src', 'config', 'discovery', 'packs.yml');
43
43
  const PACKAGE_JSON = path.join(ROOT, 'package.json');
44
44
  const GENERATED_HEADER =
45
- '# Generated by scripts/generate_pack_manifests.py — DO NOT EDIT BY HAND\n';
45
+ '# Generated by scripts/generate_pack_manifests.ts — DO NOT EDIT BY HAND\n';
46
46
 
47
47
  type Json = unknown;
48
48
  type Dict = Record<string, unknown>;
@@ -1017,9 +1017,28 @@ function _cmpStr(a: string, b: string): number {
1017
1017
  return 0;
1018
1018
  }
1019
1019
 
1020
- const _isCliEntry =
1021
- process.argv[1] !== undefined &&
1022
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
1023
- if (_isCliEntry || process.argv[1] === _HERE) {
1020
+ function _isCliEntry(): boolean {
1021
+ if (process.argv[1] === undefined) {
1022
+ return false;
1023
+ }
1024
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
1025
+ if (import.meta.url === argvUrl) {
1026
+ return true;
1027
+ }
1028
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
1029
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
1030
+ // import.meta.url is the resolved real path while argv[1] keeps the
1031
+ // symlink path. Compare realpaths so the entry guard still fires
1032
+ // (without this the CLI silently no-ops when run through a symlink).
1033
+ try {
1034
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
1035
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
1036
+ return here === argv;
1037
+ } catch {
1038
+ return false;
1039
+ }
1040
+ }
1041
+
1042
+ if (_isCliEntry() || process.argv[1] === _HERE) {
1024
1043
  process.exit(main());
1025
1044
  }
@@ -257,9 +257,28 @@ export function main(argv: string[] | null = null): number {
257
257
  return 0;
258
258
  }
259
259
 
260
- const _isCliEntry =
261
- process.argv[1] !== undefined &&
262
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
263
- if (_isCliEntry || process.argv[1] === _HERE) {
260
+ function _isCliEntry(): boolean {
261
+ if (process.argv[1] === undefined) {
262
+ return false;
263
+ }
264
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
265
+ if (import.meta.url === argvUrl) {
266
+ return true;
267
+ }
268
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
269
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
270
+ // import.meta.url is the resolved real path while argv[1] keeps the
271
+ // symlink path. Compare realpaths so the entry guard still fires
272
+ // (without this the CLI silently no-ops when run through a symlink).
273
+ try {
274
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
275
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
276
+ return here === argv;
277
+ } catch {
278
+ return false;
279
+ }
280
+ }
281
+
282
+ if (_isCliEntry() || process.argv[1] === _HERE) {
264
283
  process.exitCode = main();
265
284
  }
@@ -390,10 +390,29 @@ export function main(argv?: string[]): number {
390
390
  return 0; // EXIT_ALLOW
391
391
  }
392
392
 
393
- const _isCliEntry =
394
- process.argv[1] !== undefined &&
395
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
396
- if (_isCliEntry || process.argv[1] === _HERE) {
393
+ function _isCliEntry(): boolean {
394
+ if (process.argv[1] === undefined) {
395
+ return false;
396
+ }
397
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
398
+ if (import.meta.url === argvUrl) {
399
+ return true;
400
+ }
401
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
402
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
403
+ // import.meta.url is the resolved real path while argv[1] keeps the
404
+ // symlink path. Compare realpaths so the entry guard still fires
405
+ // (without this the CLI silently no-ops when run through a symlink).
406
+ try {
407
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
408
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
409
+ return here === argv;
410
+ } catch {
411
+ return false;
412
+ }
413
+ }
414
+
415
+ if (_isCliEntry() || process.argv[1] === _HERE) {
397
416
  process.exitCode = main();
398
417
  }
399
418
 
@@ -21,7 +21,7 @@
21
21
  */
22
22
  import fs from "node:fs";
23
23
  import path from "node:path";
24
- import { pathToFileURL } from "node:url";
24
+ import { fileURLToPath, pathToFileURL } from "node:url";
25
25
  import { type DesignContext } from "../design_slop_rules.js";
26
26
  import { loadDesignContext, scanFile } from "../lint_design_slop.js";
27
27
 
@@ -175,7 +175,28 @@ export function main(): number {
175
175
  return EXIT_WARN;
176
176
  }
177
177
 
178
+ function _isCliEntry(): boolean {
179
+ if (process.argv[1] === undefined) {
180
+ return false;
181
+ }
182
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
183
+ if (import.meta.url === argvUrl) {
184
+ return true;
185
+ }
186
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
187
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
188
+ // import.meta.url is the resolved real path while argv[1] keeps the
189
+ // symlink path. Compare realpaths so the entry guard still fires
190
+ // (without this the CLI silently no-ops when run through a symlink).
191
+ try {
192
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
193
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
194
+ return here === argv;
195
+ } catch {
196
+ return false;
197
+ }
198
+ }
199
+
178
200
  const isCliEntry =
179
- process.argv[1] !== undefined &&
180
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
201
+ _isCliEntry();
181
202
  if (isCliEntry) process.exit(main());
@@ -423,25 +423,37 @@ interface RunResult {
423
423
  /**
424
424
  * Resolve how to run a `.ts` concern: prefer the `tsx` binary from a
425
425
  * `node_modules/.bin` directory found by walking up from the script's
426
- * directory; fall back to `npx tsx`. Mirrors `run.ts::resolveTsxInvocation`
427
- * so concern scripts run as TypeScript with no python3 dependency.
426
+ * directory, then from THIS module's own package tree (the package ships
427
+ * tsx as a runtime dependency); only then fall back to `npx tsx`. Mirrors
428
+ * `run.ts::resolveTsxInvocation` so concern scripts run as TypeScript with
429
+ * no python3 dependency. `npx tsx` is last-resort only: it runs against the
430
+ * consumer's npm config and fails hard on e.g. devEngines pins (the 8.1.0
431
+ * EBADDEVENGINES regression).
428
432
  */
429
433
  function _resolve_tsx_invocation(
430
434
  scriptPath: string,
431
435
  scriptArgs: string[],
432
436
  ): { command: string; args: string[] } {
433
437
  const binName = process.platform === "win32" ? "tsx.cmd" : "tsx";
434
- let dir = path.dirname(scriptPath);
435
- for (;;) {
436
- const candidate = path.join(dir, "node_modules", ".bin", binName);
437
- if (_isFile(candidate)) {
438
- return { command: candidate, args: [scriptPath, ...scriptArgs] };
439
- }
440
- const parent = path.dirname(dir);
441
- if (parent === dir) {
442
- break;
438
+ const walkUp = (start: string): string | null => {
439
+ let dir = start;
440
+ for (;;) {
441
+ const candidate = path.join(dir, "node_modules", ".bin", binName);
442
+ if (_isFile(candidate)) {
443
+ return candidate;
444
+ }
445
+ const parent = path.dirname(dir);
446
+ if (parent === dir) {
447
+ return null;
448
+ }
449
+ dir = parent;
443
450
  }
444
- dir = parent;
451
+ };
452
+ const tsx =
453
+ walkUp(path.dirname(scriptPath)) ??
454
+ walkUp(path.dirname(fileURLToPath(import.meta.url)));
455
+ if (tsx !== null) {
456
+ return { command: tsx, args: [scriptPath, ...scriptArgs] };
445
457
  }
446
458
  return { command: "npx", args: ["tsx", scriptPath, ...scriptArgs] };
447
459
  }
@@ -861,9 +873,30 @@ function _readStdin(): string {
861
873
  }
862
874
  }
863
875
 
876
+ function _isCliEntry(): boolean {
877
+ if (process.argv[1] === undefined) {
878
+ return false;
879
+ }
880
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
881
+ if (import.meta.url === argvUrl) {
882
+ return true;
883
+ }
884
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
885
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
886
+ // import.meta.url is the resolved real path while argv[1] keeps the
887
+ // symlink path. Compare realpaths so the entry guard still fires
888
+ // (without this the CLI silently no-ops when run through a symlink).
889
+ try {
890
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
891
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
892
+ return here === argv;
893
+ } catch {
894
+ return false;
895
+ }
896
+ }
897
+
864
898
  const isCliEntry =
865
- process.argv[1] !== undefined &&
866
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
899
+ _isCliEntry();
867
900
  if (isCliEntry) {
868
901
  process.exit(main(process.argv.slice(2)));
869
902
  }
@@ -356,9 +356,30 @@ function _py_json_dumps(value: unknown, indent: number): string {
356
356
  return render(value, 0);
357
357
  }
358
358
 
359
+ function _isCliEntry(): boolean {
360
+ if (process.argv[1] === undefined) {
361
+ return false;
362
+ }
363
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
364
+ if (import.meta.url === argvUrl) {
365
+ return true;
366
+ }
367
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
368
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
369
+ // import.meta.url is the resolved real path while argv[1] keeps the
370
+ // symlink path. Compare realpaths so the entry guard still fires
371
+ // (without this the CLI silently no-ops when run through a symlink).
372
+ try {
373
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
374
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
375
+ return here === argv;
376
+ } catch {
377
+ return false;
378
+ }
379
+ }
380
+
359
381
  const isCliEntry =
360
- process.argv[1] !== undefined &&
361
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
382
+ _isCliEntry();
362
383
  if (isCliEntry) {
363
384
  process.exit(main(process.argv.slice(2)));
364
385
  }