boost-skill-cli 1.2.31__tar.gz → 1.2.33__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 (1104) hide show
  1. boost_skill_cli-1.2.33/.vale/styles/config/vocabularies/boost/accept.txt +189 -0
  2. boost_skill_cli-1.2.33/CLAUDE.md +483 -0
  3. boost_skill_cli-1.2.33/CONTRIBUTING.md +278 -0
  4. boost_skill_cli-1.2.33/Makefile +253 -0
  5. boost_skill_cli-1.2.33/PKG-INFO +1117 -0
  6. boost_skill_cli-1.2.33/README.md +399 -0
  7. boost_skill_cli-1.2.33/boost +47 -0
  8. boost_skill_cli-1.2.33/boost_cli/__init__.py +35 -0
  9. boost_skill_cli-1.2.33/boost_cli/__main__.py +10 -0
  10. boost_skill_cli-1.2.33/boost_cli/_version.py +24 -0
  11. boost_skill_cli-1.2.33/boost_cli/cli.py +338 -0
  12. boost_skill_cli-1.2.33/boost_cli/cliparse.py +33 -0
  13. boost_skill_cli-1.2.33/boost_cli/commands/__init__.py +3 -0
  14. boost_skill_cli-1.2.33/boost_cli/commands/_common.py +80 -0
  15. boost_skill_cli-1.2.33/boost_cli/commands/bmad.py +581 -0
  16. boost_skill_cli-1.2.33/boost_cli/commands/configuration.py +1737 -0
  17. boost_skill_cli-1.2.33/boost_cli/commands/discovery.py +1674 -0
  18. boost_skill_cli-1.2.33/boost_cli/commands/hooks.py +158 -0
  19. boost_skill_cli-1.2.33/boost_cli/commands/info.py +1023 -0
  20. boost_skill_cli-1.2.33/boost_cli/commands/intelligence.py +1219 -0
  21. boost_skill_cli-1.2.33/boost_cli/commands/pkg.py +1606 -0
  22. boost_skill_cli-1.2.33/boost_cli/commands/quality.py +1317 -0
  23. boost_skill_cli-1.2.33/boost_cli/commands/run.py +118 -0
  24. boost_skill_cli-1.2.33/boost_cli/commands/safety.py +586 -0
  25. boost_skill_cli-1.2.33/boost_cli/commands/taps.py +385 -0
  26. boost_skill_cli-1.2.33/boost_cli/commands/team.py +750 -0
  27. boost_skill_cli-1.2.33/boost_cli/core/__init__.py +3 -0
  28. boost_skill_cli-1.2.33/boost_cli/core/adapters.py +561 -0
  29. boost_skill_cli-1.2.33/boost_cli/core/agents.py +81 -0
  30. boost_skill_cli-1.2.33/boost_cli/core/ai.py +161 -0
  31. boost_skill_cli-1.2.33/boost_cli/core/bmad.py +694 -0
  32. boost_skill_cli-1.2.33/boost_cli/core/bootstrap.py +137 -0
  33. boost_skill_cli-1.2.33/boost_cli/core/browse.py +648 -0
  34. boost_skill_cli-1.2.33/boost_cli/core/builtin.py +116 -0
  35. boost_skill_cli-1.2.33/boost_cli/core/capabilities.py +133 -0
  36. boost_skill_cli-1.2.33/boost_cli/core/catalog.py +662 -0
  37. boost_skill_cli-1.2.33/boost_cli/core/catalogbundle.py +267 -0
  38. boost_skill_cli-1.2.33/boost_cli/core/chat.py +395 -0
  39. boost_skill_cli-1.2.33/boost_cli/core/claude_settings.py +243 -0
  40. boost_skill_cli-1.2.33/boost_cli/core/complete.py +422 -0
  41. boost_skill_cli-1.2.33/boost_cli/core/config.py +228 -0
  42. boost_skill_cli-1.2.33/boost_cli/core/dense.py +972 -0
  43. boost_skill_cli-1.2.33/boost_cli/core/ed25519.py +131 -0
  44. boost_skill_cli-1.2.33/boost_cli/core/embed.py +287 -0
  45. boost_skill_cli-1.2.33/boost_cli/core/faithfulness.py +116 -0
  46. boost_skill_cli-1.2.33/boost_cli/core/frontmatter.py +178 -0
  47. boost_skill_cli-1.2.33/boost_cli/core/gitutil.py +302 -0
  48. boost_skill_cli-1.2.33/boost_cli/core/hookhost.py +242 -0
  49. boost_skill_cli-1.2.33/boost_cli/core/imperative.py +70 -0
  50. boost_skill_cli-1.2.33/boost_cli/core/injectscan.py +240 -0
  51. boost_skill_cli-1.2.33/boost_cli/core/installscan.py +115 -0
  52. boost_skill_cli-1.2.33/boost_cli/core/integrity.py +230 -0
  53. boost_skill_cli-1.2.33/boost_cli/core/journal.py +121 -0
  54. boost_skill_cli-1.2.33/boost_cli/core/localembed.py +246 -0
  55. boost_skill_cli-1.2.33/boost_cli/core/lockfile.py +254 -0
  56. boost_skill_cli-1.2.33/boost_cli/core/logs.py +354 -0
  57. boost_skill_cli-1.2.33/boost_cli/core/mcp.py +481 -0
  58. boost_skill_cli-1.2.33/boost_cli/core/mcpdecl.py +206 -0
  59. boost_skill_cli-1.2.33/boost_cli/core/mcphost.py +168 -0
  60. boost_skill_cli-1.2.33/boost_cli/core/minisign.py +127 -0
  61. boost_skill_cli-1.2.33/boost_cli/core/nethttp.py +69 -0
  62. boost_skill_cli-1.2.33/boost_cli/core/output.py +768 -0
  63. boost_skill_cli-1.2.33/boost_cli/core/paths.py +179 -0
  64. boost_skill_cli-1.2.33/boost_cli/core/policy.py +125 -0
  65. boost_skill_cli-1.2.33/boost_cli/core/projectlock.py +120 -0
  66. boost_skill_cli-1.2.33/boost_cli/core/provenance.py +163 -0
  67. boost_skill_cli-1.2.33/boost_cli/core/rag.py +1165 -0
  68. boost_skill_cli-1.2.33/boost_cli/core/registry.py +262 -0
  69. boost_skill_cli-1.2.33/boost_cli/core/resolve.py +138 -0
  70. boost_skill_cli-1.2.33/boost_cli/core/rules.py +174 -0
  71. boost_skill_cli-1.2.33/boost_cli/core/scopes.py +232 -0
  72. boost_skill_cli-1.2.33/boost_cli/core/secretscan.py +140 -0
  73. boost_skill_cli-1.2.33/boost_cli/core/selfupdate.py +270 -0
  74. boost_skill_cli-1.2.33/boost_cli/core/serve.py +949 -0
  75. boost_skill_cli-1.2.33/boost_cli/core/stackprobe.py +109 -0
  76. boost_skill_cli-1.2.33/boost_cli/core/staleness.py +77 -0
  77. boost_skill_cli-1.2.33/boost_cli/core/store.py +1653 -0
  78. boost_skill_cli-1.2.33/boost_cli/core/trustaudit.py +226 -0
  79. boost_skill_cli-1.2.33/boost_cli/core/typosquat.py +87 -0
  80. boost_skill_cli-1.2.33/boost_cli/core/updatediff.py +143 -0
  81. boost_skill_cli-1.2.33/boost_cli/core/util.py +316 -0
  82. boost_skill_cli-1.2.33/boost_cli/core/workflows.py +913 -0
  83. boost_skill_cli-1.2.33/boost_cli/errors.py +13 -0
  84. boost_skill_cli-1.2.33/boost_cli/spin.py +82 -0
  85. boost_skill_cli-1.2.33/boost_langchain/__init__.py +53 -0
  86. boost_skill_cli-1.2.33/boost_langchain/_compat.py +26 -0
  87. boost_skill_cli-1.2.33/boost_langchain/graph.py +101 -0
  88. boost_skill_cli-1.2.33/boost_langchain/loader.py +61 -0
  89. boost_skill_cli-1.2.33/boost_langchain/retriever.py +102 -0
  90. boost_skill_cli-1.2.33/boost_skill_cli.egg-info/PKG-INFO +1117 -0
  91. boost_skill_cli-1.2.33/boost_skill_cli.egg-info/SOURCES.txt +775 -0
  92. boost_skill_cli-1.2.33/docs/bmad.md +116 -0
  93. boost_skill_cli-1.2.33/docs/code-review.md +94 -0
  94. boost_skill_cli-1.2.33/docs/openssf-badge.md +372 -0
  95. boost_skill_cli-1.2.33/docs/rag-architecture.md +309 -0
  96. boost_skill_cli-1.2.33/docs/roadmap/items/openssf-gold-ceiling.md +55 -0
  97. boost_skill_cli-1.2.33/docs/roadmap/items/readme-prune-and-search-guide.md +37 -0
  98. boost_skill_cli-1.2.33/docs/roadmap.html +11922 -0
  99. boost_skill_cli-1.2.33/docs/security-design.md +230 -0
  100. boost_skill_cli-1.2.33/docs/semantic-search.md +130 -0
  101. boost_skill_cli-1.2.33/docs/verifying-releases.md +146 -0
  102. boost_skill_cli-1.2.33/evals/__init__.py +8 -0
  103. boost_skill_cli-1.2.33/evals/faithfulness.py +384 -0
  104. boost_skill_cli-1.2.33/evals/make_corpus.py +719 -0
  105. boost_skill_cli-1.2.33/evals/make_golden.py +277 -0
  106. boost_skill_cli-1.2.33/evals/metrics.py +200 -0
  107. boost_skill_cli-1.2.33/evals/publish_golden_dataset.py +93 -0
  108. boost_skill_cli-1.2.33/evals/run_evals.py +348 -0
  109. boost_skill_cli-1.2.33/noxfile.py +82 -0
  110. boost_skill_cli-1.2.33/pyproject.toml +339 -0
  111. boost_skill_cli-1.2.33/scripts/a11y_check.py +306 -0
  112. boost_skill_cli-1.2.33/scripts/add_spdx_headers.py +99 -0
  113. boost_skill_cli-1.2.33/scripts/bench_cli.sh +29 -0
  114. boost_skill_cli-1.2.33/scripts/build_command_reference.py +411 -0
  115. boost_skill_cli-1.2.33/scripts/build_demo_index.py +76 -0
  116. boost_skill_cli-1.2.33/scripts/build_registries.py +805 -0
  117. boost_skill_cli-1.2.33/scripts/build_roadmap.py +447 -0
  118. boost_skill_cli-1.2.33/scripts/build_scale_corpus.py +252 -0
  119. boost_skill_cli-1.2.33/scripts/check_anchors.py +110 -0
  120. boost_skill_cli-1.2.33/scripts/check_dco.py +114 -0
  121. boost_skill_cli-1.2.33/scripts/check_licenses.py +119 -0
  122. boost_skill_cli-1.2.33/scripts/check_required_checks.py +496 -0
  123. boost_skill_cli-1.2.33/scripts/ensure_eval_corpus.sh +47 -0
  124. boost_skill_cli-1.2.33/scripts/eval_corpus.py +641 -0
  125. boost_skill_cli-1.2.33/scripts/eval_explain.py +225 -0
  126. boost_skill_cli-1.2.33/scripts/eval_gate.py +241 -0
  127. boost_skill_cli-1.2.33/scripts/eval_recommend.py +274 -0
  128. boost_skill_cli-1.2.33/scripts/eval_retrieval.py +796 -0
  129. boost_skill_cli-1.2.33/scripts/eval_stats_summary.py +84 -0
  130. boost_skill_cli-1.2.33/scripts/import_budget.py +157 -0
  131. boost_skill_cli-1.2.33/scripts/lock_toolchain.py +394 -0
  132. boost_skill_cli-1.2.33/scripts/measure_registry.py +142 -0
  133. boost_skill_cli-1.2.33/scripts/mutation_gate.py +62 -0
  134. boost_skill_cli-1.2.33/scripts/mutation_shards.py +835 -0
  135. boost_skill_cli-1.2.33/scripts/page_budget.py +209 -0
  136. boost_skill_cli-1.2.33/scripts/perf_gate.py +151 -0
  137. boost_skill_cli-1.2.33/scripts/post_deploy_smoke.py +206 -0
  138. boost_skill_cli-1.2.33/scripts/publish_eval_json.py +129 -0
  139. boost_skill_cli-1.2.33/scripts/release_guard.py +177 -0
  140. boost_skill_cli-1.2.33/scripts/release_preflight.py +181 -0
  141. boost_skill_cli-1.2.33/scripts/serve_docs.py +149 -0
  142. boost_skill_cli-1.2.33/setup.cfg +25 -0
  143. boost_skill_cli-1.2.33/tests/bdd/features/environment.py +75 -0
  144. boost_skill_cli-1.2.33/tests/bdd/features/steps/cli_steps.py +120 -0
  145. boost_skill_cli-1.2.33/tests/bdd/features/steps/discovery_steps.py +79 -0
  146. boost_skill_cli-1.2.33/tests/bdd/features/steps/mcp_steps.py +74 -0
  147. boost_skill_cli-1.2.33/tests/bdd/features/steps/quality_steps.py +14 -0
  148. boost_skill_cli-1.2.33/tests/conftest.py +250 -0
  149. boost_skill_cli-1.2.33/tests/functional/test_capabilities_policy.py +121 -0
  150. boost_skill_cli-1.2.33/tests/functional/test_cli_adapt.py +132 -0
  151. boost_skill_cli-1.2.33/tests/functional/test_cli_bmad.py +521 -0
  152. boost_skill_cli-1.2.33/tests/functional/test_cli_catalog.py +192 -0
  153. boost_skill_cli-1.2.33/tests/functional/test_cli_chat.py +110 -0
  154. boost_skill_cli-1.2.33/tests/functional/test_cli_configuration.py +1927 -0
  155. boost_skill_cli-1.2.33/tests/functional/test_cli_discovery.py +1781 -0
  156. boost_skill_cli-1.2.33/tests/functional/test_cli_hooks.py +60 -0
  157. boost_skill_cli-1.2.33/tests/functional/test_cli_hooks_gemini.py +105 -0
  158. boost_skill_cli-1.2.33/tests/functional/test_cli_info.py +742 -0
  159. boost_skill_cli-1.2.33/tests/functional/test_cli_intelligence.py +620 -0
  160. boost_skill_cli-1.2.33/tests/functional/test_cli_pane_width.py +139 -0
  161. boost_skill_cli-1.2.33/tests/functional/test_cli_pkg.py +1718 -0
  162. boost_skill_cli-1.2.33/tests/functional/test_cli_quality.py +969 -0
  163. boost_skill_cli-1.2.33/tests/functional/test_cli_taps.py +365 -0
  164. boost_skill_cli-1.2.33/tests/functional/test_cli_team.py +612 -0
  165. boost_skill_cli-1.2.33/tests/functional/test_everyday_loop.py +70 -0
  166. boost_skill_cli-1.2.33/tests/functional/test_integrity_enforce.py +98 -0
  167. boost_skill_cli-1.2.33/tests/functional/test_kind_conformance.py +225 -0
  168. boost_skill_cli-1.2.33/tests/functional/test_property_parsers.py +131 -0
  169. boost_skill_cli-1.2.33/tests/functional/test_run.py +67 -0
  170. boost_skill_cli-1.2.33/tests/functional/test_tap_signing.py +152 -0
  171. boost_skill_cli-1.2.33/tests/functional/test_workspace_scope.py +332 -0
  172. boost_skill_cli-1.2.33/tests/fuzz/fuzz_frontmatter.py +129 -0
  173. boost_skill_cli-1.2.33/tests/fuzz/fuzz_registry.py +123 -0
  174. boost_skill_cli-1.2.33/tests/langchain/conftest.py +75 -0
  175. boost_skill_cli-1.2.33/tests/langchain/test_graph.py +155 -0
  176. boost_skill_cli-1.2.33/tests/langchain/test_loader.py +76 -0
  177. boost_skill_cli-1.2.33/tests/langchain/test_retriever.py +181 -0
  178. boost_skill_cli-1.2.33/tests/make_fixture.py +150 -0
  179. boost_skill_cli-1.2.33/tests/perf/test_benchmarks.py +61 -0
  180. boost_skill_cli-1.2.33/tests/smoke.sh +265 -0
  181. boost_skill_cli-1.2.33/tests/unit/test_a11y_check.py +216 -0
  182. boost_skill_cli-1.2.33/tests/unit/test_action_pin_lockstep.py +292 -0
  183. boost_skill_cli-1.2.33/tests/unit/test_adapters.py +399 -0
  184. boost_skill_cli-1.2.33/tests/unit/test_adapters_multi.py +382 -0
  185. boost_skill_cli-1.2.33/tests/unit/test_adapters_runner.py +144 -0
  186. boost_skill_cli-1.2.33/tests/unit/test_agents.py +164 -0
  187. boost_skill_cli-1.2.33/tests/unit/test_ai.py +441 -0
  188. boost_skill_cli-1.2.33/tests/unit/test_bmad_core.py +596 -0
  189. boost_skill_cli-1.2.33/tests/unit/test_boost_first_offer.py +181 -0
  190. boost_skill_cli-1.2.33/tests/unit/test_bootstrap.py +284 -0
  191. boost_skill_cli-1.2.33/tests/unit/test_browse.py +1056 -0
  192. boost_skill_cli-1.2.33/tests/unit/test_builtin.py +409 -0
  193. boost_skill_cli-1.2.33/tests/unit/test_capabilities.py +92 -0
  194. boost_skill_cli-1.2.33/tests/unit/test_catalog.py +1133 -0
  195. boost_skill_cli-1.2.33/tests/unit/test_catalogbundle.py +407 -0
  196. boost_skill_cli-1.2.33/tests/unit/test_chat.py +386 -0
  197. boost_skill_cli-1.2.33/tests/unit/test_check_anchors.py +81 -0
  198. boost_skill_cli-1.2.33/tests/unit/test_check_dco.py +181 -0
  199. boost_skill_cli-1.2.33/tests/unit/test_check_licenses.py +174 -0
  200. boost_skill_cli-1.2.33/tests/unit/test_claude_settings.py +125 -0
  201. boost_skill_cli-1.2.33/tests/unit/test_clean_internal_cache.py +111 -0
  202. boost_skill_cli-1.2.33/tests/unit/test_cliparse.py +45 -0
  203. boost_skill_cli-1.2.33/tests/unit/test_codeql_analysis_key.py +97 -0
  204. boost_skill_cli-1.2.33/tests/unit/test_command_reference_fresh.py +76 -0
  205. boost_skill_cli-1.2.33/tests/unit/test_community_health_files.py +92 -0
  206. boost_skill_cli-1.2.33/tests/unit/test_compact.py +177 -0
  207. boost_skill_cli-1.2.33/tests/unit/test_complete.py +365 -0
  208. boost_skill_cli-1.2.33/tests/unit/test_complete_rc_block.py +369 -0
  209. boost_skill_cli-1.2.33/tests/unit/test_config.py +287 -0
  210. boost_skill_cli-1.2.33/tests/unit/test_content_dedupe.py +146 -0
  211. boost_skill_cli-1.2.33/tests/unit/test_content_identity.py +439 -0
  212. boost_skill_cli-1.2.33/tests/unit/test_crash_redaction.py +60 -0
  213. boost_skill_cli-1.2.33/tests/unit/test_dedup_trust.py +119 -0
  214. boost_skill_cli-1.2.33/tests/unit/test_demo_index.py +110 -0
  215. boost_skill_cli-1.2.33/tests/unit/test_dense.py +322 -0
  216. boost_skill_cli-1.2.33/tests/unit/test_dense_embed_dedupe.py +218 -0
  217. boost_skill_cli-1.2.33/tests/unit/test_dense_fallback.py +563 -0
  218. boost_skill_cli-1.2.33/tests/unit/test_dense_fix_hint.py +226 -0
  219. boost_skill_cli-1.2.33/tests/unit/test_dense_quantized.py +378 -0
  220. boost_skill_cli-1.2.33/tests/unit/test_dense_ready_order.py +42 -0
  221. boost_skill_cli-1.2.33/tests/unit/test_dense_shard_real_schema.py +157 -0
  222. boost_skill_cli-1.2.33/tests/unit/test_dense_shard_unreadable_vectors.py +111 -0
  223. boost_skill_cli-1.2.33/tests/unit/test_dense_shards.py +353 -0
  224. boost_skill_cli-1.2.33/tests/unit/test_dense_status.py +353 -0
  225. boost_skill_cli-1.2.33/tests/unit/test_dense_status_cheap.py +283 -0
  226. boost_skill_cli-1.2.33/tests/unit/test_dependabot_config.py +166 -0
  227. boost_skill_cli-1.2.33/tests/unit/test_docs_pages_linked.py +81 -0
  228. boost_skill_cli-1.2.33/tests/unit/test_docsite_chrome.py +286 -0
  229. boost_skill_cli-1.2.33/tests/unit/test_ed25519.py +97 -0
  230. boost_skill_cli-1.2.33/tests/unit/test_embed.py +218 -0
  231. boost_skill_cli-1.2.33/tests/unit/test_embed_local.py +266 -0
  232. boost_skill_cli-1.2.33/tests/unit/test_embed_truncated_response.py +70 -0
  233. boost_skill_cli-1.2.33/tests/unit/test_entry_key.py +105 -0
  234. boost_skill_cli-1.2.33/tests/unit/test_errors_and_cli_table.py +268 -0
  235. boost_skill_cli-1.2.33/tests/unit/test_eval_baseline.py +184 -0
  236. boost_skill_cli-1.2.33/tests/unit/test_eval_corpus.py +700 -0
  237. boost_skill_cli-1.2.33/tests/unit/test_eval_faithfulness.py +261 -0
  238. boost_skill_cli-1.2.33/tests/unit/test_eval_gate.py +196 -0
  239. boost_skill_cli-1.2.33/tests/unit/test_eval_grading.py +337 -0
  240. boost_skill_cli-1.2.33/tests/unit/test_eval_metrics.py +257 -0
  241. boost_skill_cli-1.2.33/tests/unit/test_eval_stats_summary.py +82 -0
  242. boost_skill_cli-1.2.33/tests/unit/test_failure_alerting_covers_unattended.py +178 -0
  243. boost_skill_cli-1.2.33/tests/unit/test_faithfulness.py +89 -0
  244. boost_skill_cli-1.2.33/tests/unit/test_frontmatter.py +331 -0
  245. boost_skill_cli-1.2.33/tests/unit/test_fuzz_targets.py +89 -0
  246. boost_skill_cli-1.2.33/tests/unit/test_gemini_agent_sanitize.py +1359 -0
  247. boost_skill_cli-1.2.33/tests/unit/test_gitleaks_config.py +61 -0
  248. boost_skill_cli-1.2.33/tests/unit/test_gitutil.py +350 -0
  249. boost_skill_cli-1.2.33/tests/unit/test_gitutil_lfs.py +72 -0
  250. boost_skill_cli-1.2.33/tests/unit/test_gitutil_sparse.py +295 -0
  251. boost_skill_cli-1.2.33/tests/unit/test_hook_settings_hosts.py +119 -0
  252. boost_skill_cli-1.2.33/tests/unit/test_hookhost.py +181 -0
  253. boost_skill_cli-1.2.33/tests/unit/test_imperative.py +103 -0
  254. boost_skill_cli-1.2.33/tests/unit/test_import_budget.py +137 -0
  255. boost_skill_cli-1.2.33/tests/unit/test_injectscan.py +284 -0
  256. boost_skill_cli-1.2.33/tests/unit/test_install_permission_error.py +58 -0
  257. boost_skill_cli-1.2.33/tests/unit/test_installscan.py +165 -0
  258. boost_skill_cli-1.2.33/tests/unit/test_integrity.py +231 -0
  259. boost_skill_cli-1.2.33/tests/unit/test_journal.py +281 -0
  260. boost_skill_cli-1.2.33/tests/unit/test_langchain_packaging.py +112 -0
  261. boost_skill_cli-1.2.33/tests/unit/test_link_ownership.py +110 -0
  262. boost_skill_cli-1.2.33/tests/unit/test_localembed.py +493 -0
  263. boost_skill_cli-1.2.33/tests/unit/test_localembed_e2e.py +172 -0
  264. boost_skill_cli-1.2.33/tests/unit/test_lockfile.py +276 -0
  265. boost_skill_cli-1.2.33/tests/unit/test_logs.py +615 -0
  266. boost_skill_cli-1.2.33/tests/unit/test_marketing_counts.py +93 -0
  267. boost_skill_cli-1.2.33/tests/unit/test_mcp.py +1159 -0
  268. boost_skill_cli-1.2.33/tests/unit/test_mcp_install_scan.py +108 -0
  269. boost_skill_cli-1.2.33/tests/unit/test_mcpdecl.py +357 -0
  270. boost_skill_cli-1.2.33/tests/unit/test_mcphost.py +197 -0
  271. boost_skill_cli-1.2.33/tests/unit/test_measure_registry.py +135 -0
  272. boost_skill_cli-1.2.33/tests/unit/test_minisign.py +157 -0
  273. boost_skill_cli-1.2.33/tests/unit/test_mutation_hardening.py +250 -0
  274. boost_skill_cli-1.2.33/tests/unit/test_mutation_shards.py +392 -0
  275. boost_skill_cli-1.2.33/tests/unit/test_mutation_subfile_shards.py +591 -0
  276. boost_skill_cli-1.2.33/tests/unit/test_mutmut_source_paths.py +144 -0
  277. boost_skill_cli-1.2.33/tests/unit/test_nethttp.py +122 -0
  278. boost_skill_cli-1.2.33/tests/unit/test_output.py +1521 -0
  279. boost_skill_cli-1.2.33/tests/unit/test_page_budget.py +173 -0
  280. boost_skill_cli-1.2.33/tests/unit/test_paths.py +170 -0
  281. boost_skill_cli-1.2.33/tests/unit/test_perf_gate.py +66 -0
  282. boost_skill_cli-1.2.33/tests/unit/test_pkg_confusions.py +47 -0
  283. boost_skill_cli-1.2.33/tests/unit/test_pkg_injection.py +61 -0
  284. boost_skill_cli-1.2.33/tests/unit/test_pkg_secrets.py +56 -0
  285. boost_skill_cli-1.2.33/tests/unit/test_platform_pins.py +387 -0
  286. boost_skill_cli-1.2.33/tests/unit/test_policy.py +230 -0
  287. boost_skill_cli-1.2.33/tests/unit/test_post_deploy_smoke.py +220 -0
  288. boost_skill_cli-1.2.33/tests/unit/test_project_mcp_sidecar.py +189 -0
  289. boost_skill_cli-1.2.33/tests/unit/test_projectlock.py +138 -0
  290. boost_skill_cli-1.2.33/tests/unit/test_provenance.py +128 -0
  291. boost_skill_cli-1.2.33/tests/unit/test_publish_golden_dataset.py +228 -0
  292. boost_skill_cli-1.2.33/tests/unit/test_rag.py +1535 -0
  293. boost_skill_cli-1.2.33/tests/unit/test_rag_fastpath.py +281 -0
  294. boost_skill_cli-1.2.33/tests/unit/test_rag_fusion.py +308 -0
  295. boost_skill_cli-1.2.33/tests/unit/test_registries_fresh.py +51 -0
  296. boost_skill_cli-1.2.33/tests/unit/test_registry.py +352 -0
  297. boost_skill_cli-1.2.33/tests/unit/test_registry_categories.py +389 -0
  298. boost_skill_cli-1.2.33/tests/unit/test_registry_control_chars.py +235 -0
  299. boost_skill_cli-1.2.33/tests/unit/test_release_guard.py +229 -0
  300. boost_skill_cli-1.2.33/tests/unit/test_release_preflight.py +210 -0
  301. boost_skill_cli-1.2.33/tests/unit/test_required_checks.py +529 -0
  302. boost_skill_cli-1.2.33/tests/unit/test_rerank_cache.py +130 -0
  303. boost_skill_cli-1.2.33/tests/unit/test_resolve.py +164 -0
  304. boost_skill_cli-1.2.33/tests/unit/test_roadmap_fresh.py +407 -0
  305. boost_skill_cli-1.2.33/tests/unit/test_rules.py +297 -0
  306. boost_skill_cli-1.2.33/tests/unit/test_scale_corpus.py +268 -0
  307. boost_skill_cli-1.2.33/tests/unit/test_scopes.py +325 -0
  308. boost_skill_cli-1.2.33/tests/unit/test_secretscan.py +156 -0
  309. boost_skill_cli-1.2.33/tests/unit/test_selfupdate.py +531 -0
  310. boost_skill_cli-1.2.33/tests/unit/test_serve.py +1135 -0
  311. boost_skill_cli-1.2.33/tests/unit/test_serve_docs.py +199 -0
  312. boost_skill_cli-1.2.33/tests/unit/test_shards_matrix.py +138 -0
  313. boost_skill_cli-1.2.33/tests/unit/test_smoke_covers_every_command.py +75 -0
  314. boost_skill_cli-1.2.33/tests/unit/test_spdx_headers.py +100 -0
  315. boost_skill_cli-1.2.33/tests/unit/test_spin.py +111 -0
  316. boost_skill_cli-1.2.33/tests/unit/test_stackprobe.py +117 -0
  317. boost_skill_cli-1.2.33/tests/unit/test_staleness.py +104 -0
  318. boost_skill_cli-1.2.33/tests/unit/test_store.py +2679 -0
  319. boost_skill_cli-1.2.33/tests/unit/test_store_materialize.py +112 -0
  320. boost_skill_cli-1.2.33/tests/unit/test_sync_blocked_links.py +130 -0
  321. boost_skill_cli-1.2.33/tests/unit/test_sync_repairs_gutted_skill.py +98 -0
  322. boost_skill_cli-1.2.33/tests/unit/test_token_parity.py +34 -0
  323. boost_skill_cli-1.2.33/tests/unit/test_toolchain_lock.py +336 -0
  324. boost_skill_cli-1.2.33/tests/unit/test_trustaudit.py +371 -0
  325. boost_skill_cli-1.2.33/tests/unit/test_typosquat.py +136 -0
  326. boost_skill_cli-1.2.33/tests/unit/test_updatediff.py +173 -0
  327. boost_skill_cli-1.2.33/tests/unit/test_util.py +663 -0
  328. boost_skill_cli-1.2.33/tests/unit/test_version.py +52 -0
  329. boost_skill_cli-1.2.33/tests/unit/test_visual_harness_flags.py +123 -0
  330. boost_skill_cli-1.2.33/tests/unit/test_workflow_concurrency.py +114 -0
  331. boost_skill_cli-1.2.33/tests/unit/test_workflow_concurrency_groups.py +146 -0
  332. boost_skill_cli-1.2.33/tests/unit/test_workflow_push_has_credentials.py +142 -0
  333. boost_skill_cli-1.2.33/tests/unit/test_workflow_timeouts.py +75 -0
  334. boost_skill_cli-1.2.33/tests/unit/test_workflows.py +299 -0
  335. boost_skill_cli-1.2.33/tests/unit/test_zizmor_ignores_still_anchor.py +120 -0
  336. boost_skill_cli-1.2.31/.vale/styles/config/vocabularies/boost/accept.txt +0 -180
  337. boost_skill_cli-1.2.31/CLAUDE.md +0 -472
  338. boost_skill_cli-1.2.31/CONTRIBUTING.md +0 -233
  339. boost_skill_cli-1.2.31/Makefile +0 -252
  340. boost_skill_cli-1.2.31/PKG-INFO +0 -1327
  341. boost_skill_cli-1.2.31/README.md +0 -609
  342. boost_skill_cli-1.2.31/boost +0 -45
  343. boost_skill_cli-1.2.31/boost_cli/__init__.py +0 -33
  344. boost_skill_cli-1.2.31/boost_cli/__main__.py +0 -8
  345. boost_skill_cli-1.2.31/boost_cli/_version.py +0 -24
  346. boost_skill_cli-1.2.31/boost_cli/cli.py +0 -336
  347. boost_skill_cli-1.2.31/boost_cli/cliparse.py +0 -31
  348. boost_skill_cli-1.2.31/boost_cli/commands/__init__.py +0 -0
  349. boost_skill_cli-1.2.31/boost_cli/commands/_common.py +0 -78
  350. boost_skill_cli-1.2.31/boost_cli/commands/bmad.py +0 -579
  351. boost_skill_cli-1.2.31/boost_cli/commands/configuration.py +0 -1735
  352. boost_skill_cli-1.2.31/boost_cli/commands/discovery.py +0 -1672
  353. boost_skill_cli-1.2.31/boost_cli/commands/hooks.py +0 -156
  354. boost_skill_cli-1.2.31/boost_cli/commands/info.py +0 -1021
  355. boost_skill_cli-1.2.31/boost_cli/commands/intelligence.py +0 -1217
  356. boost_skill_cli-1.2.31/boost_cli/commands/pkg.py +0 -1604
  357. boost_skill_cli-1.2.31/boost_cli/commands/quality.py +0 -1315
  358. boost_skill_cli-1.2.31/boost_cli/commands/run.py +0 -116
  359. boost_skill_cli-1.2.31/boost_cli/commands/safety.py +0 -584
  360. boost_skill_cli-1.2.31/boost_cli/commands/taps.py +0 -383
  361. boost_skill_cli-1.2.31/boost_cli/commands/team.py +0 -748
  362. boost_skill_cli-1.2.31/boost_cli/core/__init__.py +0 -0
  363. boost_skill_cli-1.2.31/boost_cli/core/adapters.py +0 -559
  364. boost_skill_cli-1.2.31/boost_cli/core/agents.py +0 -79
  365. boost_skill_cli-1.2.31/boost_cli/core/ai.py +0 -159
  366. boost_skill_cli-1.2.31/boost_cli/core/bmad.py +0 -692
  367. boost_skill_cli-1.2.31/boost_cli/core/bootstrap.py +0 -135
  368. boost_skill_cli-1.2.31/boost_cli/core/browse.py +0 -646
  369. boost_skill_cli-1.2.31/boost_cli/core/builtin.py +0 -114
  370. boost_skill_cli-1.2.31/boost_cli/core/capabilities.py +0 -131
  371. boost_skill_cli-1.2.31/boost_cli/core/catalog.py +0 -660
  372. boost_skill_cli-1.2.31/boost_cli/core/catalogbundle.py +0 -265
  373. boost_skill_cli-1.2.31/boost_cli/core/chat.py +0 -393
  374. boost_skill_cli-1.2.31/boost_cli/core/claude_settings.py +0 -241
  375. boost_skill_cli-1.2.31/boost_cli/core/complete.py +0 -420
  376. boost_skill_cli-1.2.31/boost_cli/core/config.py +0 -226
  377. boost_skill_cli-1.2.31/boost_cli/core/dense.py +0 -970
  378. boost_skill_cli-1.2.31/boost_cli/core/ed25519.py +0 -129
  379. boost_skill_cli-1.2.31/boost_cli/core/embed.py +0 -285
  380. boost_skill_cli-1.2.31/boost_cli/core/faithfulness.py +0 -114
  381. boost_skill_cli-1.2.31/boost_cli/core/frontmatter.py +0 -176
  382. boost_skill_cli-1.2.31/boost_cli/core/gitutil.py +0 -300
  383. boost_skill_cli-1.2.31/boost_cli/core/hookhost.py +0 -240
  384. boost_skill_cli-1.2.31/boost_cli/core/imperative.py +0 -68
  385. boost_skill_cli-1.2.31/boost_cli/core/injectscan.py +0 -238
  386. boost_skill_cli-1.2.31/boost_cli/core/installscan.py +0 -113
  387. boost_skill_cli-1.2.31/boost_cli/core/integrity.py +0 -228
  388. boost_skill_cli-1.2.31/boost_cli/core/journal.py +0 -119
  389. boost_skill_cli-1.2.31/boost_cli/core/localembed.py +0 -244
  390. boost_skill_cli-1.2.31/boost_cli/core/lockfile.py +0 -252
  391. boost_skill_cli-1.2.31/boost_cli/core/logs.py +0 -352
  392. boost_skill_cli-1.2.31/boost_cli/core/mcp.py +0 -479
  393. boost_skill_cli-1.2.31/boost_cli/core/mcpdecl.py +0 -204
  394. boost_skill_cli-1.2.31/boost_cli/core/mcphost.py +0 -166
  395. boost_skill_cli-1.2.31/boost_cli/core/minisign.py +0 -125
  396. boost_skill_cli-1.2.31/boost_cli/core/nethttp.py +0 -67
  397. boost_skill_cli-1.2.31/boost_cli/core/output.py +0 -766
  398. boost_skill_cli-1.2.31/boost_cli/core/paths.py +0 -177
  399. boost_skill_cli-1.2.31/boost_cli/core/policy.py +0 -123
  400. boost_skill_cli-1.2.31/boost_cli/core/projectlock.py +0 -118
  401. boost_skill_cli-1.2.31/boost_cli/core/provenance.py +0 -161
  402. boost_skill_cli-1.2.31/boost_cli/core/rag.py +0 -1163
  403. boost_skill_cli-1.2.31/boost_cli/core/registry.py +0 -260
  404. boost_skill_cli-1.2.31/boost_cli/core/resolve.py +0 -136
  405. boost_skill_cli-1.2.31/boost_cli/core/rules.py +0 -172
  406. boost_skill_cli-1.2.31/boost_cli/core/scopes.py +0 -230
  407. boost_skill_cli-1.2.31/boost_cli/core/secretscan.py +0 -138
  408. boost_skill_cli-1.2.31/boost_cli/core/selfupdate.py +0 -268
  409. boost_skill_cli-1.2.31/boost_cli/core/serve.py +0 -947
  410. boost_skill_cli-1.2.31/boost_cli/core/stackprobe.py +0 -107
  411. boost_skill_cli-1.2.31/boost_cli/core/staleness.py +0 -75
  412. boost_skill_cli-1.2.31/boost_cli/core/store.py +0 -1651
  413. boost_skill_cli-1.2.31/boost_cli/core/trustaudit.py +0 -224
  414. boost_skill_cli-1.2.31/boost_cli/core/typosquat.py +0 -85
  415. boost_skill_cli-1.2.31/boost_cli/core/updatediff.py +0 -141
  416. boost_skill_cli-1.2.31/boost_cli/core/util.py +0 -314
  417. boost_skill_cli-1.2.31/boost_cli/core/workflows.py +0 -911
  418. boost_skill_cli-1.2.31/boost_cli/errors.py +0 -11
  419. boost_skill_cli-1.2.31/boost_cli/spin.py +0 -80
  420. boost_skill_cli-1.2.31/boost_langchain/__init__.py +0 -51
  421. boost_skill_cli-1.2.31/boost_langchain/_compat.py +0 -24
  422. boost_skill_cli-1.2.31/boost_langchain/graph.py +0 -99
  423. boost_skill_cli-1.2.31/boost_langchain/loader.py +0 -59
  424. boost_skill_cli-1.2.31/boost_langchain/retriever.py +0 -100
  425. boost_skill_cli-1.2.31/boost_skill_cli.egg-info/PKG-INFO +0 -1327
  426. boost_skill_cli-1.2.31/boost_skill_cli.egg-info/SOURCES.txt +0 -768
  427. boost_skill_cli-1.2.31/docs/openssf-badge.md +0 -270
  428. boost_skill_cli-1.2.31/docs/rag-architecture.md +0 -309
  429. boost_skill_cli-1.2.31/docs/roadmap.html +0 -11838
  430. boost_skill_cli-1.2.31/docs/security-design.md +0 -191
  431. boost_skill_cli-1.2.31/docs/verifying-releases.md +0 -101
  432. boost_skill_cli-1.2.31/evals/__init__.py +0 -6
  433. boost_skill_cli-1.2.31/evals/faithfulness.py +0 -382
  434. boost_skill_cli-1.2.31/evals/make_corpus.py +0 -717
  435. boost_skill_cli-1.2.31/evals/make_golden.py +0 -275
  436. boost_skill_cli-1.2.31/evals/metrics.py +0 -198
  437. boost_skill_cli-1.2.31/evals/publish_golden_dataset.py +0 -91
  438. boost_skill_cli-1.2.31/evals/run_evals.py +0 -346
  439. boost_skill_cli-1.2.31/noxfile.py +0 -80
  440. boost_skill_cli-1.2.31/pyproject.toml +0 -331
  441. boost_skill_cli-1.2.31/scripts/a11y_check.py +0 -304
  442. boost_skill_cli-1.2.31/scripts/bench_cli.sh +0 -27
  443. boost_skill_cli-1.2.31/scripts/build_command_reference.py +0 -409
  444. boost_skill_cli-1.2.31/scripts/build_demo_index.py +0 -74
  445. boost_skill_cli-1.2.31/scripts/build_registries.py +0 -803
  446. boost_skill_cli-1.2.31/scripts/build_roadmap.py +0 -445
  447. boost_skill_cli-1.2.31/scripts/build_scale_corpus.py +0 -250
  448. boost_skill_cli-1.2.31/scripts/check_anchors.py +0 -108
  449. boost_skill_cli-1.2.31/scripts/check_dco.py +0 -112
  450. boost_skill_cli-1.2.31/scripts/check_licenses.py +0 -117
  451. boost_skill_cli-1.2.31/scripts/check_required_checks.py +0 -494
  452. boost_skill_cli-1.2.31/scripts/ensure_eval_corpus.sh +0 -45
  453. boost_skill_cli-1.2.31/scripts/eval_corpus.py +0 -639
  454. boost_skill_cli-1.2.31/scripts/eval_explain.py +0 -223
  455. boost_skill_cli-1.2.31/scripts/eval_gate.py +0 -239
  456. boost_skill_cli-1.2.31/scripts/eval_recommend.py +0 -272
  457. boost_skill_cli-1.2.31/scripts/eval_retrieval.py +0 -794
  458. boost_skill_cli-1.2.31/scripts/eval_stats_summary.py +0 -82
  459. boost_skill_cli-1.2.31/scripts/import_budget.py +0 -155
  460. boost_skill_cli-1.2.31/scripts/lock_toolchain.py +0 -392
  461. boost_skill_cli-1.2.31/scripts/measure_registry.py +0 -140
  462. boost_skill_cli-1.2.31/scripts/mutation_gate.py +0 -60
  463. boost_skill_cli-1.2.31/scripts/mutation_shards.py +0 -833
  464. boost_skill_cli-1.2.31/scripts/page_budget.py +0 -207
  465. boost_skill_cli-1.2.31/scripts/perf_gate.py +0 -149
  466. boost_skill_cli-1.2.31/scripts/post_deploy_smoke.py +0 -204
  467. boost_skill_cli-1.2.31/scripts/publish_eval_json.py +0 -127
  468. boost_skill_cli-1.2.31/scripts/release_guard.py +0 -175
  469. boost_skill_cli-1.2.31/scripts/release_preflight.py +0 -179
  470. boost_skill_cli-1.2.31/scripts/serve_docs.py +0 -147
  471. boost_skill_cli-1.2.31/setup.cfg +0 -24
  472. boost_skill_cli-1.2.31/tests/bdd/features/environment.py +0 -73
  473. boost_skill_cli-1.2.31/tests/bdd/features/steps/cli_steps.py +0 -118
  474. boost_skill_cli-1.2.31/tests/bdd/features/steps/discovery_steps.py +0 -77
  475. boost_skill_cli-1.2.31/tests/bdd/features/steps/mcp_steps.py +0 -72
  476. boost_skill_cli-1.2.31/tests/bdd/features/steps/quality_steps.py +0 -12
  477. boost_skill_cli-1.2.31/tests/conftest.py +0 -248
  478. boost_skill_cli-1.2.31/tests/functional/test_capabilities_policy.py +0 -119
  479. boost_skill_cli-1.2.31/tests/functional/test_cli_adapt.py +0 -130
  480. boost_skill_cli-1.2.31/tests/functional/test_cli_bmad.py +0 -519
  481. boost_skill_cli-1.2.31/tests/functional/test_cli_catalog.py +0 -190
  482. boost_skill_cli-1.2.31/tests/functional/test_cli_chat.py +0 -108
  483. boost_skill_cli-1.2.31/tests/functional/test_cli_configuration.py +0 -1925
  484. boost_skill_cli-1.2.31/tests/functional/test_cli_discovery.py +0 -1779
  485. boost_skill_cli-1.2.31/tests/functional/test_cli_hooks.py +0 -58
  486. boost_skill_cli-1.2.31/tests/functional/test_cli_hooks_gemini.py +0 -103
  487. boost_skill_cli-1.2.31/tests/functional/test_cli_info.py +0 -740
  488. boost_skill_cli-1.2.31/tests/functional/test_cli_intelligence.py +0 -618
  489. boost_skill_cli-1.2.31/tests/functional/test_cli_pane_width.py +0 -137
  490. boost_skill_cli-1.2.31/tests/functional/test_cli_pkg.py +0 -1716
  491. boost_skill_cli-1.2.31/tests/functional/test_cli_quality.py +0 -967
  492. boost_skill_cli-1.2.31/tests/functional/test_cli_taps.py +0 -363
  493. boost_skill_cli-1.2.31/tests/functional/test_cli_team.py +0 -610
  494. boost_skill_cli-1.2.31/tests/functional/test_everyday_loop.py +0 -68
  495. boost_skill_cli-1.2.31/tests/functional/test_integrity_enforce.py +0 -96
  496. boost_skill_cli-1.2.31/tests/functional/test_kind_conformance.py +0 -223
  497. boost_skill_cli-1.2.31/tests/functional/test_property_parsers.py +0 -129
  498. boost_skill_cli-1.2.31/tests/functional/test_run.py +0 -65
  499. boost_skill_cli-1.2.31/tests/functional/test_tap_signing.py +0 -150
  500. boost_skill_cli-1.2.31/tests/functional/test_workspace_scope.py +0 -330
  501. boost_skill_cli-1.2.31/tests/fuzz/fuzz_frontmatter.py +0 -127
  502. boost_skill_cli-1.2.31/tests/fuzz/fuzz_registry.py +0 -121
  503. boost_skill_cli-1.2.31/tests/langchain/conftest.py +0 -73
  504. boost_skill_cli-1.2.31/tests/langchain/test_graph.py +0 -153
  505. boost_skill_cli-1.2.31/tests/langchain/test_loader.py +0 -74
  506. boost_skill_cli-1.2.31/tests/langchain/test_retriever.py +0 -179
  507. boost_skill_cli-1.2.31/tests/make_fixture.py +0 -148
  508. boost_skill_cli-1.2.31/tests/perf/test_benchmarks.py +0 -59
  509. boost_skill_cli-1.2.31/tests/smoke.sh +0 -263
  510. boost_skill_cli-1.2.31/tests/unit/test_a11y_check.py +0 -214
  511. boost_skill_cli-1.2.31/tests/unit/test_action_pin_lockstep.py +0 -290
  512. boost_skill_cli-1.2.31/tests/unit/test_adapters.py +0 -397
  513. boost_skill_cli-1.2.31/tests/unit/test_adapters_multi.py +0 -380
  514. boost_skill_cli-1.2.31/tests/unit/test_adapters_runner.py +0 -142
  515. boost_skill_cli-1.2.31/tests/unit/test_agents.py +0 -162
  516. boost_skill_cli-1.2.31/tests/unit/test_ai.py +0 -439
  517. boost_skill_cli-1.2.31/tests/unit/test_bmad_core.py +0 -594
  518. boost_skill_cli-1.2.31/tests/unit/test_boost_first_offer.py +0 -179
  519. boost_skill_cli-1.2.31/tests/unit/test_bootstrap.py +0 -282
  520. boost_skill_cli-1.2.31/tests/unit/test_browse.py +0 -1054
  521. boost_skill_cli-1.2.31/tests/unit/test_builtin.py +0 -407
  522. boost_skill_cli-1.2.31/tests/unit/test_capabilities.py +0 -90
  523. boost_skill_cli-1.2.31/tests/unit/test_catalog.py +0 -1131
  524. boost_skill_cli-1.2.31/tests/unit/test_catalogbundle.py +0 -405
  525. boost_skill_cli-1.2.31/tests/unit/test_chat.py +0 -384
  526. boost_skill_cli-1.2.31/tests/unit/test_check_anchors.py +0 -79
  527. boost_skill_cli-1.2.31/tests/unit/test_check_dco.py +0 -179
  528. boost_skill_cli-1.2.31/tests/unit/test_check_licenses.py +0 -172
  529. boost_skill_cli-1.2.31/tests/unit/test_claude_settings.py +0 -123
  530. boost_skill_cli-1.2.31/tests/unit/test_clean_internal_cache.py +0 -109
  531. boost_skill_cli-1.2.31/tests/unit/test_cliparse.py +0 -43
  532. boost_skill_cli-1.2.31/tests/unit/test_codeql_analysis_key.py +0 -95
  533. boost_skill_cli-1.2.31/tests/unit/test_command_reference_fresh.py +0 -74
  534. boost_skill_cli-1.2.31/tests/unit/test_community_health_files.py +0 -90
  535. boost_skill_cli-1.2.31/tests/unit/test_compact.py +0 -175
  536. boost_skill_cli-1.2.31/tests/unit/test_complete.py +0 -363
  537. boost_skill_cli-1.2.31/tests/unit/test_complete_rc_block.py +0 -367
  538. boost_skill_cli-1.2.31/tests/unit/test_config.py +0 -285
  539. boost_skill_cli-1.2.31/tests/unit/test_content_dedupe.py +0 -144
  540. boost_skill_cli-1.2.31/tests/unit/test_content_identity.py +0 -437
  541. boost_skill_cli-1.2.31/tests/unit/test_crash_redaction.py +0 -58
  542. boost_skill_cli-1.2.31/tests/unit/test_dedup_trust.py +0 -117
  543. boost_skill_cli-1.2.31/tests/unit/test_demo_index.py +0 -108
  544. boost_skill_cli-1.2.31/tests/unit/test_dense.py +0 -320
  545. boost_skill_cli-1.2.31/tests/unit/test_dense_embed_dedupe.py +0 -216
  546. boost_skill_cli-1.2.31/tests/unit/test_dense_fallback.py +0 -561
  547. boost_skill_cli-1.2.31/tests/unit/test_dense_fix_hint.py +0 -224
  548. boost_skill_cli-1.2.31/tests/unit/test_dense_quantized.py +0 -376
  549. boost_skill_cli-1.2.31/tests/unit/test_dense_ready_order.py +0 -40
  550. boost_skill_cli-1.2.31/tests/unit/test_dense_shard_real_schema.py +0 -155
  551. boost_skill_cli-1.2.31/tests/unit/test_dense_shard_unreadable_vectors.py +0 -109
  552. boost_skill_cli-1.2.31/tests/unit/test_dense_shards.py +0 -351
  553. boost_skill_cli-1.2.31/tests/unit/test_dense_status.py +0 -351
  554. boost_skill_cli-1.2.31/tests/unit/test_dense_status_cheap.py +0 -281
  555. boost_skill_cli-1.2.31/tests/unit/test_dependabot_config.py +0 -164
  556. boost_skill_cli-1.2.31/tests/unit/test_docs_pages_linked.py +0 -79
  557. boost_skill_cli-1.2.31/tests/unit/test_docsite_chrome.py +0 -284
  558. boost_skill_cli-1.2.31/tests/unit/test_ed25519.py +0 -95
  559. boost_skill_cli-1.2.31/tests/unit/test_embed.py +0 -216
  560. boost_skill_cli-1.2.31/tests/unit/test_embed_local.py +0 -264
  561. boost_skill_cli-1.2.31/tests/unit/test_embed_truncated_response.py +0 -68
  562. boost_skill_cli-1.2.31/tests/unit/test_entry_key.py +0 -103
  563. boost_skill_cli-1.2.31/tests/unit/test_errors_and_cli_table.py +0 -266
  564. boost_skill_cli-1.2.31/tests/unit/test_eval_baseline.py +0 -182
  565. boost_skill_cli-1.2.31/tests/unit/test_eval_corpus.py +0 -698
  566. boost_skill_cli-1.2.31/tests/unit/test_eval_faithfulness.py +0 -259
  567. boost_skill_cli-1.2.31/tests/unit/test_eval_gate.py +0 -194
  568. boost_skill_cli-1.2.31/tests/unit/test_eval_grading.py +0 -335
  569. boost_skill_cli-1.2.31/tests/unit/test_eval_metrics.py +0 -255
  570. boost_skill_cli-1.2.31/tests/unit/test_eval_stats_summary.py +0 -80
  571. boost_skill_cli-1.2.31/tests/unit/test_failure_alerting_covers_unattended.py +0 -176
  572. boost_skill_cli-1.2.31/tests/unit/test_faithfulness.py +0 -87
  573. boost_skill_cli-1.2.31/tests/unit/test_frontmatter.py +0 -329
  574. boost_skill_cli-1.2.31/tests/unit/test_fuzz_targets.py +0 -87
  575. boost_skill_cli-1.2.31/tests/unit/test_gemini_agent_sanitize.py +0 -1357
  576. boost_skill_cli-1.2.31/tests/unit/test_gitleaks_config.py +0 -59
  577. boost_skill_cli-1.2.31/tests/unit/test_gitutil.py +0 -348
  578. boost_skill_cli-1.2.31/tests/unit/test_gitutil_lfs.py +0 -70
  579. boost_skill_cli-1.2.31/tests/unit/test_gitutil_sparse.py +0 -293
  580. boost_skill_cli-1.2.31/tests/unit/test_hook_settings_hosts.py +0 -117
  581. boost_skill_cli-1.2.31/tests/unit/test_hookhost.py +0 -179
  582. boost_skill_cli-1.2.31/tests/unit/test_imperative.py +0 -101
  583. boost_skill_cli-1.2.31/tests/unit/test_import_budget.py +0 -135
  584. boost_skill_cli-1.2.31/tests/unit/test_injectscan.py +0 -282
  585. boost_skill_cli-1.2.31/tests/unit/test_install_permission_error.py +0 -56
  586. boost_skill_cli-1.2.31/tests/unit/test_installscan.py +0 -163
  587. boost_skill_cli-1.2.31/tests/unit/test_integrity.py +0 -229
  588. boost_skill_cli-1.2.31/tests/unit/test_journal.py +0 -279
  589. boost_skill_cli-1.2.31/tests/unit/test_langchain_packaging.py +0 -110
  590. boost_skill_cli-1.2.31/tests/unit/test_link_ownership.py +0 -108
  591. boost_skill_cli-1.2.31/tests/unit/test_localembed.py +0 -491
  592. boost_skill_cli-1.2.31/tests/unit/test_localembed_e2e.py +0 -170
  593. boost_skill_cli-1.2.31/tests/unit/test_lockfile.py +0 -274
  594. boost_skill_cli-1.2.31/tests/unit/test_logs.py +0 -613
  595. boost_skill_cli-1.2.31/tests/unit/test_marketing_counts.py +0 -91
  596. boost_skill_cli-1.2.31/tests/unit/test_mcp.py +0 -1157
  597. boost_skill_cli-1.2.31/tests/unit/test_mcp_install_scan.py +0 -106
  598. boost_skill_cli-1.2.31/tests/unit/test_mcpdecl.py +0 -355
  599. boost_skill_cli-1.2.31/tests/unit/test_mcphost.py +0 -195
  600. boost_skill_cli-1.2.31/tests/unit/test_measure_registry.py +0 -133
  601. boost_skill_cli-1.2.31/tests/unit/test_minisign.py +0 -155
  602. boost_skill_cli-1.2.31/tests/unit/test_mutation_hardening.py +0 -248
  603. boost_skill_cli-1.2.31/tests/unit/test_mutation_shards.py +0 -390
  604. boost_skill_cli-1.2.31/tests/unit/test_mutation_subfile_shards.py +0 -589
  605. boost_skill_cli-1.2.31/tests/unit/test_mutmut_source_paths.py +0 -142
  606. boost_skill_cli-1.2.31/tests/unit/test_nethttp.py +0 -120
  607. boost_skill_cli-1.2.31/tests/unit/test_output.py +0 -1519
  608. boost_skill_cli-1.2.31/tests/unit/test_page_budget.py +0 -171
  609. boost_skill_cli-1.2.31/tests/unit/test_paths.py +0 -168
  610. boost_skill_cli-1.2.31/tests/unit/test_perf_gate.py +0 -64
  611. boost_skill_cli-1.2.31/tests/unit/test_pkg_confusions.py +0 -45
  612. boost_skill_cli-1.2.31/tests/unit/test_pkg_injection.py +0 -59
  613. boost_skill_cli-1.2.31/tests/unit/test_pkg_secrets.py +0 -54
  614. boost_skill_cli-1.2.31/tests/unit/test_platform_pins.py +0 -385
  615. boost_skill_cli-1.2.31/tests/unit/test_policy.py +0 -228
  616. boost_skill_cli-1.2.31/tests/unit/test_post_deploy_smoke.py +0 -218
  617. boost_skill_cli-1.2.31/tests/unit/test_project_mcp_sidecar.py +0 -187
  618. boost_skill_cli-1.2.31/tests/unit/test_projectlock.py +0 -136
  619. boost_skill_cli-1.2.31/tests/unit/test_provenance.py +0 -126
  620. boost_skill_cli-1.2.31/tests/unit/test_publish_golden_dataset.py +0 -226
  621. boost_skill_cli-1.2.31/tests/unit/test_rag.py +0 -1533
  622. boost_skill_cli-1.2.31/tests/unit/test_rag_fastpath.py +0 -279
  623. boost_skill_cli-1.2.31/tests/unit/test_rag_fusion.py +0 -306
  624. boost_skill_cli-1.2.31/tests/unit/test_registries_fresh.py +0 -49
  625. boost_skill_cli-1.2.31/tests/unit/test_registry.py +0 -350
  626. boost_skill_cli-1.2.31/tests/unit/test_registry_categories.py +0 -387
  627. boost_skill_cli-1.2.31/tests/unit/test_registry_control_chars.py +0 -233
  628. boost_skill_cli-1.2.31/tests/unit/test_release_guard.py +0 -227
  629. boost_skill_cli-1.2.31/tests/unit/test_release_preflight.py +0 -208
  630. boost_skill_cli-1.2.31/tests/unit/test_required_checks.py +0 -527
  631. boost_skill_cli-1.2.31/tests/unit/test_rerank_cache.py +0 -128
  632. boost_skill_cli-1.2.31/tests/unit/test_resolve.py +0 -162
  633. boost_skill_cli-1.2.31/tests/unit/test_roadmap_fresh.py +0 -405
  634. boost_skill_cli-1.2.31/tests/unit/test_rules.py +0 -295
  635. boost_skill_cli-1.2.31/tests/unit/test_scale_corpus.py +0 -266
  636. boost_skill_cli-1.2.31/tests/unit/test_scopes.py +0 -323
  637. boost_skill_cli-1.2.31/tests/unit/test_secretscan.py +0 -154
  638. boost_skill_cli-1.2.31/tests/unit/test_selfupdate.py +0 -529
  639. boost_skill_cli-1.2.31/tests/unit/test_serve.py +0 -1133
  640. boost_skill_cli-1.2.31/tests/unit/test_serve_docs.py +0 -197
  641. boost_skill_cli-1.2.31/tests/unit/test_shards_matrix.py +0 -136
  642. boost_skill_cli-1.2.31/tests/unit/test_smoke_covers_every_command.py +0 -73
  643. boost_skill_cli-1.2.31/tests/unit/test_spin.py +0 -109
  644. boost_skill_cli-1.2.31/tests/unit/test_stackprobe.py +0 -115
  645. boost_skill_cli-1.2.31/tests/unit/test_staleness.py +0 -102
  646. boost_skill_cli-1.2.31/tests/unit/test_store.py +0 -2677
  647. boost_skill_cli-1.2.31/tests/unit/test_store_materialize.py +0 -110
  648. boost_skill_cli-1.2.31/tests/unit/test_sync_blocked_links.py +0 -128
  649. boost_skill_cli-1.2.31/tests/unit/test_sync_repairs_gutted_skill.py +0 -96
  650. boost_skill_cli-1.2.31/tests/unit/test_token_parity.py +0 -32
  651. boost_skill_cli-1.2.31/tests/unit/test_toolchain_lock.py +0 -334
  652. boost_skill_cli-1.2.31/tests/unit/test_trustaudit.py +0 -369
  653. boost_skill_cli-1.2.31/tests/unit/test_typosquat.py +0 -134
  654. boost_skill_cli-1.2.31/tests/unit/test_updatediff.py +0 -171
  655. boost_skill_cli-1.2.31/tests/unit/test_util.py +0 -661
  656. boost_skill_cli-1.2.31/tests/unit/test_version.py +0 -50
  657. boost_skill_cli-1.2.31/tests/unit/test_visual_harness_flags.py +0 -121
  658. boost_skill_cli-1.2.31/tests/unit/test_workflow_concurrency.py +0 -112
  659. boost_skill_cli-1.2.31/tests/unit/test_workflow_concurrency_groups.py +0 -144
  660. boost_skill_cli-1.2.31/tests/unit/test_workflow_push_has_credentials.py +0 -140
  661. boost_skill_cli-1.2.31/tests/unit/test_workflow_timeouts.py +0 -73
  662. boost_skill_cli-1.2.31/tests/unit/test_workflows.py +0 -297
  663. boost_skill_cli-1.2.31/tests/unit/test_zizmor_ignores_still_anchor.py +0 -118
  664. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.gitattributes +0 -0
  665. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.gitignore +0 -0
  666. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.gitleaks.toml +0 -0
  667. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.htmlvalidate.json +0 -0
  668. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.lighthouserc.json +0 -0
  669. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.lycheeignore +0 -0
  670. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.markdownlint-cli2.jsonc +0 -0
  671. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.pre-commit-config.yaml +0 -0
  672. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.stylelintrc.json +0 -0
  673. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.vale/styles/boost/AIWriting.yml +0 -0
  674. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.vale/styles/boost/Terminology.yml +0 -0
  675. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/.vale.ini +0 -0
  676. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/CODE_OF_CONDUCT.md +0 -0
  677. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/DCO +0 -0
  678. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/GOVERNANCE.md +0 -0
  679. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/LICENSE +0 -0
  680. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/MAINTAINERS.md +0 -0
  681. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/MANIFEST.in +0 -0
  682. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/SECURITY.md +0 -0
  683. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/SUPPORT.md +0 -0
  684. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/boost_cli/data/registries.json +0 -0
  685. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/boost_cli/data/rules/boost-first.mdc +0 -0
  686. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/boost_langchain/py.typed +0 -0
  687. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  688. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  689. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/boost_skill_cli.egg-info/requires.txt +0 -0
  690. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/boost_skill_cli.egg-info/top_level.txt +0 -0
  691. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/codecov.yml +0 -0
  692. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/.claude/settings.local.json +0 -0
  693. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/DEBUGGING.md +0 -0
  694. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/adapters.html +0 -0
  695. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/architecture/README.md +0 -0
  696. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/architecture/c4-components-core.md +0 -0
  697. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/architecture/c4-containers.md +0 -0
  698. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/architecture/c4-context.md +0 -0
  699. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/architecture/c4-dynamic-install.md +0 -0
  700. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/distill.gif +0 -0
  701. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/doctor.gif +0 -0
  702. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/explain.gif +0 -0
  703. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/hooks.gif +0 -0
  704. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/install.gif +0 -0
  705. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/pulse.gif +0 -0
  706. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/search.gif +0 -0
  707. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/gifs/tap.gif +0 -0
  708. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/distill.tape +0 -0
  709. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/doctor.tape +0 -0
  710. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/explain.tape +0 -0
  711. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/hooks.tape +0 -0
  712. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/install.tape +0 -0
  713. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/pulse.tape +0 -0
  714. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/search.tape +0 -0
  715. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel/tapes/tap.tape +0 -0
  716. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/carousel.html +0 -0
  717. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/chat.html +0 -0
  718. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/commands.html +0 -0
  719. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/commit-audit.md +0 -0
  720. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/demo-index.json +0 -0
  721. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/demo.gif +0 -0
  722. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/demo.html +0 -0
  723. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/demo.tape +0 -0
  724. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/dependencies.md +0 -0
  725. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/design-roadmap.html +0 -0
  726. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/eval-latest.json +0 -0
  727. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/eval.html +0 -0
  728. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/index.html +0 -0
  729. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/langchain.html +0 -0
  730. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/mcp-hub.html +0 -0
  731. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/openssf-playbook.md +0 -0
  732. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D01.md +0 -0
  733. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D02.md +0 -0
  734. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D03.md +0 -0
  735. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D04.md +0 -0
  736. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D05.md +0 -0
  737. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D06.md +0 -0
  738. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D07.md +0 -0
  739. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D08.md +0 -0
  740. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D09.md +0 -0
  741. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D10.md +0 -0
  742. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D11.md +0 -0
  743. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D12.md +0 -0
  744. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D13.md +0 -0
  745. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D14.md +0 -0
  746. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D15.md +0 -0
  747. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D16.md +0 -0
  748. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D17.md +0 -0
  749. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D18.md +0 -0
  750. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D19.md +0 -0
  751. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D20.md +0 -0
  752. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D21.md +0 -0
  753. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D22.md +0 -0
  754. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D23.md +0 -0
  755. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D24.md +0 -0
  756. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D25.md +0 -0
  757. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/BOOST-D26.md +0 -0
  758. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  759. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  760. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  761. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  762. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  763. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  764. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  765. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  766. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  767. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  768. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  769. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  770. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  771. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  772. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/boost-first-rule.md +0 -0
  773. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  774. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  775. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  776. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  777. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  778. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  779. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  780. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  781. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  782. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  783. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  784. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  785. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  786. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  787. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  788. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  789. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  790. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  791. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  792. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  793. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/command-carousel-page.md +0 -0
  794. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  795. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  796. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  797. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  798. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  799. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  800. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  801. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  802. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  803. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  804. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  805. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  806. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  807. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  808. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  809. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  810. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  811. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  812. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  813. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  814. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  815. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  816. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  817. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  818. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  819. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  820. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  821. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  822. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  823. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  824. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  825. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  826. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  827. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  828. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  829. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  830. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  831. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  832. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  833. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  834. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  835. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  836. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  837. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  838. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  839. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  840. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  841. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  842. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  843. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  844. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/github-community-health-files.md +0 -0
  845. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  846. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  847. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  848. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  849. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  850. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  851. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  852. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  853. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  854. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  855. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  856. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  857. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  858. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  859. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  860. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  861. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  862. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  863. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  864. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  865. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  866. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  867. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  868. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  869. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  870. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  871. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  872. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  873. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  874. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  875. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  876. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  877. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  878. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  879. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  880. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  881. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  882. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  883. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  884. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  885. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  886. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  887. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  888. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  889. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  890. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  891. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  892. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  893. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  894. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  895. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  896. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  897. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  898. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  899. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  900. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  901. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  902. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  903. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  904. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  905. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  906. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  907. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  908. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  909. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  910. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  911. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  912. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  913. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  914. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  915. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  916. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  917. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  918. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  919. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/openssf-playbook.md +0 -0
  920. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/openssf-silver.md +0 -0
  921. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  922. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  923. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  924. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  925. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  926. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  927. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  928. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  929. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  930. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  931. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  932. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  933. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  934. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  935. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  936. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  937. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  938. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  939. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  940. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  941. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  942. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  943. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  944. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  945. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  946. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  947. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  948. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  949. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  950. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  951. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  952. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  953. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  954. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  955. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  956. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  957. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  958. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  959. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  960. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  961. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  962. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  963. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  964. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  965. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  966. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  967. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  968. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  969. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  970. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  971. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  972. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  973. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  974. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  975. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  976. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  977. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  978. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  979. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  980. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  981. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  982. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  983. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  984. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  985. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  986. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  987. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  988. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  989. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  990. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  991. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  992. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  993. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  994. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  995. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  996. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  997. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  998. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  999. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  1000. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  1001. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  1002. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  1003. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  1004. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  1005. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  1006. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  1007. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  1008. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  1009. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  1010. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  1011. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  1012. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  1013. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  1014. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  1015. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  1016. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  1017. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  1018. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  1019. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  1020. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  1021. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  1022. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  1023. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  1024. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  1025. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  1026. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  1027. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  1028. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/workspace-scope-install.md +0 -0
  1029. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/zip-strict-audit.md +0 -0
  1030. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  1031. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  1032. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  1033. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/eslint.config.mjs +0 -0
  1034. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/evals/README.md +0 -0
  1035. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/evals/baseline.json +0 -0
  1036. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/evals/golden_set.json +0 -0
  1037. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/examples/README.md +0 -0
  1038. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/examples/adapt-demo.sh +0 -0
  1039. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/examples/boost-run-prototype.sh +0 -0
  1040. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/index.html +0 -0
  1041. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/coverage-tools.in +0 -0
  1042. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/coverage-tools.txt +0 -0
  1043. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/lint-tools.in +0 -0
  1044. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/lint-tools.txt +0 -0
  1045. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/mutation-tools.in +0 -0
  1046. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/mutation-tools.txt +0 -0
  1047. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/platform-pins.lock +0 -0
  1048. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/release-tools.in +0 -0
  1049. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/release-tools.txt +0 -0
  1050. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/test-tools.in +0 -0
  1051. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/requirements/test-tools.txt +0 -0
  1052. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/scripts/mutation_weights.json +0 -0
  1053. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/sonar-project.properties +0 -0
  1054. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/style/README.md +0 -0
  1055. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/style/boost.css +0 -0
  1056. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/style/boost.js +0 -0
  1057. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/style/demo.html +0 -0
  1058. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/adapt.feature +0 -0
  1059. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/browse.feature +0 -0
  1060. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/count.feature +0 -0
  1061. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/discover.feature +0 -0
  1062. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/doctor.feature +0 -0
  1063. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/explain.feature +0 -0
  1064. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/index.feature +0 -0
  1065. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/install.feature +0 -0
  1066. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/list.feature +0 -0
  1067. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/mcp.feature +0 -0
  1068. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/bdd/features/search.feature +0 -0
  1069. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/eval/baseline.json +0 -0
  1070. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/eval/explain.jsonl +0 -0
  1071. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/eval/golden-natural.jsonl +0 -0
  1072. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/eval/golden.jsonl +0 -0
  1073. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/eval/recommend.jsonl +0 -0
  1074. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/eval/taps-scale.txt +0 -0
  1075. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/eval/taps.txt +0 -0
  1076. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/README.md +0 -0
  1077. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  1078. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  1079. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  1080. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  1081. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  1082. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  1083. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  1084. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  1085. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  1086. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  1087. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  1088. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  1089. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  1090. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  1091. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  1092. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  1093. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  1094. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  1095. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  1096. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  1097. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  1098. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  1099. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  1100. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/visual/a11y_check.mjs +0 -0
  1101. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/visual/console_check.mjs +0 -0
  1102. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/visual/package-lock.json +0 -0
  1103. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/visual/package.json +0 -0
  1104. {boost_skill_cli-1.2.31 → boost_skill_cli-1.2.33}/tests/visual/visual_check.mjs +0 -0
@@ -0,0 +1,189 @@
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
+ quantized
107
+ Quantizing
108
+ Quarkus
109
+ rebased
110
+ reimplement
111
+ reimplemented
112
+ reimplements
113
+ reindex
114
+ repo
115
+ repo's
116
+ repos
117
+ Rerank
118
+ rerank
119
+ reranking
120
+ rescan
121
+ rescanned
122
+ rescans
123
+ RevOps
124
+ ruleset
125
+ Rulesets
126
+ rulesets
127
+ Salesforce
128
+ Saltzer
129
+ sandboxed
130
+ sandboxing
131
+ scrollbar
132
+ sdist
133
+ SEO
134
+ setuptools
135
+ SHAs
136
+ Shopify
137
+ Sigstore
138
+ Snyk
139
+ SonarCloud
140
+ stderr
141
+ Stdlib
142
+ stdlib
143
+ stdout
144
+ stemmer
145
+ stemming
146
+ subagents
147
+ subcommand
148
+ subprocess
149
+ tappable
150
+ teardown
151
+ tempdir
152
+ textarea
153
+ toggleable
154
+ Tokenization
155
+ tokenization
156
+ toolchain
157
+ toolkits
158
+ traceback
159
+ tracebacks
160
+ triaged
161
+ triages
162
+ typosquat
163
+ typosquatted
164
+ unkilled
165
+ unlinking
166
+ unpatched
167
+ unregister
168
+ unremediated
169
+ unstaged
170
+ untap
171
+ untrusted
172
+ uv
173
+ Vaadin
174
+ Valgrind
175
+ vendored
176
+ vendoring
177
+ venv
178
+ venvs
179
+ VHS
180
+ vLLM
181
+ Weaviate
182
+ webfont
183
+ WooCommerce
184
+ wordmark
185
+ worktree
186
+ worktrees
187
+ Zapier
188
+ zizmor
189
+ 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