boost-skill-cli 1.2.31__tar.gz → 1.2.32__tar.gz

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 (1101) hide show
  1. boost_skill_cli-1.2.32/.vale/styles/config/vocabularies/boost/accept.txt +187 -0
  2. boost_skill_cli-1.2.32/CLAUDE.md +483 -0
  3. boost_skill_cli-1.2.32/CONTRIBUTING.md +278 -0
  4. boost_skill_cli-1.2.32/Makefile +253 -0
  5. boost_skill_cli-1.2.32/PKG-INFO +1327 -0
  6. boost_skill_cli-1.2.32/README.md +609 -0
  7. boost_skill_cli-1.2.32/boost +47 -0
  8. boost_skill_cli-1.2.32/boost_cli/__init__.py +35 -0
  9. boost_skill_cli-1.2.32/boost_cli/__main__.py +10 -0
  10. boost_skill_cli-1.2.32/boost_cli/_version.py +24 -0
  11. boost_skill_cli-1.2.32/boost_cli/cli.py +338 -0
  12. boost_skill_cli-1.2.32/boost_cli/cliparse.py +33 -0
  13. boost_skill_cli-1.2.32/boost_cli/commands/__init__.py +3 -0
  14. boost_skill_cli-1.2.32/boost_cli/commands/_common.py +80 -0
  15. boost_skill_cli-1.2.32/boost_cli/commands/bmad.py +581 -0
  16. boost_skill_cli-1.2.32/boost_cli/commands/configuration.py +1737 -0
  17. boost_skill_cli-1.2.32/boost_cli/commands/discovery.py +1674 -0
  18. boost_skill_cli-1.2.32/boost_cli/commands/hooks.py +158 -0
  19. boost_skill_cli-1.2.32/boost_cli/commands/info.py +1023 -0
  20. boost_skill_cli-1.2.32/boost_cli/commands/intelligence.py +1219 -0
  21. boost_skill_cli-1.2.32/boost_cli/commands/pkg.py +1606 -0
  22. boost_skill_cli-1.2.32/boost_cli/commands/quality.py +1317 -0
  23. boost_skill_cli-1.2.32/boost_cli/commands/run.py +118 -0
  24. boost_skill_cli-1.2.32/boost_cli/commands/safety.py +586 -0
  25. boost_skill_cli-1.2.32/boost_cli/commands/taps.py +385 -0
  26. boost_skill_cli-1.2.32/boost_cli/commands/team.py +750 -0
  27. boost_skill_cli-1.2.32/boost_cli/core/__init__.py +3 -0
  28. boost_skill_cli-1.2.32/boost_cli/core/adapters.py +561 -0
  29. boost_skill_cli-1.2.32/boost_cli/core/agents.py +81 -0
  30. boost_skill_cli-1.2.32/boost_cli/core/ai.py +161 -0
  31. boost_skill_cli-1.2.32/boost_cli/core/bmad.py +694 -0
  32. boost_skill_cli-1.2.32/boost_cli/core/bootstrap.py +137 -0
  33. boost_skill_cli-1.2.32/boost_cli/core/browse.py +648 -0
  34. boost_skill_cli-1.2.32/boost_cli/core/builtin.py +116 -0
  35. boost_skill_cli-1.2.32/boost_cli/core/capabilities.py +133 -0
  36. boost_skill_cli-1.2.32/boost_cli/core/catalog.py +662 -0
  37. boost_skill_cli-1.2.32/boost_cli/core/catalogbundle.py +267 -0
  38. boost_skill_cli-1.2.32/boost_cli/core/chat.py +395 -0
  39. boost_skill_cli-1.2.32/boost_cli/core/claude_settings.py +243 -0
  40. boost_skill_cli-1.2.32/boost_cli/core/complete.py +422 -0
  41. boost_skill_cli-1.2.32/boost_cli/core/config.py +228 -0
  42. boost_skill_cli-1.2.32/boost_cli/core/dense.py +972 -0
  43. boost_skill_cli-1.2.32/boost_cli/core/ed25519.py +131 -0
  44. boost_skill_cli-1.2.32/boost_cli/core/embed.py +287 -0
  45. boost_skill_cli-1.2.32/boost_cli/core/faithfulness.py +116 -0
  46. boost_skill_cli-1.2.32/boost_cli/core/frontmatter.py +178 -0
  47. boost_skill_cli-1.2.32/boost_cli/core/gitutil.py +302 -0
  48. boost_skill_cli-1.2.32/boost_cli/core/hookhost.py +242 -0
  49. boost_skill_cli-1.2.32/boost_cli/core/imperative.py +70 -0
  50. boost_skill_cli-1.2.32/boost_cli/core/injectscan.py +240 -0
  51. boost_skill_cli-1.2.32/boost_cli/core/installscan.py +115 -0
  52. boost_skill_cli-1.2.32/boost_cli/core/integrity.py +230 -0
  53. boost_skill_cli-1.2.32/boost_cli/core/journal.py +121 -0
  54. boost_skill_cli-1.2.32/boost_cli/core/localembed.py +246 -0
  55. boost_skill_cli-1.2.32/boost_cli/core/lockfile.py +254 -0
  56. boost_skill_cli-1.2.32/boost_cli/core/logs.py +354 -0
  57. boost_skill_cli-1.2.32/boost_cli/core/mcp.py +481 -0
  58. boost_skill_cli-1.2.32/boost_cli/core/mcpdecl.py +206 -0
  59. boost_skill_cli-1.2.32/boost_cli/core/mcphost.py +168 -0
  60. boost_skill_cli-1.2.32/boost_cli/core/minisign.py +127 -0
  61. boost_skill_cli-1.2.32/boost_cli/core/nethttp.py +69 -0
  62. boost_skill_cli-1.2.32/boost_cli/core/output.py +768 -0
  63. boost_skill_cli-1.2.32/boost_cli/core/paths.py +179 -0
  64. boost_skill_cli-1.2.32/boost_cli/core/policy.py +125 -0
  65. boost_skill_cli-1.2.32/boost_cli/core/projectlock.py +120 -0
  66. boost_skill_cli-1.2.32/boost_cli/core/provenance.py +163 -0
  67. boost_skill_cli-1.2.32/boost_cli/core/rag.py +1165 -0
  68. boost_skill_cli-1.2.32/boost_cli/core/registry.py +262 -0
  69. boost_skill_cli-1.2.32/boost_cli/core/resolve.py +138 -0
  70. boost_skill_cli-1.2.32/boost_cli/core/rules.py +174 -0
  71. boost_skill_cli-1.2.32/boost_cli/core/scopes.py +232 -0
  72. boost_skill_cli-1.2.32/boost_cli/core/secretscan.py +140 -0
  73. boost_skill_cli-1.2.32/boost_cli/core/selfupdate.py +270 -0
  74. boost_skill_cli-1.2.32/boost_cli/core/serve.py +949 -0
  75. boost_skill_cli-1.2.32/boost_cli/core/stackprobe.py +109 -0
  76. boost_skill_cli-1.2.32/boost_cli/core/staleness.py +77 -0
  77. boost_skill_cli-1.2.32/boost_cli/core/store.py +1653 -0
  78. boost_skill_cli-1.2.32/boost_cli/core/trustaudit.py +226 -0
  79. boost_skill_cli-1.2.32/boost_cli/core/typosquat.py +87 -0
  80. boost_skill_cli-1.2.32/boost_cli/core/updatediff.py +143 -0
  81. boost_skill_cli-1.2.32/boost_cli/core/util.py +316 -0
  82. boost_skill_cli-1.2.32/boost_cli/core/workflows.py +913 -0
  83. boost_skill_cli-1.2.32/boost_cli/errors.py +13 -0
  84. boost_skill_cli-1.2.32/boost_cli/spin.py +82 -0
  85. boost_skill_cli-1.2.32/boost_langchain/__init__.py +53 -0
  86. boost_skill_cli-1.2.32/boost_langchain/_compat.py +26 -0
  87. boost_skill_cli-1.2.32/boost_langchain/graph.py +101 -0
  88. boost_skill_cli-1.2.32/boost_langchain/loader.py +61 -0
  89. boost_skill_cli-1.2.32/boost_langchain/retriever.py +102 -0
  90. boost_skill_cli-1.2.32/boost_skill_cli.egg-info/PKG-INFO +1327 -0
  91. boost_skill_cli-1.2.32/boost_skill_cli.egg-info/SOURCES.txt +772 -0
  92. boost_skill_cli-1.2.32/docs/code-review.md +94 -0
  93. boost_skill_cli-1.2.32/docs/openssf-badge.md +372 -0
  94. boost_skill_cli-1.2.32/docs/rag-architecture.md +309 -0
  95. boost_skill_cli-1.2.32/docs/roadmap/items/openssf-gold-ceiling.md +55 -0
  96. boost_skill_cli-1.2.32/docs/roadmap.html +11889 -0
  97. boost_skill_cli-1.2.32/docs/security-design.md +230 -0
  98. boost_skill_cli-1.2.32/docs/verifying-releases.md +146 -0
  99. boost_skill_cli-1.2.32/evals/__init__.py +8 -0
  100. boost_skill_cli-1.2.32/evals/faithfulness.py +384 -0
  101. boost_skill_cli-1.2.32/evals/make_corpus.py +719 -0
  102. boost_skill_cli-1.2.32/evals/make_golden.py +277 -0
  103. boost_skill_cli-1.2.32/evals/metrics.py +200 -0
  104. boost_skill_cli-1.2.32/evals/publish_golden_dataset.py +93 -0
  105. boost_skill_cli-1.2.32/evals/run_evals.py +348 -0
  106. boost_skill_cli-1.2.32/noxfile.py +82 -0
  107. boost_skill_cli-1.2.32/pyproject.toml +339 -0
  108. boost_skill_cli-1.2.32/scripts/a11y_check.py +306 -0
  109. boost_skill_cli-1.2.32/scripts/add_spdx_headers.py +99 -0
  110. boost_skill_cli-1.2.32/scripts/bench_cli.sh +29 -0
  111. boost_skill_cli-1.2.32/scripts/build_command_reference.py +411 -0
  112. boost_skill_cli-1.2.32/scripts/build_demo_index.py +76 -0
  113. boost_skill_cli-1.2.32/scripts/build_registries.py +805 -0
  114. boost_skill_cli-1.2.32/scripts/build_roadmap.py +447 -0
  115. boost_skill_cli-1.2.32/scripts/build_scale_corpus.py +252 -0
  116. boost_skill_cli-1.2.32/scripts/check_anchors.py +110 -0
  117. boost_skill_cli-1.2.32/scripts/check_dco.py +114 -0
  118. boost_skill_cli-1.2.32/scripts/check_licenses.py +119 -0
  119. boost_skill_cli-1.2.32/scripts/check_required_checks.py +496 -0
  120. boost_skill_cli-1.2.32/scripts/ensure_eval_corpus.sh +47 -0
  121. boost_skill_cli-1.2.32/scripts/eval_corpus.py +641 -0
  122. boost_skill_cli-1.2.32/scripts/eval_explain.py +225 -0
  123. boost_skill_cli-1.2.32/scripts/eval_gate.py +241 -0
  124. boost_skill_cli-1.2.32/scripts/eval_recommend.py +274 -0
  125. boost_skill_cli-1.2.32/scripts/eval_retrieval.py +796 -0
  126. boost_skill_cli-1.2.32/scripts/eval_stats_summary.py +84 -0
  127. boost_skill_cli-1.2.32/scripts/import_budget.py +157 -0
  128. boost_skill_cli-1.2.32/scripts/lock_toolchain.py +394 -0
  129. boost_skill_cli-1.2.32/scripts/measure_registry.py +142 -0
  130. boost_skill_cli-1.2.32/scripts/mutation_gate.py +62 -0
  131. boost_skill_cli-1.2.32/scripts/mutation_shards.py +835 -0
  132. boost_skill_cli-1.2.32/scripts/page_budget.py +209 -0
  133. boost_skill_cli-1.2.32/scripts/perf_gate.py +151 -0
  134. boost_skill_cli-1.2.32/scripts/post_deploy_smoke.py +206 -0
  135. boost_skill_cli-1.2.32/scripts/publish_eval_json.py +129 -0
  136. boost_skill_cli-1.2.32/scripts/release_guard.py +177 -0
  137. boost_skill_cli-1.2.32/scripts/release_preflight.py +181 -0
  138. boost_skill_cli-1.2.32/scripts/serve_docs.py +149 -0
  139. boost_skill_cli-1.2.32/setup.cfg +25 -0
  140. boost_skill_cli-1.2.32/tests/bdd/features/environment.py +75 -0
  141. boost_skill_cli-1.2.32/tests/bdd/features/steps/cli_steps.py +120 -0
  142. boost_skill_cli-1.2.32/tests/bdd/features/steps/discovery_steps.py +79 -0
  143. boost_skill_cli-1.2.32/tests/bdd/features/steps/mcp_steps.py +74 -0
  144. boost_skill_cli-1.2.32/tests/bdd/features/steps/quality_steps.py +14 -0
  145. boost_skill_cli-1.2.32/tests/conftest.py +250 -0
  146. boost_skill_cli-1.2.32/tests/functional/test_capabilities_policy.py +121 -0
  147. boost_skill_cli-1.2.32/tests/functional/test_cli_adapt.py +132 -0
  148. boost_skill_cli-1.2.32/tests/functional/test_cli_bmad.py +521 -0
  149. boost_skill_cli-1.2.32/tests/functional/test_cli_catalog.py +192 -0
  150. boost_skill_cli-1.2.32/tests/functional/test_cli_chat.py +110 -0
  151. boost_skill_cli-1.2.32/tests/functional/test_cli_configuration.py +1927 -0
  152. boost_skill_cli-1.2.32/tests/functional/test_cli_discovery.py +1781 -0
  153. boost_skill_cli-1.2.32/tests/functional/test_cli_hooks.py +60 -0
  154. boost_skill_cli-1.2.32/tests/functional/test_cli_hooks_gemini.py +105 -0
  155. boost_skill_cli-1.2.32/tests/functional/test_cli_info.py +742 -0
  156. boost_skill_cli-1.2.32/tests/functional/test_cli_intelligence.py +620 -0
  157. boost_skill_cli-1.2.32/tests/functional/test_cli_pane_width.py +139 -0
  158. boost_skill_cli-1.2.32/tests/functional/test_cli_pkg.py +1718 -0
  159. boost_skill_cli-1.2.32/tests/functional/test_cli_quality.py +969 -0
  160. boost_skill_cli-1.2.32/tests/functional/test_cli_taps.py +365 -0
  161. boost_skill_cli-1.2.32/tests/functional/test_cli_team.py +612 -0
  162. boost_skill_cli-1.2.32/tests/functional/test_everyday_loop.py +70 -0
  163. boost_skill_cli-1.2.32/tests/functional/test_integrity_enforce.py +98 -0
  164. boost_skill_cli-1.2.32/tests/functional/test_kind_conformance.py +225 -0
  165. boost_skill_cli-1.2.32/tests/functional/test_property_parsers.py +131 -0
  166. boost_skill_cli-1.2.32/tests/functional/test_run.py +67 -0
  167. boost_skill_cli-1.2.32/tests/functional/test_tap_signing.py +152 -0
  168. boost_skill_cli-1.2.32/tests/functional/test_workspace_scope.py +332 -0
  169. boost_skill_cli-1.2.32/tests/fuzz/fuzz_frontmatter.py +129 -0
  170. boost_skill_cli-1.2.32/tests/fuzz/fuzz_registry.py +123 -0
  171. boost_skill_cli-1.2.32/tests/langchain/conftest.py +75 -0
  172. boost_skill_cli-1.2.32/tests/langchain/test_graph.py +155 -0
  173. boost_skill_cli-1.2.32/tests/langchain/test_loader.py +76 -0
  174. boost_skill_cli-1.2.32/tests/langchain/test_retriever.py +181 -0
  175. boost_skill_cli-1.2.32/tests/make_fixture.py +150 -0
  176. boost_skill_cli-1.2.32/tests/perf/test_benchmarks.py +61 -0
  177. boost_skill_cli-1.2.32/tests/smoke.sh +265 -0
  178. boost_skill_cli-1.2.32/tests/unit/test_a11y_check.py +216 -0
  179. boost_skill_cli-1.2.32/tests/unit/test_action_pin_lockstep.py +292 -0
  180. boost_skill_cli-1.2.32/tests/unit/test_adapters.py +399 -0
  181. boost_skill_cli-1.2.32/tests/unit/test_adapters_multi.py +382 -0
  182. boost_skill_cli-1.2.32/tests/unit/test_adapters_runner.py +144 -0
  183. boost_skill_cli-1.2.32/tests/unit/test_agents.py +164 -0
  184. boost_skill_cli-1.2.32/tests/unit/test_ai.py +441 -0
  185. boost_skill_cli-1.2.32/tests/unit/test_bmad_core.py +596 -0
  186. boost_skill_cli-1.2.32/tests/unit/test_boost_first_offer.py +181 -0
  187. boost_skill_cli-1.2.32/tests/unit/test_bootstrap.py +284 -0
  188. boost_skill_cli-1.2.32/tests/unit/test_browse.py +1056 -0
  189. boost_skill_cli-1.2.32/tests/unit/test_builtin.py +409 -0
  190. boost_skill_cli-1.2.32/tests/unit/test_capabilities.py +92 -0
  191. boost_skill_cli-1.2.32/tests/unit/test_catalog.py +1133 -0
  192. boost_skill_cli-1.2.32/tests/unit/test_catalogbundle.py +407 -0
  193. boost_skill_cli-1.2.32/tests/unit/test_chat.py +386 -0
  194. boost_skill_cli-1.2.32/tests/unit/test_check_anchors.py +81 -0
  195. boost_skill_cli-1.2.32/tests/unit/test_check_dco.py +181 -0
  196. boost_skill_cli-1.2.32/tests/unit/test_check_licenses.py +174 -0
  197. boost_skill_cli-1.2.32/tests/unit/test_claude_settings.py +125 -0
  198. boost_skill_cli-1.2.32/tests/unit/test_clean_internal_cache.py +111 -0
  199. boost_skill_cli-1.2.32/tests/unit/test_cliparse.py +45 -0
  200. boost_skill_cli-1.2.32/tests/unit/test_codeql_analysis_key.py +97 -0
  201. boost_skill_cli-1.2.32/tests/unit/test_command_reference_fresh.py +76 -0
  202. boost_skill_cli-1.2.32/tests/unit/test_community_health_files.py +92 -0
  203. boost_skill_cli-1.2.32/tests/unit/test_compact.py +177 -0
  204. boost_skill_cli-1.2.32/tests/unit/test_complete.py +365 -0
  205. boost_skill_cli-1.2.32/tests/unit/test_complete_rc_block.py +369 -0
  206. boost_skill_cli-1.2.32/tests/unit/test_config.py +287 -0
  207. boost_skill_cli-1.2.32/tests/unit/test_content_dedupe.py +146 -0
  208. boost_skill_cli-1.2.32/tests/unit/test_content_identity.py +439 -0
  209. boost_skill_cli-1.2.32/tests/unit/test_crash_redaction.py +60 -0
  210. boost_skill_cli-1.2.32/tests/unit/test_dedup_trust.py +119 -0
  211. boost_skill_cli-1.2.32/tests/unit/test_demo_index.py +110 -0
  212. boost_skill_cli-1.2.32/tests/unit/test_dense.py +322 -0
  213. boost_skill_cli-1.2.32/tests/unit/test_dense_embed_dedupe.py +218 -0
  214. boost_skill_cli-1.2.32/tests/unit/test_dense_fallback.py +563 -0
  215. boost_skill_cli-1.2.32/tests/unit/test_dense_fix_hint.py +226 -0
  216. boost_skill_cli-1.2.32/tests/unit/test_dense_quantized.py +378 -0
  217. boost_skill_cli-1.2.32/tests/unit/test_dense_ready_order.py +42 -0
  218. boost_skill_cli-1.2.32/tests/unit/test_dense_shard_real_schema.py +157 -0
  219. boost_skill_cli-1.2.32/tests/unit/test_dense_shard_unreadable_vectors.py +111 -0
  220. boost_skill_cli-1.2.32/tests/unit/test_dense_shards.py +353 -0
  221. boost_skill_cli-1.2.32/tests/unit/test_dense_status.py +353 -0
  222. boost_skill_cli-1.2.32/tests/unit/test_dense_status_cheap.py +283 -0
  223. boost_skill_cli-1.2.32/tests/unit/test_dependabot_config.py +166 -0
  224. boost_skill_cli-1.2.32/tests/unit/test_docs_pages_linked.py +81 -0
  225. boost_skill_cli-1.2.32/tests/unit/test_docsite_chrome.py +286 -0
  226. boost_skill_cli-1.2.32/tests/unit/test_ed25519.py +97 -0
  227. boost_skill_cli-1.2.32/tests/unit/test_embed.py +218 -0
  228. boost_skill_cli-1.2.32/tests/unit/test_embed_local.py +266 -0
  229. boost_skill_cli-1.2.32/tests/unit/test_embed_truncated_response.py +70 -0
  230. boost_skill_cli-1.2.32/tests/unit/test_entry_key.py +105 -0
  231. boost_skill_cli-1.2.32/tests/unit/test_errors_and_cli_table.py +268 -0
  232. boost_skill_cli-1.2.32/tests/unit/test_eval_baseline.py +184 -0
  233. boost_skill_cli-1.2.32/tests/unit/test_eval_corpus.py +700 -0
  234. boost_skill_cli-1.2.32/tests/unit/test_eval_faithfulness.py +261 -0
  235. boost_skill_cli-1.2.32/tests/unit/test_eval_gate.py +196 -0
  236. boost_skill_cli-1.2.32/tests/unit/test_eval_grading.py +337 -0
  237. boost_skill_cli-1.2.32/tests/unit/test_eval_metrics.py +257 -0
  238. boost_skill_cli-1.2.32/tests/unit/test_eval_stats_summary.py +82 -0
  239. boost_skill_cli-1.2.32/tests/unit/test_failure_alerting_covers_unattended.py +178 -0
  240. boost_skill_cli-1.2.32/tests/unit/test_faithfulness.py +89 -0
  241. boost_skill_cli-1.2.32/tests/unit/test_frontmatter.py +331 -0
  242. boost_skill_cli-1.2.32/tests/unit/test_fuzz_targets.py +89 -0
  243. boost_skill_cli-1.2.32/tests/unit/test_gemini_agent_sanitize.py +1359 -0
  244. boost_skill_cli-1.2.32/tests/unit/test_gitleaks_config.py +61 -0
  245. boost_skill_cli-1.2.32/tests/unit/test_gitutil.py +350 -0
  246. boost_skill_cli-1.2.32/tests/unit/test_gitutil_lfs.py +72 -0
  247. boost_skill_cli-1.2.32/tests/unit/test_gitutil_sparse.py +295 -0
  248. boost_skill_cli-1.2.32/tests/unit/test_hook_settings_hosts.py +119 -0
  249. boost_skill_cli-1.2.32/tests/unit/test_hookhost.py +181 -0
  250. boost_skill_cli-1.2.32/tests/unit/test_imperative.py +103 -0
  251. boost_skill_cli-1.2.32/tests/unit/test_import_budget.py +137 -0
  252. boost_skill_cli-1.2.32/tests/unit/test_injectscan.py +284 -0
  253. boost_skill_cli-1.2.32/tests/unit/test_install_permission_error.py +58 -0
  254. boost_skill_cli-1.2.32/tests/unit/test_installscan.py +165 -0
  255. boost_skill_cli-1.2.32/tests/unit/test_integrity.py +231 -0
  256. boost_skill_cli-1.2.32/tests/unit/test_journal.py +281 -0
  257. boost_skill_cli-1.2.32/tests/unit/test_langchain_packaging.py +112 -0
  258. boost_skill_cli-1.2.32/tests/unit/test_link_ownership.py +110 -0
  259. boost_skill_cli-1.2.32/tests/unit/test_localembed.py +493 -0
  260. boost_skill_cli-1.2.32/tests/unit/test_localembed_e2e.py +172 -0
  261. boost_skill_cli-1.2.32/tests/unit/test_lockfile.py +276 -0
  262. boost_skill_cli-1.2.32/tests/unit/test_logs.py +615 -0
  263. boost_skill_cli-1.2.32/tests/unit/test_marketing_counts.py +93 -0
  264. boost_skill_cli-1.2.32/tests/unit/test_mcp.py +1159 -0
  265. boost_skill_cli-1.2.32/tests/unit/test_mcp_install_scan.py +108 -0
  266. boost_skill_cli-1.2.32/tests/unit/test_mcpdecl.py +357 -0
  267. boost_skill_cli-1.2.32/tests/unit/test_mcphost.py +197 -0
  268. boost_skill_cli-1.2.32/tests/unit/test_measure_registry.py +135 -0
  269. boost_skill_cli-1.2.32/tests/unit/test_minisign.py +157 -0
  270. boost_skill_cli-1.2.32/tests/unit/test_mutation_hardening.py +250 -0
  271. boost_skill_cli-1.2.32/tests/unit/test_mutation_shards.py +392 -0
  272. boost_skill_cli-1.2.32/tests/unit/test_mutation_subfile_shards.py +591 -0
  273. boost_skill_cli-1.2.32/tests/unit/test_mutmut_source_paths.py +144 -0
  274. boost_skill_cli-1.2.32/tests/unit/test_nethttp.py +122 -0
  275. boost_skill_cli-1.2.32/tests/unit/test_output.py +1521 -0
  276. boost_skill_cli-1.2.32/tests/unit/test_page_budget.py +173 -0
  277. boost_skill_cli-1.2.32/tests/unit/test_paths.py +170 -0
  278. boost_skill_cli-1.2.32/tests/unit/test_perf_gate.py +66 -0
  279. boost_skill_cli-1.2.32/tests/unit/test_pkg_confusions.py +47 -0
  280. boost_skill_cli-1.2.32/tests/unit/test_pkg_injection.py +61 -0
  281. boost_skill_cli-1.2.32/tests/unit/test_pkg_secrets.py +56 -0
  282. boost_skill_cli-1.2.32/tests/unit/test_platform_pins.py +387 -0
  283. boost_skill_cli-1.2.32/tests/unit/test_policy.py +230 -0
  284. boost_skill_cli-1.2.32/tests/unit/test_post_deploy_smoke.py +220 -0
  285. boost_skill_cli-1.2.32/tests/unit/test_project_mcp_sidecar.py +189 -0
  286. boost_skill_cli-1.2.32/tests/unit/test_projectlock.py +138 -0
  287. boost_skill_cli-1.2.32/tests/unit/test_provenance.py +128 -0
  288. boost_skill_cli-1.2.32/tests/unit/test_publish_golden_dataset.py +228 -0
  289. boost_skill_cli-1.2.32/tests/unit/test_rag.py +1535 -0
  290. boost_skill_cli-1.2.32/tests/unit/test_rag_fastpath.py +281 -0
  291. boost_skill_cli-1.2.32/tests/unit/test_rag_fusion.py +308 -0
  292. boost_skill_cli-1.2.32/tests/unit/test_registries_fresh.py +51 -0
  293. boost_skill_cli-1.2.32/tests/unit/test_registry.py +352 -0
  294. boost_skill_cli-1.2.32/tests/unit/test_registry_categories.py +389 -0
  295. boost_skill_cli-1.2.32/tests/unit/test_registry_control_chars.py +235 -0
  296. boost_skill_cli-1.2.32/tests/unit/test_release_guard.py +229 -0
  297. boost_skill_cli-1.2.32/tests/unit/test_release_preflight.py +210 -0
  298. boost_skill_cli-1.2.32/tests/unit/test_required_checks.py +529 -0
  299. boost_skill_cli-1.2.32/tests/unit/test_rerank_cache.py +130 -0
  300. boost_skill_cli-1.2.32/tests/unit/test_resolve.py +164 -0
  301. boost_skill_cli-1.2.32/tests/unit/test_roadmap_fresh.py +407 -0
  302. boost_skill_cli-1.2.32/tests/unit/test_rules.py +297 -0
  303. boost_skill_cli-1.2.32/tests/unit/test_scale_corpus.py +268 -0
  304. boost_skill_cli-1.2.32/tests/unit/test_scopes.py +325 -0
  305. boost_skill_cli-1.2.32/tests/unit/test_secretscan.py +156 -0
  306. boost_skill_cli-1.2.32/tests/unit/test_selfupdate.py +531 -0
  307. boost_skill_cli-1.2.32/tests/unit/test_serve.py +1135 -0
  308. boost_skill_cli-1.2.32/tests/unit/test_serve_docs.py +199 -0
  309. boost_skill_cli-1.2.32/tests/unit/test_shards_matrix.py +138 -0
  310. boost_skill_cli-1.2.32/tests/unit/test_smoke_covers_every_command.py +75 -0
  311. boost_skill_cli-1.2.32/tests/unit/test_spdx_headers.py +100 -0
  312. boost_skill_cli-1.2.32/tests/unit/test_spin.py +111 -0
  313. boost_skill_cli-1.2.32/tests/unit/test_stackprobe.py +117 -0
  314. boost_skill_cli-1.2.32/tests/unit/test_staleness.py +104 -0
  315. boost_skill_cli-1.2.32/tests/unit/test_store.py +2679 -0
  316. boost_skill_cli-1.2.32/tests/unit/test_store_materialize.py +112 -0
  317. boost_skill_cli-1.2.32/tests/unit/test_sync_blocked_links.py +130 -0
  318. boost_skill_cli-1.2.32/tests/unit/test_sync_repairs_gutted_skill.py +98 -0
  319. boost_skill_cli-1.2.32/tests/unit/test_token_parity.py +34 -0
  320. boost_skill_cli-1.2.32/tests/unit/test_toolchain_lock.py +336 -0
  321. boost_skill_cli-1.2.32/tests/unit/test_trustaudit.py +371 -0
  322. boost_skill_cli-1.2.32/tests/unit/test_typosquat.py +136 -0
  323. boost_skill_cli-1.2.32/tests/unit/test_updatediff.py +173 -0
  324. boost_skill_cli-1.2.32/tests/unit/test_util.py +663 -0
  325. boost_skill_cli-1.2.32/tests/unit/test_version.py +52 -0
  326. boost_skill_cli-1.2.32/tests/unit/test_visual_harness_flags.py +123 -0
  327. boost_skill_cli-1.2.32/tests/unit/test_workflow_concurrency.py +114 -0
  328. boost_skill_cli-1.2.32/tests/unit/test_workflow_concurrency_groups.py +146 -0
  329. boost_skill_cli-1.2.32/tests/unit/test_workflow_push_has_credentials.py +142 -0
  330. boost_skill_cli-1.2.32/tests/unit/test_workflow_timeouts.py +75 -0
  331. boost_skill_cli-1.2.32/tests/unit/test_workflows.py +299 -0
  332. boost_skill_cli-1.2.32/tests/unit/test_zizmor_ignores_still_anchor.py +120 -0
  333. boost_skill_cli-1.2.31/.vale/styles/config/vocabularies/boost/accept.txt +0 -180
  334. boost_skill_cli-1.2.31/CLAUDE.md +0 -472
  335. boost_skill_cli-1.2.31/CONTRIBUTING.md +0 -233
  336. boost_skill_cli-1.2.31/Makefile +0 -252
  337. boost_skill_cli-1.2.31/PKG-INFO +0 -1327
  338. boost_skill_cli-1.2.31/README.md +0 -609
  339. boost_skill_cli-1.2.31/boost +0 -45
  340. boost_skill_cli-1.2.31/boost_cli/__init__.py +0 -33
  341. boost_skill_cli-1.2.31/boost_cli/__main__.py +0 -8
  342. boost_skill_cli-1.2.31/boost_cli/_version.py +0 -24
  343. boost_skill_cli-1.2.31/boost_cli/cli.py +0 -336
  344. boost_skill_cli-1.2.31/boost_cli/cliparse.py +0 -31
  345. boost_skill_cli-1.2.31/boost_cli/commands/__init__.py +0 -0
  346. boost_skill_cli-1.2.31/boost_cli/commands/_common.py +0 -78
  347. boost_skill_cli-1.2.31/boost_cli/commands/bmad.py +0 -579
  348. boost_skill_cli-1.2.31/boost_cli/commands/configuration.py +0 -1735
  349. boost_skill_cli-1.2.31/boost_cli/commands/discovery.py +0 -1672
  350. boost_skill_cli-1.2.31/boost_cli/commands/hooks.py +0 -156
  351. boost_skill_cli-1.2.31/boost_cli/commands/info.py +0 -1021
  352. boost_skill_cli-1.2.31/boost_cli/commands/intelligence.py +0 -1217
  353. boost_skill_cli-1.2.31/boost_cli/commands/pkg.py +0 -1604
  354. boost_skill_cli-1.2.31/boost_cli/commands/quality.py +0 -1315
  355. boost_skill_cli-1.2.31/boost_cli/commands/run.py +0 -116
  356. boost_skill_cli-1.2.31/boost_cli/commands/safety.py +0 -584
  357. boost_skill_cli-1.2.31/boost_cli/commands/taps.py +0 -383
  358. boost_skill_cli-1.2.31/boost_cli/commands/team.py +0 -748
  359. boost_skill_cli-1.2.31/boost_cli/core/__init__.py +0 -0
  360. boost_skill_cli-1.2.31/boost_cli/core/adapters.py +0 -559
  361. boost_skill_cli-1.2.31/boost_cli/core/agents.py +0 -79
  362. boost_skill_cli-1.2.31/boost_cli/core/ai.py +0 -159
  363. boost_skill_cli-1.2.31/boost_cli/core/bmad.py +0 -692
  364. boost_skill_cli-1.2.31/boost_cli/core/bootstrap.py +0 -135
  365. boost_skill_cli-1.2.31/boost_cli/core/browse.py +0 -646
  366. boost_skill_cli-1.2.31/boost_cli/core/builtin.py +0 -114
  367. boost_skill_cli-1.2.31/boost_cli/core/capabilities.py +0 -131
  368. boost_skill_cli-1.2.31/boost_cli/core/catalog.py +0 -660
  369. boost_skill_cli-1.2.31/boost_cli/core/catalogbundle.py +0 -265
  370. boost_skill_cli-1.2.31/boost_cli/core/chat.py +0 -393
  371. boost_skill_cli-1.2.31/boost_cli/core/claude_settings.py +0 -241
  372. boost_skill_cli-1.2.31/boost_cli/core/complete.py +0 -420
  373. boost_skill_cli-1.2.31/boost_cli/core/config.py +0 -226
  374. boost_skill_cli-1.2.31/boost_cli/core/dense.py +0 -970
  375. boost_skill_cli-1.2.31/boost_cli/core/ed25519.py +0 -129
  376. boost_skill_cli-1.2.31/boost_cli/core/embed.py +0 -285
  377. boost_skill_cli-1.2.31/boost_cli/core/faithfulness.py +0 -114
  378. boost_skill_cli-1.2.31/boost_cli/core/frontmatter.py +0 -176
  379. boost_skill_cli-1.2.31/boost_cli/core/gitutil.py +0 -300
  380. boost_skill_cli-1.2.31/boost_cli/core/hookhost.py +0 -240
  381. boost_skill_cli-1.2.31/boost_cli/core/imperative.py +0 -68
  382. boost_skill_cli-1.2.31/boost_cli/core/injectscan.py +0 -238
  383. boost_skill_cli-1.2.31/boost_cli/core/installscan.py +0 -113
  384. boost_skill_cli-1.2.31/boost_cli/core/integrity.py +0 -228
  385. boost_skill_cli-1.2.31/boost_cli/core/journal.py +0 -119
  386. boost_skill_cli-1.2.31/boost_cli/core/localembed.py +0 -244
  387. boost_skill_cli-1.2.31/boost_cli/core/lockfile.py +0 -252
  388. boost_skill_cli-1.2.31/boost_cli/core/logs.py +0 -352
  389. boost_skill_cli-1.2.31/boost_cli/core/mcp.py +0 -479
  390. boost_skill_cli-1.2.31/boost_cli/core/mcpdecl.py +0 -204
  391. boost_skill_cli-1.2.31/boost_cli/core/mcphost.py +0 -166
  392. boost_skill_cli-1.2.31/boost_cli/core/minisign.py +0 -125
  393. boost_skill_cli-1.2.31/boost_cli/core/nethttp.py +0 -67
  394. boost_skill_cli-1.2.31/boost_cli/core/output.py +0 -766
  395. boost_skill_cli-1.2.31/boost_cli/core/paths.py +0 -177
  396. boost_skill_cli-1.2.31/boost_cli/core/policy.py +0 -123
  397. boost_skill_cli-1.2.31/boost_cli/core/projectlock.py +0 -118
  398. boost_skill_cli-1.2.31/boost_cli/core/provenance.py +0 -161
  399. boost_skill_cli-1.2.31/boost_cli/core/rag.py +0 -1163
  400. boost_skill_cli-1.2.31/boost_cli/core/registry.py +0 -260
  401. boost_skill_cli-1.2.31/boost_cli/core/resolve.py +0 -136
  402. boost_skill_cli-1.2.31/boost_cli/core/rules.py +0 -172
  403. boost_skill_cli-1.2.31/boost_cli/core/scopes.py +0 -230
  404. boost_skill_cli-1.2.31/boost_cli/core/secretscan.py +0 -138
  405. boost_skill_cli-1.2.31/boost_cli/core/selfupdate.py +0 -268
  406. boost_skill_cli-1.2.31/boost_cli/core/serve.py +0 -947
  407. boost_skill_cli-1.2.31/boost_cli/core/stackprobe.py +0 -107
  408. boost_skill_cli-1.2.31/boost_cli/core/staleness.py +0 -75
  409. boost_skill_cli-1.2.31/boost_cli/core/store.py +0 -1651
  410. boost_skill_cli-1.2.31/boost_cli/core/trustaudit.py +0 -224
  411. boost_skill_cli-1.2.31/boost_cli/core/typosquat.py +0 -85
  412. boost_skill_cli-1.2.31/boost_cli/core/updatediff.py +0 -141
  413. boost_skill_cli-1.2.31/boost_cli/core/util.py +0 -314
  414. boost_skill_cli-1.2.31/boost_cli/core/workflows.py +0 -911
  415. boost_skill_cli-1.2.31/boost_cli/errors.py +0 -11
  416. boost_skill_cli-1.2.31/boost_cli/spin.py +0 -80
  417. boost_skill_cli-1.2.31/boost_langchain/__init__.py +0 -51
  418. boost_skill_cli-1.2.31/boost_langchain/_compat.py +0 -24
  419. boost_skill_cli-1.2.31/boost_langchain/graph.py +0 -99
  420. boost_skill_cli-1.2.31/boost_langchain/loader.py +0 -59
  421. boost_skill_cli-1.2.31/boost_langchain/retriever.py +0 -100
  422. boost_skill_cli-1.2.31/boost_skill_cli.egg-info/PKG-INFO +0 -1327
  423. boost_skill_cli-1.2.31/boost_skill_cli.egg-info/SOURCES.txt +0 -768
  424. boost_skill_cli-1.2.31/docs/openssf-badge.md +0 -270
  425. boost_skill_cli-1.2.31/docs/rag-architecture.md +0 -309
  426. boost_skill_cli-1.2.31/docs/roadmap.html +0 -11838
  427. boost_skill_cli-1.2.31/docs/security-design.md +0 -191
  428. boost_skill_cli-1.2.31/docs/verifying-releases.md +0 -101
  429. boost_skill_cli-1.2.31/evals/__init__.py +0 -6
  430. boost_skill_cli-1.2.31/evals/faithfulness.py +0 -382
  431. boost_skill_cli-1.2.31/evals/make_corpus.py +0 -717
  432. boost_skill_cli-1.2.31/evals/make_golden.py +0 -275
  433. boost_skill_cli-1.2.31/evals/metrics.py +0 -198
  434. boost_skill_cli-1.2.31/evals/publish_golden_dataset.py +0 -91
  435. boost_skill_cli-1.2.31/evals/run_evals.py +0 -346
  436. boost_skill_cli-1.2.31/noxfile.py +0 -80
  437. boost_skill_cli-1.2.31/pyproject.toml +0 -331
  438. boost_skill_cli-1.2.31/scripts/a11y_check.py +0 -304
  439. boost_skill_cli-1.2.31/scripts/bench_cli.sh +0 -27
  440. boost_skill_cli-1.2.31/scripts/build_command_reference.py +0 -409
  441. boost_skill_cli-1.2.31/scripts/build_demo_index.py +0 -74
  442. boost_skill_cli-1.2.31/scripts/build_registries.py +0 -803
  443. boost_skill_cli-1.2.31/scripts/build_roadmap.py +0 -445
  444. boost_skill_cli-1.2.31/scripts/build_scale_corpus.py +0 -250
  445. boost_skill_cli-1.2.31/scripts/check_anchors.py +0 -108
  446. boost_skill_cli-1.2.31/scripts/check_dco.py +0 -112
  447. boost_skill_cli-1.2.31/scripts/check_licenses.py +0 -117
  448. boost_skill_cli-1.2.31/scripts/check_required_checks.py +0 -494
  449. boost_skill_cli-1.2.31/scripts/ensure_eval_corpus.sh +0 -45
  450. boost_skill_cli-1.2.31/scripts/eval_corpus.py +0 -639
  451. boost_skill_cli-1.2.31/scripts/eval_explain.py +0 -223
  452. boost_skill_cli-1.2.31/scripts/eval_gate.py +0 -239
  453. boost_skill_cli-1.2.31/scripts/eval_recommend.py +0 -272
  454. boost_skill_cli-1.2.31/scripts/eval_retrieval.py +0 -794
  455. boost_skill_cli-1.2.31/scripts/eval_stats_summary.py +0 -82
  456. boost_skill_cli-1.2.31/scripts/import_budget.py +0 -155
  457. boost_skill_cli-1.2.31/scripts/lock_toolchain.py +0 -392
  458. boost_skill_cli-1.2.31/scripts/measure_registry.py +0 -140
  459. boost_skill_cli-1.2.31/scripts/mutation_gate.py +0 -60
  460. boost_skill_cli-1.2.31/scripts/mutation_shards.py +0 -833
  461. boost_skill_cli-1.2.31/scripts/page_budget.py +0 -207
  462. boost_skill_cli-1.2.31/scripts/perf_gate.py +0 -149
  463. boost_skill_cli-1.2.31/scripts/post_deploy_smoke.py +0 -204
  464. boost_skill_cli-1.2.31/scripts/publish_eval_json.py +0 -127
  465. boost_skill_cli-1.2.31/scripts/release_guard.py +0 -175
  466. boost_skill_cli-1.2.31/scripts/release_preflight.py +0 -179
  467. boost_skill_cli-1.2.31/scripts/serve_docs.py +0 -147
  468. boost_skill_cli-1.2.31/setup.cfg +0 -24
  469. boost_skill_cli-1.2.31/tests/bdd/features/environment.py +0 -73
  470. boost_skill_cli-1.2.31/tests/bdd/features/steps/cli_steps.py +0 -118
  471. boost_skill_cli-1.2.31/tests/bdd/features/steps/discovery_steps.py +0 -77
  472. boost_skill_cli-1.2.31/tests/bdd/features/steps/mcp_steps.py +0 -72
  473. boost_skill_cli-1.2.31/tests/bdd/features/steps/quality_steps.py +0 -12
  474. boost_skill_cli-1.2.31/tests/conftest.py +0 -248
  475. boost_skill_cli-1.2.31/tests/functional/test_capabilities_policy.py +0 -119
  476. boost_skill_cli-1.2.31/tests/functional/test_cli_adapt.py +0 -130
  477. boost_skill_cli-1.2.31/tests/functional/test_cli_bmad.py +0 -519
  478. boost_skill_cli-1.2.31/tests/functional/test_cli_catalog.py +0 -190
  479. boost_skill_cli-1.2.31/tests/functional/test_cli_chat.py +0 -108
  480. boost_skill_cli-1.2.31/tests/functional/test_cli_configuration.py +0 -1925
  481. boost_skill_cli-1.2.31/tests/functional/test_cli_discovery.py +0 -1779
  482. boost_skill_cli-1.2.31/tests/functional/test_cli_hooks.py +0 -58
  483. boost_skill_cli-1.2.31/tests/functional/test_cli_hooks_gemini.py +0 -103
  484. boost_skill_cli-1.2.31/tests/functional/test_cli_info.py +0 -740
  485. boost_skill_cli-1.2.31/tests/functional/test_cli_intelligence.py +0 -618
  486. boost_skill_cli-1.2.31/tests/functional/test_cli_pane_width.py +0 -137
  487. boost_skill_cli-1.2.31/tests/functional/test_cli_pkg.py +0 -1716
  488. boost_skill_cli-1.2.31/tests/functional/test_cli_quality.py +0 -967
  489. boost_skill_cli-1.2.31/tests/functional/test_cli_taps.py +0 -363
  490. boost_skill_cli-1.2.31/tests/functional/test_cli_team.py +0 -610
  491. boost_skill_cli-1.2.31/tests/functional/test_everyday_loop.py +0 -68
  492. boost_skill_cli-1.2.31/tests/functional/test_integrity_enforce.py +0 -96
  493. boost_skill_cli-1.2.31/tests/functional/test_kind_conformance.py +0 -223
  494. boost_skill_cli-1.2.31/tests/functional/test_property_parsers.py +0 -129
  495. boost_skill_cli-1.2.31/tests/functional/test_run.py +0 -65
  496. boost_skill_cli-1.2.31/tests/functional/test_tap_signing.py +0 -150
  497. boost_skill_cli-1.2.31/tests/functional/test_workspace_scope.py +0 -330
  498. boost_skill_cli-1.2.31/tests/fuzz/fuzz_frontmatter.py +0 -127
  499. boost_skill_cli-1.2.31/tests/fuzz/fuzz_registry.py +0 -121
  500. boost_skill_cli-1.2.31/tests/langchain/conftest.py +0 -73
  501. boost_skill_cli-1.2.31/tests/langchain/test_graph.py +0 -153
  502. boost_skill_cli-1.2.31/tests/langchain/test_loader.py +0 -74
  503. boost_skill_cli-1.2.31/tests/langchain/test_retriever.py +0 -179
  504. boost_skill_cli-1.2.31/tests/make_fixture.py +0 -148
  505. boost_skill_cli-1.2.31/tests/perf/test_benchmarks.py +0 -59
  506. boost_skill_cli-1.2.31/tests/smoke.sh +0 -263
  507. boost_skill_cli-1.2.31/tests/unit/test_a11y_check.py +0 -214
  508. boost_skill_cli-1.2.31/tests/unit/test_action_pin_lockstep.py +0 -290
  509. boost_skill_cli-1.2.31/tests/unit/test_adapters.py +0 -397
  510. boost_skill_cli-1.2.31/tests/unit/test_adapters_multi.py +0 -380
  511. boost_skill_cli-1.2.31/tests/unit/test_adapters_runner.py +0 -142
  512. boost_skill_cli-1.2.31/tests/unit/test_agents.py +0 -162
  513. boost_skill_cli-1.2.31/tests/unit/test_ai.py +0 -439
  514. boost_skill_cli-1.2.31/tests/unit/test_bmad_core.py +0 -594
  515. boost_skill_cli-1.2.31/tests/unit/test_boost_first_offer.py +0 -179
  516. boost_skill_cli-1.2.31/tests/unit/test_bootstrap.py +0 -282
  517. boost_skill_cli-1.2.31/tests/unit/test_browse.py +0 -1054
  518. boost_skill_cli-1.2.31/tests/unit/test_builtin.py +0 -407
  519. boost_skill_cli-1.2.31/tests/unit/test_capabilities.py +0 -90
  520. boost_skill_cli-1.2.31/tests/unit/test_catalog.py +0 -1131
  521. boost_skill_cli-1.2.31/tests/unit/test_catalogbundle.py +0 -405
  522. boost_skill_cli-1.2.31/tests/unit/test_chat.py +0 -384
  523. boost_skill_cli-1.2.31/tests/unit/test_check_anchors.py +0 -79
  524. boost_skill_cli-1.2.31/tests/unit/test_check_dco.py +0 -179
  525. boost_skill_cli-1.2.31/tests/unit/test_check_licenses.py +0 -172
  526. boost_skill_cli-1.2.31/tests/unit/test_claude_settings.py +0 -123
  527. boost_skill_cli-1.2.31/tests/unit/test_clean_internal_cache.py +0 -109
  528. boost_skill_cli-1.2.31/tests/unit/test_cliparse.py +0 -43
  529. boost_skill_cli-1.2.31/tests/unit/test_codeql_analysis_key.py +0 -95
  530. boost_skill_cli-1.2.31/tests/unit/test_command_reference_fresh.py +0 -74
  531. boost_skill_cli-1.2.31/tests/unit/test_community_health_files.py +0 -90
  532. boost_skill_cli-1.2.31/tests/unit/test_compact.py +0 -175
  533. boost_skill_cli-1.2.31/tests/unit/test_complete.py +0 -363
  534. boost_skill_cli-1.2.31/tests/unit/test_complete_rc_block.py +0 -367
  535. boost_skill_cli-1.2.31/tests/unit/test_config.py +0 -285
  536. boost_skill_cli-1.2.31/tests/unit/test_content_dedupe.py +0 -144
  537. boost_skill_cli-1.2.31/tests/unit/test_content_identity.py +0 -437
  538. boost_skill_cli-1.2.31/tests/unit/test_crash_redaction.py +0 -58
  539. boost_skill_cli-1.2.31/tests/unit/test_dedup_trust.py +0 -117
  540. boost_skill_cli-1.2.31/tests/unit/test_demo_index.py +0 -108
  541. boost_skill_cli-1.2.31/tests/unit/test_dense.py +0 -320
  542. boost_skill_cli-1.2.31/tests/unit/test_dense_embed_dedupe.py +0 -216
  543. boost_skill_cli-1.2.31/tests/unit/test_dense_fallback.py +0 -561
  544. boost_skill_cli-1.2.31/tests/unit/test_dense_fix_hint.py +0 -224
  545. boost_skill_cli-1.2.31/tests/unit/test_dense_quantized.py +0 -376
  546. boost_skill_cli-1.2.31/tests/unit/test_dense_ready_order.py +0 -40
  547. boost_skill_cli-1.2.31/tests/unit/test_dense_shard_real_schema.py +0 -155
  548. boost_skill_cli-1.2.31/tests/unit/test_dense_shard_unreadable_vectors.py +0 -109
  549. boost_skill_cli-1.2.31/tests/unit/test_dense_shards.py +0 -351
  550. boost_skill_cli-1.2.31/tests/unit/test_dense_status.py +0 -351
  551. boost_skill_cli-1.2.31/tests/unit/test_dense_status_cheap.py +0 -281
  552. boost_skill_cli-1.2.31/tests/unit/test_dependabot_config.py +0 -164
  553. boost_skill_cli-1.2.31/tests/unit/test_docs_pages_linked.py +0 -79
  554. boost_skill_cli-1.2.31/tests/unit/test_docsite_chrome.py +0 -284
  555. boost_skill_cli-1.2.31/tests/unit/test_ed25519.py +0 -95
  556. boost_skill_cli-1.2.31/tests/unit/test_embed.py +0 -216
  557. boost_skill_cli-1.2.31/tests/unit/test_embed_local.py +0 -264
  558. boost_skill_cli-1.2.31/tests/unit/test_embed_truncated_response.py +0 -68
  559. boost_skill_cli-1.2.31/tests/unit/test_entry_key.py +0 -103
  560. boost_skill_cli-1.2.31/tests/unit/test_errors_and_cli_table.py +0 -266
  561. boost_skill_cli-1.2.31/tests/unit/test_eval_baseline.py +0 -182
  562. boost_skill_cli-1.2.31/tests/unit/test_eval_corpus.py +0 -698
  563. boost_skill_cli-1.2.31/tests/unit/test_eval_faithfulness.py +0 -259
  564. boost_skill_cli-1.2.31/tests/unit/test_eval_gate.py +0 -194
  565. boost_skill_cli-1.2.31/tests/unit/test_eval_grading.py +0 -335
  566. boost_skill_cli-1.2.31/tests/unit/test_eval_metrics.py +0 -255
  567. boost_skill_cli-1.2.31/tests/unit/test_eval_stats_summary.py +0 -80
  568. boost_skill_cli-1.2.31/tests/unit/test_failure_alerting_covers_unattended.py +0 -176
  569. boost_skill_cli-1.2.31/tests/unit/test_faithfulness.py +0 -87
  570. boost_skill_cli-1.2.31/tests/unit/test_frontmatter.py +0 -329
  571. boost_skill_cli-1.2.31/tests/unit/test_fuzz_targets.py +0 -87
  572. boost_skill_cli-1.2.31/tests/unit/test_gemini_agent_sanitize.py +0 -1357
  573. boost_skill_cli-1.2.31/tests/unit/test_gitleaks_config.py +0 -59
  574. boost_skill_cli-1.2.31/tests/unit/test_gitutil.py +0 -348
  575. boost_skill_cli-1.2.31/tests/unit/test_gitutil_lfs.py +0 -70
  576. boost_skill_cli-1.2.31/tests/unit/test_gitutil_sparse.py +0 -293
  577. boost_skill_cli-1.2.31/tests/unit/test_hook_settings_hosts.py +0 -117
  578. boost_skill_cli-1.2.31/tests/unit/test_hookhost.py +0 -179
  579. boost_skill_cli-1.2.31/tests/unit/test_imperative.py +0 -101
  580. boost_skill_cli-1.2.31/tests/unit/test_import_budget.py +0 -135
  581. boost_skill_cli-1.2.31/tests/unit/test_injectscan.py +0 -282
  582. boost_skill_cli-1.2.31/tests/unit/test_install_permission_error.py +0 -56
  583. boost_skill_cli-1.2.31/tests/unit/test_installscan.py +0 -163
  584. boost_skill_cli-1.2.31/tests/unit/test_integrity.py +0 -229
  585. boost_skill_cli-1.2.31/tests/unit/test_journal.py +0 -279
  586. boost_skill_cli-1.2.31/tests/unit/test_langchain_packaging.py +0 -110
  587. boost_skill_cli-1.2.31/tests/unit/test_link_ownership.py +0 -108
  588. boost_skill_cli-1.2.31/tests/unit/test_localembed.py +0 -491
  589. boost_skill_cli-1.2.31/tests/unit/test_localembed_e2e.py +0 -170
  590. boost_skill_cli-1.2.31/tests/unit/test_lockfile.py +0 -274
  591. boost_skill_cli-1.2.31/tests/unit/test_logs.py +0 -613
  592. boost_skill_cli-1.2.31/tests/unit/test_marketing_counts.py +0 -91
  593. boost_skill_cli-1.2.31/tests/unit/test_mcp.py +0 -1157
  594. boost_skill_cli-1.2.31/tests/unit/test_mcp_install_scan.py +0 -106
  595. boost_skill_cli-1.2.31/tests/unit/test_mcpdecl.py +0 -355
  596. boost_skill_cli-1.2.31/tests/unit/test_mcphost.py +0 -195
  597. boost_skill_cli-1.2.31/tests/unit/test_measure_registry.py +0 -133
  598. boost_skill_cli-1.2.31/tests/unit/test_minisign.py +0 -155
  599. boost_skill_cli-1.2.31/tests/unit/test_mutation_hardening.py +0 -248
  600. boost_skill_cli-1.2.31/tests/unit/test_mutation_shards.py +0 -390
  601. boost_skill_cli-1.2.31/tests/unit/test_mutation_subfile_shards.py +0 -589
  602. boost_skill_cli-1.2.31/tests/unit/test_mutmut_source_paths.py +0 -142
  603. boost_skill_cli-1.2.31/tests/unit/test_nethttp.py +0 -120
  604. boost_skill_cli-1.2.31/tests/unit/test_output.py +0 -1519
  605. boost_skill_cli-1.2.31/tests/unit/test_page_budget.py +0 -171
  606. boost_skill_cli-1.2.31/tests/unit/test_paths.py +0 -168
  607. boost_skill_cli-1.2.31/tests/unit/test_perf_gate.py +0 -64
  608. boost_skill_cli-1.2.31/tests/unit/test_pkg_confusions.py +0 -45
  609. boost_skill_cli-1.2.31/tests/unit/test_pkg_injection.py +0 -59
  610. boost_skill_cli-1.2.31/tests/unit/test_pkg_secrets.py +0 -54
  611. boost_skill_cli-1.2.31/tests/unit/test_platform_pins.py +0 -385
  612. boost_skill_cli-1.2.31/tests/unit/test_policy.py +0 -228
  613. boost_skill_cli-1.2.31/tests/unit/test_post_deploy_smoke.py +0 -218
  614. boost_skill_cli-1.2.31/tests/unit/test_project_mcp_sidecar.py +0 -187
  615. boost_skill_cli-1.2.31/tests/unit/test_projectlock.py +0 -136
  616. boost_skill_cli-1.2.31/tests/unit/test_provenance.py +0 -126
  617. boost_skill_cli-1.2.31/tests/unit/test_publish_golden_dataset.py +0 -226
  618. boost_skill_cli-1.2.31/tests/unit/test_rag.py +0 -1533
  619. boost_skill_cli-1.2.31/tests/unit/test_rag_fastpath.py +0 -279
  620. boost_skill_cli-1.2.31/tests/unit/test_rag_fusion.py +0 -306
  621. boost_skill_cli-1.2.31/tests/unit/test_registries_fresh.py +0 -49
  622. boost_skill_cli-1.2.31/tests/unit/test_registry.py +0 -350
  623. boost_skill_cli-1.2.31/tests/unit/test_registry_categories.py +0 -387
  624. boost_skill_cli-1.2.31/tests/unit/test_registry_control_chars.py +0 -233
  625. boost_skill_cli-1.2.31/tests/unit/test_release_guard.py +0 -227
  626. boost_skill_cli-1.2.31/tests/unit/test_release_preflight.py +0 -208
  627. boost_skill_cli-1.2.31/tests/unit/test_required_checks.py +0 -527
  628. boost_skill_cli-1.2.31/tests/unit/test_rerank_cache.py +0 -128
  629. boost_skill_cli-1.2.31/tests/unit/test_resolve.py +0 -162
  630. boost_skill_cli-1.2.31/tests/unit/test_roadmap_fresh.py +0 -405
  631. boost_skill_cli-1.2.31/tests/unit/test_rules.py +0 -295
  632. boost_skill_cli-1.2.31/tests/unit/test_scale_corpus.py +0 -266
  633. boost_skill_cli-1.2.31/tests/unit/test_scopes.py +0 -323
  634. boost_skill_cli-1.2.31/tests/unit/test_secretscan.py +0 -154
  635. boost_skill_cli-1.2.31/tests/unit/test_selfupdate.py +0 -529
  636. boost_skill_cli-1.2.31/tests/unit/test_serve.py +0 -1133
  637. boost_skill_cli-1.2.31/tests/unit/test_serve_docs.py +0 -197
  638. boost_skill_cli-1.2.31/tests/unit/test_shards_matrix.py +0 -136
  639. boost_skill_cli-1.2.31/tests/unit/test_smoke_covers_every_command.py +0 -73
  640. boost_skill_cli-1.2.31/tests/unit/test_spin.py +0 -109
  641. boost_skill_cli-1.2.31/tests/unit/test_stackprobe.py +0 -115
  642. boost_skill_cli-1.2.31/tests/unit/test_staleness.py +0 -102
  643. boost_skill_cli-1.2.31/tests/unit/test_store.py +0 -2677
  644. boost_skill_cli-1.2.31/tests/unit/test_store_materialize.py +0 -110
  645. boost_skill_cli-1.2.31/tests/unit/test_sync_blocked_links.py +0 -128
  646. boost_skill_cli-1.2.31/tests/unit/test_sync_repairs_gutted_skill.py +0 -96
  647. boost_skill_cli-1.2.31/tests/unit/test_token_parity.py +0 -32
  648. boost_skill_cli-1.2.31/tests/unit/test_toolchain_lock.py +0 -334
  649. boost_skill_cli-1.2.31/tests/unit/test_trustaudit.py +0 -369
  650. boost_skill_cli-1.2.31/tests/unit/test_typosquat.py +0 -134
  651. boost_skill_cli-1.2.31/tests/unit/test_updatediff.py +0 -171
  652. boost_skill_cli-1.2.31/tests/unit/test_util.py +0 -661
  653. boost_skill_cli-1.2.31/tests/unit/test_version.py +0 -50
  654. boost_skill_cli-1.2.31/tests/unit/test_visual_harness_flags.py +0 -121
  655. boost_skill_cli-1.2.31/tests/unit/test_workflow_concurrency.py +0 -112
  656. boost_skill_cli-1.2.31/tests/unit/test_workflow_concurrency_groups.py +0 -144
  657. boost_skill_cli-1.2.31/tests/unit/test_workflow_push_has_credentials.py +0 -140
  658. boost_skill_cli-1.2.31/tests/unit/test_workflow_timeouts.py +0 -73
  659. boost_skill_cli-1.2.31/tests/unit/test_workflows.py +0 -297
  660. boost_skill_cli-1.2.31/tests/unit/test_zizmor_ignores_still_anchor.py +0 -118
  661. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.gitattributes +0 -0
  662. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.gitignore +0 -0
  663. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.gitleaks.toml +0 -0
  664. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.htmlvalidate.json +0 -0
  665. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.lighthouserc.json +0 -0
  666. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.lycheeignore +0 -0
  667. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.markdownlint-cli2.jsonc +0 -0
  668. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.pre-commit-config.yaml +0 -0
  669. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.stylelintrc.json +0 -0
  670. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.vale/styles/boost/AIWriting.yml +0 -0
  671. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.vale/styles/boost/Terminology.yml +0 -0
  672. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/.vale.ini +0 -0
  673. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/CODE_OF_CONDUCT.md +0 -0
  674. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/DCO +0 -0
  675. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/GOVERNANCE.md +0 -0
  676. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/LICENSE +0 -0
  677. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/MAINTAINERS.md +0 -0
  678. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/MANIFEST.in +0 -0
  679. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/SECURITY.md +0 -0
  680. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/SUPPORT.md +0 -0
  681. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/boost_cli/data/registries.json +0 -0
  682. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/boost_cli/data/rules/boost-first.mdc +0 -0
  683. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/boost_langchain/py.typed +0 -0
  684. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  685. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  686. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/boost_skill_cli.egg-info/requires.txt +0 -0
  687. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/boost_skill_cli.egg-info/top_level.txt +0 -0
  688. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/codecov.yml +0 -0
  689. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/.claude/settings.local.json +0 -0
  690. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/DEBUGGING.md +0 -0
  691. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/adapters.html +0 -0
  692. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/architecture/README.md +0 -0
  693. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/architecture/c4-components-core.md +0 -0
  694. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/architecture/c4-containers.md +0 -0
  695. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/architecture/c4-context.md +0 -0
  696. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/architecture/c4-dynamic-install.md +0 -0
  697. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/distill.gif +0 -0
  698. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/doctor.gif +0 -0
  699. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/explain.gif +0 -0
  700. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/hooks.gif +0 -0
  701. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/install.gif +0 -0
  702. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/pulse.gif +0 -0
  703. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/search.gif +0 -0
  704. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/gifs/tap.gif +0 -0
  705. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/distill.tape +0 -0
  706. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/doctor.tape +0 -0
  707. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/explain.tape +0 -0
  708. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/hooks.tape +0 -0
  709. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/install.tape +0 -0
  710. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/pulse.tape +0 -0
  711. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/search.tape +0 -0
  712. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel/tapes/tap.tape +0 -0
  713. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/carousel.html +0 -0
  714. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/chat.html +0 -0
  715. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/commands.html +0 -0
  716. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/commit-audit.md +0 -0
  717. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/demo-index.json +0 -0
  718. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/demo.gif +0 -0
  719. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/demo.html +0 -0
  720. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/demo.tape +0 -0
  721. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/dependencies.md +0 -0
  722. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/design-roadmap.html +0 -0
  723. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/eval-latest.json +0 -0
  724. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/eval.html +0 -0
  725. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/index.html +0 -0
  726. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/langchain.html +0 -0
  727. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/mcp-hub.html +0 -0
  728. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/openssf-playbook.md +0 -0
  729. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D01.md +0 -0
  730. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D02.md +0 -0
  731. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D03.md +0 -0
  732. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D04.md +0 -0
  733. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D05.md +0 -0
  734. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D06.md +0 -0
  735. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D07.md +0 -0
  736. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D08.md +0 -0
  737. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D09.md +0 -0
  738. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D10.md +0 -0
  739. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D11.md +0 -0
  740. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D12.md +0 -0
  741. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D13.md +0 -0
  742. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D14.md +0 -0
  743. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D15.md +0 -0
  744. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D16.md +0 -0
  745. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D17.md +0 -0
  746. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D18.md +0 -0
  747. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D19.md +0 -0
  748. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D20.md +0 -0
  749. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D21.md +0 -0
  750. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D22.md +0 -0
  751. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D23.md +0 -0
  752. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D24.md +0 -0
  753. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D25.md +0 -0
  754. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/BOOST-D26.md +0 -0
  755. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  756. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  757. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  758. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  759. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  760. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  761. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  762. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  763. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  764. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  765. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  766. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  767. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  768. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  769. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/boost-first-rule.md +0 -0
  770. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  771. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  772. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  773. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  774. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  775. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  776. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  777. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  778. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  779. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  780. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  781. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  782. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  783. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  784. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  785. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  786. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  787. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  788. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  789. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  790. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/command-carousel-page.md +0 -0
  791. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  792. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  793. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  794. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  795. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  796. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  797. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  798. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  799. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  800. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  801. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  802. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  803. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  804. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  805. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  806. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  807. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  808. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  809. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  810. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  811. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  812. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  813. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  814. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  815. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  816. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  817. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  818. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  819. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  820. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  821. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  822. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  823. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  824. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  825. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  826. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  827. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  828. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  829. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  830. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  831. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  832. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  833. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  834. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  835. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  836. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  837. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  838. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  839. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  840. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  841. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/github-community-health-files.md +0 -0
  842. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  843. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  844. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  845. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  846. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  847. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  848. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  849. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  850. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  851. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  852. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  853. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  854. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  855. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  856. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  857. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  858. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  859. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  860. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  861. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  862. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  863. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  864. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  865. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  866. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  867. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  868. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  869. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  870. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  871. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  872. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  873. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  874. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  875. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  876. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  877. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  878. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  879. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  880. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  881. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  882. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  883. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  884. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  885. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  886. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  887. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  888. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  889. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  890. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  891. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  892. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  893. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  894. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  895. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  896. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  897. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  898. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  899. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  900. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  901. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  902. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  903. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  904. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  905. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  906. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  907. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  908. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  909. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  910. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  911. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  912. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  913. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  914. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  915. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  916. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/openssf-playbook.md +0 -0
  917. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/openssf-silver.md +0 -0
  918. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  919. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  920. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  921. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  922. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  923. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  924. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  925. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  926. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  927. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  928. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  929. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  930. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  931. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  932. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  933. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  934. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  935. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  936. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  937. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  938. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  939. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  940. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  941. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  942. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  943. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  944. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  945. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  946. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  947. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  948. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  949. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  950. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  951. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  952. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  953. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  954. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  955. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  956. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  957. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  958. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  959. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  960. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  961. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  962. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  963. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  964. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  965. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  966. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  967. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  968. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  969. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  970. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  971. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  972. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  973. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  974. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  975. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  976. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  977. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  978. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  979. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  980. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  981. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  982. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  983. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  984. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  985. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  986. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  987. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  988. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  989. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  990. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  991. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  992. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  993. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  994. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  995. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  996. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  997. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  998. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  999. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  1000. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  1001. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  1002. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  1003. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  1004. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  1005. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  1006. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  1007. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  1008. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  1009. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  1010. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  1011. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  1012. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  1013. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  1014. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  1015. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  1016. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  1017. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  1018. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  1019. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  1020. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  1021. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  1022. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  1023. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  1024. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  1025. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/workspace-scope-install.md +0 -0
  1026. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/zip-strict-audit.md +0 -0
  1027. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  1028. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  1029. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  1030. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/eslint.config.mjs +0 -0
  1031. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/evals/README.md +0 -0
  1032. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/evals/baseline.json +0 -0
  1033. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/evals/golden_set.json +0 -0
  1034. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/examples/README.md +0 -0
  1035. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/examples/adapt-demo.sh +0 -0
  1036. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/examples/boost-run-prototype.sh +0 -0
  1037. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/index.html +0 -0
  1038. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/coverage-tools.in +0 -0
  1039. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/coverage-tools.txt +0 -0
  1040. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/lint-tools.in +0 -0
  1041. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/lint-tools.txt +0 -0
  1042. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/mutation-tools.in +0 -0
  1043. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/mutation-tools.txt +0 -0
  1044. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/platform-pins.lock +0 -0
  1045. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/release-tools.in +0 -0
  1046. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/release-tools.txt +0 -0
  1047. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/test-tools.in +0 -0
  1048. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/requirements/test-tools.txt +0 -0
  1049. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/scripts/mutation_weights.json +0 -0
  1050. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/sonar-project.properties +0 -0
  1051. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/style/README.md +0 -0
  1052. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/style/boost.css +0 -0
  1053. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/style/boost.js +0 -0
  1054. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/style/demo.html +0 -0
  1055. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/adapt.feature +0 -0
  1056. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/browse.feature +0 -0
  1057. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/count.feature +0 -0
  1058. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/discover.feature +0 -0
  1059. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/doctor.feature +0 -0
  1060. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/explain.feature +0 -0
  1061. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/index.feature +0 -0
  1062. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/install.feature +0 -0
  1063. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/list.feature +0 -0
  1064. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/mcp.feature +0 -0
  1065. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/bdd/features/search.feature +0 -0
  1066. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/eval/baseline.json +0 -0
  1067. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/eval/explain.jsonl +0 -0
  1068. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/eval/golden-natural.jsonl +0 -0
  1069. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/eval/golden.jsonl +0 -0
  1070. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/eval/recommend.jsonl +0 -0
  1071. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/eval/taps-scale.txt +0 -0
  1072. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/eval/taps.txt +0 -0
  1073. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/README.md +0 -0
  1074. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  1075. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  1076. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  1077. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  1078. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  1079. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  1080. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  1081. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  1082. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  1083. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  1084. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  1085. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  1086. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  1087. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  1088. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  1089. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  1090. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  1091. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  1092. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  1093. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  1094. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  1095. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  1096. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  1097. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/visual/a11y_check.mjs +0 -0
  1098. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/visual/console_check.mjs +0 -0
  1099. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/visual/package-lock.json +0 -0
  1100. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/visual/package.json +0 -0
  1101. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.32}/tests/visual/visual_check.mjs +0 -0
@@ -0,0 +1,187 @@
1
+ ABM
2
+ agentic
3
+ Algolia
4
+ allowlist
5
+ allowlisted
6
+ argparse
7
+ Arize
8
+ ASan
9
+ Attio
10
+ Autofix
11
+ autofix
12
+ Backfilling
13
+ backfilling
14
+ backport
15
+ backported
16
+ backtick
17
+ backticks
18
+ Bagisto
19
+ basename
20
+ basenames
21
+ bestpractices
22
+ bmad
23
+ bookended
24
+ Camunda
25
+ CI's
26
+ CLIs
27
+ Codecov
28
+ codespell
29
+ ColdIQ
30
+ config
31
+ configs
32
+ CPython
33
+ CRM
34
+ cyclomatic
35
+ Dependabot
36
+ deps
37
+ deserialization
38
+ Dev
39
+ DigitalOcean
40
+ docsite
41
+ docstring
42
+ dotdir
43
+ dotdirs
44
+ dotfiles
45
+ DSPy
46
+ else's
47
+ env
48
+ eval
49
+ evals
50
+ freemium
51
+ frontmatter
52
+ fuzzer
53
+ GEO
54
+ GIF
55
+ gitignored
56
+ gitleaks
57
+ GitOps
58
+ glassmorphic
59
+ Grafana
60
+ GTM
61
+ gzip
62
+ gzipped
63
+ hardcode
64
+ Helm
65
+ hotspots
66
+ Huashu
67
+ HubSpot
68
+ idempotently
69
+ JetBrains
70
+ jonnyeclectic
71
+ jonnyeclectic's
72
+ Kotlin
73
+ langchain
74
+ Langfuse
75
+ LeadMagic
76
+ libFuzzer
77
+ libsodium
78
+ lookups
79
+ lowercasing
80
+ Magento
81
+ maintainer's
82
+ mcp
83
+ mergeable
84
+ minisign
85
+ misconfiguration
86
+ mitigations
87
+ MLflow
88
+ mtime
89
+ mtimes
90
+ mutmut
91
+ mypy
92
+ nonces
93
+ npm
94
+ onboards
95
+ OpenShift
96
+ OpenSSF
97
+ overclaiming
98
+ Pinecone
99
+ pipx
100
+ plaintext
101
+ prehash
102
+ PrestaShop
103
+ Pulumi
104
+ pytest
105
+ Qdrant
106
+ Quarkus
107
+ rebased
108
+ reimplement
109
+ reimplemented
110
+ reimplements
111
+ reindex
112
+ repo
113
+ repo's
114
+ repos
115
+ Rerank
116
+ rerank
117
+ reranking
118
+ rescan
119
+ rescanned
120
+ rescans
121
+ RevOps
122
+ ruleset
123
+ Rulesets
124
+ rulesets
125
+ Salesforce
126
+ Saltzer
127
+ sandboxed
128
+ sandboxing
129
+ scrollbar
130
+ sdist
131
+ SEO
132
+ setuptools
133
+ SHAs
134
+ Shopify
135
+ Sigstore
136
+ Snyk
137
+ SonarCloud
138
+ stderr
139
+ Stdlib
140
+ stdlib
141
+ stdout
142
+ stemmer
143
+ stemming
144
+ subagents
145
+ subcommand
146
+ subprocess
147
+ tappable
148
+ teardown
149
+ tempdir
150
+ textarea
151
+ toggleable
152
+ Tokenization
153
+ tokenization
154
+ toolchain
155
+ toolkits
156
+ traceback
157
+ tracebacks
158
+ triaged
159
+ triages
160
+ typosquat
161
+ typosquatted
162
+ unkilled
163
+ unlinking
164
+ unpatched
165
+ unregister
166
+ unremediated
167
+ unstaged
168
+ untap
169
+ untrusted
170
+ uv
171
+ Vaadin
172
+ Valgrind
173
+ vendored
174
+ vendoring
175
+ venv
176
+ venvs
177
+ VHS
178
+ vLLM
179
+ Weaviate
180
+ webfont
181
+ WooCommerce
182
+ wordmark
183
+ worktree
184
+ worktrees
185
+ Zapier
186
+ zizmor
187
+ zsh
@@ -0,0 +1,483 @@
1
+ # CLAUDE.md — working rules for the boost workspace
2
+
3
+ boost is a "Homebrew for AI coding skills": a Python CLI (`boost_cli`) that finds,
4
+ installs, and governs the skill/rule/workflow files that AI coding agents run on.
5
+ Package name on PyPI is `boost-skill-cli`; the command is `boost`.
6
+
7
+ ## Common commands
8
+
9
+ ```bash
10
+ make venv # .venv from the hash-pinned requirements/*.txt
11
+ .venv/bin/pytest tests/unit/test_catalog.py -q # one test file
12
+ .venv/bin/pytest tests/unit/test_catalog.py::test_scan_dir -q # one test
13
+ .venv/bin/pytest tests/functional -q -k install # functional tests matching "install"
14
+ make lint # the whole static tier — read the recipe, it is long
15
+ make test # unit + functional with 90% coverage gate
16
+ make check # the full required gate — see table below
17
+
18
+ # run boost itself against a disposable HOME (never your real ~/.boost):
19
+ export HOME=/tmp/boost-sandbox && mkdir -p $HOME
20
+ python3 tests/make_fixture.py /tmp/fixture-tap
21
+ ./boost tap /tmp/fixture-tap
22
+ ./boost install brainstorming
23
+ ./boost doctor
24
+ ```
25
+
26
+ `make venv` installs from `requirements/*.txt`, which are hash-pinned and are the
27
+ same files CI installs (`scripts/lock_toolchain.py --check` gates them against
28
+ drift) — so a dev venv and a runner resolve to identical bytes. Don't `pip
29
+ install` a lint or test tool by hand; add it to the right requirements file and
30
+ regenerate the lock, or `make lint` passes for you and fails in CI.
31
+
32
+ The functional/unit `sandbox` fixture (`tests/conftest.py`) also sets
33
+ `BOOST_NO_AI=1` and `BOOST_ASSUME_YES=1` so tests are deterministic and never
34
+ block on a confirm prompt or a real AI call — override explicitly in a test
35
+ that means to exercise the AI or confirmation path.
36
+
37
+ ## The one gate that matters
38
+
39
+ Before calling any change done, run the full gate:
40
+
41
+ ```bash
42
+ make check # == lint eval test smoke mutation
43
+ ```
44
+
45
+ It is five gates and **all must pass**:
46
+
47
+ | Gate | Command | Threshold |
48
+ |------------|------------------------------------------------|-----------|
49
+ | `lint` | `ruff check boost_cli tests` + `mypy` | zero errors |
50
+ | `eval` | `ensure_eval_corpus.sh` + `eval_retrieval.py --build -k 10` with four floors | BM25 recall@k **≥ 0.78**, hit@1 ≥ 0.40, MRR ≥ 0.52, nDCG@k ≥ 0.58 |
51
+ | `test` | `pytest tests/unit tests/functional --cov` | **90%** coverage (`fail_under = 90`, `branch = true`) |
52
+ | `smoke` | `bash tests/smoke.sh` | 0 failed |
53
+ | `mutation` | `python3 scripts/mutation_gate.py --run --min 80` | **80%** of `boost_cli/core` mutants killed |
54
+
55
+ The `eval` gate is the Tier 1 retrieval-quality check: it runs boost's RAG
56
+ engines over the golden set (`tests/eval/golden.jsonl`) and floors **four**
57
+ metrics on BM25 — recall@k, hit@1, MRR and nDCG@k. Flooring recall alone was a
58
+ hole rather than a simplification: a ranker that finds the right answer every
59
+ time and never ranks it first scores recall@10 1.000 with hit@1 0.000, and
60
+ passed. The golden set grades real catalog items **by name**, so it needs a
61
+ corpus: `scripts/ensure_eval_corpus.sh` first taps the pinned repo list in
62
+ `tests/eval/taps.txt` (the minimal set covering all golden targets — `boost tap
63
+ --defaults` is NOT enough, it omits every rule/workflow repo). The list is
64
+ **twenty** repos: the first six cover every golden target, the rest exist so the
65
+ corpus is a realistic size. That matters more than it sounds — over the six
66
+ alone (743 entries) BM25 scores 0.978 / 0.791 / 0.854 / 0.882, and over the
67
+ twenty (10,152) it scores **0.852 / 0.473 / 0.605 / 0.657** on the same golden
68
+ set, so three of the four old floors fail once the corpus stops being tiny.
69
+
70
+ **The ranked list de-duplicates on the content hash, not the name.** A grade key
71
+ decides both relevance and identity, and keying identity on the name collapsed
72
+ 13 different skills called `code-reviewer` into one rank slot — crediting the
73
+ ranker with a compression that existed only in the scoring code, and worth about
74
+ one query of recall@10. That is where the old "recall is 1.000" folklore came
75
+ from; the six-repo corpus measures 0.978 once mirrors collapse and homonyms do
76
+ not. Relevance is still decided by name (or by content class when a golden row
77
+ pins an `exemplar`), so the sets can migrate a row at a time.
78
+
79
+ Each floor sits ~10% under its measured value — loose enough that upstream drift
80
+ can't flake the build, tight enough to catch a collapse. Regression-vs-baseline
81
+ stays relaxed (`--regression-eps 1`), so the absolute floors are the real gate.
82
+
83
+ **Every row of `taps.txt` pins a commit SHA**, and `scripts/eval_corpus.py`
84
+ checks each clone out at it — the corpus is 10,152 entries, of which one
85
+ third-party repo is 6,309 (62%), so an unpinned list left a required check
86
+ hostage to someone else's push. CI and `make eval` must invoke the gate with
87
+ identical floors; `tests/unit/test_eval_corpus.py` fails the build if they
88
+ diverge, which they had (CI floored recall alone at 0.85 against a measured
89
+ 0.863 — a buffer of 1.15 queries out of 91 — and applied none of the other
90
+ three). Moving a pin means regenerating the baseline; the file says how.
91
+
92
+ **Baselines are keyed by query set** (`name@content-digest`), so one file holds
93
+ both `golden.jsonl` and `golden-natural.jsonl` without either overwriting the
94
+ other. Before that, running the natural-language set printed eight confident
95
+ "REGRESSION vs baseline" lines that were only the gap between two different
96
+ question sets. Add `--floor NAME=VALUE` (repeatable) to gate any metric; a
97
+ misspelled metric name is a hard error rather than a silently skipped floor.
98
+ Edit `taps.txt` → regenerate `tests/eval/baseline.json`. It runs in CI's
99
+ `lint` job (pure-stdlib BM25, no `ANTHROPIC_API_KEY`; needs network to tap). The
100
+ opt-in evals stay out of `check` and all degrade cleanly:
101
+
102
+ - `make eval-ai` / `eval-rec` — key-gated LLM evals (Tier 2a rerank / 2b recommend).
103
+ - `make eval-stats` — Tier 1b `ranx` paired-t-test between engines (`--stats`).
104
+ - `make eval-explain` — Tier 2c `ragas` faithfulness for `boost explain`; needs
105
+ the `[eval]` extra **and** a judge key (`OPENAI_API_KEY`, or `ANTHROPIC_API_KEY`
106
+ with `langchain-anthropic`) plus boost AI to generate the explanations.
107
+
108
+ The `[eval]` extra (`pip install -e '.[eval]'`) carries `ranx` + `ragas`; nothing
109
+ in it is ever imported by the CLI or the required gate. It pins the langchain 0.3
110
+ stack because ragas 0.2.x breaks against langchain ≥1.0 — an isolated cost of the
111
+ ragas dependency.
112
+
113
+ New/changed core logic needs tests that both cover it *and* kill mutants —
114
+ untested code counts as unkilled mutants, so the mutation gate fails even at 80%
115
+ line coverage. Target `boost_cli/core` behavior with assertions, not just imports.
116
+
117
+ ## Non-obvious rules
118
+
119
+ - **`boost_cli/data/registries.json` is GENERATED — never hand-edit it.** The
120
+ source of truth is `scripts/build_registries.py` (the `SKILLS` / `RULES` /
121
+ `WORKFLOWS` tuples). Edit those, then regenerate:
122
+ `python3 scripts/build_registries.py`. Each row is
123
+ `(owner/repo, category, focus, est_items, confidence)`. Add awesome-list repos
124
+ to `LIST_ONLY` so item-count math stays honest. Verify a repo is real
125
+ (`gh api repos/<owner/repo>`) before adding it.
126
+ - **`est_items` is measured, and `len(scan_dir(repo))` is not the measurement.**
127
+ Run `python3 scripts/measure_registry.py <clone>`; it hashes each item's body
128
+ with the frontmatter dropped and agent dotdir tokens normalized, so one skill
129
+ rendered into `.claude/`, `.cursor/`, `.gemini/`, … counts once. Registries
130
+ increasingly ship a copy per agent: a raw walk of `pbakaus/impeccable` finds
131
+ 40 items for the 9 it has, and `Owl-Listener/ai-design-skills` shipped as 80
132
+ for years because `claude-plugin/<pack>/commands/x.md` and
133
+ `commands/<pack>/x.md` were counted as two commands.
134
+ `measure_registry.py --self-check ~/.boost/repos` re-derives committed counts
135
+ from local clones, so the convention stays falsifiable.
136
+ - **Category comes from the names of the items a repo ships, not its README or
137
+ its own name.** `bergside/awesome-design-skills` reads like an index and is a
138
+ 67-item visual-style corpus (`brutalism`, `claymorphism`, `bento`);
139
+ `Owl-Listener/ai-design-skills` reads like design and is prompt/agent design
140
+ (`chain-of-thought-design`, `guardrail-design`), so it is `ai`, not `ui`.
141
+ `tests/unit/test_registry_categories.py::TestDesignDomain` pins both
142
+ directions.
143
+ - **A tap clone holds Markdown and nothing else.** Taps clone
144
+ `--filter=blob:none --sparse` with a cone covering exactly what
145
+ `catalog.scan_dir` opens (`gitutil.SPARSE_PATTERNS`, pinned against catalog's
146
+ own constants by `tests/unit/test_gitutil_sparse.py` — `gitutil` can't
147
+ import `catalog`, `catalog` imports `gitutil`). 458 taps held 12 GB to index
148
+ 1.9 GB of Markdown; `Shopify/agent-skills` was 611 MB for its 30 SKILL.md
149
+ files and is 11 MB under the cone, with a byte-identical catalog. So
150
+ **anything reading a tap's real files must go through
151
+ `store.source_dir_for`**, which calls
152
+ `gitutil.materialize` first — a skill's own `scripts/`/`assets/` sit outside
153
+ the cone, and `_copy_skill` is a `copytree` that would copy the half of the
154
+ directory that exists and report success. Use `sparse-checkout add`, never
155
+ `set`: `set` replaces the pattern list and un-fetches every skill materialized
156
+ before it. `boost import` clones `sparse=False` — it reads the whole repo.
157
+ `boost compact` narrows clones that predate this (offline; measured 177 MB →
158
+ 93 MB), and must `update-index --refresh` first, because git silently declines
159
+ to remove a path whose stat data looks dirty and otherwise reports success
160
+ having changed nothing.
161
+ - **`~/.boost/cache/` holds boost's own indexes, not just tap catalogs.**
162
+ `paths.INTERNAL_CACHE_FILES` names them. `boost clean` sweeps `cache/*.json`
163
+ whose stem is not a configured tap, which described `rag_index.json` and
164
+ `discovery.json` perfectly — it deleted the BM25 index on every run, and
165
+ rebuilding it re-parses every tap catalog on the machine (~71k items). A new
166
+ derived artifact goes in that set or `tests/unit/test_clean_internal_cache.py`
167
+ fails.
168
+ - **Sandbox tests via env, and export separately.** boost state lives under
169
+ `HOME`/`BOOST_HOME`; tests point them at a tempdir. In zsh, one-line chains
170
+ like `export A=$(...) B=$A/x` leave `B` broken — use separate `export`
171
+ statements.
172
+ - **Versioning is setuptools-scm from git tags.** There is no `__version__`
173
+ constant and `boost_cli/_version.py` is generated + gitignored. Don't hardcode
174
+ or assert exact versions; version tests are shape-only (`^boost \S+$`). The
175
+ publish workflow filename must stay `publish.yml` (PyPI Trusted Publisher
176
+ matches on it).
177
+ - **Target Python ≥ 3.12** (`requires-python = ">=3.12"`). Structural pattern
178
+ matching and runtime `X | Y` unions are now legal. The `typing.List` → `list`
179
+ sweep is **done**: UP006/UP035/UP045 are selected, not ignored, and report zero
180
+ violations. (This entry described the sweep as deferred long after it landed —
181
+ measure before trusting a "not done yet" note.) `UP031` printf-formatting *is*
182
+ still ignored, and deliberately: it is an unsafe fix over ~1,000 call sites in
183
+ `boost_cli` alone. Write new code in the modern style; don't bulk-rewrite old
184
+ code in an unrelated PR.
185
+ - **A catalog entry has two identities, and they are not interchangeable.**
186
+ *Row* identity is `(tap, skill_md)` (`rag.entry_key`) — which file, in which
187
+ tap. *Content* identity is `entry["content"]`, a truncated sha256 of
188
+ `name + "\n" + description + "\n" + body` stamped by `catalog._content_digest`
189
+ at scan time. Use the row key to address a row and the digest to ask whether
190
+ two rows are the same thing. The digest must stay byte-identical to what
191
+ `rag.read_body` assembles — `tests/unit/test_content_identity.py` pins the
192
+ parity, because a digest that drifts keeps *looking* right while clustering
193
+ nothing. Name-based keys are wrong at both layers: over 60,047 real entries,
194
+ hashing the body alone merges 259 clusters spanning different names, and
195
+ name+description over-collapses 3,383 clusters of genuinely different prose.
196
+ Consumers must degrade cleanly when `content` is absent (a cache written
197
+ before `CACHE_FORMAT`, or a synthesised entry) — and must never treat two
198
+ absences as a match.
199
+ - **The tap cache is versioned; bump `catalog.CACHE_FORMAT` to backfill.** It is
200
+ how a new entry field reaches 460 caches on a real machine without a re-tap:
201
+ `load_tap` rescans a stale cache *when the clone is still there*, and serves
202
+ the stale entries as-is when it is not. Never make a stale cache an error —
203
+ that trades a missing field for a missing catalogue.
204
+ - **Three item kinds, one scanner.** `core/catalog.scan_dir` indexes `skill`
205
+ (SKILL.md), `rule` (.mdc/.cursorrules/.windsurfrules/.clinerules), and
206
+ `workflow` (commands/agents/workflows Markdown). **All three install**, and
207
+ each honors `scope`: `store.install` dispatches to `_install_rule` /
208
+ `_install_workflow` and only raises for a kind outside those three. They land
209
+ in different places, which is the part to get right — a skill is copied into
210
+ the canonical store and symlinked out, a rule is materialised into each
211
+ agent's context file (`rules.CONTEXT_FILES`, e.g. `~/.claude/CLAUDE.md`), and
212
+ a workflow is rendered per agent (TOML for Gemini, see
213
+ `workflows.TOML_COMMAND_AGENTS`). Installing a rule therefore edits a file the
214
+ user reads every session — treat it as more invasive than a skill, not less.
215
+ - **A long line is either chrome or data, and only chrome may be wrapped.**
216
+ `out.wrap()` folds prose to the pane, and the emitters take it opt-in —
217
+ `warn`/`info`/`dim`/`kv` accept `wrap=True` and each pays for its own prefix,
218
+ so continuations align under the message rather than folding to column zero.
219
+ It is opt-in because always-on wrapping would fold the lines that must stay
220
+ long: `pulse`'s `source=` paths and `fingerprint`'s 64-character hash are the
221
+ information the line exists to carry, and a hash split across two lines
222
+ cannot be compared by eye. **A backtick span is one atomic token**, spaces
223
+ and all — `doctor` and `search` both interpolate `dense.fix_hint()`, whose
224
+ answers end in `pip install 'boost-skill-cli[rag]'`, and a wrap that splits
225
+ that hands the user a command which does not run. A token wider than the pane
226
+ overflows whole rather than breaking. Wrap *before* adding color: `out.role`
227
+ brackets its argument with a start code and a reset, so coloring first and
228
+ splitting after leaves line one unterminated and line two plain. And
229
+ budget the emitter's own indent — wrapping to the full `term_width()` and
230
+ then letting `out.info` add two spaces is what put `boost search`'s hint one
231
+ column past the pane it had just been fitted to.
232
+
233
+ - **A new source file needs the licence header, and a new prose file needs
234
+ adding to the vale list.** Every `.py`/`.sh` under `boost_cli`,
235
+ `boost_langchain`, `evals`, `scripts`, `tests` plus `./boost` and
236
+ `noxfile.py` opens with `# Copyright the boost contributors.` and
237
+ `# SPDX-License-Identifier: GPL-3.0-only`. Run
238
+ `python3 scripts/add_spdx_headers.py` (idempotent) — the file list and the
239
+ expression live there, so changing `-only` to `-or-later` is one edit rather
240
+ than 314. Separately, `prose-lint.yml` names the Markdown files vale checks
241
+ **explicitly**: a new doc that is not added to that list is never linted, and
242
+ `make lint` will not tell you.
243
+
244
+ - **Sub-actions of one action repo move in lockstep.** `github/codeql-action/{init,
245
+ analyze,upload-sarif}` and `actions/cache{,/save,/restore}` are each *one repo at
246
+ one commit*, but Dependabot tracks one `uses:` path as one dependency and raises a
247
+ PR per sub-action — none of which can be merged on its own (`init` stamps its
248
+ version into the config and `analyze` rejects another release's). `.github/
249
+ dependabot.yml` groups them so a release arrives as one PR;
250
+ `tests/unit/test_action_pin_lockstep.py` fails the build if a split lands anyway,
251
+ and is parametrised over the families the workflows use, so a new multi-path
252
+ action must be grouped before it passes. Bump all of a family's pins together, to
253
+ the **peeled** commit SHA (`git ls-remote … 'refs/tags/vX.Y.Z^{}'`) or zizmor's
254
+ `ref-version-mismatch` fails the PR.
255
+
256
+ ## Parallel work & concurrent loops
257
+
258
+ More than one agent (or `/loop` session) may be working this repo at once. To
259
+ keep them from clobbering each other:
260
+
261
+ - **Never edit a checkout that has someone else's branch checked out.** The user
262
+ works live in `~/boost`; long-running loops use a separate `git worktree`
263
+ (e.g. `~/boost-loop`, which needs its **own** `.venv` because mutmut wants an
264
+ editable `pip install -e .` pointed at that tree). Run `git worktree list` and
265
+ `git status` before touching a tree — staged or unstaged changes mean another
266
+ agent is mid-edit there, so pick a different worktree.
267
+ - **Branch off `origin/main`, one topic per branch.** `git fetch origin main`
268
+ then `git checkout -B loop/<topic> origin/main`. Keep changes additive and
269
+ file-scoped so parallel branches merge without conflicts.
270
+ - **Coordinate through PRs, not the working tree.** `gh pr merge` is server-side
271
+ and won't touch anyone's local checkout. Before committing a file, inspect
272
+ `git status` / `git diff` — if another session has it staged or dirty, leave
273
+ it to that owner rather than committing over their in-flight work.
274
+ - **Every merge to `main` cuts a PyPI release.** Land one coherent change per PR,
275
+ never merge onto a red release, and after merging confirm the publish workflow
276
+ goes green — not just the PR checks.
277
+
278
+ ### The roadmap is data-driven — add items, never hand-edit the HTML
279
+
280
+ `docs/roadmap.html` is **generated** from one file per item under
281
+ `docs/roadmap/items/*.md` by `scripts/build_roadmap.py` (this is what stopped the
282
+ roadmap being the repo's #1 merge-conflict source). To add or change a card:
283
+
284
+ 1. Create/edit `docs/roadmap/items/<id>.md` — a Markdown-with-frontmatter file
285
+ (`id, board: code, section, status, category, complexity, impact, wow, note,
286
+ order, owner, pr, title` + the card body after the `---`).
287
+ 2. Run `python3 scripts/build_roadmap.py` (or `make generate`) and commit both
288
+ the item file and the regenerated HTML. Counters ("Loop finds" etc.) are
289
+ **computed** — never hand-type them.
290
+
291
+ Never hand-edit the `<article>` cards or snapshot counters in `docs/roadmap.html`:
292
+ CI's `build_roadmap.py --check` and `tests/unit/test_roadmap_fresh.py` fail on
293
+ drift. Two loops adding two items now touch two *different files* → clean merge.
294
+
295
+ **Claiming an item (so two loops never pick the same one):** set `status:` and
296
+ `owner: loop/<topic>` in that item's file on your branch and open the PR. Two
297
+ loops claiming *different* items edit different files (no conflict); two loops
298
+ claiming the *same* item edit the same small file, so the second merge conflicts —
299
+ the intended "already claimed" signal, first-to-merge wins.
300
+
301
+ Both boards are data-driven: `docs/roadmap.html` from `board: code` items and
302
+ `docs/design-roadmap.html` from `board: design` items (track/impact/wow, rendered
303
+ into the per-track sections; the filter JS and counters are computed). Same rule
304
+ for both — edit items, run `build_roadmap.py`, never touch the HTML by hand.
305
+
306
+ ## Architecture
307
+
308
+ **CLI dispatch.** `boost_cli/cli.py` holds `COMMANDS`, the single
309
+ source-of-truth list of `(name, group, module, summary)` for all 80 commands.
310
+ Each command is implemented as `def cmd_<name_with_underscores>(argv) -> int`
311
+ inside `boost_cli/commands/<module>.py`, and `_dispatch` imports that module
312
+ lazily on invocation — so `boost --help` stays instant and command modules are
313
+ decoupled from each other. To add a command: add a row to `COMMANDS`, add the
314
+ `cmd_*` function to the named module, and it's live. `docs/commands.html` is
315
+ **generated** from `COMMANDS` by `scripts/build_command_reference.py`, so a new
316
+ row means regenerating it (`make generate`) or the `--check` gate fails.
317
+
318
+ **commands/ vs core/.** `boost_cli/commands/` is thin CLI glue — argument
319
+ parsing, output formatting, calling into `core/`. `boost_cli/core/` is the
320
+ actual engine (catalog scanning, install/link logic, the lock file, registries,
321
+ search) and is what the mutation gate targets — put behavior there, not in
322
+ the command layer, so it's covered by both the unit suite and mutation
323
+ testing.
324
+
325
+ **Storage layout**, all resolved at call time from `$HOME` (or `$BOOST_HOME`)
326
+ in `boost_cli/core/paths.py`, which is what makes `HOME=<tempdir>` sandboxing
327
+ work in tests and the dev loop:
328
+
329
+ ```text
330
+ ~/.boost/repos/ blobless, sparse git clones of tapped registries
331
+ ~/.boost/cache/ JSON catalogs built from SKILL.md/rule/workflow frontmatter
332
+ ~/.boost/logs/ rotating diagnostic log + crash reports
333
+ ~/.boost/state/ pins, tags, policy, profiles, pulse feed, snapshots
334
+ ~/.boost/config.json
335
+ ~/.agents/skills/ canonical store — single source of truth for installed skills
336
+ ~/.agents/skills/.skill-lock.json v3 lock file
337
+ ~/.claude/skills/ ~/.windsurf/skills/ ~/.cursor/skills/ symlinked out from the canonical store
338
+ ~/.gemini/ rules (GEMINI.md) + workflows only — see below
339
+ ```
340
+
341
+ **Four agent targets, but only three get symlinks.** Gemini CLI implements the
342
+ Agent Skills standard and discovers `~/.agents/skills` — the canonical store —
343
+ *directly*, so it is configured with `links_skills: false`. Linking into
344
+ `~/.gemini/skills` too would put one skill in two of its discovery tiers, where
345
+ the `.agents` alias out-ranks whatever we linked, costing the user a "Skill
346
+ conflict detected" line per skill per session and buying nothing. Consequences
347
+ for code you write:
348
+
349
+ - Iterate `agents.linking_agents()` for anything symlink-shaped (link, unlink,
350
+ stale-link sweeps, coverage counts). `agents.enabled_agents()` is still right
351
+ for rules and workflows, which materialize into `~/.gemini/` like any other
352
+ agent's dotdir. `agents.native_store_agents()` is the complement, for reporting.
353
+ - **Boost not linking there does not mean nothing else does**, and the warning
354
+ costs the user the same either way. `store.duplicate_discovery()` walks
355
+ `native_store_agents()` for entries that resolve back into the canonical
356
+ store — one skill in two of that agent's discovery tiers, whoever wrote it.
357
+ On a real machine 24 of the 25 entries in `~/.gemini/skills` led to
358
+ `~/.claude/skills` directories boost does not manage, and one resolved into
359
+ the store, so the test is **topology, not ownership**: a sweep of "boost's
360
+ stale links" would have deleted two dozen files belonging to another tool.
361
+ `boost doctor` counts each hit as an issue; `boost heal` names them and
362
+ removes nothing; `boost heal --prune-duplicates` removes them, re-checking at
363
+ the point of deletion that the entry is still a symlink still resolving into
364
+ the store. A real directory is never touched.
365
+ - **`points_into_store` and `resolves_into_store` answer different questions.**
366
+ The first reads one `readlink()` because it judges *broken* links, where
367
+ there is nothing to resolve. The second follows the whole chain, because the
368
+ live shape is `~/.gemini/skills/x -> ../../.claude/skills/x -> the store` and
369
+ one hop lands in another agent's dir. It resolves **both sides**: on macOS a
370
+ `$HOME` under `/var/folders` resolves to `/private/var/...`, so resolving
371
+ only the target compares a real path against a nominal one and never matches.
372
+ - Per-agent *formats* differ and are pure functions in `core/`: `rules.CONTEXT_FILES`
373
+ maps an agent with no rules dir to its context file (`claude-code` → CLAUDE.md /
374
+ CLAUDE.local.md, `gemini` → GEMINI.md for both scopes), and
375
+ `workflows.TOML_COMMAND_AGENTS` marks agents whose slash commands are TOML.
376
+ Gemini's `commands/` slot is `.toml` (`workflows.render_gemini_command`); its
377
+ `agents/` slot stays verbatim Markdown. Getting that backwards produces a file
378
+ the agent silently never loads.
379
+ - `core/mcphost.py` holds the per-host `mcp add`/`remove` grammar. Claude and
380
+ Gemini disagree on name position, the `--` separator, and whether unregister
381
+ needs an explicit scope — all three verified against the real CLIs and pinned
382
+ by `tests/unit/test_mcphost.py`. Don't "simplify" them into one shape.
383
+ - **`core/hookhost.py` is the same idea for hooks, and two hosts have them.**
384
+ `boost hooks` writes Claude Code's `~/.claude/settings.json` (the default,
385
+ unchanged) or, behind `--host gemini`, the `~/.gemini/settings.json` that
386
+ Gemini CLI reads;
387
+ `core/claude_settings.py` takes `host=` throughout and asks the table for the
388
+ differences. The `hooks` key and the `{matcher, hooks: [{type, command,
389
+ timeout}]}` block shape are *identical* between them, which is exactly what
390
+ makes the three real differences easy to ship wrong:
391
+ - **`timeout` units.** Claude's is **seconds**; Gemini's is **milliseconds**
392
+ (`DEFAULT_HOOK_TIMEOUT = 6e4`, fed straight to `setTimeout`). Callers pass
393
+ seconds and `hookhost.hook_entry` converts, so boost's `--timeout 10` is ten
394
+ seconds on both. Gemini's own `hooks migrate --from-claude` copies the number
395
+ verbatim, which turns a 10-second Claude hook into a 10-**millisecond**
396
+ Gemini one; don't copy that.
397
+ - **Event names.** Only `SessionStart`, `SessionEnd` and `Notification` are
398
+ spelled alike. `CLAUDE_TO_GEMINI` maps all ten Claude events explicitly and
399
+ `tests/unit/test_hookhost.py` fails if one is missing. `SubagentStop` and
400
+ `SubagentStart` map to **`None`** — Gemini has no sub-agents, so boost
401
+ refuses the hook and says why. (The upstream `EVENT_MAPPING` means to fold
402
+ them into `AfterAgent` but keys `SubAgentStop`, a spelling Claude never
403
+ emits, so `migrate` writes an event Gemini can never fire.)
404
+ - **The `name` field.** Gemini's hook config takes one — it is what
405
+ `/hooks panel` shows and `/hooks enable <name>` targets — and Claude's does
406
+ not. The `# boost:<name>` command marker stays the ownership mechanism for
407
+ both; `name` is added on top for Gemini, never instead.
408
+ A `matcher` is **not** translated: `boost hooks add` is not porting a config,
409
+ so it stays host-native — for a Gemini tool event it is a regular expression
410
+ over *Gemini* tool names like `run_shell_command`, and for a lifecycle event
411
+ it is an exact string. All of this was established against Gemini CLI
412
+ 0.57.0's own bundle — the `docs/hooks/` it ships, the `HookEventName` list and
413
+ `EVENT_MAPPING` in the bundled JS, and an observed `migrate` run — and those
414
+ sources are named at the top of `hookhost.py` so the next person can re-check
415
+ them against a newer release.
416
+
417
+ `core/catalog.scan_dir` walks a tap's clone and classifies each file into one
418
+ of the three item kinds (see Non-obvious rules above); `core/store.py` owns
419
+ install, uninstall and sync — copying into the canonical store, symlinking into
420
+ each agent's skills dir, and updating the lock file.
421
+
422
+ **Search has two engines**, both in `core/`: `rag.py` is the always-on,
423
+ zero-dependency BM25 engine (full-content index, auto-builds on first
424
+ search — this is what the required `eval` gate floors at recall@k ≥ 0.78).
425
+ `dense.py` is optional dense/vector retrieval behind the `[rag]` extra —
426
+ **no API key required**: `embed.py` tries Voyage, then OpenAI, then a local
427
+ `BAAI/bge-small-en-v1.5` that ships with the extra, so a key is a quality
428
+ upgrade rather than the entry fee. When both engines are built, `retrieve_any`
429
+ fuses them with reciprocal rank fusion (`rag.rrf_fuse`, `RRF_K = 60`) and
430
+ reports `hybrid RRF`; it degrades to whichever single engine is ready, and to
431
+ BM25 alone otherwise. `dense.status()` names which of the three links (extra,
432
+ backend, built store) is missing, and `dense.fix_hint()` maps that to the one
433
+ next action — both `boost doctor` and `boost search` read that same table, so
434
+ they can't give contradictory advice.
435
+
436
+ **The dense store ranks twice, and `vec0` is why.** `sqlite-vec` has no ANN
437
+ index: a float32 `MATCH` scores *every* vector in the store, which on a real
438
+ 750,416-chunk / 1024-d install is 3.08 GB and **28.2 s per query** — it was ~85%
439
+ of a 33.9 s `boost search`. So a query runs a coarse pass over
440
+ `vec_chunks_bin` (binary-quantized, one bit per dimension — 114 MB, Hamming) and
441
+ re-ranks the top `RESCORE_POOL` (2048) on their exact float32 vectors from
442
+ `vec_raw`. Measured: **28.2 s → 1.05 s at recall@60 = 1.000** — the same rows in
443
+ the same order. Both stages are required: the binary pass alone recovers 0.667
444
+ of the true top 60, so deleting the rescore as an "optimization" is a quality
445
+ regression, and `tests/unit/test_dense_quantized.py` fails if it goes.
446
+ `vec_raw` is an ordinary rowid-keyed table on purpose — `id IN (...)` against a
447
+ vec0 table plans as a full scan (256 point lookups measured 3.2 s), so the
448
+ rescore would cost more than the thing it replaced.
449
+
450
+ Consequences for code you write here:
451
+
452
+ - **`dim` must be a multiple of 8** for `bit[N]`, so `_quantizable()` gates the
453
+ layout and a non-conforming width keeps the old float32 `vec_chunks`. The
454
+ toy 3-d fixtures elsewhere in the suite are what keep that fallback covered;
455
+ `tests/unit/test_dense_quantized.py` uses 8-d.
456
+ - **`dense.quantize()` migrates in place and re-embeds nothing** — it re-encodes
457
+ vectors already on disk. It counts rows into `vec_raw` and refuses to drop
458
+ `vec_chunks` unless the copy is complete, because re-embedding 750k chunks is
459
+ a bill, not an inconvenience. `boost reindex --dense` runs it; `boost doctor`
460
+ names a ready-but-unquantized store. **It costs disk**: a plain table pays
461
+ overflow-page overhead on 4 KB blobs that vec0's packed storage does not, so
462
+ the measured trade is **3.40 GB → 3.87 GB (+14%), in 1360 s**, peaking at
463
+ ~2× while both copies coexist. Don't describe it as size-neutral — an earlier
464
+ draft of this section did, from prediction rather than measurement.
465
+ - **Nothing on the search path may count `chunks`.** `SELECT COUNT(*)` scans the
466
+ `chunks_tap` covering index — 8,419 pages / 34.5 MB, measured 1.94 s — and
467
+ both `ready()` and `status()` did it on every search, the latter only to word
468
+ one muted hint. The total now comes from `meta["chunks"]`, emptiness from a
469
+ `LIMIT 1` probe, and the scan only when `status(count=True)` asks. A store
470
+ that never recorded a total reports `chunks: None`, **not 0**: `fix_hint`
471
+ reads a zero as an unfinished install and would send that user to the one
472
+ remedy that re-embeds everything.
473
+
474
+ `core/ai.py` wraps the opt-in LLM-assisted paths (`search --smart`, `explain`, `distill`, `infer`,
475
+ `absorb`, `evolve`, `simulate`, …), shelling out to the `claude` CLI or
476
+ `ANTHROPIC_API_KEY` when available and degrading to heuristics when not.
477
+
478
+ ## Layout
479
+
480
+ - `boost_cli/data/` — shipped catalog data (generated) · `scripts/` — build/gate tooling
481
+ - `tests/unit`, `tests/functional`, `tests/smoke.sh` — the three test tiers
482
+ - `docs/` — `index.html` (visual guide), `commands.html` (every flag, generated), `DEBUGGING.md`; `roadmap.html` is generated from `docs/roadmap/items/*.md` (see above)
483
+ BE BRIEF