@event4u/agent-config 8.0.0 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +53 -568
  3. package/dist/agent-src/commands/agents/init.md +3 -3
  4. package/dist/agent-src/commands/chat-history/import.md +5 -5
  5. package/dist/agent-src/commands/chat-history.md +1 -1
  6. package/dist/agent-src/commands/condense.md +1 -1
  7. package/dist/agent-src/commands/context/create.md +1 -1
  8. package/dist/agent-src/commands/council/analysis.md +2 -2
  9. package/dist/agent-src/commands/council/default.md +3 -3
  10. package/dist/agent-src/commands/council/design.md +2 -2
  11. package/dist/agent-src/commands/council/optimize.md +1 -1
  12. package/dist/agent-src/commands/council/pr.md +2 -2
  13. package/dist/agent-src/commands/council.md +1 -1
  14. package/dist/agent-src/commands/feature/plan.md +1 -1
  15. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  16. package/dist/agent-src/commands/ghostwriter/write.md +1 -1
  17. package/dist/agent-src/commands/ghostwriter.md +1 -1
  18. package/dist/agent-src/commands/implement-ticket.md +2 -2
  19. package/dist/agent-src/commands/judge/on-diff.md +1 -1
  20. package/dist/agent-src/commands/judge/steps.md +3 -1
  21. package/dist/agent-src/commands/memory/add.md +2 -2
  22. package/dist/agent-src/commands/memory/learn-low-impact.md +1 -1
  23. package/dist/agent-src/commands/memory/load.md +1 -1
  24. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  25. package/dist/agent-src/commands/memory/promote.md +1 -1
  26. package/dist/agent-src/commands/memory/propose.md +1 -1
  27. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  28. package/dist/agent-src/commands/module/explore.md +3 -3
  29. package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
  30. package/dist/agent-src/commands/optimize/skills.md +1 -1
  31. package/dist/agent-src/commands/optimize-project.md +1 -1
  32. package/dist/agent-src/commands/orchestrate.md +2 -2
  33. package/dist/agent-src/commands/project-analyze.md +1 -1
  34. package/dist/agent-src/commands/project-health.md +1 -1
  35. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  36. package/dist/agent-src/commands/roadmap/create.md +2 -2
  37. package/dist/agent-src/commands/roadmap/process-full.md +3 -1
  38. package/dist/agent-src/commands/roadmap/process-phase.md +4 -2
  39. package/dist/agent-src/commands/roadmap/process-step.md +3 -1
  40. package/dist/agent-src/commands/security-audit-config.md +1 -1
  41. package/dist/agent-src/commands/sync-agent-settings.md +7 -7
  42. package/dist/agent-src/commands/sync-gitignore/fix.md +3 -3
  43. package/dist/agent-src/commands/sync-gitignore.md +4 -4
  44. package/dist/agent-src/commands/work.md +3 -3
  45. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  46. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
  47. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +1 -1
  48. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -7
  49. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  50. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +9 -4
  51. package/dist/agent-src/contexts/execution/toolchain-resolver.md +10 -9
  52. package/dist/agent-src/contexts/execution/verification-mechanics.md +13 -1
  53. package/dist/agent-src/packs/README.md +1 -1
  54. package/dist/agent-src/presets/README.md +1 -1
  55. package/dist/agent-src/profiles/README.md +1 -1
  56. package/dist/agent-src/rules/architecture.md +2 -2
  57. package/dist/agent-src/rules/commit-policy.md +10 -0
  58. package/dist/agent-src/rules/context-hygiene.md +2 -2
  59. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
  60. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  61. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
  62. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
  63. package/dist/agent-src/rules/media-governance-routing.md +1 -1
  64. package/dist/agent-src/rules/no-roadmap-references.md +3 -3
  65. package/dist/agent-src/rules/preservation-guard.md +2 -2
  66. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
  67. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
  68. package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
  69. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  70. package/dist/agent-src/rules/telegraph-speak.md +1 -1
  71. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  72. package/dist/agent-src/rules/ui-audit-gate.md +1 -1
  73. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
  74. package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
  75. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
  76. package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
  77. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  78. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  79. package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
  80. package/dist/agent-src/skills/api-design/SKILL.md +1 -1
  81. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
  82. package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
  83. package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
  84. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
  85. package/dist/agent-src/skills/code-review/SKILL.md +3 -4
  86. package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
  87. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  88. package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
  89. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  90. package/dist/agent-src/skills/context-document/SKILL.md +1 -1
  91. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
  92. package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
  93. package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
  94. package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
  95. package/dist/agent-src/skills/database/SKILL.md +2 -1
  96. package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
  97. package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
  98. package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
  99. package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
  100. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
  101. package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
  102. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
  103. package/dist/agent-src/skills/flux/SKILL.md +10 -9
  104. package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
  105. package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
  106. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
  107. package/dist/agent-src/skills/livewire/SKILL.md +10 -9
  108. package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
  109. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
  110. package/dist/agent-src/skills/module-management/SKILL.md +2 -2
  111. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
  112. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
  113. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
  114. package/dist/agent-src/skills/premortem/SKILL.md +1 -1
  115. package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
  116. package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
  117. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
  118. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
  119. package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
  120. package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
  121. package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
  122. package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
  123. package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
  124. package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
  125. package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
  126. package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
  127. package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
  128. package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
  129. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
  130. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  131. package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
  132. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
  133. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
  134. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  135. package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
  136. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
  137. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
  138. package/dist/agent-src/templates/agent-settings.md +34 -25
  139. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  140. package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
  141. package/dist/agent-src/templates/agents/proposal.example.md +4 -4
  142. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  143. package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
  144. package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
  145. package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
  146. package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
  147. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
  148. package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
  149. package/dist/agent-src/templates/roadmaps.md +9 -4
  150. package/dist/agent-src/templates/rule.md +3 -3
  151. package/dist/agent-src/templates/scripts/README.md +6 -6
  152. package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
  153. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
  154. package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
  155. package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
  156. package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
  157. package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
  158. package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
  159. package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
  160. package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  161. package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
  162. package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
  163. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  164. package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
  165. package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
  166. package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
  167. package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
  168. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
  169. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
  170. package/dist/agent-src/templates/skill.md +2 -2
  171. package/dist/cli/python/knowledge_ingest.js +24 -3
  172. package/dist/cli/python/knowledge_ingest.js.map +1 -1
  173. package/dist/cli/python/workspace_analytics.js +23 -3
  174. package/dist/cli/python/workspace_analytics.js.map +1 -1
  175. package/dist/cli/python/workspace_crypto.js +23 -3
  176. package/dist/cli/python/workspace_crypto.js.map +1 -1
  177. package/dist/cli/python/workspace_documents.js +23 -3
  178. package/dist/cli/python/workspace_documents.js.map +1 -1
  179. package/dist/cli/python/workspace_drive.js +24 -3
  180. package/dist/cli/python/workspace_drive.js.map +1 -1
  181. package/dist/cli/python/workspace_drive_health.js +23 -3
  182. package/dist/cli/python/workspace_drive_health.js.map +1 -1
  183. package/dist/cli/python/workspace_explain.js +23 -3
  184. package/dist/cli/python/workspace_explain.js.map +1 -1
  185. package/dist/cli/python/workspace_hosts.js +23 -3
  186. package/dist/cli/python/workspace_hosts.js.map +1 -1
  187. package/dist/cli/python/workspace_inbox.js +23 -3
  188. package/dist/cli/python/workspace_inbox.js.map +1 -1
  189. package/dist/cli/python/workspace_render.js +23 -3
  190. package/dist/cli/python/workspace_render.js.map +1 -1
  191. package/dist/cli/python/workspace_roles.js +23 -3
  192. package/dist/cli/python/workspace_roles.js.map +1 -1
  193. package/dist/cli/python/workspace_sessions.js +23 -3
  194. package/dist/cli/python/workspace_sessions.js.map +1 -1
  195. package/dist/cli/python/workspace_skills.js +23 -3
  196. package/dist/cli/python/workspace_skills.js.map +1 -1
  197. package/dist/cli/registry.js +2 -0
  198. package/dist/cli/registry.js.map +1 -1
  199. package/dist/discovery/deprecation-report.md +1 -1
  200. package/dist/discovery/discovery-manifest.json +119 -119
  201. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  202. package/dist/discovery/discovery-manifest.summary.md +2 -2
  203. package/dist/discovery/orphan-report.md +1 -1
  204. package/dist/discovery/packs.json +3 -3
  205. package/dist/discovery/trust-report.md +1 -1
  206. package/dist/discovery/workspaces.json +3 -3
  207. package/dist/install/install.mjs +67 -28
  208. package/dist/mcp/registry-manifest.json +2 -2
  209. package/dist/server/routes/settings.js +4 -4
  210. package/dist/server/routes/settings.js.map +1 -1
  211. package/dist/server/schemas/settings.js +1 -1
  212. package/dist/server/schemas/settings.js.map +1 -1
  213. package/docs/CLAIMS.md +2 -2
  214. package/docs/archive/CHANGELOG-pre-8.0.0.md +301 -0
  215. package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
  216. package/docs/benchmark.md +40 -0
  217. package/docs/contracts/skill-bundled-assets.md +2 -2
  218. package/docs/customization.md +1 -1
  219. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
  220. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
  221. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
  222. package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
  223. package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
  224. package/docs/guidelines/agent-infra/layered-settings.md +4 -4
  225. package/docs/guidelines/agent-infra/memory-access.md +19 -18
  226. package/docs/guidelines/agent-infra/naming.md +1 -1
  227. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
  228. package/docs/guidelines/agent-infra/role-contracts.md +1 -1
  229. package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
  230. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
  231. package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
  232. package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
  233. package/docs/guidelines/augment-portability-patterns.md +1 -1
  234. package/docs/proof.md +1 -1
  235. package/docs/setup/per-ide/claude-code.md +10 -4
  236. package/package.json +3 -2
  237. package/src/config/agent-settings.template.yml +31 -17
  238. package/src/config/host-capabilities.yml +25 -16
  239. package/src/config/profiles/balanced.ini +5 -3
  240. package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
  241. package/src/scripts/_cli/cmd_conformance.ts +23 -4
  242. package/src/scripts/_cli/cmd_doctor.ts +96 -8
  243. package/src/scripts/_cli/cmd_explain.ts +23 -4
  244. package/src/scripts/_cli/cmd_export.ts +23 -4
  245. package/src/scripts/_cli/cmd_fleet.ts +23 -4
  246. package/src/scripts/_cli/cmd_migrate.ts +23 -4
  247. package/src/scripts/_cli/cmd_preflight.ts +24 -4
  248. package/src/scripts/_cli/cmd_prune.ts +23 -4
  249. package/src/scripts/_cli/cmd_refresh.ts +23 -4
  250. package/src/scripts/_cli/cmd_settings_check.ts +23 -4
  251. package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
  252. package/src/scripts/_cli/cmd_sync.ts +23 -4
  253. package/src/scripts/_cli/cmd_uninstall.ts +23 -4
  254. package/src/scripts/_cli/cmd_update.ts +23 -4
  255. package/src/scripts/_cli/cmd_upgrade.ts +238 -9
  256. package/src/scripts/_cli/cmd_validate.ts +23 -4
  257. package/src/scripts/_cli/cmd_versions.ts +23 -4
  258. package/src/scripts/_dispatch.bash +62 -19
  259. package/src/scripts/_lib/claude_plugin.ts +83 -0
  260. package/src/scripts/_lib/knowledge_global.ts +24 -2
  261. package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
  262. package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
  263. package/src/scripts/_lib/link_crypto.ts +24 -5
  264. package/src/scripts/_lib/pin_resolver.ts +24 -3
  265. package/src/scripts/adoption_report.ts +23 -4
  266. package/src/scripts/adoption_snapshot.ts +23 -1
  267. package/src/scripts/adoption_status.ts +23 -4
  268. package/src/scripts/adr/regenerate_index.ts +24 -3
  269. package/src/scripts/ai_council/airgap.ts +25 -2
  270. package/src/scripts/ai_council/compile_corpus.ts +24 -2
  271. package/src/scripts/ai_council/pricing.ts +11 -1
  272. package/src/scripts/analysis_freshness.ts +23 -4
  273. package/src/scripts/annotate_discovery.ts +23 -1
  274. package/src/scripts/apply_modules_config.ts +23 -4
  275. package/src/scripts/audit_adr_coverage.ts +23 -4
  276. package/src/scripts/audit_auto_rules.ts +23 -1
  277. package/src/scripts/audit_cloud_compatibility.ts +23 -4
  278. package/src/scripts/audit_command_surface.ts +23 -4
  279. package/src/scripts/audit_initial_context.ts +23 -3
  280. package/src/scripts/audit_likelihood.ts +23 -1
  281. package/src/scripts/audit_mcp_tools.ts +23 -3
  282. package/src/scripts/audit_overlap.ts +23 -1
  283. package/src/scripts/audit_skill_descriptions.ts +24 -2
  284. package/src/scripts/audit_skill_overlap.ts +23 -1
  285. package/src/scripts/audit_user_type_axis.ts +23 -4
  286. package/src/scripts/backfill_model_tier.ts +23 -4
  287. package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
  288. package/src/scripts/bench_ab_clone.ts +23 -1
  289. package/src/scripts/bench_ab_diff.ts +23 -1
  290. package/src/scripts/bench_ab_integrity.ts +23 -1
  291. package/src/scripts/bench_ab_run.ts +23 -2
  292. package/src/scripts/bench_ab_task_runner.ts +23 -1
  293. package/src/scripts/bench_ab_tracka_run.ts +23 -2
  294. package/src/scripts/bench_ab_v2_run.ts +23 -1
  295. package/src/scripts/bench_ab_v2_stats.ts +23 -1
  296. package/src/scripts/bench_baseline_ready.ts +23 -1
  297. package/src/scripts/bench_condense_memory.ts +23 -1
  298. package/src/scripts/bench_drift_check.ts +23 -2
  299. package/src/scripts/bench_matrix.ts +23 -4
  300. package/src/scripts/bench_per_tool.ts +23 -1
  301. package/src/scripts/bench_quality_run.ts +23 -2
  302. package/src/scripts/bench_rtk_savings.ts +23 -1
  303. package/src/scripts/bench_rule_load_latency.ts +23 -2
  304. package/src/scripts/bench_run.ts +23 -2
  305. package/src/scripts/bench_runner.ts +23 -1
  306. package/src/scripts/build_cloud_bundle.ts +23 -3
  307. package/src/scripts/build_discovery_manifest.ts +23 -4
  308. package/src/scripts/build_linear_digest.ts +23 -3
  309. package/src/scripts/build_mcp_registry_manifest.ts +23 -4
  310. package/src/scripts/build_rule_trigger_matrix.ts +23 -4
  311. package/src/scripts/capture_showcase_session.ts +23 -1
  312. package/src/scripts/chat_history.ts +24 -3
  313. package/src/scripts/check_always_budget.ts +23 -2
  314. package/src/scripts/check_artefact_checksums.ts +23 -4
  315. package/src/scripts/check_augment_description_cap.ts +23 -4
  316. package/src/scripts/check_augmentignore.ts +23 -4
  317. package/src/scripts/check_beta_review_markers.ts +23 -4
  318. package/src/scripts/check_cluster_patterns.ts +23 -4
  319. package/src/scripts/check_command_count_messaging.ts +23 -4
  320. package/src/scripts/check_comparison.ts +23 -1
  321. package/src/scripts/check_condensation.ts +24 -3
  322. package/src/scripts/check_condensed_paths.ts +23 -2
  323. package/src/scripts/check_context_paths.ts +23 -4
  324. package/src/scripts/check_council_config_location.ts +23 -4
  325. package/src/scripts/check_council_layout.ts +23 -4
  326. package/src/scripts/check_council_references.ts +23 -4
  327. package/src/scripts/check_discovery_determinism.ts +24 -4
  328. package/src/scripts/check_gate_paths.ts +23 -4
  329. package/src/scripts/check_generated_artefact_headers.ts +23 -4
  330. package/src/scripts/check_generator_output_coverage.ts +23 -4
  331. package/src/scripts/check_gitignore_freshness.ts +23 -4
  332. package/src/scripts/check_iron_law_prominence.ts +23 -4
  333. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  334. package/src/scripts/check_kernel_rule_bundle.ts +23 -4
  335. package/src/scripts/check_knowledge_cards.ts +23 -1
  336. package/src/scripts/check_md_language.ts +23 -4
  337. package/src/scripts/check_media_deps.ts +24 -1
  338. package/src/scripts/check_memory.ts +24 -2
  339. package/src/scripts/check_memory_proposal.ts +23 -4
  340. package/src/scripts/check_module_management_neutral.ts +23 -4
  341. package/src/scripts/check_no_conflict_markers.ts +23 -4
  342. package/src/scripts/check_no_external_sources.ts +23 -4
  343. package/src/scripts/check_no_local_settings_committed.ts +24 -4
  344. package/src/scripts/check_no_new_legacy_path.ts +23 -4
  345. package/src/scripts/check_no_roadmap_refs.ts +23 -4
  346. package/src/scripts/check_one_off_location.ts +23 -4
  347. package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
  348. package/src/scripts/check_portability.ts +24 -3
  349. package/src/scripts/check_proposal.ts +0 -0
  350. package/src/scripts/check_public_catalog_links.ts +23 -4
  351. package/src/scripts/check_public_links.ts +23 -4
  352. package/src/scripts/check_quality_regression.ts +23 -2
  353. package/src/scripts/check_references.ts +23 -4
  354. package/src/scripts/check_release_includes_discovery.ts +23 -4
  355. package/src/scripts/check_release_pr_shape.ts +23 -4
  356. package/src/scripts/check_release_published.ts +23 -4
  357. package/src/scripts/check_release_trunk_sync.ts +23 -4
  358. package/src/scripts/check_reply_consistency.ts +23 -4
  359. package/src/scripts/check_roadmap_trackable.ts +23 -4
  360. package/src/scripts/check_role_doc_links.ts +23 -4
  361. package/src/scripts/check_safety_floor_untouched.ts +24 -4
  362. package/src/scripts/check_site_links.ts +23 -1
  363. package/src/scripts/check_skill_gaps.ts +23 -1
  364. package/src/scripts/check_skill_requires.ts +23 -4
  365. package/src/scripts/check_structural_breaking.ts +24 -4
  366. package/src/scripts/check_surface_tiers.ts +23 -4
  367. package/src/scripts/check_template_pin_drift.ts +23 -4
  368. package/src/scripts/check_test_coverage_diff.ts +23 -4
  369. package/src/scripts/check_token_optimizer_freshness.ts +23 -4
  370. package/src/scripts/check_token_quality_golden.ts +23 -2
  371. package/src/scripts/check_token_regression.ts +23 -2
  372. package/src/scripts/check_tracked_but_ignored.ts +24 -4
  373. package/src/scripts/check_trigger_evals.ts +23 -4
  374. package/src/scripts/check_trunk_drift.ts +24 -1
  375. package/src/scripts/check_update_banner.ts +23 -4
  376. package/src/scripts/ci_summary.ts +23 -4
  377. package/src/scripts/ci_time_ratio.ts +23 -4
  378. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  379. package/src/scripts/compile_router.ts +23 -4
  380. package/src/scripts/condense.ts +23 -2
  381. package/src/scripts/condense_memory.ts +24 -2
  382. package/src/scripts/config/packs.ts +24 -4
  383. package/src/scripts/config/session_profiles.ts +23 -4
  384. package/src/scripts/context_hygiene_hook.ts +24 -3
  385. package/src/scripts/cost_by_conversation.ts +23 -4
  386. package/src/scripts/cost_summary.ts +23 -4
  387. package/src/scripts/council_cli.ts +35 -7
  388. package/src/scripts/council_prune.ts +25 -2
  389. package/src/scripts/cross_repo_retrieve.ts +23 -4
  390. package/src/scripts/discovery_stats.ts +23 -4
  391. package/src/scripts/evidence_report.ts +23 -1
  392. package/src/scripts/export_replay_corpus.ts +23 -2
  393. package/src/scripts/extract_audit_patterns.ts +23 -1
  394. package/src/scripts/first_run_gate_hook.ts +24 -3
  395. package/src/scripts/gen_discovery_baseline.ts +23 -4
  396. package/src/scripts/generate_capabilities_index.ts +24 -5
  397. package/src/scripts/generate_capability_matrix.ts +23 -4
  398. package/src/scripts/generate_catalog.ts +23 -1
  399. package/src/scripts/generate_command_flows.ts +23 -4
  400. package/src/scripts/generate_cookbook.ts +23 -4
  401. package/src/scripts/generate_index.ts +23 -4
  402. package/src/scripts/generate_ownership_matrix.ts +23 -1
  403. package/src/scripts/generate_pack_manifests.ts +24 -5
  404. package/src/scripts/generate_role_experiences_catalog.ts +23 -4
  405. package/src/scripts/hooks/block_no_verify.ts +23 -4
  406. package/src/scripts/hooks/design_slop_hook.ts +24 -3
  407. package/src/scripts/hooks/dispatch_hook.ts +47 -14
  408. package/src/scripts/hooks/replay_hook.ts +23 -2
  409. package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
  410. package/src/scripts/hooks_doctor.ts +23 -2
  411. package/src/scripts/hooks_status.ts +23 -2
  412. package/src/scripts/injection_scan_hook.ts +24 -5
  413. package/src/scripts/install.ts +72 -44
  414. package/src/scripts/inventory_abstraction_budget.ts +23 -1
  415. package/src/scripts/inventory_frontmatter.ts +23 -1
  416. package/src/scripts/inventory_meta_layers.ts +23 -1
  417. package/src/scripts/iron_law_sha.ts +23 -4
  418. package/src/scripts/janitor.ts +23 -4
  419. package/src/scripts/knowledge_global_cli.ts +24 -2
  420. package/src/scripts/linked_projects_list.ts +23 -4
  421. package/src/scripts/lint_agent_security.ts +23 -4
  422. package/src/scripts/lint_agent_skill_names.ts +23 -4
  423. package/src/scripts/lint_agents_layout.ts +23 -4
  424. package/src/scripts/lint_agents_md.ts +23 -4
  425. package/src/scripts/lint_archived_skills.ts +23 -4
  426. package/src/scripts/lint_artefact_frontmatter.ts +23 -4
  427. package/src/scripts/lint_bench_ab.ts +23 -4
  428. package/src/scripts/lint_bench_corpus.ts +23 -2
  429. package/src/scripts/lint_command_flow_coverage.ts +23 -4
  430. package/src/scripts/lint_command_routing.ts +23 -4
  431. package/src/scripts/lint_command_tiers.ts +23 -2
  432. package/src/scripts/lint_command_verbs.ts +23 -4
  433. package/src/scripts/lint_commit_subjects.ts +24 -4
  434. package/src/scripts/lint_confusables.ts +25 -5
  435. package/src/scripts/lint_context_spine_usage.ts +23 -4
  436. package/src/scripts/lint_discovery_manifest.ts +23 -4
  437. package/src/scripts/lint_discovery_vocabulary.ts +23 -4
  438. package/src/scripts/lint_empty_roadmaps.ts +23 -4
  439. package/src/scripts/lint_eval_freshness.ts +23 -4
  440. package/src/scripts/lint_examples.ts +23 -4
  441. package/src/scripts/lint_explain_trace.ts +23 -4
  442. package/src/scripts/lint_featured_skills.ts +0 -0
  443. package/src/scripts/lint_flows.ts +23 -4
  444. package/src/scripts/lint_framework_leakage.ts +23 -4
  445. package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
  446. package/src/scripts/lint_ghostwriter_source.ts +23 -4
  447. package/src/scripts/lint_global_paths.ts +23 -2
  448. package/src/scripts/lint_handoffs.ts +23 -4
  449. package/src/scripts/lint_hidden_unicode.ts +24 -5
  450. package/src/scripts/lint_hook_concern_budget.ts +23 -4
  451. package/src/scripts/lint_hook_manifest.ts +23 -2
  452. package/src/scripts/lint_instruction_smuggling.ts +25 -5
  453. package/src/scripts/lint_legal_pack.ts +23 -1
  454. package/src/scripts/lint_load_context.ts +23 -4
  455. package/src/scripts/lint_marketplace.ts +24 -3
  456. package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
  457. package/src/scripts/lint_mcp_config_security.ts +25 -5
  458. package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
  459. package/src/scripts/lint_media_policy_linkage.ts +23 -4
  460. package/src/scripts/lint_missions.ts +23 -4
  461. package/src/scripts/lint_model_tier_coverage.ts +23 -4
  462. package/src/scripts/lint_namespace.ts +23 -4
  463. package/src/scripts/lint_namespace_collisions.ts +23 -4
  464. package/src/scripts/lint_new_skill_gate.ts +23 -4
  465. package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
  466. package/src/scripts/lint_one_off_age.ts +23 -4
  467. package/src/scripts/lint_orchestration_dsl.ts +23 -4
  468. package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
  469. package/src/scripts/lint_pack_boundaries.ts +23 -4
  470. package/src/scripts/lint_pack_dependencies.ts +23 -2
  471. package/src/scripts/lint_pack_first_win.ts +23 -4
  472. package/src/scripts/lint_pack_risk_class.ts +23 -1
  473. package/src/scripts/lint_persona_governance.ts +23 -4
  474. package/src/scripts/lint_positioning.ts +23 -4
  475. package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
  476. package/src/scripts/lint_readme_jargon.ts +23 -4
  477. package/src/scripts/lint_readme_size.ts +23 -4
  478. package/src/scripts/lint_regression.ts +23 -4
  479. package/src/scripts/lint_roadmap_blockers.ts +23 -4
  480. package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
  481. package/src/scripts/lint_roadmap_complexity.ts +23 -4
  482. package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
  483. package/src/scripts/lint_role_experiences.ts +23 -4
  484. package/src/scripts/lint_rule_interactions.ts +23 -4
  485. package/src/scripts/lint_rule_tiers.ts +24 -3
  486. package/src/scripts/lint_showcase_sessions.ts +23 -4
  487. package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
  488. package/src/scripts/lint_skill_originality.ts +23 -4
  489. package/src/scripts/lint_skill_tools.ts +23 -4
  490. package/src/scripts/lint_subagent_determinism.ts +23 -4
  491. package/src/scripts/lint_ticket_buildable.ts +23 -4
  492. package/src/scripts/lint_topics_yaml.ts +23 -4
  493. package/src/scripts/lint_trust_coherence.ts +23 -4
  494. package/src/scripts/lint_value_dashboard.ts +23 -4
  495. package/src/scripts/lint_workflow_security.ts +23 -4
  496. package/src/scripts/lint_workspace_boundary.ts +23 -4
  497. package/src/scripts/mcp_parity_smoke.ts +23 -2
  498. package/src/scripts/mcp_render.ts +23 -4
  499. package/src/scripts/mcp_telemetry_health.ts +23 -4
  500. package/src/scripts/mcp_telemetry_query.ts +23 -4
  501. package/src/scripts/mcp_telemetry_store.ts +23 -4
  502. package/src/scripts/measure_augment_budget.ts +23 -1
  503. package/src/scripts/measure_density.ts +23 -1
  504. package/src/scripts/measure_frugality_savings.ts +23 -1
  505. package/src/scripts/measure_markitdown_lift.ts +23 -1
  506. package/src/scripts/measure_patterns.ts +23 -1
  507. package/src/scripts/measure_projection_bytes.ts +23 -1
  508. package/src/scripts/measure_rule_budget.ts +23 -4
  509. package/src/scripts/measure_skill_reduction.ts +23 -1
  510. package/src/scripts/memory_hash.ts +24 -2
  511. package/src/scripts/memory_lookup.ts +24 -2
  512. package/src/scripts/memory_report.ts +24 -2
  513. package/src/scripts/memory_signal.ts +24 -2
  514. package/src/scripts/memory_status.ts +26 -2
  515. package/src/scripts/migrate_command_suggestions.ts +23 -4
  516. package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
  517. package/src/scripts/migration_status.ts +25 -4
  518. package/src/scripts/mine_missing_guardrails.ts +23 -1
  519. package/src/scripts/mine_session.ts +23 -1
  520. package/src/scripts/minimal_safe_diff_hook.ts +24 -3
  521. package/src/scripts/new_skill.ts +23 -3
  522. package/src/scripts/onboarding_gate_hook.ts +24 -3
  523. package/src/scripts/parity/coverage_diff.ts +25 -3
  524. package/src/scripts/parity/phase_gate.ts +25 -4
  525. package/src/scripts/parity/replay.ts +25 -3
  526. package/src/scripts/pattern_share.ts +23 -4
  527. package/src/scripts/plan_physical_move.ts +23 -4
  528. package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
  529. package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
  530. package/src/scripts/prediction-pool/score_ev.ts +24 -3
  531. package/src/scripts/print_required_checks.ts +24 -4
  532. package/src/scripts/probe_host_compliance.ts +23 -2
  533. package/src/scripts/probe_projection_fidelity.ts +23 -1
  534. package/src/scripts/probe_skill_registration.ts +24 -2
  535. package/src/scripts/profile_staleness_hook.ts +24 -3
  536. package/src/scripts/profile_use.ts +23 -4
  537. package/src/scripts/project_thin_rules.ts +23 -3
  538. package/src/scripts/propose_modules_config.ts +23 -4
  539. package/src/scripts/prototype_lint_contradictions.ts +23 -1
  540. package/src/scripts/prove_pack_extractable.ts +23 -4
  541. package/src/scripts/readme_linter.ts +23 -3
  542. package/src/scripts/redact_hook_capture.ts +23 -4
  543. package/src/scripts/refine_ticket_detect.ts +23 -4
  544. package/src/scripts/release.ts +23 -4
  545. package/src/scripts/render_benchmark_composite.ts +23 -4
  546. package/src/scripts/render_benchmark_md.ts +23 -4
  547. package/src/scripts/roadmap_progress_hook.ts +46 -16
  548. package/src/scripts/run_skill_evals.ts +23 -4
  549. package/src/scripts/runtime_dispatcher.ts +23 -4
  550. package/src/scripts/runtime_registry.ts +23 -4
  551. package/src/scripts/score_skill_selection.ts +23 -1
  552. package/src/scripts/security_audit_config.ts +24 -5
  553. package/src/scripts/skill_collision_clusters.ts +23 -4
  554. package/src/scripts/skill_discovery.ts +23 -4
  555. package/src/scripts/skill_linter.ts +23 -2
  556. package/src/scripts/skill_preview.ts +23 -4
  557. package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
  558. package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
  559. package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
  560. package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
  561. package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
  562. package/src/scripts/skill_usage_collect.ts +23 -4
  563. package/src/scripts/smoke_path_resolution.ts +23 -4
  564. package/src/scripts/smoke_quickstart.ts +23 -4
  565. package/src/scripts/snapshot_agent_outputs.ts +23 -4
  566. package/src/scripts/spotcheck_thin_root.ts +23 -4
  567. package/src/scripts/sync_agent_settings.ts +23 -4
  568. package/src/scripts/sync_github_metadata.ts +23 -4
  569. package/src/scripts/sync_gitignore.ts +23 -4
  570. package/src/scripts/telegraph_stats.ts +23 -4
  571. package/src/scripts/tool_registry.ts +24 -4
  572. package/src/scripts/trigger_coverage.ts +23 -4
  573. package/src/scripts/update_counts.ts +23 -4
  574. package/src/scripts/update_prices.ts +23 -1
  575. package/src/scripts/validate_agent_settings.ts +23 -4
  576. package/src/scripts/validate_decision_engine.ts +23 -4
  577. package/src/scripts/validate_discovery_manifest.ts +23 -4
  578. package/src/scripts/validate_frontmatter.ts +23 -2
  579. package/src/scripts/validate_pack_yaml.ts +0 -0
  580. package/src/scripts/validate_safe_paths.ts +24 -4
  581. package/src/scripts/validate_telegraph_carveouts.ts +23 -4
  582. package/src/scripts/verify_before_complete_hook.ts +24 -3
  583. package/src/scripts/verify_physical_move.ts +23 -4
  584. package/src/scripts/wrapper_freshness_hook.ts +107 -8
  585. package/tests/fixtures/hooks/README.md +92 -0
  586. package/tests/fixtures/hooks/agent_error.json +7 -0
  587. package/tests/fixtures/hooks/post_tool_use.json +13 -0
  588. package/tests/fixtures/hooks/pre_compact.json +7 -0
  589. package/tests/fixtures/hooks/pre_tool_use.json +9 -0
  590. package/tests/fixtures/hooks/session_end.json +6 -0
  591. package/tests/fixtures/hooks/session_start.json +6 -0
  592. package/tests/fixtures/hooks/stop.json +6 -0
  593. package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
@@ -5,11 +5,14 @@
5
5
  # Two opt-in checks run on relevant staged paths and short-circuit
6
6
  # otherwise:
7
7
  # 1. agents/roadmaps-progress.md sync (against agents/roadmaps/*.md)
8
- # 2. ADR-013 per-artefact frontmatter contract (.agent-src.uncondensed/*.md)
8
+ # 2. ADR-013 per-artefact frontmatter contract (source repo only)
9
+ #
10
+ # The runtime is Node/tsx (py2ts migration) — both checks run through the
11
+ # `agent-config` CLI / the package tsx runner, never python3.
9
12
  #
10
13
  # To run manually:
11
14
  # ./agent-config roadmap:progress-check
12
- # python3 scripts/lint_artefact_frontmatter.py
15
+ # ./scripts-run src/scripts/lint_artefact_frontmatter
13
16
  #
14
17
  # To uninstall:
15
18
  # rm .git/hooks/pre-commit
@@ -20,11 +23,11 @@ staged="$(git diff --cached --name-only --diff-filter=ACMR 2>/dev/null || true)"
20
23
  roadmap_relevant=false
21
24
  frontmatter_relevant=false
22
25
  case "$staged" in
23
- *agents/roadmaps/*.md*|*agents/roadmaps-progress.md*|*.augment/scripts/update_roadmap_progress.py*)
26
+ *agents/roadmaps/*.md*|*agents/roadmaps-progress.md*|*.augment/scripts/update_roadmap_progress.ts*)
24
27
  roadmap_relevant=true ;;
25
28
  esac
26
29
  case "$staged" in
27
- *.agent-src.uncondensed/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.py*)
30
+ *.agent-src.uncondensed/*.md*|*src/agent-src/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.ts*)
28
31
  frontmatter_relevant=true ;;
29
32
  esac
30
33
 
@@ -32,33 +35,32 @@ if ! $roadmap_relevant && ! $frontmatter_relevant; then
32
35
  exit 0
33
36
  fi
34
37
 
35
- resolve() {
36
- local cand
37
- for cand in "$@"; do
38
- if [ -f "$cand" ]; then
39
- printf '%s\n' "$cand"
40
- return 0
41
- fi
42
- done
38
+ # Resolve the agent-config CLI: project wrapper first (customization wins),
39
+ # then the global binary (ADR-020 global-only consumers).
40
+ agent_config_bin() {
41
+ if [ -x "./agent-config" ]; then
42
+ printf '%s\n' "./agent-config"
43
+ return 0
44
+ fi
45
+ if command -v agent-config >/dev/null 2>&1; then
46
+ printf '%s\n' "agent-config"
47
+ return 0
48
+ fi
43
49
  return 1
44
50
  }
45
51
 
46
52
  # --- Check 1: roadmap progress dashboard sync --------------------------
47
53
  if $roadmap_relevant; then
48
- rp_script="$(resolve \
49
- ".augment/scripts/update_roadmap_progress.py" \
50
- "dist/agent-src/scripts/update_roadmap_progress.py" \
51
- ".agent-src.uncondensed/scripts/update_roadmap_progress.py" || true)"
52
-
53
- if [ -z "$rp_script" ]; then
54
- echo "⚠️ pre-commit: update_roadmap_progress.py not found — skipping roadmap check." >&2
55
- elif ! python3 "$rp_script" --check >/dev/null 2>&1; then
54
+ ac_bin="$(agent_config_bin || true)"
55
+ if [ -z "$ac_bin" ]; then
56
+ echo "⚠️ pre-commit: agent-config CLI not found — skipping roadmap check." >&2
57
+ echo " Install it: npm install -g @event4u/agent-config" >&2
58
+ elif ! "$ac_bin" roadmap:progress-check >/dev/null 2>&1; then
56
59
  echo "❌ agents/roadmaps-progress.md is stale relative to your staged changes." >&2
57
60
  echo "" >&2
58
61
  echo " Regenerate the dashboard with one of:" >&2
59
- echo " ./agent-config roadmap:progress" >&2
62
+ echo " $ac_bin roadmap:progress" >&2
60
63
  echo " task roadmap-progress" >&2
61
- echo " python3 $rp_script" >&2
62
64
  echo "" >&2
63
65
  echo " Then \`git add agents/roadmaps-progress.md\` and retry the commit." >&2
64
66
  echo "" >&2
@@ -69,19 +71,31 @@ if $roadmap_relevant; then
69
71
  fi
70
72
 
71
73
  # --- Check 2: ADR-013 artefact frontmatter contract --------------------
74
+ # Source-repo concern: the linter and the artefact tree only exist in the
75
+ # agent-config source repo; consumer repos skip silently.
72
76
  if $frontmatter_relevant; then
73
- fm_script="$(resolve \
74
- ".augment/scripts/lint_artefact_frontmatter.py" \
75
- "dist/agent-src/scripts/lint_artefact_frontmatter.py" \
76
- "scripts/lint_artefact_frontmatter.py" || true)"
77
+ fm_script=""
78
+ if [ -f "src/scripts/lint_artefact_frontmatter.ts" ]; then
79
+ fm_script="src/scripts/lint_artefact_frontmatter.ts"
80
+ fi
81
+
82
+ run_fm() {
83
+ if [ -x "./scripts-run" ]; then
84
+ ./scripts-run src/scripts/lint_artefact_frontmatter --quiet
85
+ elif [ -x "node_modules/.bin/tsx" ]; then
86
+ node_modules/.bin/tsx "$fm_script" --quiet
87
+ else
88
+ npx tsx "$fm_script" --quiet
89
+ fi
90
+ }
77
91
 
78
92
  if [ -z "$fm_script" ]; then
79
- echo "⚠️ pre-commit: lint_artefact_frontmatter.py not found — skipping frontmatter check." >&2
80
- elif ! python3 "$fm_script" --quiet >/dev/null 2>&1; then
93
+ : # not the source repo — frontmatter contract does not apply
94
+ elif ! run_fm >/dev/null 2>&1; then
81
95
  echo "❌ Artefact frontmatter lint failed (ADR-013 contract violation)." >&2
82
96
  echo "" >&2
83
97
  echo " Re-run for details:" >&2
84
- echo " python3 $fm_script" >&2
98
+ echo " ./scripts-run src/scripts/lint_artefact_frontmatter" >&2
85
99
  echo " task lint-artefact-frontmatter" >&2
86
100
  echo "" >&2
87
101
  echo " Common fixes:" >&2
@@ -158,15 +158,20 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
158
158
 
159
159
  ---
160
160
 
161
- ## Quality Gates (always apply at completion)
161
+ ## Quality Gates (remote CI by default)
162
162
 
163
163
  Every roadmap must pass the project's quality pipeline before it is
164
- considered done. **When** the pipeline runs during
164
+ considered done. **Where** that gate runs depends on
165
+ `quality.local_auto_run`: `false` or missing (default) → agent does NOT
166
+ run the pipeline locally — user runs it manually, remote CI on the PR
167
+ is the authoritative gate; run-end report says *"quality gates
168
+ delegated to remote CI"*, never that the tools passed. When
169
+ `local_auto_run: true`, **when** the local pipeline runs during
165
170
  `/roadmap:process-step|phase|full` is governed by
166
171
  `roadmap.quality_cadence` in `.agent-settings.yml`
167
172
  (`end_of_roadmap` default → once before archival; `per_phase` → after
168
- every phase; `per_step` → after every step). Either way, a final fresh
169
- run is mandatory before "complete" per `verify-before-complete`.
173
+ every phase; `per_step` → after every step), with a final fresh run
174
+ before "complete" per `verify-before-complete`.
170
175
 
171
176
  Common commands:
172
177
 
@@ -22,9 +22,9 @@ consumer's `.augment/`.
22
22
 
23
23
  Use **logical names** rooted at the source — never the
24
24
  `.agent-src.uncondensed/` prefix. The condense-time rewriter
25
- (`scripts/condense.py::_rewrite_paths`) resolves logical names to
25
+ (`scripts/condense.ts::_rewrite_paths`) resolves logical names to
26
26
  deployment-correct relative paths; the schema regex
27
- (`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.py`
27
+ (`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.ts`
28
28
  both reject the legacy prefix.
29
29
 
30
30
  | Write this (logical) | Forbidden (legacy) |
@@ -121,7 +121,7 @@ for full detail; rules are pointers, not playbooks.}
121
121
  | `tier` | yes | `kernel` (Iron Law floor), `tier-1` (default), `tier-2` (full profile only). Legacy values still accepted. |
122
122
  | `description` | yes | One sentence, ≤ 500 chars. Trigger-clarity wins over poetry. |
123
123
  | `source` | yes | `package` (this repo) or `project` (consumer override). |
124
- | `load_context` | no | Lazy context list — logical names only. Budget enforced by `lint_load_context.py`. |
124
+ | `load_context` | no | Lazy context list — logical names only. Budget enforced by `lint_load_context.ts`. |
125
125
  | `load_context_eager` | no | Eager context list — counts against per-rule char budget. |
126
126
  | `triggers` | no | Required on non-kernel rules per `rule-router.md`. |
127
127
  | `routes_to` | no | `skill:`, `guideline:`, `command:`, `contract:` targets. Forbidden on kernel rules. |
@@ -18,8 +18,8 @@ high-risk PRs.
18
18
  | File in package | Copy to | Purpose |
19
19
  |---|---|---|
20
20
  | `templates/github-workflows/pr-risk-review.yml` | `.github/workflows/pr-risk-review.yml` | GitHub Actions workflow |
21
- | `templates/scripts/pr_risk_review.ts` | `scripts/pr_risk_review.py` | Risk classifier (Python 3.10+, PyYAML) |
22
- | `templates/scripts/pr_review_routing.ts` | `scripts/pr_review_routing.py` | Routing classifier |
21
+ | `templates/scripts/pr_risk_review.ts` | `scripts/pr_risk_review.ts` | Risk classifier (TypeScript, run via tsx) |
22
+ | `templates/scripts/pr_review_routing.ts` | `scripts/pr_review_routing.ts` | Routing classifier |
23
23
  | `templates/scripts/pr-risk-config.example.yml` | `.github/pr-risk-config.yml` | Risk patterns (optional) |
24
24
  | `templates/scripts/ownership-map.example.yml` | `.github/ownership-map.yml` | Ownership entries (optional) |
25
25
  | `templates/scripts/historical-bug-patterns.example.yml` | `.github/historical-bug-patterns.yml` | Registered failure modes (optional) |
@@ -37,7 +37,7 @@ cp .augment/templates/scripts/historical-bug-patterns.example.yml .github/histor
37
37
  ```
38
38
 
39
39
  The routing step in the workflow is **conditional** — it only runs if
40
- `scripts/pr_review_routing.py` exists, so risk classification alone works
40
+ `scripts/pr_review_routing.ts` exists, so risk classification alone works
41
41
  without routing being installed.
42
42
 
43
43
  Create the three labels once (or let them be auto-created on first run):
@@ -118,8 +118,8 @@ the full schema.
118
118
 
119
119
  ```bash
120
120
  rm .github/workflows/pr-risk-review.yml
121
- rm scripts/pr_risk_review.py
122
- rm scripts/pr_review_routing.py
121
+ rm scripts/pr_risk_review.ts
122
+ rm scripts/pr_review_routing.ts
123
123
  rm .github/pr-risk-config.yml .github/ownership-map.yml .github/historical-bug-patterns.yml
124
124
  gh label delete risk:low risk:medium risk:high
125
125
  ```
@@ -168,7 +168,7 @@ PRs.
168
168
  | File in package | Copy to | Purpose |
169
169
  |---|---|---|
170
170
  | `templates/github-workflows/memory-hygiene.yml` | `.github/workflows/memory-hygiene.yml` | Weekly staleness workflow |
171
- | `templates/scripts/check_memory.ts` | `scripts/check_memory.py` | YAML schema + staleness validator |
171
+ | `templates/scripts/check_memory.ts` | `scripts/check_memory.ts` | YAML schema + staleness validator |
172
172
 
173
173
  ## Install
174
174
 
@@ -53,7 +53,7 @@ import { spawnSync } from 'node:child_process';
53
53
  import * as fs from 'node:fs';
54
54
  import * as path from 'node:path';
55
55
  import process from 'node:process';
56
- import { pathToFileURL } from 'node:url';
56
+ import { fileURLToPath, pathToFileURL } from 'node:url';
57
57
  import YAML, { parseDocument } from 'yaml';
58
58
 
59
59
  type Severity = 'error' | 'warning' | 'info';
@@ -631,8 +631,30 @@ function _emit(findings: Finding[], fmt: string): number {
631
631
  return errors.length > 0 ? 1 : 0;
632
632
  }
633
633
 
634
+ function _isCliEntry(): boolean {
635
+ if (process.argv[1] === undefined) {
636
+ return false;
637
+ }
638
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
639
+ if (import.meta.url === argvUrl) {
640
+ return true;
641
+ }
642
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
643
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
644
+ // import.meta.url is the resolved real path while argv[1] keeps the
645
+ // symlink path. Compare realpaths so the entry guard still fires
646
+ // (without this the CLI silently no-ops when run through a symlink).
647
+ try {
648
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
649
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
650
+ return here === argv;
651
+ } catch {
652
+ return false;
653
+ }
654
+ }
655
+
634
656
  const _isMain =
635
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href;
657
+ _isCliEntry();
636
658
  if (_isMain) {
637
659
  process.exit(main());
638
660
  }
@@ -332,10 +332,29 @@ function _set_intake_root_for_test(root: string): void {
332
332
  INTAKE_ROOT = root;
333
333
  }
334
334
 
335
- const _isCliEntry =
336
- process.argv[1] !== undefined &&
337
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
338
- if (_isCliEntry || process.argv[1] === _HERE) {
335
+ function _isCliEntry(): boolean {
336
+ if (process.argv[1] === undefined) {
337
+ return false;
338
+ }
339
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
340
+ if (import.meta.url === argvUrl) {
341
+ return true;
342
+ }
343
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
344
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
345
+ // import.meta.url is the resolved real path while argv[1] keeps the
346
+ // symlink path. Compare realpaths so the entry guard still fires
347
+ // (without this the CLI silently no-ops when run through a symlink).
348
+ try {
349
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
350
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
351
+ return here === argv;
352
+ } catch {
353
+ return false;
354
+ }
355
+ }
356
+
357
+ if (_isCliEntry() || process.argv[1] === _HERE) {
339
358
  process.exit(main());
340
359
  }
341
360
 
@@ -1,4 +1,4 @@
1
- # Historical bug patterns — consumed by scripts/pr_review_routing.py
1
+ # Historical bug patterns — consumed by scripts/pr_review_routing.ts
2
2
  #
3
3
  # Copy this file to `.github/historical-bug-patterns.yml` (preferred) or
4
4
  # `agents/historical-bug-patterns.yml` and curate the patterns from your
@@ -28,7 +28,7 @@
28
28
  import { createHash } from 'node:crypto';
29
29
  import * as fs from 'node:fs';
30
30
  import process from 'node:process';
31
- import { pathToFileURL } from 'node:url';
31
+ import { fileURLToPath, pathToFileURL } from 'node:url';
32
32
  import * as path from 'node:path';
33
33
  import YAML, { parseDocument } from 'yaml';
34
34
 
@@ -326,8 +326,30 @@ function _parseArgs(argv: string[]): ParsedArgs {
326
326
  return args;
327
327
  }
328
328
 
329
+ function _isCliEntry(): boolean {
330
+ if (process.argv[1] === undefined) {
331
+ return false;
332
+ }
333
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
334
+ if (import.meta.url === argvUrl) {
335
+ return true;
336
+ }
337
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
338
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
339
+ // import.meta.url is the resolved real path while argv[1] keeps the
340
+ // symlink path. Compare realpaths so the entry guard still fires
341
+ // (without this the CLI silently no-ops when run through a symlink).
342
+ try {
343
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
344
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
345
+ return here === argv;
346
+ } catch {
347
+ return false;
348
+ }
349
+ }
350
+
329
351
  const _isMain =
330
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
352
+ _isCliEntry();
331
353
  if (_isMain) {
332
354
  process.exit(main());
333
355
  }
@@ -33,7 +33,7 @@
33
33
  import * as fs from 'node:fs';
34
34
  import * as path from 'node:path';
35
35
  import process from 'node:process';
36
- import { pathToFileURL } from 'node:url';
36
+ import { fileURLToPath, pathToFileURL } from 'node:url';
37
37
  import YAML, { parseDocument } from 'yaml';
38
38
 
39
39
 
@@ -1060,8 +1060,30 @@ function _escapeNonAscii(s: string): string {
1060
1060
  return out;
1061
1061
  }
1062
1062
 
1063
+ function _isCliEntry(): boolean {
1064
+ if (process.argv[1] === undefined) {
1065
+ return false;
1066
+ }
1067
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
1068
+ if (import.meta.url === argvUrl) {
1069
+ return true;
1070
+ }
1071
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
1072
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
1073
+ // import.meta.url is the resolved real path while argv[1] keeps the
1074
+ // symlink path. Compare realpaths so the entry guard still fires
1075
+ // (without this the CLI silently no-ops when run through a symlink).
1076
+ try {
1077
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
1078
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
1079
+ return here === argv;
1080
+ } catch {
1081
+ return false;
1082
+ }
1083
+ }
1084
+
1063
1085
  const _isMain =
1064
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
1086
+ _isCliEntry();
1065
1087
  if (_isMain) {
1066
1088
  process.exit(main());
1067
1089
  }
@@ -30,7 +30,7 @@
30
30
  import * as fs from 'node:fs';
31
31
  import * as path from 'node:path';
32
32
  import process from 'node:process';
33
- import { pathToFileURL } from 'node:url';
33
+ import { fileURLToPath, pathToFileURL } from 'node:url';
34
34
  import YAML, { parseDocument } from 'yaml';
35
35
 
36
36
  import * as memory_status from './memory_status.js';
@@ -839,8 +839,30 @@ export function main(): number {
839
839
  return 0;
840
840
  }
841
841
 
842
+ function _isCliEntry(): boolean {
843
+ if (process.argv[1] === undefined) {
844
+ return false;
845
+ }
846
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
847
+ if (import.meta.url === argvUrl) {
848
+ return true;
849
+ }
850
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
851
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
852
+ // import.meta.url is the resolved real path while argv[1] keeps the
853
+ // symlink path. Compare realpaths so the entry guard still fires
854
+ // (without this the CLI silently no-ops when run through a symlink).
855
+ try {
856
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
857
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
858
+ return here === argv;
859
+ } catch {
860
+ return false;
861
+ }
862
+ }
863
+
842
864
  const _isMain =
843
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
865
+ _isCliEntry();
844
866
  if (_isMain) {
845
867
  process.exit(main());
846
868
  }
@@ -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
  }