@event4u/agent-config 8.4.1 → 8.6.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 (581) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +92 -0
  3. package/README.md +17 -5
  4. package/dist/agent-src/README.md +1 -1
  5. package/dist/agent-src/commands/{analyze-reference-repo.md → analyze/reference-repo.md} +3 -1
  6. package/dist/agent-src/commands/analyze.md +9 -6
  7. package/dist/agent-src/commands/{bug-fix.md → bug/fix.md} +3 -1
  8. package/dist/agent-src/commands/{bug-investigate.md → bug/investigate.md} +4 -2
  9. package/dist/agent-src/commands/bug.md +59 -0
  10. package/dist/agent-src/commands/{set-cost-profile.md → cost/profile.md} +9 -6
  11. package/dist/agent-src/commands/{cost-report.md → cost/report.md} +38 -17
  12. package/dist/agent-src/commands/cost.md +57 -0
  13. package/dist/agent-src/commands/evals/{review-changes.json → review.json} +12 -8
  14. package/dist/agent-src/commands/{quality-fix.md → fix/quality.md} +5 -2
  15. package/dist/agent-src/commands/fix.md +7 -4
  16. package/dist/agent-src/commands/optimize/project.md +250 -0
  17. package/dist/agent-src/commands/{optimize-prompt.md → optimize/prompt.md} +3 -2
  18. package/dist/agent-src/commands/optimize.md +17 -12
  19. package/dist/agent-src/commands/{package-reset.md → package/reset.md} +2 -0
  20. package/dist/agent-src/commands/{package-test.md → package/test.md} +3 -1
  21. package/dist/agent-src/commands/package.md +56 -0
  22. package/dist/agent-src/commands/{project-analyze.md → project/analyze.md} +10 -8
  23. package/dist/agent-src/commands/{project-health.md → project/health.md} +2 -0
  24. package/dist/agent-src/commands/project.md +60 -0
  25. package/dist/agent-src/commands/{review-changes.md → review/changes.md} +26 -24
  26. package/dist/agent-src/commands/{review-routing.md → review/routing.md} +21 -17
  27. package/dist/agent-src/commands/review.md +61 -0
  28. package/dist/agent-src/commands/security-audit-config.md +24 -23
  29. package/dist/agent-src/commands/{sync-agent-settings.md → sync/agent-settings.md} +11 -7
  30. package/dist/agent-src/commands/{sync-gitignore → sync/gitignore}/fix.md +36 -27
  31. package/dist/agent-src/commands/{sync-gitignore.md → sync/gitignore.md} +22 -21
  32. package/dist/agent-src/commands/sync.md +58 -0
  33. package/dist/agent-src/commands/{e2e-heal.md → tests/e2e-heal.md} +5 -2
  34. package/dist/agent-src/commands/{e2e-plan.md → tests/e2e-plan.md} +5 -2
  35. package/dist/agent-src/commands/tests.md +11 -5
  36. package/dist/agent-src/contexts/augment-infrastructure.md +3 -3
  37. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +30 -0
  38. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +15 -1
  39. package/dist/agent-src/contexts/execution/subagent-steering.md +54 -1
  40. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  41. package/dist/agent-src/contexts/model-recommendations.md +19 -0
  42. package/dist/agent-src/contexts/skills-and-commands.md +2 -2
  43. package/dist/agent-src/contexts/subagent-configuration.md +8 -0
  44. package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
  45. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  46. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
  47. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
  48. package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
  49. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
  50. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  51. package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
  52. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  53. package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
  54. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
  55. package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
  56. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  57. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  58. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  59. package/dist/agent-src/templates/agent-settings.md +1 -1
  60. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
  61. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  62. package/dist/cli/commands/config.js +44 -0
  63. package/dist/cli/commands/config.js.map +1 -0
  64. package/dist/cli/commands/uiServe.js +1 -0
  65. package/dist/cli/commands/uiServe.js.map +1 -1
  66. package/dist/cli/help.js +38 -0
  67. package/dist/cli/help.js.map +1 -0
  68. package/dist/cli/initRouting.js +16 -1
  69. package/dist/cli/initRouting.js.map +1 -1
  70. package/dist/cli/main.js +43 -37
  71. package/dist/cli/main.js.map +1 -1
  72. package/dist/cli/registry.js +45 -44
  73. package/dist/cli/registry.js.map +1 -1
  74. package/dist/discovery/deprecation-report.md +1 -1
  75. package/dist/discovery/discovery-manifest.json +419 -210
  76. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  77. package/dist/discovery/discovery-manifest.summary.md +4 -4
  78. package/dist/discovery/orphan-report.md +1 -1
  79. package/dist/discovery/packs.json +31 -25
  80. package/dist/discovery/trust-report.md +2 -2
  81. package/dist/discovery/workspaces.json +30 -24
  82. package/dist/install/install.mjs +6064 -159
  83. package/dist/install/selectedTools.js +39 -10
  84. package/dist/install/selectedTools.js.map +1 -1
  85. package/dist/mcp/registry-manifest.json +3 -3
  86. package/dist/server/app.js +15 -3
  87. package/dist/server/app.js.map +1 -1
  88. package/dist/server/routes/ping.js +16 -0
  89. package/dist/server/routes/ping.js.map +1 -1
  90. package/dist/server/routes/settings.js +42 -6
  91. package/dist/server/routes/settings.js.map +1 -1
  92. package/dist/server/routes/settingsChanges.js +55 -0
  93. package/dist/server/routes/settingsChanges.js.map +1 -0
  94. package/dist/server/routes/userMd.js +7 -2
  95. package/dist/server/routes/userMd.js.map +1 -1
  96. package/dist/server/routes/wizard.js +76 -14
  97. package/dist/server/routes/wizard.js.map +1 -1
  98. package/dist/server/writeRoot.js +17 -0
  99. package/dist/server/writeRoot.js.map +1 -1
  100. package/dist/shared/settingsSurface.js +120 -0
  101. package/dist/shared/settingsSurface.js.map +1 -0
  102. package/dist/ui/assets/index-BPFMZWUs.css +1 -0
  103. package/dist/ui/assets/index-BiEZiZ31.js +40 -0
  104. package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
  105. package/dist/ui/index.html +15 -2
  106. package/docs/CLAIMS.md +27 -15
  107. package/docs/architecture.md +1 -1
  108. package/docs/catalog.md +37 -31
  109. package/docs/command-flows.md +22 -16
  110. package/docs/contracts/command-clusters.md +39 -9
  111. package/docs/contracts/file-ownership-matrix.json +21 -0
  112. package/docs/contracts/frontmatter-contract.md +1 -1
  113. package/docs/contracts/gui-wizard.md +16 -4
  114. package/docs/contracts/iron-law-overrides.txt +1 -0
  115. package/docs/contracts/rule-classification.md +2 -2
  116. package/docs/contracts/settings-api.md +58 -2
  117. package/docs/contracts/surface-matrix.md +5 -0
  118. package/docs/cookbook.md +7 -7
  119. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
  120. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
  121. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +125 -0
  122. package/docs/decisions/INDEX.md +3 -0
  123. package/docs/featured-commands.md +1 -1
  124. package/docs/featured-skills.md +4 -4
  125. package/docs/flows.md +2 -2
  126. package/docs/getting-started-by-role.md +1 -1
  127. package/docs/getting-started-laravel.md +1 -1
  128. package/docs/getting-started.md +6 -3
  129. package/docs/governance-advantage.md +1 -1
  130. package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
  131. package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
  132. package/docs/proof.md +12 -2
  133. package/package.json +3 -1
  134. package/src/agent-src/README.md +1 -1
  135. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  136. package/src/config/agent-settings.template.yml +1 -1
  137. package/src/install/selectedTools.ts +38 -10
  138. package/src/scripts/_cli/cmd_converge.ts +38 -0
  139. package/src/scripts/_cli/cmd_doctor.ts +113 -2
  140. package/src/scripts/_cli/cmd_explain.ts +2 -2
  141. package/src/scripts/_cli/cmd_export.ts +3 -3
  142. package/src/scripts/_cli/cmd_fleet.ts +13 -1
  143. package/src/scripts/_cli/cmd_migrate.ts +3 -3
  144. package/src/scripts/_cli/cmd_prune.ts +2 -2
  145. package/src/scripts/_cli/cmd_refresh.ts +4 -4
  146. package/src/scripts/_cli/cmd_settings_check.ts +2 -2
  147. package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
  148. package/src/scripts/_cli/cmd_sync.ts +2 -2
  149. package/src/scripts/_cli/cmd_uninstall.ts +2 -2
  150. package/src/scripts/_cli/cmd_update.ts +8 -8
  151. package/src/scripts/_cli/cmd_upgrade.ts +4 -3
  152. package/src/scripts/_cli/cmd_validate.ts +3 -3
  153. package/src/scripts/_cli/cmd_versions.ts +2 -2
  154. package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
  155. package/src/scripts/_cli/explain_last/council.ts +2 -2
  156. package/src/scripts/_cli/explain_last/halt.ts +2 -2
  157. package/src/scripts/_cli/explain_last/index.ts +2 -2
  158. package/src/scripts/_cli/explain_last/inputs.ts +4 -4
  159. package/src/scripts/_cli/explain_last/memory.ts +2 -2
  160. package/src/scripts/_cli/explain_last/provider.ts +2 -2
  161. package/src/scripts/_cli/explain_last/render.ts +2 -2
  162. package/src/scripts/_cli/explain_last/route.ts +2 -2
  163. package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
  164. package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
  165. package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
  166. package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
  167. package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
  168. package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
  169. package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
  170. package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
  171. package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
  172. package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
  173. package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
  174. package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
  175. package/src/scripts/_dispatch.bash +20 -1
  176. package/src/scripts/_lib/agent_settings.ts +1 -1
  177. package/src/scripts/_lib/agent_src.ts +7 -7
  178. package/src/scripts/_lib/agents_overlay.ts +1 -1
  179. package/src/scripts/_lib/auto_dispatch.ts +63 -0
  180. package/src/scripts/_lib/bench_ab_cache.ts +1 -1
  181. package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
  182. package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
  183. package/src/scripts/_lib/bench_cost.ts +1 -1
  184. package/src/scripts/_lib/bench_quality.ts +3 -3
  185. package/src/scripts/_lib/bench_report.ts +4 -4
  186. package/src/scripts/_lib/bench_telegraph.ts +1 -1
  187. package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
  188. package/src/scripts/_lib/changelog_eras.ts +1 -1
  189. package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
  190. package/src/scripts/_lib/cli_wrapper.ts +1 -1
  191. package/src/scripts/_lib/fs_atomic.ts +1 -1
  192. package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
  193. package/src/scripts/_lib/install_layout.ts +1 -1
  194. package/src/scripts/_lib/install_regenerator.ts +1 -1
  195. package/src/scripts/_lib/installed_lock.ts +1 -1
  196. package/src/scripts/_lib/installed_tools.ts +1 -1
  197. package/src/scripts/_lib/json_pointers.ts +1 -1
  198. package/src/scripts/_lib/knowledge_global.ts +1 -1
  199. package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
  200. package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
  201. package/src/scripts/_lib/link_crypto.ts +4 -4
  202. package/src/scripts/_lib/linked_projects.ts +4 -4
  203. package/src/scripts/_lib/model_tier.ts +1 -1
  204. package/src/scripts/_lib/module_detection.ts +2 -2
  205. package/src/scripts/_lib/pin_resolver.ts +1 -1
  206. package/src/scripts/_lib/script_output.ts +1 -1
  207. package/src/scripts/_lib/security_lint.ts +1 -1
  208. package/src/scripts/_lib/subagent_routing.ts +24 -0
  209. package/src/scripts/_lib/subagent_steering.ts +213 -3
  210. package/src/scripts/_lib/surface_tiers.ts +1 -1
  211. package/src/scripts/_lib/text_similarity.ts +1 -1
  212. package/src/scripts/_lib/update_check.ts +2 -2
  213. package/src/scripts/_lib/user_global_paths.ts +1 -1
  214. package/src/scripts/_lib/value_ladder.ts +1 -1
  215. package/src/scripts/_lib/value_report.ts +1 -1
  216. package/src/scripts/_lib/zip_min.ts +2 -2
  217. package/src/scripts/adoption_report.ts +3 -3
  218. package/src/scripts/adoption_snapshot.ts +3 -3
  219. package/src/scripts/adoption_status.ts +2 -2
  220. package/src/scripts/adr/regenerate_index.ts +3 -3
  221. package/src/scripts/ai_council/_default_prices.ts +2 -3
  222. package/src/scripts/ai_council/advisors.ts +1 -1
  223. package/src/scripts/ai_council/airgap.ts +1 -1
  224. package/src/scripts/ai_council/budget_guard.ts +1 -1
  225. package/src/scripts/ai_council/bundler.ts +1 -1
  226. package/src/scripts/ai_council/cli_hints.ts +1 -1
  227. package/src/scripts/ai_council/clients.ts +5 -5
  228. package/src/scripts/ai_council/compile_corpus.ts +1 -1
  229. package/src/scripts/ai_council/confidence_gate.ts +1 -1
  230. package/src/scripts/ai_council/config.ts +1 -1
  231. package/src/scripts/ai_council/consensus.ts +1 -1
  232. package/src/scripts/ai_council/events_log.ts +1 -1
  233. package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
  234. package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
  235. package/src/scripts/ai_council/low_impact_intake.ts +1 -1
  236. package/src/scripts/ai_council/modes.ts +1 -1
  237. package/src/scripts/ai_council/orchestrator.ts +3 -3
  238. package/src/scripts/ai_council/pricing.ts +2 -2
  239. package/src/scripts/ai_council/probation_gate.ts +2 -2
  240. package/src/scripts/ai_council/project_context.ts +1 -1
  241. package/src/scripts/ai_council/prompts.ts +1 -1
  242. package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
  243. package/src/scripts/ai_council/session.ts +1 -1
  244. package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
  245. package/src/scripts/ai_council/solo_dispatch.ts +1 -1
  246. package/src/scripts/analysis_freshness.ts +2 -2
  247. package/src/scripts/annotate_discovery.ts +2 -2
  248. package/src/scripts/apply_modules_config.ts +2 -2
  249. package/src/scripts/audit_adr_coverage.ts +3 -3
  250. package/src/scripts/audit_auto_rules.ts +2 -2
  251. package/src/scripts/audit_cloud_compatibility.ts +3 -3
  252. package/src/scripts/audit_command_surface.ts +2 -2
  253. package/src/scripts/audit_initial_context.ts +7 -6
  254. package/src/scripts/audit_likelihood.ts +5 -5
  255. package/src/scripts/audit_mcp_tools.ts +3 -3
  256. package/src/scripts/audit_overlap.ts +2 -2
  257. package/src/scripts/audit_skill_descriptions.ts +2 -2
  258. package/src/scripts/audit_skill_overlap.ts +5 -5
  259. package/src/scripts/audit_user_type_axis.ts +4 -4
  260. package/src/scripts/backfill_model_tier.ts +1 -1
  261. package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
  262. package/src/scripts/bench_ab_clone.ts +2 -2
  263. package/src/scripts/bench_ab_diff.ts +3 -3
  264. package/src/scripts/bench_ab_integrity.ts +2 -2
  265. package/src/scripts/bench_ab_run.ts +4 -4
  266. package/src/scripts/bench_ab_task_runner.ts +1 -1
  267. package/src/scripts/bench_ab_tracka_run.ts +2 -2
  268. package/src/scripts/bench_ab_v2_run.ts +1 -1
  269. package/src/scripts/bench_ab_v2_stats.ts +2 -2
  270. package/src/scripts/bench_baseline_ready.ts +1 -1
  271. package/src/scripts/bench_condense_memory.ts +4 -4
  272. package/src/scripts/bench_drift_check.ts +3 -3
  273. package/src/scripts/bench_per_tool.ts +1 -1
  274. package/src/scripts/bench_rtk_savings.ts +4 -4
  275. package/src/scripts/bench_run.ts +4 -4
  276. package/src/scripts/bench_runner.ts +1 -1
  277. package/src/scripts/build_cloud_bundle.ts +3 -3
  278. package/src/scripts/build_discovery_manifest.ts +13 -15
  279. package/src/scripts/build_linear_digest.ts +2 -2
  280. package/src/scripts/build_mcp_registry_manifest.ts +3 -3
  281. package/src/scripts/build_proof.ts +6 -0
  282. package/src/scripts/build_rule_trigger_matrix.ts +2 -2
  283. package/src/scripts/capture_showcase_session.ts +3 -3
  284. package/src/scripts/chat_history.ts +1 -1
  285. package/src/scripts/check_always_budget.ts +1 -1
  286. package/src/scripts/check_artefact_checksums.ts +4 -4
  287. package/src/scripts/check_artefact_count_messaging.ts +197 -0
  288. package/src/scripts/check_augment_description_cap.ts +3 -3
  289. package/src/scripts/check_augmentignore.ts +1 -1
  290. package/src/scripts/check_beta_review_markers.ts +3 -3
  291. package/src/scripts/check_bite_sized_granularity.ts +1 -1
  292. package/src/scripts/check_cluster_patterns.ts +47 -3
  293. package/src/scripts/check_command_count_messaging.ts +2 -2
  294. package/src/scripts/check_condensation.ts +2 -2
  295. package/src/scripts/check_condensed_paths.ts +6 -6
  296. package/src/scripts/check_context_paths.ts +1 -1
  297. package/src/scripts/check_council_config_location.ts +3 -3
  298. package/src/scripts/check_council_layout.ts +2 -2
  299. package/src/scripts/check_council_references.ts +2 -2
  300. package/src/scripts/check_discovery_determinism.ts +3 -3
  301. package/src/scripts/check_gate_paths.ts +4 -4
  302. package/src/scripts/check_iron_law_prominence.ts +2 -2
  303. package/src/scripts/check_kernel_rule_bundle.ts +3 -3
  304. package/src/scripts/check_knowledge_cards.ts +4 -4
  305. package/src/scripts/check_knowledge_pages.ts +1 -1
  306. package/src/scripts/check_md_language.ts +3 -3
  307. package/src/scripts/check_memory.ts +3 -3
  308. package/src/scripts/check_memory_proposal.ts +2 -2
  309. package/src/scripts/check_module_management_neutral.ts +1 -1
  310. package/src/scripts/check_no_conflict_markers.ts +1 -1
  311. package/src/scripts/check_no_external_sources.ts +1 -1
  312. package/src/scripts/check_no_local_settings_committed.ts +2 -2
  313. package/src/scripts/check_no_new_legacy_path.ts +3 -3
  314. package/src/scripts/check_no_roadmap_refs.ts +3 -3
  315. package/src/scripts/check_one_off_location.ts +3 -3
  316. package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
  317. package/src/scripts/check_portability.ts +3 -3
  318. package/src/scripts/check_proposal.ts +0 -0
  319. package/src/scripts/check_public_catalog_links.ts +1 -1
  320. package/src/scripts/check_public_links.ts +2 -2
  321. package/src/scripts/check_references.ts +3 -3
  322. package/src/scripts/check_release_includes_discovery.ts +2 -2
  323. package/src/scripts/check_release_pr_shape.ts +2 -2
  324. package/src/scripts/check_release_published.ts +1 -1
  325. package/src/scripts/check_release_trunk_sync.ts +3 -3
  326. package/src/scripts/check_reply_consistency.ts +1 -1
  327. package/src/scripts/check_roadmap_trackable.ts +2 -2
  328. package/src/scripts/check_role_doc_links.ts +2 -2
  329. package/src/scripts/check_safety_floor_untouched.ts +3 -3
  330. package/src/scripts/check_skill_requires.ts +2 -2
  331. package/src/scripts/check_structural_breaking.ts +2 -2
  332. package/src/scripts/check_surface_tiers.ts +2 -2
  333. package/src/scripts/check_template_pin_drift.ts +1 -1
  334. package/src/scripts/check_test_coverage_diff.ts +2 -2
  335. package/src/scripts/check_token_optimizer_freshness.ts +3 -3
  336. package/src/scripts/check_trigger_evals.ts +2 -2
  337. package/src/scripts/check_update_banner.ts +1 -1
  338. package/src/scripts/ci_status.ts +0 -0
  339. package/src/scripts/ci_summary.ts +3 -3
  340. package/src/scripts/ci_time_ratio.ts +1 -1
  341. package/src/scripts/command_suggester/cooldown.ts +1 -1
  342. package/src/scripts/command_suggester/index.ts +1 -1
  343. package/src/scripts/command_suggester/loader.ts +1 -1
  344. package/src/scripts/command_suggester/match.ts +1 -1
  345. package/src/scripts/command_suggester/rank.ts +1 -1
  346. package/src/scripts/command_suggester/render.ts +1 -1
  347. package/src/scripts/command_suggester/sanitize.ts +1 -1
  348. package/src/scripts/command_suggester/settings.ts +1 -1
  349. package/src/scripts/command_suggester/types.ts +0 -0
  350. package/src/scripts/compile_router.ts +4 -4
  351. package/src/scripts/condense.ts +3 -3
  352. package/src/scripts/condense_memory.ts +1 -1
  353. package/src/scripts/config/index.ts +1 -1
  354. package/src/scripts/config/packs.ts +1 -1
  355. package/src/scripts/config/presets.ts +1 -1
  356. package/src/scripts/config/profile_explain.ts +1 -1
  357. package/src/scripts/config/profiles.ts +1 -1
  358. package/src/scripts/config/session_profiles.ts +1 -1
  359. package/src/scripts/context_hygiene_hook.ts +2 -2
  360. package/src/scripts/cost_by_conversation.ts +1 -1
  361. package/src/scripts/cost_summary.ts +2 -2
  362. package/src/scripts/council_cli.ts +1 -1
  363. package/src/scripts/council_prune.ts +1 -1
  364. package/src/scripts/cross_repo_retrieve.ts +2 -2
  365. package/src/scripts/discovery_stats.ts +3 -3
  366. package/src/scripts/evidence_report.ts +4 -4
  367. package/src/scripts/extract_audit_patterns.ts +2 -2
  368. package/src/scripts/first_run_gate_hook.ts +1 -1
  369. package/src/scripts/gen_discovery_baseline.ts +2 -2
  370. package/src/scripts/generate_capabilities_index.ts +2 -2
  371. package/src/scripts/generate_capability_matrix.ts +2 -2
  372. package/src/scripts/generate_catalog.ts +2 -2
  373. package/src/scripts/generate_command_flows.ts +2 -2
  374. package/src/scripts/generate_cookbook.ts +1 -1
  375. package/src/scripts/generate_index.ts +3 -3
  376. package/src/scripts/generate_ownership_matrix.ts +2 -2
  377. package/src/scripts/generate_pack_manifests.ts +2 -2
  378. package/src/scripts/generate_role_experiences_catalog.ts +3 -3
  379. package/src/scripts/hooks/block_no_verify.ts +2 -2
  380. package/src/scripts/hooks/dispatch_hook.ts +2 -2
  381. package/src/scripts/hooks/dispatch_issues.ts +1 -1
  382. package/src/scripts/hooks/envelope.ts +1 -1
  383. package/src/scripts/hooks/replay_hook.ts +1 -1
  384. package/src/scripts/hooks/state_io.ts +1 -1
  385. package/src/scripts/hooks_doctor.ts +1 -1
  386. package/src/scripts/hooks_status.ts +1 -1
  387. package/src/scripts/injection_scan_hook.ts +1 -1
  388. package/src/scripts/install.ts +145 -3
  389. package/src/scripts/inventory_abstraction_budget.ts +5 -5
  390. package/src/scripts/inventory_frontmatter.ts +1 -1
  391. package/src/scripts/inventory_meta_layers.ts +1 -1
  392. package/src/scripts/iron_law_sha.ts +1 -1
  393. package/src/scripts/knowledge_global_cli.ts +3 -3
  394. package/src/scripts/linked_projects_list.ts +1 -1
  395. package/src/scripts/lint_agent_security.ts +4 -4
  396. package/src/scripts/lint_agent_skill_names.ts +1 -1
  397. package/src/scripts/lint_agents_layout.ts +2 -2
  398. package/src/scripts/lint_agents_md.ts +3 -3
  399. package/src/scripts/lint_archived_skills.ts +2 -2
  400. package/src/scripts/lint_artefact_frontmatter.ts +2 -2
  401. package/src/scripts/lint_bench_ab.ts +2 -2
  402. package/src/scripts/lint_bench_corpus.ts +1 -1
  403. package/src/scripts/lint_command_flow_coverage.ts +1 -1
  404. package/src/scripts/lint_command_routing.ts +2 -2
  405. package/src/scripts/lint_command_tiers.ts +1 -1
  406. package/src/scripts/lint_command_verbs.ts +4 -4
  407. package/src/scripts/lint_commit_subjects.ts +2 -2
  408. package/src/scripts/lint_context_spine_usage.ts +3 -3
  409. package/src/scripts/lint_discovery_manifest.ts +4 -4
  410. package/src/scripts/lint_discovery_vocabulary.ts +2 -2
  411. package/src/scripts/lint_empty_roadmaps.ts +3 -3
  412. package/src/scripts/lint_eval_freshness.ts +2 -2
  413. package/src/scripts/lint_examples.ts +2 -2
  414. package/src/scripts/lint_explain_trace.ts +2 -2
  415. package/src/scripts/lint_featured_skills.ts +0 -0
  416. package/src/scripts/lint_flows.ts +5 -5
  417. package/src/scripts/lint_framework_leakage.ts +1 -1
  418. package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
  419. package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
  420. package/src/scripts/lint_ghostwriter_source.ts +3 -3
  421. package/src/scripts/lint_global_paths.ts +1 -1
  422. package/src/scripts/lint_handoffs.ts +1 -1
  423. package/src/scripts/lint_hidden_unicode.ts +1 -1
  424. package/src/scripts/lint_hook_concern_budget.ts +2 -2
  425. package/src/scripts/lint_hook_manifest.ts +2 -2
  426. package/src/scripts/lint_instruction_smuggling.ts +1 -1
  427. package/src/scripts/lint_load_context.ts +2 -2
  428. package/src/scripts/lint_marketplace.ts +1 -1
  429. package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
  430. package/src/scripts/lint_mcp_config_security.ts +1 -1
  431. package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
  432. package/src/scripts/lint_media_policy_linkage.ts +3 -3
  433. package/src/scripts/lint_missions.ts +3 -3
  434. package/src/scripts/lint_model_tier_coverage.ts +3 -3
  435. package/src/scripts/lint_namespace.ts +2 -2
  436. package/src/scripts/lint_namespace_collisions.ts +2 -2
  437. package/src/scripts/lint_new_skill_gate.ts +3 -3
  438. package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
  439. package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
  440. package/src/scripts/lint_one_off_age.ts +2 -2
  441. package/src/scripts/lint_orchestration_dsl.ts +3 -3
  442. package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
  443. package/src/scripts/lint_pack_boundaries.ts +2 -2
  444. package/src/scripts/lint_pack_dependencies.ts +2 -2
  445. package/src/scripts/lint_pack_first_win.ts +2 -2
  446. package/src/scripts/lint_persona_governance.ts +3 -3
  447. package/src/scripts/lint_positioning.ts +1 -1
  448. package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
  449. package/src/scripts/lint_readme_jargon.ts +2 -2
  450. package/src/scripts/lint_readme_size.ts +2 -2
  451. package/src/scripts/lint_regression.ts +3 -3
  452. package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
  453. package/src/scripts/lint_roadmap_complexity.ts +1 -1
  454. package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
  455. package/src/scripts/lint_role_experiences.ts +2 -2
  456. package/src/scripts/lint_rule_interactions.ts +1 -1
  457. package/src/scripts/lint_rule_tiers.ts +1 -1
  458. package/src/scripts/lint_showcase_sessions.ts +2 -2
  459. package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
  460. package/src/scripts/lint_skill_originality.ts +1 -1
  461. package/src/scripts/lint_skill_tools.ts +3 -3
  462. package/src/scripts/lint_ticket_buildable.ts +2 -2
  463. package/src/scripts/lint_topics_yaml.ts +3 -3
  464. package/src/scripts/lint_trust_coherence.ts +3 -3
  465. package/src/scripts/lint_value_dashboard.ts +3 -3
  466. package/src/scripts/lint_workflow_security.ts +3 -3
  467. package/src/scripts/lint_workspace_boundary.ts +2 -2
  468. package/src/scripts/mcp_parity_smoke.ts +1 -1
  469. package/src/scripts/mcp_render.ts +1 -1
  470. package/src/scripts/mcp_server/catalog.ts +1 -1
  471. package/src/scripts/mcp_server/index.ts +1 -1
  472. package/src/scripts/mcp_server/metadata.ts +1 -1
  473. package/src/scripts/mcp_server/prompts.ts +1 -1
  474. package/src/scripts/mcp_server/resources.ts +1 -1
  475. package/src/scripts/mcp_server/server.ts +1 -1
  476. package/src/scripts/mcp_server/telemetry.ts +1 -1
  477. package/src/scripts/mcp_server/tools.ts +1 -1
  478. package/src/scripts/mcp_telemetry_health.ts +1 -1
  479. package/src/scripts/mcp_telemetry_query.ts +3 -3
  480. package/src/scripts/mcp_telemetry_store.ts +3 -3
  481. package/src/scripts/measure_augment_budget.ts +2 -2
  482. package/src/scripts/measure_density.ts +2 -2
  483. package/src/scripts/measure_frugality_savings.ts +3 -3
  484. package/src/scripts/measure_markitdown_lift.ts +1 -1
  485. package/src/scripts/measure_patterns.ts +1 -1
  486. package/src/scripts/measure_projection_bytes.ts +1 -1
  487. package/src/scripts/measure_rule_budget.ts +1 -1
  488. package/src/scripts/measure_skill_reduction.ts +1 -1
  489. package/src/scripts/memory_hash.ts +1 -1
  490. package/src/scripts/memory_lookup.ts +6 -6
  491. package/src/scripts/memory_report.ts +1 -1
  492. package/src/scripts/memory_signal.ts +1 -1
  493. package/src/scripts/memory_status.ts +2 -2
  494. package/src/scripts/migrate_command_suggestions.ts +1 -1
  495. package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
  496. package/src/scripts/mine_session.ts +3 -3
  497. package/src/scripts/minimal_safe_diff_hook.ts +2 -2
  498. package/src/scripts/move_artefact.ts +3 -3
  499. package/src/scripts/new_skill.ts +3 -3
  500. package/src/scripts/onboarding_gate_hook.ts +2 -2
  501. package/src/scripts/pack_mcp_content.ts +1 -1
  502. package/src/scripts/parity/replay.ts +3 -2
  503. package/src/scripts/pattern_share.ts +2 -2
  504. package/src/scripts/plan_physical_move.ts +3 -3
  505. package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
  506. package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
  507. package/src/scripts/prediction-pool/score_ev.ts +2 -2
  508. package/src/scripts/print_required_checks.ts +2 -2
  509. package/src/scripts/probe_projection_fidelity.ts +2 -2
  510. package/src/scripts/probe_skill_registration.ts +2 -2
  511. package/src/scripts/profile_staleness_hook.ts +2 -2
  512. package/src/scripts/profile_use.ts +2 -2
  513. package/src/scripts/project_thin_rules.ts +3 -3
  514. package/src/scripts/propose_modules_config.ts +2 -2
  515. package/src/scripts/prototype_lint_contradictions.ts +2 -2
  516. package/src/scripts/prove_pack_extractable.ts +1 -1
  517. package/src/scripts/readme_linter.ts +4 -4
  518. package/src/scripts/redact_hook_capture.ts +2 -2
  519. package/src/scripts/refine_ticket_detect.ts +1 -1
  520. package/src/scripts/release.ts +30 -19
  521. package/src/scripts/render_benchmark_md.ts +2 -2
  522. package/src/scripts/render_value_md.ts +2 -2
  523. package/src/scripts/roadmap_progress_hook.ts +1 -1
  524. package/src/scripts/router_telemetry.ts +1 -1
  525. package/src/scripts/run_skill_evals.ts +2 -2
  526. package/src/scripts/runtime_dispatcher.ts +1 -1
  527. package/src/scripts/runtime_handler.ts +1 -1
  528. package/src/scripts/runtime_registry.ts +3 -3
  529. package/src/scripts/score_skill_selection.ts +1 -1
  530. package/src/scripts/security_audit_config.ts +2 -2
  531. package/src/scripts/skill_collision_clusters.ts +1 -1
  532. package/src/scripts/skill_discovery.ts +1 -1
  533. package/src/scripts/skill_linter.ts +8 -7
  534. package/src/scripts/skill_overlap.ts +2 -2
  535. package/src/scripts/skill_preview.ts +1 -1
  536. package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
  537. package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
  538. package/src/scripts/skill_tools/index.ts +1 -1
  539. package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
  540. package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
  541. package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
  542. package/src/scripts/skill_trigger_eval.ts +2 -2
  543. package/src/scripts/skill_usage_collect.ts +2 -2
  544. package/src/scripts/skill_usage_report.ts +2 -2
  545. package/src/scripts/smoke_path_resolution.ts +2 -2
  546. package/src/scripts/smoke_quickstart.ts +4 -4
  547. package/src/scripts/snapshot_agent_outputs.ts +2 -2
  548. package/src/scripts/spotcheck_thin_root.ts +2 -2
  549. package/src/scripts/surface-tiers.yml +1 -0
  550. package/src/scripts/sync_agent_settings.ts +2 -2
  551. package/src/scripts/sync_github_metadata.ts +4 -4
  552. package/src/scripts/sync_gitignore.ts +3 -3
  553. package/src/scripts/sync_yaml_rt.ts +2 -2
  554. package/src/scripts/telegraph_stats.ts +1 -1
  555. package/src/scripts/tool_registry.ts +2 -2
  556. package/src/scripts/tools/adapter_errors.ts +1 -1
  557. package/src/scripts/tools/base_adapter.ts +1 -1
  558. package/src/scripts/tools/github_adapter.ts +1 -1
  559. package/src/scripts/tools/jira_adapter.ts +1 -1
  560. package/src/scripts/trigger_coverage.ts +2 -2
  561. package/src/scripts/update_counts.ts +68 -6
  562. package/src/scripts/update_prices.ts +3 -3
  563. package/src/scripts/validate_agent_settings.ts +3 -3
  564. package/src/scripts/validate_decision_engine.ts +2 -2
  565. package/src/scripts/validate_discovery_manifest.ts +3 -3
  566. package/src/scripts/validate_frontmatter.ts +5 -5
  567. package/src/scripts/validate_pack_yaml.ts +0 -0
  568. package/src/scripts/validate_safe_paths.ts +2 -2
  569. package/src/scripts/validate_telegraph_carveouts.ts +3 -3
  570. package/src/scripts/verify_before_complete_hook.ts +2 -2
  571. package/src/scripts/verify_physical_move.ts +2 -2
  572. package/src/scripts/wrapper_freshness_hook.ts +3 -3
  573. package/src/server/schemas/settings.ts +426 -0
  574. package/src/shared/settingsSurface.ts +184 -0
  575. package/src/shared/userMd/formAdapter.ts +86 -0
  576. package/src/shared/userMd/schema.ts +59 -0
  577. package/src/shared/userMd/utils.ts +91 -0
  578. package/dist/agent-src/commands/optimize-project.md +0 -243
  579. package/dist/ui/assets/index-BbWWuFrF.css +0 -1
  580. package/dist/ui/assets/index-UjcTG_9O.js +0 -40
  581. package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
@@ -117,6 +117,9 @@ _Auto-generated by `scripts/adr/regenerate_index.py`. Do not edit._
117
117
  | [ADR-111](ADR-111-canonical-glama-listing.md) | Canonical Glama Listing | accepted | 2026-07-07 | — |
118
118
  | [ADR-112](ADR-112-stdio-lite-stays-read-only.md) | Stdio Lite Stays Read Only | accepted | 2026-07-07 | — |
119
119
  | [ADR-113](ADR-113-ci-native-release-label-trigger.md) | Ci Native Release Label Trigger | accepted | 2026-07-08 | — |
120
+ | [ADR-114](ADR-114-commit-policy-iron-law-override.md) | Commit Policy Iron Law Override | — | — | — |
121
+ | [ADR-115](ADR-115-command-cluster-consolidation-phase-4.md) | Command Cluster Consolidation Phase 4 | accepted | 2026-07-08 | — |
122
+ | [ADR-116](ADR-116-memory-tripwire-activation-path.md) | Memory Tripwire Activation Path | accepted | 2026-07-08 | — |
120
123
  | [ADR-200](ADR-200-python-to-typescript-migration.md) | Python To Typescript Migration | accepted | 2026-06-11 | — |
121
124
 
122
125
  ## Unnumbered (legacy)
@@ -11,7 +11,7 @@ A curated subset of the 124 active commands. Full set lives in
11
11
  | [`/implement-ticket`](../dist/agent-src/commands/implement-ticket.md) | Drive a Jira / Linear ticket end-to-end through refine → plan → implement → test → verify |
12
12
  | [`/work`](../dist/agent-src/commands/work.md) | Same end-to-end loop for a free-form prompt — confidence-band gated |
13
13
  | [`/fix ci`](../dist/agent-src/commands/fix.md) | Fetch CI failures from GitHub Actions and fix them |
14
- | [`/review-changes`](../dist/agent-src/commands/review-changes.md) | Self-review local changes before creating a PR (five judges) |
14
+ | [`/review-changes`](../dist/agent-src/commands/review/changes.md) | Self-review local changes before creating a PR (five judges) |
15
15
  | [`/pr:create`](../dist/agent-src/commands/pr/create.md) | Create a GitHub PR with Jira-linked description |
16
16
 
17
17
  ## For everyone
@@ -1,6 +1,6 @@
1
1
  # Featured Skills
2
2
 
3
- A curated subset of the ~218 active skills. Three tiers, one per primary audience. Full catalog lives in [`dist/agent-src/skills/`](../dist/agent-src/skills/); see also [`docs/catalog.md`](catalog.md) for the complete index and [`docs/featured-commands.md`](featured-commands.md) for command-level highlights.
3
+ A curated subset of the 264 skills. Three tiers, one per primary audience. Full catalog lives in [`dist/agent-src/skills/`](../dist/agent-src/skills/); see also [`docs/catalog.md`](catalog.md) for the complete index and [`docs/featured-commands.md`](featured-commands.md) for command-level highlights.
4
4
 
5
5
  > **Eval-gated messaging note.** Until `task bench --corpus non-dev` reports `selection_accuracy >= 0.60` (see `road-to-product-adoption.md` Phase 1), this page is documentation, not marketing. The entries below are the candidates the corpus tests against; their description quality is what the eval validates.
6
6
 
@@ -20,7 +20,7 @@ Each row links to the canonical artefact under `dist/agent-src/`. Substitutions
20
20
  | [`/refine-prompt`](../dist/agent-src/skills/refine-prompt/SKILL.md) | Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans |
21
21
  | [`/work`](../dist/agent-src/commands/work.md) | Drive a free-form prompt end-to-end through refine → score → plan → implement → test → verify → report |
22
22
  | [`/grill-me`](../dist/agent-src/commands/grill-me.md) | Interactive grill-style interview that sharpens a fuzzy plan / idea into a copyable Markdown pitch |
23
- | [`/optimize-prompt`](../dist/agent-src/commands/optimize-prompt.md) | Optimize a raw prompt for ChatGPT / Claude / Gemini via the 4-D methodology |
23
+ | [`/optimize-prompt`](../dist/agent-src/commands/optimize/prompt.md) | Optimize a raw prompt for ChatGPT / Claude / Gemini via the 4-D methodology |
24
24
  | [`decision-record`](../dist/agent-src/skills/decision-record/SKILL.md) | Lock a trade-off — options · trade-offs · consequences — before the ADR file is written |
25
25
  | [`fundraising-narrative`](../dist/agent-src/skills/fundraising-narrative/SKILL.md) | Why-now / why-us / why-this framing, market-size reasoning, traction-story construction |
26
26
  | [`okr-tree-modeling`](../dist/agent-src/skills/okr-tree-modeling/SKILL.md) | Decompose a company objective into team OKRs; audit a draft tree for measurability and laddering |
@@ -67,7 +67,7 @@ Each row links to the canonical artefact under `dist/agent-src/`. Substitutions
67
67
  |---|---|
68
68
  | [`/work`](../dist/agent-src/commands/work.md) | Free-form prompt end-to-end loop — refine → plan → implement → test → verify, confidence-band gated |
69
69
  | [`/implement-ticket`](../dist/agent-src/commands/implement-ticket.md) | Drive a Jira / Linear ticket end-to-end — same loop, ticket-anchored |
70
- | [`/review-changes`](../dist/agent-src/commands/review-changes.md) | Self-review local changes before creating a PR — dispatches to five specialized judges and consolidates verdicts |
70
+ | [`/review-changes`](../dist/agent-src/commands/review/changes.md) | Self-review local changes before creating a PR — dispatches to five specialized judges and consolidates verdicts |
71
71
  | [`/commit`](../dist/agent-src/commands/commit.md) | Stage and commit all uncommitted changes — splits into logical commits following Conventional Commits |
72
72
  | [`judge-bug-hunter`](../dist/agent-src/skills/judge-bug-hunter/SKILL.md) | Correctness review — null-safety, edge cases, off-by-one, races, error handling |
73
73
  | [`judge-code-quality`](../dist/agent-src/skills/judge-code-quality/SKILL.md) | Readability review — naming, single-responsibility, DRY, dead code, codebase-convention drift |
@@ -92,4 +92,4 @@ task lint-featured-skills
92
92
 
93
93
  CI runs this in `taskfiles/ci-fast.yml`. Stale entries (renamed / removed skill or command) fail the build. See [`scripts/lint_featured_skills.py`](../src/scripts/lint_featured_skills.py) for the matcher.
94
94
 
95
- → Browse all ~218 active skills: [`dist/agent-src/skills/`](../dist/agent-src/skills/) · all ~129 commands: [`dist/agent-src/commands/`](../dist/agent-src/commands/)
95
+ → Browse all 264 skills: [`dist/agent-src/skills/`](../dist/agent-src/skills/) · all 172 commands: [`dist/agent-src/commands/`](../dist/agent-src/commands/)
package/docs/flows.md CHANGED
@@ -32,7 +32,7 @@ Explore, plan, estimate, refine, and investigate **before** building.
32
32
  Drive a prompt, ticket, or feature end-to-end through plan → implement → verify.
33
33
 
34
34
  - **Entry commands:** `/work` · `/implement-ticket` · `/feature:dev` · `/bug-fix`
35
- - **Canonical path:** `/work` → `/review-changes` → `/quality-fix` → `/commit`
35
+ - **Canonical path:** `/work` → `/review changes` → `/fix quality` → `/commit`
36
36
  - **Skills:** `test-driven-development` · `code-review` · `systematic-debugging` · `git-workflow`
37
37
 
38
38
  ## 🔎 Review — *check it*
@@ -40,7 +40,7 @@ Drive a prompt, ticket, or feature end-to-end through plan → implement → ver
40
40
  Self-review, judge, quality-fix, and threat-model a change before it ships.
41
41
 
42
42
  - **Entry commands:** `/review-changes` · `/judge`
43
- - **Canonical path:** `/review-changes` → `/judge` → `/quality-fix` → `/threat-model`
43
+ - **Canonical path:** `/review changes` → `/judge` → `/fix quality` → `/threat-model`
44
44
  - **Skills:** `code-review` · `adversarial-review` · `quality-tools` · `threat-modeling` · `receiving-code-review`
45
45
 
46
46
  ## 🚢 Delivery — *ship it*
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Pick the entry that matches what you do day-to-day. Each section names the three skills you will reach for first and shows whether MCP (no terminal) or CLI (terminal) is the simpler install path for that role.
4
4
 
5
- `agent-config` ships ~210 skills, ~67 rules, and ~124 commands. You do not need all of them. Each role below filters to the slice that pays back in week one; the rest stays available and shows up on demand when a task references it.
5
+ `agent-config` ships 264 skills, 95 governed rules, and 172 commands. You do not need all of them. Each role below filters to the slice that pays back in week one; the rest stays available and shows up on demand when a task references it.
6
6
 
7
7
  > **Taglines at a glance →** [`docs/role-experiences.md`](role-experiences.md) — the one-line pitch per role experience, in one table.
8
8
 
@@ -30,7 +30,7 @@ The Laravel quality pipeline runs PHPStan + Rector + ECS, with Pest as the test
30
30
 
31
31
  - [`quality-tools`](../dist/agent-src/skills/quality-tools/SKILL.md) — PHPStan output triage, Rector apply, ECS fix.
32
32
  - [`pest-testing`](../dist/agent-src/skills/pest-testing/SKILL.md) — Pest test authoring patterns.
33
- - [`/quality-fix`](../dist/agent-src/commands/quality-fix.md) — runs the full pipeline and fixes reported errors.
33
+ - [`/fix quality`](../dist/agent-src/commands/fix/quality.md) — runs the full pipeline and fixes reported errors.
34
34
 
35
35
  ## Docker and dev environment
36
36
 
@@ -39,8 +39,11 @@ project sees the new skills, rules, and hooks at once, no per-repo bump:
39
39
  ```bash
40
40
  agent-config upgrade # fetch + install the latest globally (content + hooks)
41
41
  agent-config refresh --global # idempotent re-install, same version
42
- agent-config refresh --project # refresh a project's minimal surface — bridge
42
+ agent-config init --project # initialize a project's minimal surface — bridge
43
43
  # marker, agents/overrides/, .gitignore (no wizard)
44
+ agent-config refresh --project # refresh that surface (same writer, idempotent)
45
+ agent-config config # open the configuration GUI (global settings hub)
46
+ agent-config config --project # open the project configuration surface
44
47
  agent-config doctor # PATH, hook wiring, duplicate surfaces, bridge presence
45
48
  ```
46
49
 
@@ -168,10 +171,10 @@ Your agent now understands slash commands:
168
171
  | `/fix ci` | Fetch and fix GitHub Actions failures |
169
172
  | `/optimize skills` | Audit skills, find duplicates, run linter |
170
173
  | `/feature plan` | Interactively plan a feature |
171
- | `/quality-fix` | Run and fix all quality checks |
174
+ | `/fix quality` | Run and fix all quality checks |
172
175
  | `/chat-history import` | Pull a prior session into the current chat (resume) |
173
176
 
174
- → [Browse all 166 active commands](../dist/agent-src/commands/)
177
+ → [Browse all 172 active commands](../dist/agent-src/commands/)
175
178
 
176
179
  ---
177
180
 
@@ -33,7 +33,7 @@ the host lacks (a static host gives it no runtime attention guarantee, but a
33
33
  runtime-only system gives it nothing at all here). A runtime-only system contributes *nothing* on these hosts.
34
34
 
35
35
  ### 2. Intent routing, not a 500-artefact dump
36
- A prompt does not load all 258 skills. `dist/router.json` (88 rules, intent →
36
+ A prompt does not load all 264 skills. `dist/router.json` (91 routed rules, intent →
37
37
  skill, keyword/phrase/path triggers) carries the right skill on intent. The
38
38
  governance value is *selection discipline* — the host gets the relevant rule
39
39
  set, not the whole catalogue as context ballast.
@@ -10,7 +10,7 @@ the **Reference-Guideline Sunset Policy** (see frontmatter `upstream` /
10
10
  — L1 Quick analysis depth.
11
11
  - [`refine-ticket`](../../../.agent-src.uncondensed/skills/refine-ticket/SKILL.md)
12
12
  — completeness check on a Jira / Linear ticket before estimation.
13
- - [`bug-investigate`](../../../.agent-src.uncondensed/commands/bug-investigate.md)
13
+ - [`bug-investigate`](../../../.agent-src.uncondensed/commands/bug/investigate.md)
14
14
  — gap analysis on an incident report before forming a hypothesis.
15
15
 
16
16
  > **Core principle:** "Quality of decisions equals quality of questions
@@ -11,7 +11,7 @@
11
11
  capture, multi-device test sweeps.
12
12
  - Intended companions: `react-native-setup` skill (environment),
13
13
  `mobile-e2e-strategy` skill (framework selection), `playwright-testing`
14
- / `e2e-plan` skills (cross-platform E2E strategy).
14
+ / `/tests e2e-plan` command (cross-platform E2E strategy).
15
15
  - **macOS-only:** Xcode + simctl + (optional) idb require a macOS host.
16
16
  On Linux/Windows this guideline is reference-only — no implementation
17
17
  recipes are portable.
package/docs/proof.md CHANGED
@@ -26,14 +26,24 @@ evidence pointer, or `task check-claims` fails the build.
26
26
 
27
27
  | Claim | Kind | Evidence | Resolves |
28
28
  |---|---|---|---|
29
+ | 172 commands. | quant | `src/scripts/check_artefact_count_messaging.ts#Artefact-count messaging gate` | ✅ |
29
30
  | On a weak host (claude-haiku-4-5) the package produces a significant, placebo-controlled discipline lift on scope/downstream traps; on a strong host the same measurement is a published null — the package transplants discipline a weak model lacks, not model intelligence. | quant | `docs/benchmark.md#weak-host-specific` | ✅ |
31
+ | On the READ-ONLY FAN-OUT slice family, tier-downshifted subagent dispatch (lite/haiku vs session-tier-proxy sonnet) nets a ≥30% USD-weighted token-cost reduction at held quality — measured 2026-07-08 (n=10 paired live dispatches, 20 telemetry lines): 10/10 exact-match on BOTH arms, 29.4% fewer raw tokens, 76.5% USD-weighted cost reduction at the 3x haiku↔sonnet price ratio. FAMILY-SCOPED — the mechanical-edit family is unmeasured and its downshift (incl. the deferred tier downgrades of existing units) stays gated. Negative control held: an open-ended synthesis/unknown slice never resolves below the session tier (inferSliceTier → medium/inherit, never lite). | quant | `internal/bench/routing-downshift/results-2026-07-08.md#FAMILY-SCOPED PROVE` | ✅ |
30
32
  | The lift-carrying essential cut (kernel + downstream-changes) keeps a significant weak-host discipline lift at a fraction of the full load's tokens, and the lift is FAMILY- and HOST-SCOPED — measured on three hosts: claude-haiku-4-5 (weak) shows the family-scoped lift (trapE 0.533→1.000, 7/7 discordant, corpus cost 1.71x); claude-sonnet-4-6 (strong) is a ceiling null; gpt-5-mini (non-Claude weak, codex prompt-prepend surface) FAILED replication with headroom (corpus Δ=+0.024 p=0.70, capability trend n.s. — no harm claimed, injection-surface confound documented). Therefore discipline_profile: auto enables the lift only where measured (vendor-granular unknown_defaults). Non-claims — the balanced router profile was removed after a NULL measurement (p=0.81, n=24); no full-tier recommendation exists; no cross-vendor lift is claimed. | quant | `docs/benchmark.md#REPLICATION FAILED` | ✅ |
31
33
  | The whole layer is compiled into host agents with zero runtime daemon. | qual | `docs/contracts/no-runtime-boundary.md#file-first, no-runtime suite` | ✅ |
34
+ | 95 governed rules. | quant | `src/scripts/check_artefact_count_messaging.ts#Artefact-count messaging gate` | ✅ |
35
+ | 264 skills (README hero + feature list). | quant | `src/scripts/check_artefact_count_messaging.ts#Artefact-count messaging gate` | ✅ |
32
36
  | Removes only its own keys from a shared host config (matched by JSON-pointer + SHA-256), never a neighbour tool's entries. | qual | `docs/contracts/install-layout.md#JSON-pointer` | ✅ |
33
37
 
34
- **4 backed claim(s)** — all evidence pointers resolve in CI.
38
+ **8 backed claim(s)** — all evidence pointers resolve in CI.
35
39
 
36
- We also publish our **debt**: 4 claim(s) are logged as
40
+ Artefact counts in public prose (skills, commands, governed rules,
41
+ guidelines, personas) are **generated from source and CI-drift-checked**:
42
+ `update_counts.ts` writes the numbers, `check_artefact_count_messaging.ts`
43
+ fails the build on any count-shaped prose mention that drifts from the
44
+ source count — or on two different numbers for the same artefact kind.
45
+
46
+ We also publish our **debt**: 1 claim(s) are logged as
37
47
  `unbacked` inventory in the ledger — not yet bound, and therefore not
38
48
  allowed to carry a marker in public prose. Hiding them would be the
39
49
  opposite of the point.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event4u/agent-config",
3
- "version": "8.4.1",
3
+ "version": "8.6.0",
4
4
  "description": "Universal AI Agent OS — audited skills, governance rules, commands, and templates for AI coding tools (Claude Code, Cursor, Windsurf, Copilot).",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -38,6 +38,8 @@
38
38
  "dist/",
39
39
  "docs/",
40
40
  "src/scripts/",
41
+ "src/server/schemas/",
42
+ "src/shared/",
41
43
  "src/install/",
42
44
  "src/agent-src/scripts/",
43
45
  "src/agent-src/templates/scripts/",
@@ -42,7 +42,7 @@ For full details see [augment-infrastructure.md](contexts/augment-infrastructure
42
42
  |---|---|
43
43
  | `/agent-handoff` | Generate context summary for a fresh chat |
44
44
  | `/fix-pr-comments` | Fix all open PR review comments |
45
- | `/quality-fix` | Run PHPStan + Rector and fix errors |
45
+ | `/fix quality` | Run PHPStan + Rector and fix errors |
46
46
  | `/create-pr` | Create a GitHub PR with description |
47
47
  | `/bug-investigate` | Investigate a bug from Jira/Sentry |
48
48
  | `/tests-create` | Write tests for current changes |
@@ -11,7 +11,7 @@
11
11
  * runner and quality tools does this stack actually use, and what is the
12
12
  * exact command to invoke them?* It is the engine behind 6.1.0 Step 6 — the
13
13
  * toolchain resolver that lets one set of commands (`/tests execute`,
14
- * `/tests create`, `/quality-fix`, `/review-changes`, `/work`) adapt to
14
+ * `/tests create`, `/fix quality`, `/review changes`, `/work`) adapt to
15
15
  * phpunit / pest / vitest / jest / playwright / pytest / go / cargo instead
16
16
  * of exploding into per-stack command variants.
17
17
  *
@@ -460,7 +460,7 @@ quality:
460
460
  # tokens. The user runs quality tools manually; remote CI is
461
461
  # the authoritative gate. The agent runs a quality tool ONLY
462
462
  # when one of three triggers fires:
463
- # 1. the user explicitly asks this turn (e.g. /quality-fix),
463
+ # 1. the user explicitly asks this turn (e.g. /fix quality),
464
464
  # 2. CI / the remote pipeline reports a concrete failure —
465
465
  # then run exactly that failing check to reproduce + fix,
466
466
  # 3. the new-gate carve-out below.
@@ -1,14 +1,20 @@
1
1
  /**
2
- * Persisted record of the AI tools the user actually selected in the wizard,
3
- * at `~/.event4u/agent-config/wizard-tools.json`. This is the user's prior
4
- * *selection* — distinct from `installed.lock` (every tool agent-config was
5
- * deployed to, which for an `--tools=all` install is the full set) and from
6
- * machine tool *detection*.
2
+ * Persisted record of the AI tools AND capability packs the user actually
3
+ * selected in the wizard, at `~/.event4u/agent-config/wizard-tools.json`.
4
+ * This is the user's prior *selection* — distinct from `installed.lock`
5
+ * (every tool agent-config was deployed to, which for an `--tools=all`
6
+ * install is the full set) and from machine tool *detection*.
7
7
  *
8
8
  * Written by the apply route on a real (non-dry-run) wizard-v2 apply, and
9
- * read by `detect-tools` so Step 1 pre-selects exactly the prior selection on
10
- * a repeat run. Empty / missing → first run → Step 1 falls back to
11
- * pre-selecting every installed tool.
9
+ * read by `detect-tools` / the manifest endpoint so a repeat run pre-selects
10
+ * exactly the prior selection. Empty / missing → first run → Step 1 falls
11
+ * back to pre-selecting every installed tool.
12
+ *
13
+ * `packs` was added by road-to-setup-experience (council 2026-07-08,
14
+ * lockfile-extension over settings-YAML surgery): the `packs:` list in
15
+ * `.agent-settings.yml` is only rendered into FRESH settings files, so on
16
+ * machines with an existing file the selection was never persisted anywhere
17
+ * — the wizard forgot installed packs between runs.
12
18
  *
13
19
  * `AGENT_CONFIG_WIZARD_TOOLS` overrides the path (tests only).
14
20
  */
@@ -23,17 +29,39 @@ function selectedToolsPath(): string {
23
29
  return resolve(homedir(), '.event4u', 'agent-config', 'wizard-tools.json');
24
30
  }
25
31
 
26
- export function writeSelectedTools(tools: string[]): void {
32
+ export function writeSelectedTools(tools: string[], packs?: string[]): void {
27
33
  try {
28
34
  const path = selectedToolsPath();
29
35
  mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
30
- writeFileSync(path, `${JSON.stringify({ tools }, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
36
+ // Preserve a previously recorded packs list when the caller does not
37
+ // pass one (older call sites) — never silently drop the selection.
38
+ const record: { tools: string[]; packs?: string[] } = { tools };
39
+ const packsToWrite = packs ?? readSelectedPacks();
40
+ if (packsToWrite.length > 0 || packs !== undefined) record.packs = packsToWrite;
41
+ writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
31
42
  } catch {
32
43
  // Best-effort: a failed write just means the next run falls back to
33
44
  // pre-selecting installed tools.
34
45
  }
35
46
  }
36
47
 
48
+ /**
49
+ * Return the recorded pack selection, or `[]` when absent / unreadable.
50
+ * Optionally intersect with the known-pack set so a stale id never surfaces.
51
+ */
52
+ export function readSelectedPacks(knownIds?: ReadonlySet<string>): string[] {
53
+ try {
54
+ const raw = readFileSync(selectedToolsPath(), 'utf8');
55
+ const parsed = JSON.parse(raw) as { packs?: unknown };
56
+ const packs = Array.isArray(parsed.packs)
57
+ ? parsed.packs.filter((p): p is string => typeof p === 'string')
58
+ : [];
59
+ return knownIds === undefined ? packs : packs.filter((p) => knownIds.has(p));
60
+ } catch {
61
+ return [];
62
+ }
63
+ }
64
+
37
65
  /**
38
66
  * Return the recorded selection, or `[]` when absent / unreadable. Optionally
39
67
  * intersect with the known-tool set so a stale id never surfaces.
@@ -250,6 +250,37 @@ export interface MainOptions {
250
250
  err?: OutSink;
251
251
  }
252
252
 
253
+ /**
254
+ * Live-session notice for reaped Claude Code plugin caches — or null when no
255
+ * reap touched `~/.claude/plugins/`.
256
+ *
257
+ * Removing an installed plugin's cache does NOT reach into Claude Code
258
+ * sessions that are already running: they registered the plugin's hooks at
259
+ * session start and keep firing them, so every subsequent event logs
260
+ * `Failed to run: Plugin directory does not exist: …/plugins/cache/… — run
261
+ * /plugin to reinstall` until the session restarts. Claude Code's own
262
+ * `/plugin to reinstall` hint would recreate exactly the duplicate surface
263
+ * converge just removed — the correct remedy is a restart, so converge says
264
+ * so explicitly (road-to-truth-and-reference-hygiene follow-up, 2026-07-08).
265
+ */
266
+ export function live_session_notice(executed_reaps: readonly string[]): string | null {
267
+ const hit = executed_reaps.some((r) => r.startsWith('~/.claude/plugins/'));
268
+ if (!hit) {
269
+ return null;
270
+ }
271
+ return (
272
+ '⚠️ Live-session note: Claude Code sessions that were ALREADY RUNNING still\n' +
273
+ ' hold the removed plugin\'s hook registrations. Until you restart them,\n' +
274
+ ' every event logs a non-blocking\n' +
275
+ ' "Failed to run: Plugin directory does not exist: …/plugins/cache/…"\n' +
276
+ ' error. This is cosmetic for new sessions but means the affected LIVE\n' +
277
+ ' session\'s plugin-sourced hooks no longer run — restart Claude Code\n' +
278
+ ' sessions to clear it. Do NOT follow the error\'s "/plugin to reinstall"\n' +
279
+ ' hint: reinstalling recreates the duplicate surface converge just removed\n' +
280
+ ' (the ~/.claude/ file projection already carries content AND hooks).'
281
+ );
282
+ }
283
+
253
284
  export function main(argv: string[] | null = null, opts: MainOptions = {}): number {
254
285
  let args: Args;
255
286
  try {
@@ -329,6 +360,7 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
329
360
  // Perform the cleanup — matrix-declared actions ONLY.
330
361
  let failures = 0;
331
362
  const report: string[] = [];
363
+ const executed_reaps: string[] = [];
332
364
  for (const f of findings) {
333
365
  if (f.command) {
334
366
  _print(out, `→ ${f.command}`);
@@ -351,6 +383,7 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
351
383
  try {
352
384
  fs.rmSync(abs, { recursive: true, force: true });
353
385
  report.push(`${f.tool}: reaped package-tagged orphan \`${reap}\``);
386
+ executed_reaps.push(reap);
354
387
  _print(out, `→ reaped ${reap}`);
355
388
  } catch (e) {
356
389
  failures += 1;
@@ -367,6 +400,11 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
367
400
  if (report.length === 0) {
368
401
  _print(out, ' (no actions completed)');
369
402
  }
403
+ const notice = live_session_notice(executed_reaps);
404
+ if (notice !== null) {
405
+ _print(out);
406
+ _print(out, notice);
407
+ }
370
408
  _print(
371
409
  out,
372
410
  'Rollback hint: a removed Claude Code plugin can be reinstalled with\n' +
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * `agent-config doctor` — install + manifest health report (TypeScript twin).
4
4
  *
5
- * TypeScript twin of `src/scripts/_cli/cmd_doctor.py` (ADR-200, py2ts
6
- * migration). The CLI contract mirrors the Python original EXACTLY — same
5
+ * Ported from the retired Python `src/scripts/_cli/cmd_doctor.py` (ADR-200, py2ts
6
+ * migration). The CLI contract pins the historical contract exactly — same
7
7
  * flags, same exit codes, same stdout/stderr split, byte-identical emitted
8
8
  * report lines (✅/❌/⚠️/⏭️ glyphs, ordering, fix hints), same filesystem
9
9
  * semantics. No behaviour changes — latent quirks are replicated, not fixed.
@@ -731,6 +731,7 @@ const CHECK_IDS = [
731
731
  'scope',
732
732
  'global-binary',
733
733
  'claude-plugin',
734
+ 'claude-command-wrappers',
734
735
  'surface-state',
735
736
  'hook-wiring',
736
737
  'stale-orphans',
@@ -745,6 +746,7 @@ const CHECK_IDS = [
745
746
  'council-cli',
746
747
  'unsupported-combos',
747
748
  'wizard-state',
749
+ 'settings-review-pending',
748
750
  ] as const;
749
751
 
750
752
  /** Checks that need only the project root and run regardless of a lockfile. */
@@ -752,6 +754,7 @@ const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
752
754
  'scope',
753
755
  'global-binary',
754
756
  'claude-plugin',
757
+ 'claude-command-wrappers',
755
758
  'surface-state',
756
759
  'hook-wiring',
757
760
  'stale-orphans',
@@ -762,6 +765,7 @@ const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
762
765
  'tier-usage-readiness',
763
766
  'council-cli',
764
767
  'wizard-state',
768
+ 'settings-review-pending',
765
769
  ]);
766
770
 
767
771
  /** Checks that genuinely cannot run without the project manifest. */
@@ -1077,6 +1081,69 @@ function _check_claude_plugin(): Dict {
1077
1081
  };
1078
1082
  }
1079
1083
 
1084
+ /**
1085
+ * Claude Code flat-command discovery mitigation (council 2026-07-08,
1086
+ * cc-user-command-discovery): Claude Code ≤ 2.1.204 does not register FLAT
1087
+ * user-scope command files (`~/.claude/commands/<name>.md`) — nested
1088
+ * commands and user-scope skills do. The installer therefore projects
1089
+ * tier-0/1 visible flat commands as skill wrappers. This check flags the
1090
+ * silent-failure state: a projection deployed by an OLDER release that
1091
+ * still carries visible flat commands without wrappers (users see
1092
+ * "Unknown command" for /commit etc. with zero error anywhere).
1093
+ * Probe = `commit` (the canonical always-shipped visible flat command);
1094
+ * static file checks only — never a live model call.
1095
+ */
1096
+ function _check_claude_command_wrappers(): Dict {
1097
+ const claude = shutilWhich('claude');
1098
+ if (claude === null) {
1099
+ return {
1100
+ id: 'claude-command-wrappers',
1101
+ status: 'skipped',
1102
+ message: 'Claude Code CLI not on PATH — wrapper check not applicable',
1103
+ remedy: '',
1104
+ };
1105
+ }
1106
+ const anchor = path.join(os.homedir(), '.claude');
1107
+ const commands_dir = path.join(anchor, 'commands');
1108
+ if (!isDir(commands_dir)) {
1109
+ return {
1110
+ id: 'claude-command-wrappers',
1111
+ status: 'skipped',
1112
+ message: 'no ~/.claude/commands projection — nothing to check',
1113
+ remedy: '',
1114
+ };
1115
+ }
1116
+ const flat_probe = fs.existsSync(path.join(commands_dir, 'commit.md'));
1117
+ const wrapper_probe = fs.existsSync(path.join(anchor, 'skills', 'commit', 'SKILL.md'));
1118
+ if (wrapper_probe) {
1119
+ return {
1120
+ id: 'claude-command-wrappers',
1121
+ status: 'ok',
1122
+ message:
1123
+ 'flat-command skill wrappers present (Claude Code flat-command ' +
1124
+ 'discovery workaround active)',
1125
+ remedy: '',
1126
+ };
1127
+ }
1128
+ if (flat_probe) {
1129
+ return {
1130
+ id: 'claude-command-wrappers',
1131
+ status: 'warn',
1132
+ message:
1133
+ 'visible flat commands deployed WITHOUT skill wrappers — Claude Code ' +
1134
+ '\u2264 2.1.204 does not register flat user-scope command files, so ' +
1135
+ '/commit and other visible commands appear as "Unknown command"',
1136
+ remedy: 'agent-config refresh --global (re-deploys with the wrapper projection)',
1137
+ };
1138
+ }
1139
+ return {
1140
+ id: 'claude-command-wrappers',
1141
+ status: 'skipped',
1142
+ message: 'no visible flat commands in the projection — nothing to wrap',
1143
+ remedy: '',
1144
+ };
1145
+ }
1146
+
1080
1147
  /**
1081
1148
  * Matrix-driven duplicate-surface check (road-to-install-path-convergence
1082
1149
  * Phase 2): reads src/config/surface-matrix.yml and flags every tool whose
@@ -1167,6 +1234,7 @@ function pathExistsAny(p: string): boolean {
1167
1234
  }
1168
1235
  }
1169
1236
 
1237
+
1170
1238
  /**
1171
1239
  * Managed hook wiring (single-surface model): the deterministic hook matrix
1172
1240
  * must be registered in ~/.claude/settings.json AND the dispatch target
@@ -1900,6 +1968,43 @@ function _check_wizard_state(): Dict {
1900
1968
  };
1901
1969
  }
1902
1970
 
1971
+ /**
1972
+ * Pending settings-surface review (road-to-settings-change-review): the
1973
+ * installer writes `state/settings-delta.json` when an upgrade changed
1974
+ * defaults / enum vocabularies / added settings. The flag persists until
1975
+ * the user resolves the review form (`agent-config config` → Settings →
1976
+ * banner) — this check keeps it visible in every doctor run.
1977
+ */
1978
+ function _check_settings_review_pending(): Dict {
1979
+ const delta_pth = path.join(user_global_paths.event4u_root(), 'state', 'settings-delta.json');
1980
+ if (!pathExists(delta_pth)) {
1981
+ return {
1982
+ id: 'settings-review-pending',
1983
+ status: 'ok',
1984
+ message: 'no pending settings-surface changes',
1985
+ remedy: '',
1986
+ };
1987
+ }
1988
+ let summary = '';
1989
+ try {
1990
+ const data = JSON.parse(readText0(delta_pth)) as {
1991
+ oldVersion?: string;
1992
+ newVersion?: string;
1993
+ changes?: unknown[];
1994
+ };
1995
+ const n = Array.isArray(data.changes) ? data.changes.length : 0;
1996
+ summary = `${n} change${n === 1 ? '' : 's'} (${data.oldVersion ?? '?'} → ${data.newVersion ?? '?'})`;
1997
+ } catch {
1998
+ summary = 'unreadable delta file';
1999
+ }
2000
+ return {
2001
+ id: 'settings-review-pending',
2002
+ status: 'warn',
2003
+ message: `settings surface changed on upgrade — ${summary} awaiting review`,
2004
+ remedy: 'agent-config config (Settings → “Review changes” banner)',
2005
+ };
2006
+ }
2007
+
1903
2008
  interface JsonDecodeError {
1904
2009
  msg: string;
1905
2010
  lineno: number;
@@ -2008,6 +2113,7 @@ function _run_checks(
2008
2113
  scope: () => _check_scope(project_root),
2009
2114
  'global-binary': () => _check_global_binary(project_root),
2010
2115
  'claude-plugin': _check_claude_plugin,
2116
+ 'claude-command-wrappers': _check_claude_command_wrappers,
2011
2117
  'surface-state': _check_surface_state,
2012
2118
  'hook-wiring': _check_hook_wiring,
2013
2119
  'stale-orphans': _check_stale_orphans,
@@ -2028,6 +2134,7 @@ function _run_checks(
2028
2134
  'council-cli': () => _check_council_cli(project_root),
2029
2135
  'unsupported-combos': () => _check_unsupported_combos(manifest),
2030
2136
  'wizard-state': _check_wizard_state,
2137
+ 'settings-review-pending': _check_settings_review_pending,
2031
2138
  };
2032
2139
  const out: Dict[] = [];
2033
2140
  for (const cid of CHECK_IDS) {
@@ -2082,6 +2189,7 @@ function _run_checks_no_manifest(
2082
2189
  scope: () => _check_scope(project_root),
2083
2190
  'global-binary': () => _check_global_binary(project_root),
2084
2191
  'claude-plugin': _check_claude_plugin,
2192
+ 'claude-command-wrappers': _check_claude_command_wrappers,
2085
2193
  'surface-state': _check_surface_state,
2086
2194
  'hook-wiring': _check_hook_wiring,
2087
2195
  'stale-orphans': _check_stale_orphans,
@@ -2096,6 +2204,7 @@ function _run_checks_no_manifest(
2096
2204
  'council-cli': () => _check_council_cli(project_root),
2097
2205
  'unsupported-combos': () => _skipped_manifest_check('unsupported-combos'),
2098
2206
  'wizard-state': _check_wizard_state,
2207
+ 'settings-review-pending': _check_settings_review_pending,
2099
2208
  };
2100
2209
  const out: Dict[] = [];
2101
2210
  for (const cid of CHECK_IDS) {
@@ -2572,6 +2681,7 @@ export {
2572
2681
  _check_lockfile_freshness,
2573
2682
  _check_global_binary,
2574
2683
  _check_claude_plugin,
2684
+ _check_claude_command_wrappers,
2575
2685
  _check_bridge_drift,
2576
2686
  _check_mcp_mode,
2577
2687
  _check_offline_readiness,
@@ -2582,6 +2692,7 @@ export {
2582
2692
  _check_council_cli,
2583
2693
  _check_unsupported_combos,
2584
2694
  _check_wizard_state,
2695
+ _check_settings_review_pending,
2585
2696
  _run_checks,
2586
2697
  _skipped_manifest_check,
2587
2698
  _check_bridge_drift_no_manifest,
@@ -3,8 +3,8 @@
3
3
  * `agent-config explain` — print the decision chain behind an outcome
4
4
  * (TypeScript twin).
5
5
  *
6
- * TypeScript twin of `src/scripts/_cli/cmd_explain.py` (ADR-200, py2ts
7
- * migration). The CLI contract mirrors the Python original EXACTLY — same
6
+ * Ported from the retired Python `src/scripts/_cli/cmd_explain.py` (ADR-200, py2ts
7
+ * migration). The CLI contract pins the historical contract exactly — same
8
8
  * flags, same exit codes, same stdout/stderr split, byte-identical emitted
9
9
  * output. No behaviour changes — latent quirks are replicated, not fixed.
10
10
  *
@@ -2,8 +2,8 @@
2
2
  * `agent-config export` — eject a tool's canonical content into the project
3
3
  * (TypeScript twin).
4
4
  *
5
- * TypeScript twin of `src/scripts/_cli/cmd_export.py` (ADR-200, py2ts
6
- * migration). The CLI contract mirrors the Python original EXACTLY — same
5
+ * Ported from the retired Python `src/scripts/_cli/cmd_export.py` (ADR-200, py2ts
6
+ * migration). The CLI contract pins the historical contract exactly — same
7
7
  * flags, same exit codes, same stdout/stderr split, byte-identical emitted
8
8
  * output, same filesystem effects. No behaviour changes; latent quirks are
9
9
  * replicated and flagged inline, not fixed.
@@ -19,7 +19,7 @@
19
19
  * and never calls `process.exit()`. argparse usage errors throw
20
20
  * `ArgparseExit(2)`; `-h`/`--help` throws `ArgparseExit(0)`.
21
21
  * - The 9 marker constants and templates resolve to the same byte content as
22
- * the Python originals: marker constants are re-exported from the
22
+ * the retired Python implementations: marker constants are re-exported from the
23
23
  * `install.ts` twin (single source of truth); templates are read from
24
24
  * `dist/agent-src/templates` via `_from_template` exactly as Python does.
25
25
  * - `hashlib.sha256(content.encode("utf-8")).hexdigest()` →
@@ -43,7 +43,19 @@ export interface FleetRepo {
43
43
  readonly tools?: string;
44
44
  }
45
45
 
46
- /** Parsed fleet config. */
46
+ /**
47
+ * Parsed fleet config.
48
+ *
49
+ * INPUT-SCHEMA STABILITY: **stable, v1** (marked 2026-07-08,
50
+ * road-to-truth-and-reference-hygiene P3 — the output report was versioned
51
+ * from day one via {@link FleetReport.schema_version}; the input contract
52
+ * deserves the same explicitness). The accepted `fleet.yaml` shape is
53
+ * `repos: [<path-string> | {path, tools?}]` + optional `max_concurrency`;
54
+ * unknown keys are IGNORED (tolerant reader — forward-compatible by
55
+ * construction). Additive optional keys bump nothing; a breaking key
56
+ * rename/removal or semantics change requires an explicit `schema_version`
57
+ * field in the input and a reader that accepts the versionless v1 form.
58
+ */
47
59
  export interface FleetSpec {
48
60
  readonly repos: readonly FleetRepo[];
49
61
  readonly maxConcurrency: number;