@event4u/agent-config 9.8.0 → 9.9.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 (817) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +278 -298
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +55 -9
  6. package/dist/agent-src/commands/agents/audit.md +1 -1
  7. package/dist/agent-src/commands/agents/optimize.md +2 -2
  8. package/dist/agent-src/commands/agents/user.md +1 -1
  9. package/dist/agent-src/commands/agents.md +1 -1
  10. package/dist/agent-src/commands/check-current-md.md +3 -3
  11. package/dist/agent-src/commands/fix/portability.md +2 -2
  12. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  13. package/dist/agent-src/commands/fix/refs.md +2 -2
  14. package/dist/agent-src/commands/fix/route.md +4 -3
  15. package/dist/agent-src/commands/fix.md +9 -6
  16. package/dist/agent-src/commands/ghostwriter.md +1 -1
  17. package/dist/agent-src/commands/image.md +1 -1
  18. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  19. package/dist/agent-src/commands/optimize/skills.md +2 -2
  20. package/dist/agent-src/commands/post-as.md +1 -1
  21. package/dist/agent-src/commands/research.md +1 -1
  22. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  23. package/dist/agent-src/commands/security-audit-config.md +1 -1
  24. package/dist/agent-src/commands/team/delegate.md +4 -0
  25. package/dist/agent-src/commands/video.md +1 -1
  26. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  27. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  28. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
  29. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
  30. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  31. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  32. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  33. package/dist/agent-src/rules/code-provenance.md +112 -0
  34. package/dist/agent-src/rules/external-code-graph-interop.md +4 -4
  35. package/dist/agent-src/rules/history-discipline.md +80 -0
  36. package/dist/agent-src/rules/no-roadmap-references.md +1 -1
  37. package/dist/agent-src/rules/php-coding.md +1 -0
  38. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  39. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  40. package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
  41. package/dist/agent-src/rules/scale-discipline.md +92 -0
  42. package/dist/agent-src/rules/security-sensitive-stop.md +10 -0
  43. package/dist/agent-src/rules/session-canary.md +77 -0
  44. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  45. package/dist/agent-src/rules/tool-safety.md +3 -1
  46. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  47. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  48. package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -14
  49. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  50. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  51. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  52. package/dist/agent-src/skills/design-review/SKILL.md +5 -6
  53. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  54. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  55. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  56. package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
  57. package/dist/agent-src/skills/image-editing/SKILL.md +1 -1
  58. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  59. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  60. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  61. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  62. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  63. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  64. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  65. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  66. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  67. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  68. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  69. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
  70. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  71. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  72. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
  73. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
  74. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
  75. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
  76. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  77. package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
  78. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  79. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  80. package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
  81. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  82. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
  83. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
  84. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  85. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  86. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
  87. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
  88. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  89. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
  90. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  91. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
  92. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
  93. package/dist/agent-src/templates/AGENTS.md +1 -1
  94. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  95. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  96. package/dist/agent-src/templates/command.md +3 -3
  97. package/dist/agent-src/templates/persona.md +2 -2
  98. package/dist/agent-src/templates/rule.md +2 -2
  99. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  100. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  101. package/dist/cli/commands/doctorShell.js +20 -0
  102. package/dist/cli/commands/doctorShell.js.map +1 -1
  103. package/dist/cli/commands/rtkDetect.js +58 -0
  104. package/dist/cli/commands/rtkDetect.js.map +1 -0
  105. package/dist/cli/firstRunNotice.js +70 -0
  106. package/dist/cli/firstRunNotice.js.map +1 -0
  107. package/dist/cli/main.js +35 -3
  108. package/dist/cli/main.js.map +1 -1
  109. package/dist/cli/registry.js +7 -1
  110. package/dist/cli/registry.js.map +1 -1
  111. package/dist/discovery/deprecation-report.md +1 -1
  112. package/dist/discovery/discovery-manifest.json +362 -78
  113. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  114. package/dist/discovery/discovery-manifest.summary.md +6 -4
  115. package/dist/discovery/orphan-report.md +1 -1
  116. package/dist/discovery/packs.json +90 -8
  117. package/dist/discovery/trust-report.md +11 -11
  118. package/dist/discovery/workspaces.json +31 -7
  119. package/dist/hooks/dispatch.js +19475 -0
  120. package/dist/install/agentSwitchDetection.js +75 -0
  121. package/dist/install/agentSwitchDetection.js.map +1 -0
  122. package/dist/install/agentSwitchProfile.js +117 -0
  123. package/dist/install/agentSwitchProfile.js.map +1 -0
  124. package/dist/install/atomic.js +1 -1
  125. package/dist/install/detect.js +1 -1
  126. package/dist/install/install.mjs +775 -486
  127. package/dist/install/rtkDetection.js +213 -0
  128. package/dist/install/rtkDetection.js.map +1 -0
  129. package/dist/install/rule_scope.js +2 -1
  130. package/dist/install/rule_scope.js.map +1 -1
  131. package/dist/install/types.js +2 -2
  132. package/dist/install/wizard-plan.js +1 -1
  133. package/dist/install/wizardDismissals.js +58 -0
  134. package/dist/install/wizardDismissals.js.map +1 -0
  135. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  136. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  137. package/dist/mcp/registry-manifest.json +15 -4
  138. package/dist/mcp/server.json +20 -0
  139. package/dist/mcp/server.mjs +44292 -0
  140. package/dist/router.json +1 -1
  141. package/dist/scripts/condense.js +14 -7
  142. package/dist/scripts/condense.js.map +1 -1
  143. package/dist/server/app.js +4 -2
  144. package/dist/server/app.js.map +1 -1
  145. package/dist/server/io/sharedWriteCheck.js +101 -0
  146. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  147. package/dist/server/routes/ping.js +14 -0
  148. package/dist/server/routes/ping.js.map +1 -1
  149. package/dist/server/routes/settings.js +21 -4
  150. package/dist/server/routes/settings.js.map +1 -1
  151. package/dist/server/routes/userMd.js +21 -4
  152. package/dist/server/routes/userMd.js.map +1 -1
  153. package/dist/server/routes/wizard.js +68 -25
  154. package/dist/server/routes/wizard.js.map +1 -1
  155. package/dist/server/schemas/settings.js +4 -2
  156. package/dist/server/schemas/settings.js.map +1 -1
  157. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  158. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  159. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  160. package/dist/ui/index.html +2 -2
  161. package/docs/MIGRATION.md +16 -0
  162. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  163. package/package.json +21 -11
  164. package/src/agent-src/templates/AGENTS.md +1 -1
  165. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  166. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  167. package/src/config/agent-settings.template.yml +52 -14
  168. package/src/config/discovery/packs.yml +22 -0
  169. package/src/config/discovery/workspaces.yml +1 -1
  170. package/src/config/evaluator-budgets.json +47 -0
  171. package/src/config/hook-latency-budget.json +20 -0
  172. package/src/install/agentSwitchDetection.ts +90 -0
  173. package/src/install/agentSwitchProfile.ts +131 -0
  174. package/src/install/atomic.ts +1 -1
  175. package/src/install/detect.ts +1 -1
  176. package/src/install/rtkDetection.ts +274 -0
  177. package/src/install/rule_scope.ts +9 -2
  178. package/src/install/types.ts +2 -2
  179. package/src/install/wizard-plan.ts +1 -1
  180. package/src/install/wizardDismissals.ts +60 -0
  181. package/src/scripts/_cli/cmd_doctor.ts +62 -1
  182. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  183. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  184. package/src/scripts/_dispatch.bash +81 -0
  185. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  186. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  187. package/src/scripts/_lib/detect_target_license.ts +714 -0
  188. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
  189. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
  190. package/src/scripts/_lib/install_drift.ts +194 -0
  191. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  192. package/src/scripts/_lib/orchestration_record.ts +91 -2
  193. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  194. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  195. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  196. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  197. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  198. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  199. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  200. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  201. package/src/scripts/_lib/persistence/types.ts +109 -0
  202. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  203. package/src/scripts/_lib/secret_detector.test.ts +5 -0
  204. package/src/scripts/_lib/secret_detector.ts +9 -0
  205. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  206. package/src/scripts/_lib/spawn_env.ts +7 -0
  207. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  208. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  209. package/src/scripts/_lib/worker_budget.ts +107 -0
  210. package/src/scripts/ai_council/blind_review.ts +0 -0
  211. package/src/scripts/ai_council/config.ts +12 -6
  212. package/src/scripts/ai_council/orchestrator.ts +73 -3
  213. package/src/scripts/ai_team/review_gate.ts +8 -10
  214. package/src/scripts/ai_team/team_dispatch.ts +48 -0
  215. package/src/scripts/audit_initial_context.ts +1 -1
  216. package/src/scripts/bench_cross_source_eval.ts +400 -0
  217. package/src/scripts/bench_honesty_score.ts +1093 -0
  218. package/src/scripts/bench_hook_latency.ts +218 -0
  219. package/src/scripts/build_mcp_catalog.ts +275 -0
  220. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  221. package/src/scripts/build_proof.ts +45 -0
  222. package/src/scripts/chat_history.ts +8 -5
  223. package/src/scripts/check_backstop_debt.ts +23 -13
  224. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  225. package/src/scripts/check_evaluator_budgets.ts +99 -0
  226. package/src/scripts/check_knowledge_sharing.ts +12 -1
  227. package/src/scripts/check_no_external_sources.ts +2 -2
  228. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  229. package/src/scripts/code_graph/build.ts +0 -0
  230. package/src/scripts/code_graph/cli.ts +181 -9
  231. package/src/scripts/code_graph/detect.ts +52 -0
  232. package/src/scripts/code_graph/intent.ts +45 -0
  233. package/src/scripts/code_graph/query.ts +143 -29
  234. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  235. package/src/scripts/condense.ts +14 -6
  236. package/src/scripts/context_hygiene_hook.ts +8 -5
  237. package/src/scripts/council_cli.ts +126 -12
  238. package/src/scripts/detect_target_license.ts +203 -0
  239. package/src/scripts/evaluator_umbrella.sh +145 -0
  240. package/src/scripts/external_sources_denylist.json +5 -3
  241. package/src/scripts/first_run_gate_hook.ts +9 -5
  242. package/src/scripts/hermetic-install.sh +3 -3
  243. package/src/scripts/hook_manifest.yaml +55 -16
  244. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  245. package/src/scripts/hooks/block_no_verify.ts +9 -9
  246. package/src/scripts/hooks/code_graph_nudge_hook.ts +11 -4
  247. package/src/scripts/hooks/concern_registry.ts +75 -0
  248. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  249. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  250. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  251. package/src/scripts/hooks/hook_stdin.ts +42 -0
  252. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  253. package/src/scripts/hot_context_hook.ts +7 -6
  254. package/src/scripts/injection_scan_hook.ts +9 -1
  255. package/src/scripts/install +6 -6
  256. package/src/scripts/install-hooks.sh +4 -4
  257. package/src/scripts/install.sh +5 -4
  258. package/src/scripts/install.ts +264 -23
  259. package/src/scripts/learning_sidecar.ts +0 -0
  260. package/src/scripts/lint_budget_ownership.ts +89 -0
  261. package/src/scripts/lint_command_routing.ts +35 -5
  262. package/src/scripts/lint_command_verbs.ts +42 -9
  263. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  264. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  265. package/src/scripts/lint_documented_commands.ts +670 -0
  266. package/src/scripts/lint_framework_leakage.ts +17 -3
  267. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  268. package/src/scripts/lint_governed_writes.ts +335 -0
  269. package/src/scripts/lint_hidden_unicode.ts +6 -0
  270. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  271. package/src/scripts/lint_memory_tripwire.ts +186 -0
  272. package/src/scripts/lint_override_kernel_guard.ts +74 -26
  273. package/src/scripts/lint_persistence.ts +171 -0
  274. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  275. package/src/scripts/lint_provenance.ts +547 -0
  276. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  277. package/src/scripts/lint_spawn_payload.ts +283 -0
  278. package/src/scripts/lint_store_boundary.ts +152 -0
  279. package/src/scripts/lint_versioned_cache.ts +7 -1
  280. package/src/scripts/mcp_server/__main__.ts +7 -2
  281. package/src/scripts/mcp_server/catalog.ts +23 -1
  282. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  283. package/src/scripts/mcp_server/prompts.ts +6 -0
  284. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  285. package/src/scripts/mcp_server/tools.ts +56 -5
  286. package/src/scripts/mcp_telemetry_query.ts +2 -33
  287. package/src/scripts/mcp_telemetry_store.ts +64 -34
  288. package/src/scripts/memory_learn_hook.ts +126 -0
  289. package/src/scripts/memory_lookup.ts +0 -0
  290. package/src/scripts/memory_replay_24.ts +312 -0
  291. package/src/scripts/memory_report.ts +16 -3
  292. package/src/scripts/memory_signal.ts +48 -0
  293. package/src/scripts/memory_status.ts +6 -0
  294. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  295. package/src/scripts/onboarding_gate_hook.ts +8 -5
  296. package/src/scripts/orchestration_record.ts +16 -0
  297. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  298. package/src/scripts/prepack-check.mjs +17 -0
  299. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  300. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  301. package/src/scripts/profile_staleness_hook.ts +8 -7
  302. package/src/scripts/report_install_drift.ts +109 -0
  303. package/src/scripts/roadmap_progress_hook.ts +8 -5
  304. package/src/scripts/schemas/license-policy.schema.json +89 -0
  305. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  306. package/src/scripts/schemas/rule.schema.json +10 -0
  307. package/src/scripts/self_review_gate.test.ts +173 -1
  308. package/src/scripts/self_review_gate.ts +155 -15
  309. package/src/scripts/session_canary_hook.ts +182 -0
  310. package/src/scripts/smoke_quickstart.ts +2 -2
  311. package/src/scripts/surface_probe_hook.ts +8 -7
  312. package/src/scripts/sync_gitattributes.ts +310 -0
  313. package/src/scripts/team_review_gate_hook.ts +13 -16
  314. package/src/scripts/verify_before_complete_hook.ts +8 -5
  315. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  316. package/src/server/schemas/settings.ts +8 -2
  317. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  318. package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
  319. package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
  320. package/docs/CLAIMS.md +0 -286
  321. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  322. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  323. package/docs/SKILL_CENSUS.md +0 -352
  324. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  325. package/docs/adrs/cost/README.md +0 -9
  326. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  327. package/docs/adrs/memory/README.md +0 -10
  328. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  329. package/docs/adrs/router/README.md +0 -9
  330. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  331. package/docs/adrs/schema/README.md +0 -9
  332. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  333. package/docs/adrs/smoke/README.md +0 -9
  334. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  335. package/docs/adrs/telegraph/README.md +0 -9
  336. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  337. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  338. package/docs/anti-reskin-gate.md +0 -60
  339. package/docs/architecture/augment-projection.md +0 -70
  340. package/docs/architecture/claude-bundle.md +0 -77
  341. package/docs/architecture/current-onboard-baseline.md +0 -126
  342. package/docs/architecture/current-safety-behavior.md +0 -137
  343. package/docs/architecture/multi-tool-projection.md +0 -125
  344. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  345. package/docs/architecture/source-projection.md +0 -85
  346. package/docs/architecture.md +0 -390
  347. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  348. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  349. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  350. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  351. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  352. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  353. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  354. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  355. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  356. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  357. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  358. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  359. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  360. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  361. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  362. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  363. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  364. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  365. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  366. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  367. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  368. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  369. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  370. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  371. package/docs/artefact-census.md +0 -71
  372. package/docs/benchmark.md +0 -785
  373. package/docs/benchmark.pinned.yml +0 -31
  374. package/docs/benchmarks.md +0 -85
  375. package/docs/capability-matrix.md +0 -33
  376. package/docs/case-studies/_template.md +0 -60
  377. package/docs/case-studies/frontend-design-positioning.md +0 -86
  378. package/docs/catalog.md +0 -726
  379. package/docs/command-flows.md +0 -272
  380. package/docs/command-naming-audit.md +0 -60
  381. package/docs/comparison.yaml +0 -87
  382. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  383. package/docs/contracts/STABILITY.md +0 -188
  384. package/docs/contracts/adoption-signal-floor.md +0 -127
  385. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  386. package/docs/contracts/adr-chat-history-split.md +0 -140
  387. package/docs/contracts/adr-command-suggestion.md +0 -144
  388. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  389. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  390. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  391. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  392. package/docs/contracts/adr-layout.md +0 -107
  393. package/docs/contracts/adr-level-6-productization.md +0 -145
  394. package/docs/contracts/adr-mcp-runtime.md +0 -128
  395. package/docs/contracts/adr-product-ui-track.md +0 -381
  396. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  397. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  398. package/docs/contracts/adr-user-types-axis.md +0 -127
  399. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  400. package/docs/contracts/agent-user-schema.md +0 -170
  401. package/docs/contracts/agents-layout.md +0 -148
  402. package/docs/contracts/agents-md-tech-stack.md +0 -75
  403. package/docs/contracts/ai-council-config.md +0 -829
  404. package/docs/contracts/ai-team-config.md +0 -224
  405. package/docs/contracts/analysis-memory-loop.md +0 -149
  406. package/docs/contracts/at-rest-encryption.md +0 -191
  407. package/docs/contracts/audit-log-v1.md +0 -150
  408. package/docs/contracts/auto-orchestration-v1.md +0 -70
  409. package/docs/contracts/benchmark-ab-contract.md +0 -106
  410. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  411. package/docs/contracts/benchmark-report-schema.md +0 -113
  412. package/docs/contracts/branch-protection-policy.md +0 -139
  413. package/docs/contracts/brand-token-consumption.md +0 -74
  414. package/docs/contracts/capability-boundary.md +0 -69
  415. package/docs/contracts/capability-packs.md +0 -217
  416. package/docs/contracts/ci-cost-budget.md +0 -111
  417. package/docs/contracts/ci-green-floor.md +0 -141
  418. package/docs/contracts/command-category-governance.md +0 -84
  419. package/docs/contracts/command-clusters.md +0 -399
  420. package/docs/contracts/command-surface-tiers.md +0 -176
  421. package/docs/contracts/command-taxonomy.md +0 -137
  422. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  423. package/docs/contracts/config-presets.md +0 -144
  424. package/docs/contracts/conformance.md +0 -84
  425. package/docs/contracts/consumer-bridge.md +0 -73
  426. package/docs/contracts/context-paths.md +0 -101
  427. package/docs/contracts/context-spine.md +0 -179
  428. package/docs/contracts/cost-dashboard.md +0 -143
  429. package/docs/contracts/cost-enforcement.md +0 -134
  430. package/docs/contracts/cost-profile-defaults.md +0 -110
  431. package/docs/contracts/cost-summary-schema.md +0 -107
  432. package/docs/contracts/creative-pack-boundary.md +0 -63
  433. package/docs/contracts/cross-repo-retrieval.md +0 -64
  434. package/docs/contracts/cross-wing-handoff.md +0 -134
  435. package/docs/contracts/daily-workspace.md +0 -147
  436. package/docs/contracts/decision-engine-gates.md +0 -120
  437. package/docs/contracts/decision-trace-v1.md +0 -177
  438. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  439. package/docs/contracts/design-artifact-verification.md +0 -153
  440. package/docs/contracts/discovery-manifest.md +0 -209
  441. package/docs/contracts/discovery-manifest.schema.json +0 -254
  442. package/docs/contracts/evidence-based-pruning.md +0 -102
  443. package/docs/contracts/explain-modes.md +0 -187
  444. package/docs/contracts/explain-trace.schema.json +0 -144
  445. package/docs/contracts/file-ownership-matrix.json +0 -13941
  446. package/docs/contracts/file-ownership-matrix.md +0 -135
  447. package/docs/contracts/frontmatter-contract.md +0 -140
  448. package/docs/contracts/ghostwriter-schema.md +0 -337
  449. package/docs/contracts/governance-enforcement-projection.md +0 -159
  450. package/docs/contracts/gui-wizard.md +0 -350
  451. package/docs/contracts/harness-expectations.md +0 -128
  452. package/docs/contracts/hook-architecture-v1.md +0 -325
  453. package/docs/contracts/host-agent-protocol.md +0 -110
  454. package/docs/contracts/implement-ticket-flow.md +0 -625
  455. package/docs/contracts/init-telemetry.md +0 -132
  456. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  457. package/docs/contracts/install-layout.md +0 -249
  458. package/docs/contracts/install-scopes.md +0 -82
  459. package/docs/contracts/installed-tools-lockfile.md +0 -144
  460. package/docs/contracts/installer-agent-mode.md +0 -137
  461. package/docs/contracts/iron-law-overrides.txt +0 -26
  462. package/docs/contracts/kernel-membership.md +0 -339
  463. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  464. package/docs/contracts/linear-ai-three-layers.md +0 -130
  465. package/docs/contracts/linter-structural-model.md +0 -181
  466. package/docs/contracts/load-context-budget-model.md +0 -259
  467. package/docs/contracts/load-context-schema.md +0 -220
  468. package/docs/contracts/local-analytics.md +0 -160
  469. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  470. package/docs/contracts/local-server-api.md +0 -134
  471. package/docs/contracts/local-server-ports.md +0 -53
  472. package/docs/contracts/low-impact-corpus-format.md +0 -95
  473. package/docs/contracts/mcp-beta-criteria.md +0 -130
  474. package/docs/contracts/mcp-cloud-scope.md +0 -355
  475. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  476. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  477. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  478. package/docs/contracts/mcp-tool-inventory.md +0 -64
  479. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  480. package/docs/contracts/measurement-baseline.md +0 -103
  481. package/docs/contracts/memory-visibility-v1.md +0 -160
  482. package/docs/contracts/mental-models.md +0 -336
  483. package/docs/contracts/migrate-command.md +0 -233
  484. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  485. package/docs/contracts/namespace.md +0 -125
  486. package/docs/contracts/no-runtime-boundary.md +0 -61
  487. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  488. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  489. package/docs/contracts/package-self-orientation.md +0 -163
  490. package/docs/contracts/pilot/agent-authority.md +0 -24
  491. package/docs/contracts/pilot/direct-answers.md +0 -70
  492. package/docs/contracts/pilot/language-and-tone.md +0 -63
  493. package/docs/contracts/plain-language-surface.md +0 -117
  494. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  495. package/docs/contracts/profile-system.md +0 -167
  496. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  497. package/docs/contracts/release-pr-gating.md +0 -151
  498. package/docs/contracts/release-sizing.md +0 -107
  499. package/docs/contracts/release-trunk-sync.md +0 -105
  500. package/docs/contracts/review-lens-schema.md +0 -64
  501. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  502. package/docs/contracts/role-experience.md +0 -125
  503. package/docs/contracts/router-blending.md +0 -71
  504. package/docs/contracts/rule-classification.md +0 -171
  505. package/docs/contracts/rule-interactions.md +0 -132
  506. package/docs/contracts/rule-interactions.yml +0 -260
  507. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  508. package/docs/contracts/rule-router.md +0 -287
  509. package/docs/contracts/safety-model.md +0 -129
  510. package/docs/contracts/session-profile-overlay.md +0 -157
  511. package/docs/contracts/settings-api.md +0 -264
  512. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  513. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  514. package/docs/contracts/skill-bundled-assets.md +0 -62
  515. package/docs/contracts/skill-discovery.md +0 -80
  516. package/docs/contracts/skill-distribution-channels.md +0 -66
  517. package/docs/contracts/skill-domains.md +0 -144
  518. package/docs/contracts/skill-dry-run.md +0 -47
  519. package/docs/contracts/skill-family-map.yml +0 -915
  520. package/docs/contracts/smoke-contracts.md +0 -144
  521. package/docs/contracts/subagent-boundary.md +0 -74
  522. package/docs/contracts/surface-agent-contracts.md +0 -153
  523. package/docs/contracts/surface-matrix.md +0 -108
  524. package/docs/contracts/surface-tiers.md +0 -81
  525. package/docs/contracts/telegraph-telemetry.md +0 -83
  526. package/docs/contracts/ticket-bundle-format.md +0 -233
  527. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  528. package/docs/contracts/trust-and-safety.md +0 -144
  529. package/docs/contracts/ui-stack-extension.md +0 -237
  530. package/docs/contracts/ui-track-flow.md +0 -329
  531. package/docs/contracts/universal-skills.md +0 -91
  532. package/docs/contracts/user-type-schema.md +0 -146
  533. package/docs/contracts/value-dashboard-spec.md +0 -378
  534. package/docs/contracts/value-report-schema.md +0 -168
  535. package/docs/contracts/workflow-packs.md +0 -121
  536. package/docs/contracts/workspace-boundary.md +0 -84
  537. package/docs/contracts/workspace-documents.md +0 -144
  538. package/docs/contracts/write-engine.md +0 -182
  539. package/docs/cookbook.md +0 -152
  540. package/docs/customization.md +0 -696
  541. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  542. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  543. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  544. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  545. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  546. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  547. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  548. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  549. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  550. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  551. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  552. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  553. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  554. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  555. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  556. package/docs/decisions/ADR-016-installer-architecture.md +0 -191
  557. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  558. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  559. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  560. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  561. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  562. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  563. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  564. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  565. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  566. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  567. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  568. package/docs/decisions/ADR-028-root-layout.md +0 -147
  569. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  570. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  571. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  572. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  573. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  574. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  575. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  576. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  577. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  578. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  579. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  580. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  581. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  582. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  583. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  584. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  585. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  586. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  587. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  588. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  589. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  590. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  591. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  592. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  593. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  594. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  595. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  596. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  597. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  598. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  599. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  600. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  601. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  602. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  603. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  604. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  605. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  606. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  607. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  608. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  609. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  610. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  611. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  612. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  613. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  614. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  615. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  616. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  617. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  618. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  619. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  620. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  621. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  622. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  623. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  624. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  625. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  626. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  627. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  628. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  629. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  630. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  631. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  632. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  633. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  634. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  635. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  636. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  637. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  638. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  639. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  640. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  641. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  642. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  643. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  644. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  645. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  646. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  647. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  648. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  649. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -248
  650. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
  651. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  652. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  653. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -209
  654. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  655. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  656. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  657. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  658. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  659. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  660. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  661. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  662. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  663. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  664. package/docs/decisions/ADR-124-embedded-engine-doctrine.md +0 -255
  665. package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
  666. package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
  667. package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
  668. package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
  669. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  670. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  671. package/docs/decisions/INDEX.md +0 -157
  672. package/docs/decisions/engine-reclassification-2026-07.md +0 -104
  673. package/docs/deploy/connector-setup.md +0 -129
  674. package/docs/deploy/env-vars.md +0 -70
  675. package/docs/deploy/policy-cookbook.md +0 -130
  676. package/docs/deploy/quickstart.md +0 -112
  677. package/docs/deploy/small-team-recipe.md +0 -148
  678. package/docs/deploy/team-deployment-posture.md +0 -111
  679. package/docs/design/adversarial-council-eval.md +0 -106
  680. package/docs/design/council-vs-solo-baseline.md +0 -92
  681. package/docs/design/cross-model-parity-eval.md +0 -82
  682. package/docs/design/length-neutral-judge-rerun.md +0 -92
  683. package/docs/design/utilization-window-criteria.md +0 -51
  684. package/docs/development.md +0 -230
  685. package/docs/distribution/awesome-list-submission.md +0 -46
  686. package/docs/distribution/consumer-matrix.md +0 -96
  687. package/docs/distribution/launch-story-draft.md +0 -58
  688. package/docs/distribution/mcp-submission-checklist.md +0 -95
  689. package/docs/distribution/public-install-smoke.md +0 -68
  690. package/docs/distribution/registries.md +0 -126
  691. package/docs/distribution/registry-submissions.md +0 -85
  692. package/docs/distribution/telemetry-privacy.md +0 -128
  693. package/docs/distribution/telemetry-schema.md +0 -174
  694. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  695. package/docs/end-to-end-walkthroughs.md +0 -165
  696. package/docs/enforcement-by-host.md +0 -51
  697. package/docs/examples/agent-user.example.md +0 -22
  698. package/docs/experiences/agency.md +0 -49
  699. package/docs/experiences/content_creator.md +0 -49
  700. package/docs/experiences/developer.md +0 -49
  701. package/docs/experiences/finance.md +0 -50
  702. package/docs/experiences/founder.md +0 -49
  703. package/docs/experiences/ops.md +0 -49
  704. package/docs/featured-commands.md +0 -27
  705. package/docs/featured-skills.md +0 -95
  706. package/docs/flows.md +0 -67
  707. package/docs/getting-started-by-role.md +0 -190
  708. package/docs/getting-started-laravel.md +0 -72
  709. package/docs/getting-started-local-stdio.md +0 -77
  710. package/docs/getting-started.md +0 -254
  711. package/docs/github-topics.md +0 -93
  712. package/docs/governance-advantage.md +0 -72
  713. package/docs/governance.md +0 -96
  714. package/docs/guides/cross-repo-linked-projects.md +0 -93
  715. package/docs/guides/cross-repo-retrieval.md +0 -61
  716. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  717. package/docs/guides/gated-platform-reads.md +0 -221
  718. package/docs/guides/local-analytics.md +0 -125
  719. package/docs/guides/local-knowledge.md +0 -127
  720. package/docs/guides/skill-discovery.md +0 -71
  721. package/docs/guides/skill-preview.md +0 -71
  722. package/docs/hook-payload-capture.md +0 -221
  723. package/docs/install-friction-report.md +0 -66
  724. package/docs/installation.md +0 -959
  725. package/docs/maintainers/branch-protection.md +0 -105
  726. package/docs/maintainers/dev-mode.md +0 -106
  727. package/docs/maintainers/optional-media-deps.md +0 -50
  728. package/docs/maintainers/system-map.md +0 -85
  729. package/docs/mcp-registries.md +0 -94
  730. package/docs/mcp-server.md +0 -175
  731. package/docs/mcp.md +0 -147
  732. package/docs/media/proof-demo.cast +0 -14
  733. package/docs/media/proof-demo.gif +0 -0
  734. package/docs/migration/consumer-template-consumption-model.md +0 -145
  735. package/docs/migration/divergences/README.md +0 -55
  736. package/docs/migration/divergences/_template.md +0 -50
  737. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  738. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  739. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  740. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  741. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  742. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  743. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  744. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  745. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  746. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  747. package/docs/migration/node-floor.md +0 -86
  748. package/docs/migration/v1-to-v2.md +0 -156
  749. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  750. package/docs/migrations/commands-1.15.0.md +0 -117
  751. package/docs/parity/bench-external.json +0 -58
  752. package/docs/parity/bench.json +0 -41
  753. package/docs/parity/command-frontmatter.md +0 -60
  754. package/docs/parity/external-runtime.md +0 -46
  755. package/docs/personas.md +0 -178
  756. package/docs/positioning-evidence.md +0 -86
  757. package/docs/profiles.md +0 -108
  758. package/docs/proof.md +0 -252
  759. package/docs/quality.md +0 -98
  760. package/docs/readme-split-plan.md +0 -102
  761. package/docs/recruits/_template.md +0 -81
  762. package/docs/release-runbook.md +0 -141
  763. package/docs/role-experiences.md +0 -19
  764. package/docs/safety.md +0 -30
  765. package/docs/second-brain-scope.md +0 -116
  766. package/docs/self-review-gate.md +0 -65
  767. package/docs/setup/enterprise-and-offline.md +0 -201
  768. package/docs/setup/mcp-client-config.md +0 -358
  769. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  770. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  771. package/docs/setup/mcp-cloud-setup.md +0 -183
  772. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  773. package/docs/setup/mcp-server-docker.md +0 -101
  774. package/docs/setup/per-ide/aider.md +0 -48
  775. package/docs/setup/per-ide/antigravity.md +0 -68
  776. package/docs/setup/per-ide/augment.md +0 -89
  777. package/docs/setup/per-ide/claude-code.md +0 -97
  778. package/docs/setup/per-ide/claude-desktop.md +0 -207
  779. package/docs/setup/per-ide/cline.md +0 -43
  780. package/docs/setup/per-ide/codebuddy.md +0 -63
  781. package/docs/setup/per-ide/codex.md +0 -46
  782. package/docs/setup/per-ide/continue.md +0 -68
  783. package/docs/setup/per-ide/copilot.md +0 -80
  784. package/docs/setup/per-ide/cursor.md +0 -125
  785. package/docs/setup/per-ide/droid.md +0 -65
  786. package/docs/setup/per-ide/gemini-cli.md +0 -45
  787. package/docs/setup/per-ide/jetbrains.md +0 -76
  788. package/docs/setup/per-ide/kilocode.md +0 -66
  789. package/docs/setup/per-ide/kiro.md +0 -72
  790. package/docs/setup/per-ide/opencode.md +0 -62
  791. package/docs/setup/per-ide/qoder.md +0 -63
  792. package/docs/setup/per-ide/roocode.md +0 -68
  793. package/docs/setup/per-ide/trae.md +0 -63
  794. package/docs/setup/per-ide/warp.md +0 -63
  795. package/docs/setup/per-ide/windsurf.md +0 -109
  796. package/docs/setup/per-ide/zed.md +0 -73
  797. package/docs/showcase.md +0 -209
  798. package/docs/skill-duplication-findings.md +0 -91
  799. package/docs/skills-catalog.md +0 -265
  800. package/docs/skills-taxonomy.md +0 -90
  801. package/docs/spawn-site-policy.md +0 -72
  802. package/docs/succession.md +0 -80
  803. package/docs/threat-model.md +0 -30
  804. package/docs/troubleshooting.md +0 -155
  805. package/docs/ui-track-mental-model.md +0 -121
  806. package/docs/us-vs-the-category.md +0 -38
  807. package/docs/value.md +0 -86
  808. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  809. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  810. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  811. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  812. package/docs/walkthroughs/daily-workspace.md +0 -127
  813. package/docs/wedge/production-validator/README.md +0 -81
  814. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  815. package/docs/wedge/production-validator/production-validator.md +0 -83
  816. package/docs/wizard.md +0 -173
  817. package/src/scripts/postinstall_gui.ts +0 -129
@@ -0,0 +1,670 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Documented-command resolver — every backtick-quoted PACKAGE command named in a
4
+ * shipped skill/rule/command doc must resolve to something real: a CLI registry
5
+ * entry, an MCP tool, an npm script, a task target, or a slash-command cluster.
6
+ *
7
+ * The bug class this exists to close: a skill/rule ships prose that tells the
8
+ * agent to run `agent-config foo-bar` (or `task some-target`, or a bare
9
+ * `ns:verb`-shaped invocation like `council:debate`) and the command does not
10
+ * exist anywhere — the doc lied, silently, until a human hit it at runtime.
11
+ * This linter makes that class structurally impossible: every command-shaped
12
+ * backtick span or bash/sh fenced line is checked against the real registries
13
+ * at lint time, deterministically, no network, no LLM.
14
+ *
15
+ * PRIMARY CI GATE: this script's behaviour is pinned by
16
+ * `tests/scripts/lint_documented_commands.test.ts` (vitest) — that suite runs
17
+ * in the `node-tests` job on every PR, which is the primary gate. The
18
+ * `lint-documented-commands` task target (below) is a convenience for local
19
+ * runs and the `ci`/`ci-strict` aggregate; either path catches a regression.
20
+ *
21
+ * Shape mirrored from `src/scripts/check_no_roadmap_refs.ts` (per its own
22
+ * "read one existing linter for shape first" precedent): `--format` / `--root`
23
+ * flags, exit codes (0 clean, 1 violations, 2 usage error, 3 internal error),
24
+ * stdout-only output, self-documenting allowlist, fenced-code-aware scan.
25
+ *
26
+ * Contract: road-to-reachable-code-memory Phase 1 (the load-bearing
27
+ * lint_documented_commands item).
28
+ */
29
+
30
+ import * as fs from 'node:fs';
31
+ import * as path from 'node:path';
32
+ import { fileURLToPath, pathToFileURL } from 'node:url';
33
+ import { load as yamlLoad } from 'js-yaml';
34
+
35
+ // NOTE: deliberately no runtime module dependency on the CLI registry —
36
+ // src/cli/ is outside the package.json `files` whitelist, so importing it
37
+ // would crash a global install (prepack-check). The registry file is parsed
38
+ // as text, same as every other resolution surface below.
39
+
40
+ // src/scripts/lint_documented_commands.ts → two dirs up is the repo root.
41
+ const _HERE = fileURLToPath(import.meta.url);
42
+ const REPO_ROOT = path.resolve(path.dirname(_HERE), '..', '..');
43
+
44
+ // ---------------------------------------------------------------------------
45
+ // Scan trees — every `*.md` (or `SKILL.md` / `command.md`) below is checked
46
+ // for documented package-command claims. Resolved relative to the scan
47
+ // `root` (which `--root` may override, for fixture-driven tests).
48
+ // ---------------------------------------------------------------------------
49
+
50
+ interface ScanTree {
51
+ /** Directory, relative to `root`. */
52
+ dir: string;
53
+ /** Which filenames under `dir` (recursively) count as a scan target. */
54
+ match: (basename: string) => boolean;
55
+ }
56
+
57
+ const DEFAULT_SCAN_TREES: readonly ScanTree[] = [
58
+ { dir: 'src/skills', match: (n) => n === 'SKILL.md' },
59
+ { dir: 'src/rules', match: (n) => n.endsWith('.md') },
60
+ { dir: 'src/agent-src/commands', match: (n) => n.endsWith('.md') },
61
+ { dir: 'src/domains', match: (n) => n === 'command.md' },
62
+ ];
63
+
64
+ // Bash-like fence languages whose lines are scanned whole-line (commands live
65
+ // there, not just in inline backtick spans).
66
+ const BASH_FENCE_LANGS: ReadonlySet<string> = new Set(['bash', 'sh', 'shell', 'zsh']);
67
+
68
+ // Files that may legitimately quote a non-resolving example for illustration
69
+ // (documentation ABOUT this linter, or a deliberate "don't do this" example).
70
+ // Empty today — populate if a future doc needs it.
71
+ const SELF_DOCUMENTING_ALLOWLIST: ReadonlySet<string> = new Set([]);
72
+
73
+ const IGNORE_MARKER_RE = /<!--\s*lint-documented-commands:\s*ignore\s*-->/;
74
+ const HTML_COMMENT_RE = /<!--[\s\S]*?-->/g;
75
+
76
+ // ---------------------------------------------------------------------------
77
+ // Classification regexes — anchored to the START of a (already split, already
78
+ // trimmed) sub-command string. `&&` / `||` / `;` / `|` split one backtick span
79
+ // or fenced-bash line into its constituent sub-commands first (see
80
+ // `_splitSubcommands`), so `task a && task b` is checked as two claims.
81
+ // ---------------------------------------------------------------------------
82
+
83
+ const TOKEN_CHARS = 'a-z0-9:_-';
84
+
85
+ const AGENT_CONFIG_RE = new RegExp(
86
+ `^(?:\\./agent-config|npx\\s+@event4u/agent-config|npx\\s+agent-config|agent-config)\\s+([a-z][${TOKEN_CHARS}]*)`,
87
+ );
88
+ const FIRST_TOKEN_RE = /^([a-zA-Z_][\w:-]*)/;
89
+
90
+ type Category = 'agent-config' | 'task' | 'npm-run' | 'bare';
91
+
92
+ function _isCuratedBareToken(token: string): boolean {
93
+ if (token === 'code_graph' || token === 'code-graph') {
94
+ return true;
95
+ }
96
+ return (
97
+ /^memory:[a-z][a-z0-9-]*$/.test(token) ||
98
+ /^council:[a-z][a-z0-9-]*$/.test(token) ||
99
+ /^roadmap:[a-z][a-z0-9-]*$/.test(token)
100
+ );
101
+ }
102
+
103
+ interface Claim {
104
+ category: Category;
105
+ token: string;
106
+ }
107
+
108
+ /** Split a candidate command string into its shell-separated sub-commands. */
109
+ function _splitSubcommands(text: string): string[] {
110
+ return text
111
+ .split(/(?:&&|\|\||;|\|)/)
112
+ .map((s) => s.trim())
113
+ .filter((s) => s.length > 0);
114
+ }
115
+
116
+ /**
117
+ * Classify one trimmed sub-command; `null` if it names no package command.
118
+ *
119
+ * DELIBERATELY NOT checked: `task <target>` and `npm run <script>`. Shipped
120
+ * skills/commands overwhelmingly use those namespaces to describe the
121
+ * CONSUMER project's own Taskfile / package.json (e.g. `npm run ios` in a
122
+ * React-Native consumer, `npm run biome:fix` in a JS consumer, the
123
+ * forbidden-CI-literal pattern lists in roadmap-ci-steps-policy) — resolving
124
+ * them against THIS package's files produced a systematic false-positive
125
+ * class on first run (12 of 19 findings, 2026-07-27). The defect class this
126
+ * lint kills (a shipped doc naming a non-resolving PACKAGE command, the S0a
127
+ * reachability bug) lives entirely in the `agent-config <verb>` and curated
128
+ * bare-token namespaces, which ARE unambiguous package property.
129
+ */
130
+ function _classify(subcmd: string): Claim | null {
131
+ const m = AGENT_CONFIG_RE.exec(subcmd);
132
+ if (m) {
133
+ return { category: 'agent-config', token: m[1]! };
134
+ }
135
+ const first = FIRST_TOKEN_RE.exec(subcmd);
136
+ if (first && _isCuratedBareToken(first[1]!)) {
137
+ return { category: 'bare', token: first[1]! };
138
+ }
139
+ return null;
140
+ }
141
+
142
+ /** Extract every command-shaped claim from one candidate string (span/line). */
143
+ function _claimsIn(text: string): Claim[] {
144
+ const out: Claim[] = [];
145
+ for (const sub of _splitSubcommands(text)) {
146
+ const claim = _classify(sub);
147
+ if (claim) {
148
+ out.push(claim);
149
+ }
150
+ }
151
+ return out;
152
+ }
153
+
154
+ // ---------------------------------------------------------------------------
155
+ // Resolution sources — ALWAYS loaded from the real repo (REPO_ROOT), never
156
+ // from `--root`. `--root` only changes which docs are SCANNED (for
157
+ // fixture-driven tests); the registries a claim resolves against are the
158
+ // package's real, shipped ones.
159
+ // ---------------------------------------------------------------------------
160
+
161
+ export interface ResolutionSets {
162
+ registryNames: ReadonlySet<string>;
163
+ taskNames: ReadonlySet<string>;
164
+ npmScripts: ReadonlySet<string>;
165
+ mcpToolNames: ReadonlySet<string>;
166
+ slashCommandNames: ReadonlySet<string>;
167
+ }
168
+
169
+ function _exists(p: string): boolean {
170
+ try {
171
+ fs.statSync(p);
172
+ return true;
173
+ } catch {
174
+ return false;
175
+ }
176
+ }
177
+
178
+ const REGISTRY_ENTRY_RE = /^\s*\{\s*name:\s*'([^']+)'/;
179
+
180
+ function _loadRegistryNames(): Set<string> {
181
+ const names = new Set<string>();
182
+ const p = path.join(REPO_ROOT, 'src', 'cli', 'registry.ts');
183
+ if (!_exists(p)) {
184
+ return names;
185
+ }
186
+ for (const line of fs.readFileSync(p, 'utf8').split('\n')) {
187
+ const m = REGISTRY_ENTRY_RE.exec(line);
188
+ if (m) {
189
+ names.add(m[1]!);
190
+ }
191
+ }
192
+ return names;
193
+ }
194
+
195
+ function _loadTaskNames(repoRoot: string): Set<string> {
196
+ const names = new Set<string>();
197
+ const files = [path.join(repoRoot, 'Taskfile.yml')];
198
+ const taskfilesDir = path.join(repoRoot, 'taskfiles');
199
+ if (_exists(taskfilesDir)) {
200
+ for (const f of fs.readdirSync(taskfilesDir).sort()) {
201
+ if (f.endsWith('.yml') || f.endsWith('.yaml')) {
202
+ files.push(path.join(taskfilesDir, f));
203
+ }
204
+ }
205
+ }
206
+ for (const f of files) {
207
+ if (!_exists(f)) {
208
+ continue;
209
+ }
210
+ let doc: unknown;
211
+ try {
212
+ doc = yamlLoad(fs.readFileSync(f, 'utf-8'));
213
+ } catch {
214
+ continue;
215
+ }
216
+ const tasks = (doc as { tasks?: unknown } | null)?.tasks;
217
+ if (tasks && typeof tasks === 'object') {
218
+ for (const k of Object.keys(tasks as Record<string, unknown>)) {
219
+ names.add(k);
220
+ }
221
+ }
222
+ }
223
+ return names;
224
+ }
225
+
226
+ function _loadNpmScripts(repoRoot: string): Set<string> {
227
+ const pkgPath = path.join(repoRoot, 'package.json');
228
+ if (!_exists(pkgPath)) {
229
+ return new Set();
230
+ }
231
+ try {
232
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')) as {
233
+ scripts?: Record<string, unknown>;
234
+ };
235
+ return new Set(Object.keys(pkg.scripts ?? {}));
236
+ } catch {
237
+ return new Set();
238
+ }
239
+ }
240
+
241
+ function _loadMcpToolNames(repoRoot: string): Set<string> {
242
+ const p = path.join(repoRoot, 'src', 'scripts', 'mcp_server', 'consumer_tool_catalog.json');
243
+ if (!_exists(p)) {
244
+ return new Set();
245
+ }
246
+ try {
247
+ const doc = JSON.parse(fs.readFileSync(p, 'utf-8')) as {
248
+ tools?: Array<{ name?: unknown }>;
249
+ };
250
+ const tools = Array.isArray(doc.tools) ? doc.tools : [];
251
+ return new Set(
252
+ tools.map((t) => t.name).filter((n): n is string => typeof n === 'string'),
253
+ );
254
+ } catch {
255
+ return new Set();
256
+ }
257
+ }
258
+
259
+ /** Parse a `---\n...\n---` YAML frontmatter block off the top of a file. */
260
+ function _parseFrontmatter(file: string): Record<string, unknown> | null {
261
+ let text: string;
262
+ try {
263
+ text = fs.readFileSync(file, 'utf-8');
264
+ } catch {
265
+ return null;
266
+ }
267
+ const m = /^---\r?\n([\s\S]*?)\r?\n---/.exec(text);
268
+ if (!m) {
269
+ return null;
270
+ }
271
+ try {
272
+ const doc = yamlLoad(m[1]!);
273
+ return doc && typeof doc === 'object' ? (doc as Record<string, unknown>) : null;
274
+ } catch {
275
+ return null;
276
+ }
277
+ }
278
+
279
+ /**
280
+ * Slash-command cluster names (`cluster:sub`, or bare `cluster` when there is
281
+ * no `sub`) derived from every `src/domains/**\/command.md` frontmatter. These
282
+ * are a valid resolution target for the curated bare `ns:verb` patterns
283
+ * (`council:*`, `roadmap:*`) — a bare token can legitimately name a slash
284
+ * command rather than a CLI registry entry (e.g. `council:debate` has no CLI
285
+ * counterpart; it is reached only via `/council:debate`).
286
+ */
287
+ function _loadSlashCommandNames(repoRoot: string): Set<string> {
288
+ const names = new Set<string>();
289
+ const domainsRoot = path.join(repoRoot, 'src', 'domains');
290
+ if (!_exists(domainsRoot)) {
291
+ return names;
292
+ }
293
+ const walk = (dir: string): void => {
294
+ let entries: fs.Dirent[];
295
+ try {
296
+ entries = fs.readdirSync(dir, { withFileTypes: true });
297
+ } catch {
298
+ return;
299
+ }
300
+ for (const e of entries) {
301
+ const full = path.join(dir, e.name);
302
+ if (e.isDirectory()) {
303
+ walk(full);
304
+ } else if (e.isFile() && e.name === 'command.md') {
305
+ const fm = _parseFrontmatter(full);
306
+ const cluster = fm?.cluster;
307
+ const sub = fm?.sub;
308
+ if (typeof cluster === 'string' && typeof sub === 'string') {
309
+ names.add(`${cluster}:${sub}`);
310
+ } else if (typeof cluster === 'string') {
311
+ names.add(cluster);
312
+ }
313
+ }
314
+ }
315
+ };
316
+ walk(domainsRoot);
317
+ return names;
318
+ }
319
+
320
+ export function loadResolutionSets(repoRoot: string = REPO_ROOT): ResolutionSets {
321
+ return {
322
+ registryNames: _loadRegistryNames(),
323
+ taskNames: _loadTaskNames(repoRoot),
324
+ npmScripts: _loadNpmScripts(repoRoot),
325
+ mcpToolNames: _loadMcpToolNames(repoRoot),
326
+ slashCommandNames: _loadSlashCommandNames(repoRoot),
327
+ };
328
+ }
329
+
330
+ /** Normalize a bare token (`code-graph`, `memory:lookup`) to MCP snake_case. */
331
+ function _mcpNormalize(token: string): string {
332
+ return token.replace(/[:-]/g, '_');
333
+ }
334
+
335
+ function _isResolved(claim: Claim, sets: ResolutionSets): boolean {
336
+ switch (claim.category) {
337
+ case 'agent-config':
338
+ return sets.registryNames.has(claim.token);
339
+ case 'task':
340
+ return sets.taskNames.has(claim.token);
341
+ case 'npm-run':
342
+ return sets.npmScripts.has(claim.token);
343
+ case 'bare':
344
+ if (sets.registryNames.has(claim.token)) {
345
+ return true;
346
+ }
347
+ if (sets.slashCommandNames.has(claim.token)) {
348
+ return true;
349
+ }
350
+ return sets.mcpToolNames.has(_mcpNormalize(claim.token));
351
+ }
352
+ }
353
+
354
+ function _hint(category: Category): string {
355
+ switch (category) {
356
+ case 'agent-config':
357
+ return 'not found in src/cli/registry.ts REGISTRY';
358
+ case 'task':
359
+ return 'not found in Taskfile.yml / taskfiles/*.yml task names';
360
+ case 'npm-run':
361
+ return 'not found in package.json "scripts"';
362
+ case 'bare':
363
+ return 'not found in the CLI registry, a slash-command cluster, or the MCP tool catalog';
364
+ }
365
+ }
366
+
367
+ // ---------------------------------------------------------------------------
368
+ // Scanning — walk the scan trees, extract candidate spans, classify, resolve.
369
+ // ---------------------------------------------------------------------------
370
+
371
+ export interface Violation {
372
+ file: string;
373
+ line: number;
374
+ token: string;
375
+ category: Category;
376
+ hint: string;
377
+ }
378
+
379
+ /** POSIX relative path of `target` under `root`. */
380
+ function _relTo(target: string, root: string): string {
381
+ return path.relative(root, target).split(path.sep).join('/');
382
+ }
383
+
384
+ function _walkTree(base: string, match: (basename: string) => boolean): string[] {
385
+ const out: string[] = [];
386
+ const walk = (dir: string): void => {
387
+ let entries: fs.Dirent[];
388
+ try {
389
+ entries = fs.readdirSync(dir, { withFileTypes: true });
390
+ } catch {
391
+ return;
392
+ }
393
+ for (const e of entries) {
394
+ const full = path.join(dir, e.name);
395
+ if (e.isDirectory()) {
396
+ walk(full);
397
+ } else if (e.isFile() && match(e.name)) {
398
+ out.push(full);
399
+ }
400
+ }
401
+ };
402
+ walk(base);
403
+ return out;
404
+ }
405
+
406
+ function _collectTargets(root: string, scanTrees: readonly ScanTree[]): string[] {
407
+ const targets: string[] = [];
408
+ for (const tree of scanTrees) {
409
+ const base = path.join(root, tree.dir);
410
+ if (!_exists(base)) {
411
+ continue;
412
+ }
413
+ targets.push(..._walkTree(base, tree.match));
414
+ }
415
+ return targets.sort();
416
+ }
417
+
418
+ /** Extract single-backtick inline code spans from a (non-fence) line. */
419
+ function _inlineSpans(line: string): string[] {
420
+ const out: string[] = [];
421
+ const re = /`([^`\n]+)`/g;
422
+ let m: RegExpExecArray | null;
423
+ while ((m = re.exec(line)) !== null) {
424
+ out.push(m[1]!);
425
+ }
426
+ return out;
427
+ }
428
+
429
+ function _scanFile(p: string, root: string, sets: ResolutionSets): Violation[] {
430
+ const rel = _relTo(p, root);
431
+ if (SELF_DOCUMENTING_ALLOWLIST.has(rel)) {
432
+ return [];
433
+ }
434
+ let text: string;
435
+ try {
436
+ text = fs.readFileSync(p, 'utf-8');
437
+ } catch {
438
+ return [];
439
+ }
440
+ const lines = text.split('\n');
441
+
442
+ // Pass 1: find every line carrying the ignore marker (same-line suppression
443
+ // resolves the finding on that line; the finding on the NEXT line is
444
+ // resolved by checking the line above it below).
445
+ const ignoreLines = new Set<number>();
446
+ for (let idx = 0; idx < lines.length; idx++) {
447
+ if (IGNORE_MARKER_RE.test(lines[idx]!)) {
448
+ ignoreLines.add(idx + 1);
449
+ }
450
+ }
451
+
452
+ const out: Violation[] = [];
453
+ let inFence = false;
454
+ let fenceLang = '';
455
+
456
+ for (let idx = 0; idx < lines.length; idx++) {
457
+ const n = idx + 1;
458
+ const rawLine = lines[idx]!;
459
+ const stripped = rawLine.replace(/^\s+/, '');
460
+
461
+ if (stripped.startsWith('```')) {
462
+ if (!inFence) {
463
+ inFence = true;
464
+ fenceLang = stripped.slice(3).trim().toLowerCase();
465
+ } else {
466
+ inFence = false;
467
+ fenceLang = '';
468
+ }
469
+ continue;
470
+ }
471
+
472
+ const candidates: string[] = [];
473
+ if (inFence) {
474
+ if (BASH_FENCE_LANGS.has(fenceLang)) {
475
+ const noComment = rawLine.replace(HTML_COMMENT_RE, '');
476
+ const withoutPrompt = noComment.replace(/^\s*\$\s*/, '').trim();
477
+ if (withoutPrompt.length > 0 && !withoutPrompt.startsWith('#')) {
478
+ candidates.push(withoutPrompt);
479
+ }
480
+ }
481
+ } else {
482
+ const noComment = rawLine.replace(HTML_COMMENT_RE, '');
483
+ candidates.push(..._inlineSpans(noComment));
484
+ }
485
+
486
+ const suppressed = ignoreLines.has(n) || ignoreLines.has(n - 1);
487
+ for (const candidate of candidates) {
488
+ for (const claim of _claimsIn(candidate)) {
489
+ if (_isResolved(claim, sets)) {
490
+ continue;
491
+ }
492
+ if (suppressed) {
493
+ continue;
494
+ }
495
+ out.push({
496
+ file: rel,
497
+ line: n,
498
+ token: claim.token,
499
+ category: claim.category,
500
+ hint: _hint(claim.category),
501
+ });
502
+ }
503
+ }
504
+ }
505
+ return out;
506
+ }
507
+
508
+ export function scan(
509
+ root: string = REPO_ROOT,
510
+ scanTrees: readonly ScanTree[] = DEFAULT_SCAN_TREES,
511
+ ): Violation[] {
512
+ const sets = loadResolutionSets(REPO_ROOT);
513
+ const out: Violation[] = [];
514
+ for (const p of _collectTargets(root, scanTrees)) {
515
+ out.push(..._scanFile(p, root, sets));
516
+ }
517
+ return out;
518
+ }
519
+
520
+ // ---------------------------------------------------------------------------
521
+ // Output + CLI
522
+ // ---------------------------------------------------------------------------
523
+
524
+ export function format_text(violations: Violation[]): string {
525
+ if (violations.length === 0) {
526
+ return '✅ Every documented package command resolves.';
527
+ }
528
+ const lines: string[] = [
529
+ `❌ Found ${violations.length} unresolvable command reference(s):\n`,
530
+ ];
531
+ for (const v of violations) {
532
+ lines.push(` 🔴 ${v.file}:${v.line} → \`${v.token}\` (${v.category}) — ${v.hint}`);
533
+ }
534
+ lines.push(
535
+ '\nRegister the command (src/cli/registry.ts, a Taskfile task, a package.json ' +
536
+ 'script, or a src/domains/**/command.md cluster), fix the typo, or mark a ' +
537
+ 'deliberate example with <!-- lint-documented-commands: ignore -->.',
538
+ );
539
+ return lines.join('\n');
540
+ }
541
+
542
+ function _jsonDumpsAscii(obj: unknown): string {
543
+ const raw = JSON.stringify(obj, null, 2);
544
+ let out = '';
545
+ for (const ch of raw) {
546
+ const code = ch.codePointAt(0)!;
547
+ if (code < 0x80) {
548
+ out += ch;
549
+ } else {
550
+ for (let k = 0; k < ch.length; k++) {
551
+ out += '\\u' + ch.charCodeAt(k).toString(16).padStart(4, '0');
552
+ }
553
+ }
554
+ }
555
+ return out;
556
+ }
557
+
558
+ interface ParsedArgs {
559
+ format: 'text' | 'json';
560
+ root: string;
561
+ scanRoots: string[];
562
+ }
563
+
564
+ function _argparseError(message: string): never {
565
+ process.stderr.write(`lint_documented_commands: error: ${message}\n`);
566
+ process.exit(2);
567
+ }
568
+
569
+ function _parseArgs(argv: readonly string[]): ParsedArgs {
570
+ let format: 'text' | 'json' = 'text';
571
+ let root = REPO_ROOT;
572
+ const scanRoots: string[] = [];
573
+ for (let i = 0; i < argv.length; i++) {
574
+ const arg = argv[i]!;
575
+ if (arg === '--format') {
576
+ const v = argv[++i];
577
+ if (v === undefined) {
578
+ _argparseError('argument --format: expected one argument');
579
+ }
580
+ if (v !== 'text' && v !== 'json') {
581
+ _argparseError(
582
+ `argument --format: invalid choice: '${v}' (choose from 'text', 'json')`,
583
+ );
584
+ }
585
+ format = v;
586
+ } else if (arg.startsWith('--format=')) {
587
+ const v = arg.slice('--format='.length);
588
+ if (v !== 'text' && v !== 'json') {
589
+ _argparseError(
590
+ `argument --format: invalid choice: '${v}' (choose from 'text', 'json')`,
591
+ );
592
+ }
593
+ format = v;
594
+ } else if (arg === '--root') {
595
+ const v = argv[++i];
596
+ if (v === undefined) {
597
+ _argparseError('argument --root: expected one argument');
598
+ }
599
+ root = v;
600
+ } else if (arg.startsWith('--root=')) {
601
+ root = arg.slice('--root='.length);
602
+ } else if (arg === '--scan-root') {
603
+ const v = argv[++i];
604
+ if (v === undefined) {
605
+ _argparseError('argument --scan-root: expected one argument');
606
+ }
607
+ scanRoots.push(v);
608
+ } else if (arg.startsWith('--scan-root=')) {
609
+ scanRoots.push(arg.slice('--scan-root='.length));
610
+ } else if (arg === '-h' || arg === '--help') {
611
+ process.stdout.write(
612
+ 'usage: lint_documented_commands [-h] [--format {text,json}] [--root ROOT] ' +
613
+ '[--scan-root DIR ...]\n',
614
+ );
615
+ process.exit(0);
616
+ } else {
617
+ _argparseError(`unrecognized arguments: ${arg}`);
618
+ }
619
+ }
620
+ return { format, root, scanRoots };
621
+ }
622
+
623
+ function main(): number {
624
+ const args = _parseArgs(process.argv.slice(2));
625
+ const scanTrees: ScanTree[] = args.scanRoots.length
626
+ ? args.scanRoots.map((dir) => ({ dir, match: (n: string) => n.endsWith('.md') }))
627
+ : [...DEFAULT_SCAN_TREES];
628
+ let violations: Violation[];
629
+ try {
630
+ violations = scan(args.root, scanTrees);
631
+ } catch (e) {
632
+ const msg = e instanceof Error ? e.message : String(e);
633
+ process.stderr.write(`Internal error: ${msg}\n`);
634
+ return 3;
635
+ }
636
+ if (args.format === 'json') {
637
+ process.stdout.write(_jsonDumpsAscii(violations) + '\n');
638
+ } else {
639
+ process.stdout.write(format_text(violations) + '\n');
640
+ }
641
+ return violations.length ? 1 : 0;
642
+ }
643
+
644
+ function _isCliEntry(): boolean {
645
+ if (process.argv[1] === undefined) {
646
+ return false;
647
+ }
648
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
649
+ if (import.meta.url === argvUrl) {
650
+ return true;
651
+ }
652
+ try {
653
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
654
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
655
+ return here === argv;
656
+ } catch {
657
+ return false;
658
+ }
659
+ }
660
+
661
+ if (_isCliEntry() || process.argv[1] === _HERE) {
662
+ process.exit(main());
663
+ }
664
+
665
+ export {
666
+ REPO_ROOT,
667
+ DEFAULT_SCAN_TREES,
668
+ SELF_DOCUMENTING_ALLOWLIST,
669
+ main,
670
+ };