@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
@@ -55,6 +55,7 @@
55
55
  */
56
56
 
57
57
  import { createRequire } from 'node:module';
58
+ import { spawnSync } from 'node:child_process';
58
59
  import * as fs from 'node:fs';
59
60
  import * as path from 'node:path';
60
61
  import { fileURLToPath, pathToFileURL } from 'node:url';
@@ -891,9 +892,36 @@ function _parseArgs(argv: readonly string[]): Args {
891
892
  return { check, repo_root };
892
893
  }
893
894
 
895
+ /**
896
+ * When the default cwd carries no `agents/roadmaps/`, fall back to the git
897
+ * toplevel — hook and IDE invocations often run from a subdirectory, and a
898
+ * cwd-only resolution silently skipped the dashboard there. An explicit
899
+ * `--repo-root` always wins; a cwd that has the directory is used as-is
900
+ * (monorepo sub-project support).
901
+ */
902
+ function _fallback_git_toplevel(repo_root: string): string {
903
+ try {
904
+ const r = spawnSync('git', ['rev-parse', '--show-toplevel'], {
905
+ cwd: repo_root,
906
+ encoding: 'utf-8',
907
+ timeout: 10_000,
908
+ });
909
+ const top = (r.stdout || '').trim();
910
+ if (r.status === 0 && top !== '' && _isDir(path.join(top, 'agents', 'roadmaps'))) {
911
+ return top;
912
+ }
913
+ } catch {
914
+ /* not a git repo / git missing — keep the cwd default */
915
+ }
916
+ return repo_root;
917
+ }
918
+
894
919
  function main(argv?: readonly string[]): number {
895
920
  const args = _parseArgs(argv ?? process.argv.slice(2));
896
- const repo_root = args.repo_root;
921
+ let repo_root = args.repo_root;
922
+ if (repo_root === process.cwd() && !_isDir(path.join(repo_root, 'agents', 'roadmaps'))) {
923
+ repo_root = _fallback_git_toplevel(repo_root);
924
+ }
897
925
  const roadmap_root = path.join(repo_root, 'agents', 'roadmaps');
898
926
  const target = path.join(repo_root, 'agents', 'roadmaps-progress.md');
899
927
  if (!_isDir(roadmap_root)) {
@@ -62,8 +62,9 @@ colorblind fallbacks (`--domain chart`), and mobile touch/a11y rules
62
62
  corpus row; the WCAG 2.2 AA *method* stays this skill's own checklists.
63
63
  Widget-pattern selection (dialog, combobox, tabs, toast, table, form
64
64
  errors, drag-reorder …) grounds in the ARIA-APG corpus:
65
- `ground.py search --manifest
66
- <skills-root>/accessibility-auditor/data/manifest.json "<component>"` →
65
+ `./scripts-run <skills-root>/corpus-grounding/scripts/ground search
66
+ --manifest <skills-root>/accessibility-auditor/data/manifest.json
67
+ "<component>"` →
67
68
  pattern, implementation, WCAG refs, anti-patterns
68
69
  ([`data/aria-patterns.csv`](data/aria-patterns.csv)).
69
70
 
@@ -44,7 +44,7 @@ Do NOT use when:
44
44
  - Standard template: Status, Context, Decision, Consequences,
45
45
  Alternatives, References.
46
46
  - Regenerated index so readers find the ADR by topic, not by ls.
47
- - Zero MCP-tool dependency — pure filesystem + Python.
47
+ - Zero MCP-tool dependency — pure filesystem + TypeScript tooling (run via ./scripts-run).
48
48
 
49
49
  ## Preconditions
50
50
 
@@ -54,7 +54,7 @@ Do NOT use when:
54
54
  governance ADRs, 3-digit numbering (`ADR-NNN-<slug>.md`).
55
55
  - **Per-area** — `docs/adrs/<area>/`: sub-area ADRs, 4-digit
56
56
  numbering (`NNNN-<slug>.md`); `<area>` must match the canonical
57
- inventory in [`scripts/audit_adr_coverage.py`](../../../scripts/audit_adr_coverage.py).
57
+ inventory in [`scripts/audit_adr_coverage.ts`](../../../scripts/audit_adr_coverage.ts).
58
58
  - The decision is **already made** — ADRs record outcomes, they do
59
59
  not run the decision process. For unresolved trade-offs, run the
60
60
  council or consult `adversarial-review` first.
@@ -75,7 +75,7 @@ Ask one question only if both are plausible:
75
75
  `NNNN-<slug>.md` (4-digit, no `ADR-` prefix).
76
76
  3. **Unknown area** — `<area>` not in the inventory: refuse with a
77
77
  hint to add the area to `AREAS` in
78
- `scripts/audit_adr_coverage.py` in the same PR. Do not invent.
78
+ `scripts/audit_adr_coverage.ts` in the same PR. Do not invent.
79
79
  4. **In doubt** → per-area (cheaper to surface, easier to relocate).
80
80
 
81
81
  ### 2. Pick the next ADR number
@@ -139,7 +139,7 @@ phase: <roadmap> · <phase-id>
139
139
  ```
140
140
 
141
141
  Per-area ADRs use a quote-style header (no YAML frontmatter) so
142
- `audit_adr_coverage.py`'s permissive parser can index them. Cite
142
+ `audit_adr_coverage.ts`'s permissive parser can index them. Cite
143
143
  the area's contract from the README in
144
144
  [`docs/adrs/<area>/README.md`](../../../docs/adrs/).
145
145
 
@@ -156,7 +156,9 @@ the area's contract from the README in
156
156
 
157
157
  - Flat: `./scripts-run src/scripts/adr/regenerate_index --check` exits 0.
158
158
  - Per-area: `./scripts-run src/scripts/audit_adr_coverage --check` exits 0.
159
- - The project's CI / quality pipeline passes locally.
159
+ - The project's CI / quality pipeline passes — locally only when
160
+ `quality.local_auto_run: true`; under the default (`false` / missing)
161
+ remote CI is the gate, no local pipeline run.
160
162
 
161
163
  ## Rubric pass (optional, surfacing-only)
162
164
 
@@ -181,7 +183,7 @@ completeness check — not on every ADR by default.
181
183
  - **Per-area numbering is 4-digit** (`NNNN-<slug>.md`); the flat
182
184
  surface stays 3-digit (`ADR-NNN-<slug>.md`). Do not mix.
183
185
  - **Area inventory is closed** — `<area>` must already exist in
184
- `AREAS` in `scripts/audit_adr_coverage.py`. Adding a new area is
186
+ `AREAS` in `scripts/audit_adr_coverage.ts`. Adding a new area is
185
187
  a separate PR with explicit reviewer sign-off.
186
188
  - Frontmatter `adr:` (flat) is the canonical number; the filename
187
189
  prefix must match. The flat regenerator fails on mismatch.
@@ -111,7 +111,7 @@ agents/
111
111
 
112
112
  `{module_root}` comes from `modules.root_paths` and `{agent_folder}` from
113
113
  `modules.agent_folder` in `.agent-project-settings.yml`. Discover via
114
- `scripts/_lib/agent_settings.py::enumerate_modules()`. Common shapes:
114
+ `scripts/_lib/agent_settings.ts::enumerate_modules()`. Common shapes:
115
115
  Laravel `app/Modules/{Module}/agents/`, Symfony `src/Bundle/{Bundle}/agents/`,
116
116
  monorepo `packages/{Pkg}/agents/`.
117
117
 
@@ -24,7 +24,7 @@ Use when:
24
24
  - Editing `packages/core/.agent-src.uncondensed/templates/AGENTS.md` (consumer-shipped template).
25
25
  - Reviewing a PR that changes either file.
26
26
  - Running `/optimize/agents`.
27
- - A budget meter (`scripts/measure_augment_budget.py`) flags the package-root AGENTS.md as the dominant cost.
27
+ - A budget meter (`scripts/measure_augment_budget.ts`) flags the package-root AGENTS.md as the dominant cost.
28
28
 
29
29
  ## Do NOT
30
30
 
@@ -49,7 +49,7 @@ Every entry describes **what** the project does or **where** to learn more — n
49
49
  | `AGENTS.md` (package root) | 3,000 chars | 2,800 chars | ≤ 2,800 |
50
50
  | `packages/core/.agent-src.uncondensed/templates/AGENTS.md` (consumer) | 2,500 chars | 2,300 chars | ≤ 2,300 |
51
51
 
52
- Char-count is raw file size (`wc -c`), frontmatter included. Enforcement: `scripts/lint_agents_md.py` (Phase 7), wired into the package's CI pipeline via the `lint-agents-md` task. WARN is a soft signal in CI; FAIL blocks merge.
52
+ Char-count is raw file size (`wc -c`), frontmatter included. Enforcement: `scripts/lint_agents_md.ts` (Phase 7), wired into the package's CI pipeline via the `lint-agents-md` task. WARN is a soft signal in CI; FAIL blocks merge.
53
53
 
54
54
  The R2 council originally proposed 2,500 / 2,000 caps. Phase 6.4 empirical refactor demonstrated that the mandatory emergency-triage block (≈ 700 chars) plus operational must-haves (source-of-truth disclaimer, `task` quickstart, six substantive pointers) raise the achievable floor by ≈ 500 chars. The caps above are the post-refactor baseline; the previous numbers stayed unattainable without dropping mandatory content.
55
55
 
@@ -123,7 +123,7 @@ THE HOST AGENT IS THE CONVENER, NEVER A REVIEWER.
123
123
 
124
124
  If you find yourself wanting to "frame" the artefact for the council,
125
125
  stop. Framing is exactly what kills the second-opinion value. Use the
126
- unbiased system prompts in `scripts/ai_council/prompts.py`; do not
126
+ unbiased system prompts in `scripts/ai_council/prompts.ts`; do not
127
127
  roll your own.
128
128
 
129
129
  The host runs the council and synthesises convergence — it is the
@@ -148,7 +148,7 @@ in front of every member's system prompt, assembled by
148
148
  | One paragraph of repo purpose from `README.md` (max 400 chars) | Host-agent framing language ("I think this looks weak", "the user probably wants…") |
149
149
  | The user's **original ask** verbatim (the free-form sentence that triggered `/council`) | Anything the host agent generated about the artefact |
150
150
 
151
- `detect_project_context()` in `scripts/ai_council/project_context.py`
151
+ `detect_project_context()` in `scripts/ai_council/project_context.ts`
152
152
  reads only the manifest files + root README; missing fields collapse
153
153
  to `None` and the preamble silently omits the line. With both
154
154
  `project=None` and `original_ask=""`, the preamble degrades to the
@@ -167,7 +167,7 @@ travel changes.
167
167
  | `manual` | `ManualClient` | no | `stdout` (prompt block) + `stdin` (user pastes the web-UI reply, terminated by a line containing only `END`) | shipped (Phase 2b) |
168
168
  | `cli` | `AnthropicCliClient` / `OpenAICliClient` / `GeminiCliClient` | no (subscription-authed) | local subprocess against the vendor CLI (`claude`, `codex`, `gemini`); auth delegated to the CLI's own session, no API key in this process | shipped (anthropic/openai/gemini · Phase 3) |
169
169
 
170
- Resolution lives in `scripts/ai_council/modes.py`:
170
+ Resolution lives in `scripts/ai_council/modes.ts`:
171
171
  `resolve_mode(name, invocation_mode, member_settings, global_mode)`
172
172
  with precedence **invocation flag > per-member setting > global
173
173
  setting > default (`manual`)**. Whitespace-and-case insensitive; empty
@@ -293,15 +293,15 @@ not a default.
293
293
  1. **Resolve target.** Identify the artefact mode (`prompt`, `roadmap`,
294
294
  `diff`, `files`) and locate the source. Refuse to proceed if the
295
295
  target is ambiguous.
296
- 2. **Bundle + redact.** Call `scripts/ai_council/bundler.py` to produce
296
+ 2. **Bundle + redact.** Call `scripts/ai_council/bundler.ts` to produce
297
297
  a redacted artefact bundle. If `BundleTooLarge` fires, surface the
298
298
  size and ask the user to narrow scope — do NOT truncate silently.
299
299
  3. **Confirm spend.** Before any network call, surface members + cost
300
300
  ceiling and require an explicit user `1` to proceed. Autonomy
301
301
  settings do not override this gate.
302
302
  4. **Fan out.** Dispatch the bundle to each enabled council member via
303
- `scripts/ai_council/orchestrator.py`. Each member receives the
304
- neutrality preamble from `prompts.py` plus the artefact — nothing
303
+ `scripts/ai_council/orchestrator.ts`. Each member receives the
304
+ neutrality preamble from `prompts.ts` plus the artefact — nothing
305
305
  from the host agent's prior reasoning.
306
306
  5. **Render results.** Stack each member's response under its own
307
307
  provider-attributed heading. Never merge or paraphrase responses
@@ -412,10 +412,10 @@ matching `road-to-<topic-slug>` roadmap under `agents/roadmaps/`).
412
412
  that may include council artefacts as part of their evidence trail
413
413
  (e.g. `audit-2026-05-14-north-star/` bundles its triggering
414
414
  question, raw responses, and synthesis alongside the audit's
415
- findings). The layout linter (`scripts/check_council_layout.py`)
415
+ findings). The layout linter (`scripts/check_council_layout.ts`)
416
416
  skips these directories.
417
417
 
418
- `scripts/check_council_layout.py` is the mechanical check for the
418
+ `scripts/check_council_layout.ts` is the mechanical check for the
419
419
  output path convention — wire it into the package's CI pipeline so
420
420
  violations break the build.
421
421
 
@@ -458,7 +458,7 @@ attributed to the host.
458
458
  The **Convergence / Divergence** slot in `council:render` output is
459
459
  populated with a lens-specific synthesis prompt. The host agent reads
460
460
  this prompt and writes the summary in the shape it dictates. The five
461
- templates live in `scripts/ai_council/prompts.py::_SYNTHESIS_TABLE`
461
+ templates live in `scripts/ai_council/prompts.ts::_SYNTHESIS_TABLE`
462
462
  and are exposed via `synthesis_template(mode)`.
463
463
 
464
464
  **R4 Q4 split** — decision lenses get a structured Karpathy-style
@@ -546,7 +546,7 @@ Real failure modes seen in the wild:
546
546
  | Anti-pattern | Why it's wrong | Correct approach |
547
547
  |---|---|---|
548
548
  | "Pre-warm" the council with the agent's own analysis. | Bias attack — collapses the reviewer to a yes-man. | Send the artefact text only. |
549
- | Paste the host-agent identity ("I am Augment / Claude Code…") | Identity primes the reviewer's model. | Neutrality preamble in `prompts.py` already handles this. |
549
+ | Paste the host-agent identity ("I am Augment / Claude Code…") | Identity primes the reviewer's model. | Neutrality preamble in `prompts.ts` already handles this. |
550
550
  | Silently truncate a too-large bundle. | Misleads the reviewer into thinking they saw the whole thing. | Bundler raises `BundleTooLarge`; surface and ask for narrower scope. |
551
551
  | Reuse the same SDK client across calls without re-loading the key. | Leaks the key in long-lived process state. | Each invocation builds fresh clients from `load_*_key()`. |
552
552
  | Auto-spend tokens under `personal.autonomy: on`. | Autonomy ≠ permission to spend money. | Always ask before consultation, even under autonomy. |
@@ -586,7 +586,7 @@ per-invocation caps from `ai_council.cost_budget`:
586
586
  `daily_budget_exceeded` instead of `cost_budget_exceeded`.
587
587
 
588
588
  Prices come from `agents/runtime/.agent-prices.md` (gitignored, refreshed weekly).
589
- The pricing module bootstraps it from `_default_prices.py` on first
589
+ The pricing module bootstraps it from `_default_prices.ts` on first
590
590
  use and flags it stale when older than the most recent Monday 00:00
591
591
  UTC.
592
592
 
@@ -937,16 +937,16 @@ fast-path entries (clean session is not an error).
937
937
  - `/council` command — the user-facing entry point.
938
938
  - `subagent-orchestration` skill — internal multi-agent variant (no
939
939
  network, no spend, but no diversity of weights either).
940
- - `scripts/ai_council/prompts.py` — neutrality preamble + per-mode
940
+ - `scripts/ai_council/prompts.ts` — neutrality preamble + per-mode
941
941
  system prompts.
942
- - `scripts/ai_council/advisors.py` — replace-mode planning + persona
942
+ - `scripts/ai_council/advisors.ts` — replace-mode planning + persona
943
943
  resolution.
944
- - `scripts/ai_council/bundler.py` — redaction pattern set + size
944
+ - `scripts/ai_council/bundler.ts` — redaction pattern set + size
945
945
  guard.
946
946
  - `docs/customization.md` § `ai_council.*` — settings reference.
947
947
  - `docs/contracts/ai-council-config.md` § advisors — schema + precedence
948
948
  contract.
949
949
  - `docs/contracts/ai-council-config.md` § Decision-replay artefact —
950
950
  Phase 9 audit trail contract + redaction modes.
951
- - `scripts/ai_council/replay.py` — pure projection renderer (no model
951
+ - `scripts/ai_council/replay.ts` — pure projection renderer (no model
952
952
  calls).
@@ -17,7 +17,7 @@ packs:
17
17
 
18
18
  > **Grounded corpus (Tier-1 consultation):** pagination, versioning,
19
19
  > error shape (RFC 9457), idempotency, async ops, rate limiting, bulk,
20
- > naming, expansion, webhooks — `ground.py search --manifest
20
+ > naming, expansion, webhooks — `./scripts-run <skills-root>/corpus-grounding/scripts/ground search --manifest
21
21
  > <skills-root>/api-design/data/manifest.json "<concern>"` proposes the
22
22
  > grounded pattern (+ hardening + anti-patterns + RFC link) before
23
23
  > designing from memory. Corpus: [`data/api-patterns.csv`](data/api-patterns.csv).
@@ -14,7 +14,8 @@ packs:
14
14
 
15
15
  > **Grounded corpus:** endpoint-shape decisions (pagination, error shape,
16
16
  > idempotency, rate limits) ground via the
17
- > [`api-design`](../api-design/SKILL.md) corpus — `ground.py search
17
+ > [`api-design`](../api-design/SKILL.md) corpus — `./scripts-run
18
+ > <skills-root>/corpus-grounding/scripts/ground search
18
19
  > --manifest <skills-root>/api-design/data/manifest.json "<concern>"`.
19
20
 
20
21
  ## When to use
@@ -19,7 +19,7 @@ packs:
19
19
  > **Grounded corpus (Tier-1 consultation):** the threat corpus's
20
20
  > `authorization` + `tenancy` rows (IDOR, mass-assignment escalation,
21
21
  > unscoped queries, sealed job context — each with negative tests) come
22
- > from `ground.py ground --manifest
22
+ > from `./scripts-run <skills-root>/corpus-grounding/scripts/ground ground --manifest
23
23
  > <skills-root>/threat-modeling/data/manifest.json "<check under review>"`.
24
24
  > Cite corpus rows in findings; surface the evidence gap when no row.
25
25
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  model_tier: medium
3
3
  name: blade-ui
4
- description: "Use when the project's frontend stack is Blade — dispatched by `directives/ui/{apply,review,polish}.py`. Covers views, components, partials, layouts, and view logic."
4
+ description: "Use when the project's frontend stack is Blade — dispatched by `directives/ui/{apply,review,polish}.ts`. Covers views, components, partials, layouts, and view logic."
5
5
  domain: engineering
6
6
  workspaces:
7
7
  - engineering
@@ -17,7 +17,8 @@ install:
17
17
  # blade-ui
18
18
 
19
19
  > **Grounded stack guidance:** pull idiomatic Do/Don't + docs URLs from the
20
- > adopted stack corpus before improvising — `ground.py search --manifest
20
+ > adopted stack corpus before improvising — `./scripts-run
21
+ > <skills-root>/corpus-grounding/scripts/ground search --manifest
21
22
  > <skills-root>/design-intelligence/data/manifest.json --stack laravel "<topic>"`
22
23
  > (the `laravel` stack file is Blade/UI-scoped, not general Laravel). See
23
24
  > [`design-intelligence`](../design-intelligence/SKILL.md).
@@ -25,23 +26,23 @@ install:
25
26
  ## Positioning — dispatched, not standalone
26
27
 
27
28
  `blade-ui` is the **apply-step executor** for the Blade stack. It is
28
- invoked by [`directives/ui/apply.py`](../../templates/scripts/work_engine/directives/ui/apply.py)
29
- once the design brief is locked, and revisited by `review.py` /
30
- `polish.py` during the design-review loop. It does **not** own the
29
+ invoked by [`directives/ui/apply.ts`](../../templates/scripts/work_engine/directives/ui/apply.ts)
30
+ once the design brief is locked, and revisited by `review.ts` /
31
+ `polish.ts` during the design-review loop. It does **not** own the
31
32
  flow, does **not** drive the audit, and does **not** lock the design.
32
33
 
33
34
  | Concern | Owner |
34
35
  |---|---|
35
36
  | Audit + token inventory (mandatory pre-step) | [`existing-ui-audit`](../existing-ui-audit/SKILL.md) |
36
- | Design brief (layout / states / microcopy) | [`directives/ui/design.py`](../../templates/scripts/work_engine/directives/ui/design.py) |
37
+ | Design brief (layout / states / microcopy) | [`directives/ui/design.ts`](../../templates/scripts/work_engine/directives/ui/design.ts) |
37
38
  | Universal design heuristics | [`fe-design`](../fe-design/SKILL.md) |
38
- | Review + polish loop | [`directives/ui/review.py`](../../templates/scripts/work_engine/directives/ui/review.py) + [`polish.py`](../../templates/scripts/work_engine/directives/ui/polish.py) |
39
+ | Review + polish loop | [`directives/ui/review.ts`](../../templates/scripts/work_engine/directives/ui/review.ts) + [`polish.ts`](../../templates/scripts/work_engine/directives/ui/polish.ts) |
39
40
 
40
41
  ## When to use
41
42
 
42
43
  Cite this skill when:
43
44
 
44
- - `state.stack.frontend == "blade"` (or the project is clearly Blade-only without Livewire / Flux) and `directives/ui/apply.py` dispatches to this skill
45
+ - `state.stack.frontend == "blade"` (or the project is clearly Blade-only without Livewire / Flux) and `directives/ui/apply.ts` dispatches to this skill
45
46
  - Editing or creating Blade views, components, partials, layouts, or forms
46
47
 
47
48
  Do NOT use when:
@@ -92,8 +93,8 @@ Do NOT use when:
92
93
 
93
94
  ### Review pass — a11y findings + preview envelope
94
95
 
95
- When this skill is dispatched by `directives/ui/review.py` (test slot)
96
- or `directives/ui/polish.py` (verify slot) — i.e. a review/polish run,
96
+ When this skill is dispatched by `directives/ui/review.ts` (test slot)
97
+ or `directives/ui/polish.ts` (verify slot) — i.e. a review/polish run,
97
98
  not the initial apply — it also emits:
98
99
 
99
100
  - `state.ui_review.a11y` — `{violations: [{rule, selector, severity}, ...],
@@ -124,9 +124,10 @@ An action without a closure criterion is a wish, not a plan.
124
124
 
125
125
  Per [`docs/contracts/analysis-memory-loop.md § 2`](../../docs/contracts/analysis-memory-loop.md):
126
126
 
127
- 1. Run the dedup pre-check — call `find_duplicate(...)` from
128
- `scripts.memory_lookup` over the same key-space (incident type,
129
- affected paths, decision area).
127
+ 1. Run the dedup pre-check — `find_duplicate(...)` from
128
+ `scripts/memory_lookup.ts` over the same key-space (incident type,
129
+ affected paths, decision area); a `memory:lookup` query over the
130
+ same keys is the CLI equivalent.
130
131
  2. **Match found** — propose a `frequency` / `supersedes` update to
131
132
  the existing entry; do NOT create a new candidate.
132
133
  3. **No match** — draft a REDACTED `incident-learnings` candidate to
@@ -143,10 +144,10 @@ Per [`docs/contracts/analysis-memory-loop.md § 2`](../../docs/contracts/analysi
143
144
 
144
145
  4. NEVER auto-promote. The human drives promotion via `/memory
145
146
  promote`. If the candidate fails the admission gate
146
- (`check_memory_proposal.py`), surface the gap to the user.
147
+ (`check_memory_proposal.ts`), surface the gap to the user.
147
148
 
148
- If `retrieve()` returns stale entries in `skipped`, surface them
149
- explicitly — never silently use stale data.
149
+ If the lookup surfaces stale entries (past `review_after_days`),
150
+ surface them explicitly — never silently use stale data.
150
151
 
151
152
  ## Output
152
153
 
@@ -181,8 +182,8 @@ The post-mortem produces, in order:
181
182
  Severity is `near-miss`; the extra two questions apply.
182
183
  - **Corrective actions without closure criteria** are non-actionable.
183
184
  Always require a specific, testable done condition.
184
- - **Stale memory entries** surface in `skipped`, not `results`. Never
185
- silently reuse stale data.
185
+ - **Stale memory entries** must be surfaced as stale, never merged
186
+ into the findings. Never silently reuse stale data.
186
187
 
187
188
  ## See also
188
189
 
@@ -105,10 +105,9 @@ The checks below are stack-agnostic. For framework-specific conventions (PSR-12
105
105
 
106
106
  ## Before creating a PR
107
107
 
108
- 1. Run the project's quality pipeline (see the stack carve-out for the exact commands — PHP: `quality-tools`).
109
- 2. Run tests via the project's runner (`make test`, `npm test`, `pytest`, `go test ./...`, or the project's wrapper script).
110
- 3. Ensure CI passes on the branch.
111
- 4. Self-review the diff: `git diff origin/main..HEAD`.
108
+ 1. When `quality.local_auto_run: true`: run the project's quality pipeline (see the stack carve-out for the exact commands — PHP: `quality-tools`) and tests via the project's runner (`make test`, `npm test`, `pytest`, `go test ./...`, or the project's wrapper script). Under the default (`false` / missing): skip both — remote CI on the PR is the gate.
109
+ 2. Ensure CI passes on the branch (remote CI is authoritative).
110
+ 3. Self-review the diff: `git diff origin/main..HEAD`.
112
111
 
113
112
  ## Receiving feedback
114
113
 
@@ -45,11 +45,11 @@ Only ask the user if inference fails and the command cannot proceed without the
45
45
  | `.augment/commands/` | Shared commands (work across projects) |
46
46
  | `agents/overrides/commands/` | Project-specific overrides (used instead of original) |
47
47
 
48
- ## Commands that dispatch to a Python engine
48
+ ## Commands that dispatch to the work engine
49
49
 
50
50
  Most commands are pure markdown procedures — the agent reads the steps
51
- and executes them. Two commands delegate to the `work_engine` Python
52
- module via the `./agent-config` dispatcher; both share the same
51
+ and executes them. Two commands delegate to the `work_engine` engine
52
+ (TypeScript, run via tsx) via the `./agent-config` dispatcher; both share the same
53
53
  Option-A loop (read state → run engine → handle exit code → repeat),
54
54
  they only differ in the input envelope they build:
55
55
 
@@ -59,7 +59,7 @@ Why optional + not yet blocking, + the upgrade trigger:
59
59
  ## Commands ARE Claude skills (projection reality)
60
60
 
61
61
  Every `src/agent-src/commands/{name}.md` projects to
62
- `.claude/skills/{slug}/SKILL.md` via `scripts/condense.py`
62
+ `.claude/skills/{slug}/SKILL.md` via `scripts/condense.ts`
63
63
  (`generate_claude_commands`). Nested commands flatten with `-`
64
64
  (`council/default.md` → `council-default`). Skills + commands share the
65
65
  **same `.claude/skills/` namespace** — Claude does not distinguish them.
@@ -205,7 +205,7 @@ multi-paragraph explanation, extract it into a skill and call it.
205
205
  ### 6. Governance baseline (when introducing a new linter check)
206
206
 
207
207
  **Advisory, reviewer-checked — no CI gate.** When the same PR adds a
208
- new check to `scripts/skill_linter.py` (or strengthens an existing one)
208
+ new check to `scripts/skill_linter.ts` (or strengthens an existing one)
209
209
  such that previously-clean commands now warn, the PR body MUST record
210
210
  the pre-existing violations on `main` in a Markdown table:
211
211
 
@@ -273,7 +273,7 @@ to every command you author.
273
273
  ## Cloud Behavior
274
274
 
275
275
  On cloud surfaces (Claude.ai Web, Skills API) the package's
276
- `scripts/skill_linter.py`, `scripts/condense.py`, and the `task`
276
+ `scripts/skill_linter.ts`, `scripts/condense.ts`, and the `task`
277
277
  runner are not available. This skill still applies — but with
278
278
  prose-only validation:
279
279
 
@@ -29,7 +29,7 @@ Use when:
29
29
 
30
30
  - Condense reply, commit message, PR body, ticket summary, or any deliverable written *for* human reader — those are carve-outs in [`telegraph-speak § Carve-outs`](../../rules/telegraph-speak.md) and stay verbatim.
31
31
  - Condense path matching sensitive-file denylist (`.env*`, `.netrc`, `credentials*`, `secrets*`, `id_rsa*`, `*.pem|key|p12|pfx|crt|cer|jks`, `.ssh/*`) — script refuses with `SensitivePathError` and so should you.
32
- - Condense generated file (`dist/agent-src/`, `.augment/`, `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`) — edit source in `.agent-src.uncondensed/` and regenerate via package's sync + generate-tools scripts (`scripts/condense.sh --sync` + `scripts/condense.py --generate-tools`).
32
+ - Condense generated file (`dist/agent-src/`, `.augment/`, `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`) — edit source in `.agent-src.uncondensed/` and regenerate via package's sync + generate-tools scripts (`scripts/condense.sh --sync` + `scripts/condense.ts --generate-tools`).
33
33
  - Hand-edit condensed memory file in place — run `--decondense` first; next condense pass refuses on body-hash drift (`CondensationRefused`).
34
34
  - Commit condensed file without committing matching `.original.md` backup — round-trip breaks otherwise.
35
35
 
@@ -99,7 +99,7 @@ CLI exit codes:
99
99
  - **Denylist false positive** — sensitive-looking filename outside denylist surface (project-specific naming) will still pass `assert_safe()`. Denylist necessary but not sufficient; maintainer responsible for never feeding secrets to condenseor.
100
100
  - **Frontmatter ordering with existing keys** — if target already has frontmatter, condenseor preserves existing keys, drops any prior `original_sha256:` / `condensed_at:` entries, and appends new pair. Other agents reading file should treat SHA + timestamp pair as canonical condensation marker, not file size.
101
101
  - **Negative savings on pointer-heavy files** — `templates/AGENTS.md` already following Thin-Root (≥ 40 % pointers, ≥ 60-char *why*-clauses) has little prose left to drop; condensation may net near-zero or even add bytes via frontmatter. Run [`agents-md-thin-root`](../agents-md-thin-root/SKILL.md) first to maximise pointer share, then measure whether this skill still pays.
102
- - **Generated-tree drift** — condensing `.agent-src.uncondensed/templates/AGENTS.md` does NOT propagate to `.augment/`, `.claude/`, etc. until package's sync + generate-tools scripts run (`scripts/condense.sh --sync` + `scripts/condense.py --generate-tools`). Always regenerate after condensing templated file.
102
+ - **Generated-tree drift** — condensing `.agent-src.uncondensed/templates/AGENTS.md` does NOT propagate to `.augment/`, `.claude/`, etc. until package's sync + generate-tools scripts run (`scripts/condense.sh --sync` + `scripts/condense.ts --generate-tools`). Always regenerate after condensing templated file.
103
103
 
104
104
  ## Measurement — when to condense
105
105
 
@@ -156,7 +156,7 @@ If the context file declares its own `load_context:` (chain reasoning),
156
156
  use logical names rooted at the source — `contexts/<area>/<file>.md`
157
157
  for package material or `agents/settings/contexts/<file>.md` for project-local
158
158
  material. The `.agent-src.uncondensed/` prefix is rejected by the
159
- schema regex and by `scripts/lint_load_context.py`. Body links to
159
+ schema regex and by `scripts/lint_load_context.ts`. Body links to
160
160
  `docs/guidelines/...` use the verbatim `../../docs/...` relative form.
161
161
  Canonical reference: `rule-writing` § 3b and
162
162
  `docs/contracts/load-context-schema.md`.
@@ -108,7 +108,7 @@ human curates), a card is governed: it is a cache of *expensive* remote evidence
108
108
  **negative facts + pointers** (`trust: durable`); its positive structure is a
109
109
  per-line, last-verified **hypothesis** that loads as "Assumed (from card)" and
110
110
  must be re-confirmed against the live source before use. Cards pass the
111
- `check_knowledge_cards.py` pointer-CI (size ≤ 150, mandatory authoritative
111
+ `check_knowledge_cards.ts` pointer-CI (size ≤ 150, mandatory authoritative
112
112
  pointer, trust tagging, multi-evidence consistency). See
113
113
  [`source-discovery`](../source-discovery/SKILL.md) for when a structure is
114
114
  card-worthy and [`evidence-discipline`](../../agent-src/contexts/execution/evidence-discipline.md)
@@ -156,7 +156,7 @@ about the project** over time:
156
156
  Before deduplicating, run three scans:
157
157
 
158
158
  1. **Legacy identifier scan** — compare both files against the package's
159
- `FORBIDDEN_IDENTIFIERS` blocklist (see `scripts/check_portability.py`)
159
+ `FORBIDDEN_IDENTIFIERS` blocklist (see `scripts/check_portability.ts`)
160
160
  plus any project names from `agents/` module docs that don't match
161
161
  the current project.
162
162
  2. **Stack coherence scan** — auto-detect the actual stack from
@@ -36,7 +36,8 @@ frontend-hardcoded axis moved into the manifest. Full license obligations:
36
36
  - A skill needs **pre-action selection** grounded in curated knowledge
37
37
  ("which layout pattern / threat class / index strategy applies here").
38
38
  - You are authoring a **new domain corpus** — write a manifest + CSVs,
39
- validate with `ground.py validate`, never fork the engine.
39
+ validate with the grounding CLI (`ground validate` via ./scripts-run),
40
+ never fork the engine.
40
41
  - You need stack-scoped Do/Don't guidance (`--stack react …`).
41
42
 
42
43
  ## Do NOT
@@ -92,7 +93,8 @@ Stable v1 surface:
92
93
  search_stack, evaluate_rules, ground, persist_grounding}`,
93
94
  `schema_validator.{load_manifest, validate_manifest, resolve_data_path,
94
95
  ManifestError, MANIFEST_VERSION, TIERS}`.
95
- 2. **CLI** — `ground.py {search|ground|validate}` with the flags shown above.
96
+ 2. **CLI** — the grounding CLI (`ground {search|ground|validate}` via
97
+ ./scripts-run) with the flags shown above.
96
98
  3. **Result shape** — search: `{domain|stack, query, file, count, results,
97
99
  scores, filtered_from, confidence{label,score}, evidence_gap[]}`;
98
100
  ground: `{domain, query, category, rule, rules_evaluation{matched,
@@ -138,7 +140,7 @@ Each domain ships `data/manifest.json` beside its CSVs — declaring its
138
140
  "priority_domain": "style",
139
141
  "name_columns": { "style": "Style Category" },
140
142
  "plan": { "style": 3, "color": 2 },
141
- "rules_module": "rules.py"
143
+ "rules_module": "rules.ts"
142
144
  },
143
145
  "owner": "package-maintainer",
144
146
  "refresh_cadence": "quarterly",
@@ -151,8 +153,10 @@ Each domain ships `data/manifest.json` beside its CSVs — declaring its
151
153
  - `owner`, `refresh_cadence`, `upstream{repo,sha,last_checked}` are
152
154
  **required** — provenance discipline per ADR-061 §6; an unowned corpus
153
155
  is not merged.
154
- - `rules_module` (optional Python escape hatch where JSON rules cap out)
155
- must live beside the manifest — absolute paths and `..` are refused.
156
+ - `rules_module` (optional TypeScript escape hatch where JSON rules cap
157
+ out — a module exposing `evaluate(rules, query, context)`; a legacy
158
+ `.py` name in a manifest is remapped to its `.ts`/`.js` twin) must live
159
+ beside the manifest — absolute paths and `..` are refused.
156
160
  - Decision rules are surfaced as `matched` **and** `unmatched` — the full
157
161
  rule space stays auditable, never a hidden gate.
158
162
 
@@ -162,7 +166,7 @@ Each domain ships `data/manifest.json` beside its CSVs — declaring its
162
166
  row count; grounding must happen **before** action; "fits in 5 lines →
163
167
  it's a rule, not a corpus".
164
168
  2. Write `data/manifest.json` + CSVs in your domain skill; run
165
- `ground.py validate`.
169
+ the grounding CLI (`ground validate` via ./scripts-run).
166
170
  3. Name an owner + refresh cadence in the manifest, pin the upstream SHA.
167
171
  4. Cite this skill from your domain skill; consult via the CLI (Tier-1
168
172
  consultation default — propose grounded options, human confirms).
@@ -189,9 +193,9 @@ Each domain ships `data/manifest.json` beside its CSVs — declaring its
189
193
  under the caller-chosen `DIR`; nothing else writes.
190
194
  - **No network, no subprocess, no secrets** — pure stdlib; embeddings /
191
195
  remote retrievers are intentionally not implemented (ADR-061 §2).
192
- - `rules_module` executes manifest-adjacent Python — same trust domain as
193
- the skill that ships the manifest; containment enforced by
194
- `resolve_data_path`.
196
+ - `rules_module` executes a manifest-adjacent TypeScript module (dynamic
197
+ `import()`) — same trust domain as the skill that ships the manifest;
198
+ containment enforced by `resolve_data_path`.
195
199
 
196
200
  ## See also
197
201
 
@@ -201,5 +205,6 @@ Each domain ships `data/manifest.json` beside its CSVs — declaring its
201
205
  architecture, qualification rubric, fork resolutions.
202
206
  - [`docs/contracts/skill-bundled-assets.md`](../../../docs/contracts/skill-bundled-assets.md)
203
207
  — how bundled `scripts/` + `data/` reach consumer runtime.
204
- - Tests: `tests/test_corpus_grounding_engine.py`,
205
- `tests/test_skill_bundled_assets.py`.
208
+ - Tests: `tests/scripts/skills_corpus_grounding_ground.test.ts`,
209
+ `tests/scripts/skills_corpus_grounding_bm25_search.test.ts`,
210
+ `tests/scripts/skills_corpus_grounding_schema_validator.test.ts`.
@@ -22,7 +22,7 @@
22
22
 
23
23
  import * as fs from 'node:fs';
24
24
  import * as path from 'node:path';
25
- import { pathToFileURL } from 'node:url';
25
+ import { fileURLToPath, pathToFileURL } from 'node:url';
26
26
 
27
27
  import {
28
28
  PyFloat,
@@ -524,9 +524,30 @@ function _jsonStr(s: string): string {
524
524
  return `${out}"`;
525
525
  }
526
526
 
527
+ function _isCliEntry(): boolean {
528
+ if (process.argv[1] === undefined) {
529
+ return false;
530
+ }
531
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
532
+ if (import.meta.url === argvUrl) {
533
+ return true;
534
+ }
535
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
536
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
537
+ // import.meta.url is the resolved real path while argv[1] keeps the
538
+ // symlink path. Compare realpaths so the entry guard still fires
539
+ // (without this the CLI silently no-ops when run through a symlink).
540
+ try {
541
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
542
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
543
+ return here === argv;
544
+ } catch {
545
+ return false;
546
+ }
547
+ }
548
+
527
549
  const _isMain =
528
- process.argv[1] !== undefined &&
529
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
550
+ _isCliEntry();
530
551
  if (_isMain) {
531
552
  main()
532
553
  .then((code) => {
@@ -27,7 +27,8 @@ Do NOT use when:
27
27
  2. **Pick the surface** — Use the decision tables below to choose Grafana, app dashboard, or embed; document audience and refresh cadence.
28
28
  3. **Draft the layout** — Sketch panels, choose visualization per signal (RED / USE / Golden Signals), define filters and thresholds.
29
29
  **Ground the chart-type choice** in the adopted data-viz corpus instead
30
- of memory: `ground.py search --manifest
30
+ of memory: `./scripts-run <skills-root>/corpus-grounding/scripts/ground
31
+ search --manifest
31
32
  <skills-root>/design-intelligence/data/manifest.json --domain chart
32
33
  "<data shape>"` returns the best chart type, when-NOT-to-use, data-volume
33
34
  threshold, a11y grade + colorblind fallback, and a library
@@ -15,7 +15,8 @@ packs:
15
15
 
16
16
 
17
17
  > **Grounded corpus (Tier-1 consultation):** symptom → index/strategy
18
- > decisions come grounded — `ground.py search --manifest
18
+ > decisions come grounded — `./scripts-run
19
+ > <skills-root>/corpus-grounding/scripts/ground search --manifest
19
20
  > <skills-root>/database/data/manifest.json "<symptom>"` returns root
20
21
  > cause, strategy, good-code sketch, anti-pattern, and the verification
21
22
  > probe (EXPLAIN expectation). Corpus: