@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
@@ -31,7 +31,7 @@ import * as crypto from 'node:crypto';
31
31
  import * as fs from 'node:fs';
32
32
  import * as path from 'node:path';
33
33
  import process from 'node:process';
34
- import { pathToFileURL } from 'node:url';
34
+ import { fileURLToPath, pathToFileURL } from 'node:url';
35
35
 
36
36
  // Mutable so tests can repoint at a tmp tree (monkeypatch parity).
37
37
  export let INTAKE_ROOT = path.join('agents', 'memory', 'intake');
@@ -415,8 +415,30 @@ export function main(): number {
415
415
  return 0;
416
416
  }
417
417
 
418
+ function _isCliEntry(): boolean {
419
+ if (process.argv[1] === undefined) {
420
+ return false;
421
+ }
422
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
423
+ if (import.meta.url === argvUrl) {
424
+ return true;
425
+ }
426
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
427
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
428
+ // import.meta.url is the resolved real path while argv[1] keeps the
429
+ // symlink path. Compare realpaths so the entry guard still fires
430
+ // (without this the CLI silently no-ops when run through a symlink).
431
+ try {
432
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
433
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
434
+ return here === argv;
435
+ } catch {
436
+ return false;
437
+ }
438
+ }
439
+
418
440
  const _isMain =
419
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
441
+ _isCliEntry();
420
442
  if (_isMain) {
421
443
  process.exit(main());
422
444
  }
@@ -22,7 +22,9 @@
22
22
  */
23
23
 
24
24
  import process from 'node:process';
25
- import { pathToFileURL } from 'node:url';
25
+ import * as fs from 'node:fs';
26
+ import * as path from 'node:path';
27
+ import { fileURLToPath, pathToFileURL } from 'node:url';
26
28
 
27
29
  // Retrieval contract version served by the file-backed backend.
28
30
  // Source of truth: internal/schemas/retrieval-v1.schema.json.
@@ -176,8 +178,30 @@ export function main(): number {
176
178
  return 0;
177
179
  }
178
180
 
181
+ function _isCliEntry(): boolean {
182
+ if (process.argv[1] === undefined) {
183
+ return false;
184
+ }
185
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
186
+ if (import.meta.url === argvUrl) {
187
+ return true;
188
+ }
189
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
190
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
191
+ // import.meta.url is the resolved real path while argv[1] keeps the
192
+ // symlink path. Compare realpaths so the entry guard still fires
193
+ // (without this the CLI silently no-ops when run through a symlink).
194
+ try {
195
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
196
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
197
+ return here === argv;
198
+ } catch {
199
+ return false;
200
+ }
201
+ }
202
+
179
203
  const _isMain =
180
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href;
204
+ _isCliEntry();
181
205
  if (_isMain) {
182
206
  try {
183
207
  process.exitCode = main();
@@ -1,4 +1,4 @@
1
- # Ownership map — consumed by scripts/pr_review_routing.py
1
+ # Ownership map — consumed by scripts/pr_review_routing.ts
2
2
  #
3
3
  # Copy this file to `.github/ownership-map.yml` (preferred) or
4
4
  # `agents/ownership-map.yml` and adapt the entries to your stack.
@@ -1,4 +1,4 @@
1
- # PR risk config — consumed by scripts/pr_risk_review.py
1
+ # PR risk config — consumed by scripts/pr_risk_review.ts
2
2
  #
3
3
  # Copy this file to `.github/pr-risk-config.yml` and adapt the patterns to
4
4
  # your stack. Omitting the file entirely is fine — the script ships with
@@ -27,7 +27,7 @@ import { spawnSync } from 'node:child_process';
27
27
  import { createRequire } from 'node:module';
28
28
  import * as fs from 'node:fs';
29
29
  import process from 'node:process';
30
- import { pathToFileURL } from 'node:url';
30
+ import { fileURLToPath, pathToFileURL } from 'node:url';
31
31
  import * as path from 'node:path';
32
32
  import type * as YamlModule from 'yaml';
33
33
 
@@ -515,9 +515,30 @@ export function main(argv: string[] = process.argv.slice(2)): number {
515
515
  return 0;
516
516
  }
517
517
 
518
+ function _isCliEntry(): boolean {
519
+ if (process.argv[1] === undefined) {
520
+ return false;
521
+ }
522
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
523
+ if (import.meta.url === argvUrl) {
524
+ return true;
525
+ }
526
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
527
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
528
+ // import.meta.url is the resolved real path while argv[1] keeps the
529
+ // symlink path. Compare realpaths so the entry guard still fires
530
+ // (without this the CLI silently no-ops when run through a symlink).
531
+ try {
532
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
533
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
534
+ return here === argv;
535
+ } catch {
536
+ return false;
537
+ }
538
+ }
539
+
518
540
  const _invokedDirectly =
519
- process.argv[1] !== undefined &&
520
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
541
+ _isCliEntry();
521
542
  if (_invokedDirectly) {
522
543
  process.exitCode = main();
523
544
  }
@@ -15,7 +15,7 @@
15
15
  */
16
16
  import * as fs from 'node:fs';
17
17
  import process from 'node:process';
18
- import { pathToFileURL } from 'node:url';
18
+ import { fileURLToPath, pathToFileURL } from 'node:url';
19
19
  import * as path from 'node:path';
20
20
 
21
21
  import { record_event } from './telemetry/boundary.js';
@@ -247,9 +247,30 @@ function _osErr(exc: unknown): string {
247
247
  return exc instanceof Error ? exc.message : String(exc);
248
248
  }
249
249
 
250
+ function _isCliEntry(): boolean {
251
+ if (process.argv[1] === undefined) {
252
+ return false;
253
+ }
254
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
255
+ if (import.meta.url === argvUrl) {
256
+ return true;
257
+ }
258
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
259
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
260
+ // import.meta.url is the resolved real path while argv[1] keeps the
261
+ // symlink path. Compare realpaths so the entry guard still fires
262
+ // (without this the CLI silently no-ops when run through a symlink).
263
+ try {
264
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
265
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
266
+ return here === argv;
267
+ } catch {
268
+ return false;
269
+ }
270
+ }
271
+
250
272
  const _invokedDirectly =
251
- process.argv[1] !== undefined &&
252
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
273
+ _isCliEntry();
253
274
  if (_invokedDirectly) {
254
275
  process.exitCode = main();
255
276
  }
@@ -11,7 +11,8 @@
11
11
  * failure on a row sourced from the log
12
12
  */
13
13
  import process from 'node:process';
14
- import { pathToFileURL } from 'node:url';
14
+ import * as fs from 'node:fs';
15
+ import { fileURLToPath, pathToFileURL } from 'node:url';
15
16
  import * as path from 'node:path';
16
17
 
17
18
  import { aggregate } from './telemetry/aggregator.js';
@@ -181,9 +182,30 @@ function _osErr(exc: unknown): string {
181
182
  return exc instanceof Error ? exc.message : String(exc);
182
183
  }
183
184
 
185
+ function _isCliEntry(): boolean {
186
+ if (process.argv[1] === undefined) {
187
+ return false;
188
+ }
189
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
190
+ if (import.meta.url === argvUrl) {
191
+ return true;
192
+ }
193
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
194
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
195
+ // import.meta.url is the resolved real path while argv[1] keeps the
196
+ // symlink path. Compare realpaths so the entry guard still fires
197
+ // (without this the CLI silently no-ops when run through a symlink).
198
+ try {
199
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
200
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
201
+ return here === argv;
202
+ } catch {
203
+ return false;
204
+ }
205
+ }
206
+
184
207
  const _invokedDirectly =
185
- process.argv[1] !== undefined &&
186
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
208
+ _isCliEntry();
187
209
  if (_invokedDirectly) {
188
210
  process.exitCode = main();
189
211
  }
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import * as fs from 'node:fs';
10
10
  import process from 'node:process';
11
- import { pathToFileURL } from 'node:url';
11
+ import { fileURLToPath, pathToFileURL } from 'node:url';
12
12
  import * as path from 'node:path';
13
13
 
14
14
  import { EngagementSchemaError, parse_event } from './telemetry/engagement.js';
@@ -304,9 +304,30 @@ function _pyJsonStringAscii(s: string): string {
304
304
  return `${out}"`;
305
305
  }
306
306
 
307
+ function _isCliEntry(): boolean {
308
+ if (process.argv[1] === undefined) {
309
+ return false;
310
+ }
311
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
312
+ if (import.meta.url === argvUrl) {
313
+ return true;
314
+ }
315
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
316
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
317
+ // import.meta.url is the resolved real path while argv[1] keeps the
318
+ // symlink path. Compare realpaths so the entry guard still fires
319
+ // (without this the CLI silently no-ops when run through a symlink).
320
+ try {
321
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
322
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
323
+ return here === argv;
324
+ } catch {
325
+ return false;
326
+ }
327
+ }
328
+
307
329
  const _invokedDirectly =
308
- process.argv[1] !== undefined &&
309
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
330
+ _isCliEntry();
310
331
  if (_invokedDirectly) {
311
332
  process.exitCode = main();
312
333
  }
@@ -43,7 +43,7 @@
43
43
  import * as fs from 'node:fs';
44
44
  import * as path from 'node:path';
45
45
  import process from 'node:process';
46
- import { pathToFileURL } from 'node:url';
46
+ import { fileURLToPath, pathToFileURL } from 'node:url';
47
47
  import { parse as parseYaml } from 'yaml';
48
48
 
49
49
  // Contract whitelist (see `docs/contracts/command-clusters.md`).
@@ -590,8 +590,30 @@ function _osErrorMessage(exc: unknown, log_path: string): string {
590
590
  return err && err.message ? err.message : String(exc);
591
591
  }
592
592
 
593
+ function _isCliEntry(): boolean {
594
+ if (process.argv[1] === undefined) {
595
+ return false;
596
+ }
597
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
598
+ if (import.meta.url === argvUrl) {
599
+ return true;
600
+ }
601
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
602
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
603
+ // import.meta.url is the resolved real path while argv[1] keeps the
604
+ // symlink path. Compare realpaths so the entry guard still fires
605
+ // (without this the CLI silently no-ops when run through a symlink).
606
+ try {
607
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
608
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
609
+ return here === argv;
610
+ } catch {
611
+ return false;
612
+ }
613
+ }
614
+
593
615
  const _isMain =
594
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
616
+ _isCliEntry();
595
617
  if (_isMain) {
596
618
  process.exit(main());
597
619
  }
@@ -1131,18 +1131,36 @@ function _posix_join(a: string, b: string): string {
1131
1131
 
1132
1132
  export type DisciplineProfile = 'off' | 'essential' | 'full' | 'custom';
1133
1133
 
1134
+ export type LiftDefault = 'lift_enabled' | 'lift_disabled';
1135
+
1134
1136
  export interface HostCapabilities {
1135
1137
  /** Models with a MEASURED null discipline lift (prefix-matched ids). */
1136
1138
  lift_disabled_models: string[];
1137
- /** Resolution for unmatched/unknown models. Fail-safe: lift_enabled. */
1138
- unknown_default: 'lift_enabled' | 'lift_disabled';
1139
+ /**
1140
+ * Resolution for UNMEASURED models, per vendor family (P2-verdict
1141
+ * council 2026-07-07): keys are family names plus a required `default`.
1142
+ * Evidence-structure granularity — anthropic keeps the fail-safe toward
1143
+ * the one measured lift; everything else defaults off after the failed
1144
+ * GPT-weak replication.
1145
+ */
1146
+ unknown_defaults: Record<string, LiftDefault> & { default: LiftDefault };
1139
1147
  }
1140
1148
 
1141
1149
  const _CAPABILITIES_FALLBACK: HostCapabilities = {
1142
1150
  lift_disabled_models: [],
1143
- unknown_default: 'lift_enabled',
1151
+ // File missing/unreadable → mirror the SHIPPED yml (anthropic enabled,
1152
+ // rest disabled) so a broken read never silently widens the lift.
1153
+ unknown_defaults: { anthropic: 'lift_enabled', default: 'lift_disabled' },
1144
1154
  };
1145
1155
 
1156
+ /** Map a session model id onto a vendor family for unknown_defaults. */
1157
+ export function vendor_family(model_id: string | null): string {
1158
+ if (!model_id) {
1159
+ return 'default';
1160
+ }
1161
+ return model_id.trim().toLowerCase().startsWith('claude-') ? 'anthropic' : 'default';
1162
+ }
1163
+
1146
1164
  /**
1147
1165
  * Load `host-capabilities.yml` — tolerant like every settings read: a
1148
1166
  * missing / unreadable / malformed file resolves to the fail-safe fallback
@@ -1167,8 +1185,22 @@ export function load_host_capabilities(p: string): HostCapabilities {
1167
1185
  }
1168
1186
  }
1169
1187
  }
1170
- const unknown = raw['unknown_default'] === 'lift_disabled' ? 'lift_disabled' : 'lift_enabled';
1171
- return { lift_disabled_models: ids, unknown_default: unknown };
1188
+ const unknown_defaults: Record<string, 'lift_enabled' | 'lift_disabled'> & {
1189
+ default: 'lift_enabled' | 'lift_disabled';
1190
+ } = { ..._CAPABILITIES_FALLBACK.unknown_defaults };
1191
+ const granular = raw['unknown_defaults'];
1192
+ if (_is_plain_dict(granular)) {
1193
+ for (const [family, value] of Object.entries(granular)) {
1194
+ if (value === 'lift_enabled' || value === 'lift_disabled') {
1195
+ unknown_defaults[family] = value;
1196
+ }
1197
+ }
1198
+ } else if (raw['unknown_default'] === 'lift_disabled' || raw['unknown_default'] === 'lift_enabled') {
1199
+ // Legacy single-value key (pre-P2 files) maps onto the blanket default.
1200
+ unknown_defaults['default'] = raw['unknown_default'];
1201
+ unknown_defaults['anthropic'] = raw['unknown_default'];
1202
+ }
1203
+ return { lift_disabled_models: ids, unknown_defaults };
1172
1204
  }
1173
1205
 
1174
1206
  /** Prefix match a session model id against the measured disable-list. */
@@ -1187,10 +1219,10 @@ export function is_lift_disabled_model(model_id: string | null, caps: HostCapabi
1187
1219
  * `rule_loading_tier` mapping (minimal→off, balanced→essential, full→full,
1188
1220
  * custom→custom); both absent → `essential` (the successor of the
1189
1221
  * documented `balanced` default). `auto` resolves against the capabilities:
1190
- * measured NULL-lift model → `off`; anything else — including an unknown or
1191
- * missing model id — → `essential` under `lift_enabled` (fail-safe: never
1192
- * silently drop the measured lift on a possibly-weak host) or `off` under
1193
- * `lift_disabled`.
1222
+ * measured NULL-lift model → `off`; unmeasured models resolve per
1223
+ * `unknown_defaults[vendor_family(model_id)]` (anthropic → essential, the
1224
+ * one family with a measured lift; everything else — including a missing
1225
+ * model id — → off, per the failed P2 replication).
1194
1226
  *
1195
1227
  * Pure function — callers pass the merged settings dict, the session model
1196
1228
  * id (null when the host does not expose one), and the loaded capabilities.
@@ -1208,7 +1240,9 @@ export function resolve_discipline_profile(
1208
1240
  if (is_lift_disabled_model(model_id, caps)) {
1209
1241
  return 'off';
1210
1242
  }
1211
- return caps.unknown_default === 'lift_disabled' ? 'off' : 'essential';
1243
+ const family = vendor_family(model_id);
1244
+ const fallback = caps.unknown_defaults[family] ?? caps.unknown_defaults['default'];
1245
+ return fallback === 'lift_disabled' ? 'off' : 'essential';
1212
1246
  }
1213
1247
  const legacy = settings['rule_loading_tier'];
1214
1248
  if (legacy === 'minimal') {
@@ -11,6 +11,7 @@ import { spawnSync, type SpawnSyncReturns } from 'node:child_process';
11
11
  import * as fs from 'node:fs';
12
12
  import * as path from 'node:path';
13
13
  import * as process from 'node:process';
14
+ import { fileURLToPath } from 'node:url';
14
15
 
15
16
  /**
16
17
  * Subset of Python's `subprocess.CompletedProcess[str]` the hooks read:
@@ -56,21 +57,33 @@ export function _default_runner(cmd: string[]): CompletedProcess {
56
57
  export function _resolve_chat_history_invocation(script_path: string): string[] {
57
58
  const tsScript = script_path.replace(/\.py$/, '.ts');
58
59
  const binName = process.platform === 'win32' ? 'tsx.cmd' : 'tsx';
59
- let dir = path.dirname(path.resolve(tsScript));
60
- for (;;) {
61
- const candidate = path.join(dir, 'node_modules', '.bin', binName);
62
- try {
63
- if (fs.statSync(candidate).isFile()) {
64
- return [candidate, tsScript];
60
+ const walkUp = (start: string): string | null => {
61
+ let dir = start;
62
+ for (;;) {
63
+ const candidate = path.join(dir, 'node_modules', '.bin', binName);
64
+ try {
65
+ if (fs.statSync(candidate).isFile()) {
66
+ return candidate;
67
+ }
68
+ } catch {
69
+ // not here — keep walking up.
65
70
  }
66
- } catch {
67
- // not here — keep walking up.
68
- }
69
- const parent = path.dirname(dir);
70
- if (parent === dir) {
71
- break;
71
+ const parent = path.dirname(dir);
72
+ if (parent === dir) {
73
+ return null;
74
+ }
75
+ dir = parent;
72
76
  }
73
- dir = parent;
77
+ };
78
+ // Script's tree first, then THIS module's package tree (the package
79
+ // ships tsx as a runtime dependency). `npx tsx` stays last-resort only:
80
+ // it runs against the consumer's npm config and fails hard on e.g.
81
+ // devEngines pins (the 8.1.0 EBADDEVENGINES regression).
82
+ const tsx =
83
+ walkUp(path.dirname(path.resolve(tsScript))) ??
84
+ walkUp(path.dirname(fileURLToPath(import.meta.url)));
85
+ if (tsx !== null) {
86
+ return [tsx, tsScript];
74
87
  }
75
88
  return ['npx', 'tsx', tsScript];
76
89
  }
@@ -139,7 +139,7 @@ Do NOT use when:
139
139
  <!-- FRUGALITY STANDARDS (writer skills only — REQUIRED for skills whose
140
140
  name ends in `-writing`, `-authoring`, or `-create`, AND for any
141
141
  skill on the `FRUGALITY_WRITER_SKILLS` allowlist in
142
- `scripts/skill_linter.py`. Mid-/untiered non-writer skills MUST
142
+ `scripts/skill_linter.ts`. Mid-/untiered non-writer skills MUST
143
143
  remove this section entirely.
144
144
 
145
145
  Layer-1 of the linter checks for:
@@ -173,7 +173,7 @@ Do NOT use when:
173
173
  blocks per `.agent-src.uncondensed/rules/skill-quality.md` §
174
174
  Senior-Tier Required Structure. Mid-tier and untiered skills MUST
175
175
  remove this section entirely. The four blocks are enforced by
176
- `scripts/skill_linter.py` for `tier: senior` skills only.
176
+ `scripts/skill_linter.ts` for `tier: senior` skills only.
177
177
 
178
178
  ## Related Skills
179
179
 
@@ -74,7 +74,7 @@ import { spawnSync } from 'node:child_process';
74
74
  import * as os from 'node:os';
75
75
  import * as path from 'node:path';
76
76
  import process from 'node:process';
77
- import { pathToFileURL } from 'node:url';
77
+ import { fileURLToPath, pathToFileURL } from 'node:url';
78
78
  import * as workspace_secrets from './workspace_secrets.js';
79
79
  // --- Bounds (contract §Bounds) ---------------------------------------------
80
80
  export const KNOWLEDGE_ROOT = path.join('agents', 'memory', 'knowledge');
@@ -1030,8 +1030,29 @@ export function _cli(argv = null) {
1030
1030
  }
1031
1031
  return 1;
1032
1032
  }
1033
- const _isMain = typeof process.argv[1] === 'string' &&
1034
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
1033
+ function _isCliEntry() {
1034
+ if (process.argv[1] === undefined) {
1035
+ return false;
1036
+ }
1037
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
1038
+ if (import.meta.url === argvUrl) {
1039
+ return true;
1040
+ }
1041
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
1042
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
1043
+ // import.meta.url is the resolved real path while argv[1] keeps the
1044
+ // symlink path. Compare realpaths so the entry guard still fires
1045
+ // (without this the CLI silently no-ops when run through a symlink).
1046
+ try {
1047
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
1048
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
1049
+ return here === argv;
1050
+ }
1051
+ catch {
1052
+ return false;
1053
+ }
1054
+ }
1055
+ const _isMain = _isCliEntry();
1035
1056
  if (_isMain) {
1036
1057
  try {
1037
1058
  process.exitCode = _cli();