boost-skill-cli 1.2.43__tar.gz → 1.2.45__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 (808) hide show
  1. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.vale/styles/config/vocabularies/boost/accept.txt +1 -0
  2. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/CLAUDE.md +21 -1
  3. {boost_skill_cli-1.2.43/boost_skill_cli.egg-info → boost_skill_cli-1.2.45}/PKG-INFO +19 -7
  4. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/README.md +18 -6
  5. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/_version.py +2 -2
  6. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/cli.py +2 -1
  7. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/discovery.py +58 -0
  8. boost_skill_cli-1.2.45/boost_cli/commands/quickstart.py +149 -0
  9. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/taps.py +8 -2
  10. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/gitutil.py +38 -0
  11. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/registry.py +17 -1
  12. boost_skill_cli-1.2.45/boost_cli/core/shards.py +318 -0
  13. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45/boost_skill_cli.egg-info}/PKG-INFO +19 -7
  14. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_skill_cli.egg-info/SOURCES.txt +7 -0
  15. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel.html +1 -1
  16. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/commands.html +21 -8
  17. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/index.html +7 -6
  18. boost_skill_cli-1.2.45/docs/roadmap/items/gstack-tap-first-then-coexistence.md +82 -0
  19. boost_skill_cli-1.2.45/docs/roadmap/items/published-shards-have-no-consumer.md +54 -0
  20. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap.html +130 -1
  21. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/semantic-search.md +68 -1
  22. boost_skill_cli-1.2.45/scripts/publish_shards.py +166 -0
  23. boost_skill_cli-1.2.45/tests/functional/test_cli_quickstart.py +142 -0
  24. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_everyday_loop.py +1 -1
  25. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/smoke.sh +1 -0
  26. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_errors_and_cli_table.py +8 -8
  27. boost_skill_cli-1.2.45/tests/unit/test_shards.py +293 -0
  28. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.gitattributes +0 -0
  29. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.gitignore +0 -0
  30. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.gitleaks.toml +0 -0
  31. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.htmlvalidate.json +0 -0
  32. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.lighthouserc.json +0 -0
  33. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.lycheeignore +0 -0
  34. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.markdownlint-cli2.jsonc +0 -0
  35. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.pre-commit-config.yaml +0 -0
  36. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.stylelintrc.json +0 -0
  37. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.vale/styles/boost/AIWriting.yml +0 -0
  38. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.vale/styles/boost/Terminology.yml +0 -0
  39. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/.vale.ini +0 -0
  40. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/CODE_OF_CONDUCT.md +0 -0
  41. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/CONTRIBUTING.md +0 -0
  42. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/DCO +0 -0
  43. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/GOVERNANCE.md +0 -0
  44. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/LICENSE +0 -0
  45. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/MAINTAINERS.md +0 -0
  46. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/MANIFEST.in +0 -0
  47. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/Makefile +0 -0
  48. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/SECURITY.md +0 -0
  49. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/SUPPORT.md +0 -0
  50. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost +0 -0
  51. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/__init__.py +0 -0
  52. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/__main__.py +0 -0
  53. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/cliparse.py +0 -0
  54. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/__init__.py +0 -0
  55. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/_common.py +0 -0
  56. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/bmad.py +0 -0
  57. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/configuration.py +0 -0
  58. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/hooks.py +0 -0
  59. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/info.py +0 -0
  60. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/intelligence.py +0 -0
  61. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/pkg.py +0 -0
  62. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/quality.py +0 -0
  63. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/run.py +0 -0
  64. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/safety.py +0 -0
  65. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/commands/team.py +0 -0
  66. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/__init__.py +0 -0
  67. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/adapters.py +0 -0
  68. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/agents.py +0 -0
  69. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/ai.py +0 -0
  70. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/aihost.py +0 -0
  71. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/bmad.py +0 -0
  72. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/bootstrap.py +0 -0
  73. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/browse.py +0 -0
  74. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/builtin.py +0 -0
  75. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/capabilities.py +0 -0
  76. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/catalog.py +0 -0
  77. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/catalogbundle.py +0 -0
  78. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/chat.py +0 -0
  79. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/claude_settings.py +0 -0
  80. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/complete.py +0 -0
  81. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/config.py +0 -0
  82. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/dense.py +0 -0
  83. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/ed25519.py +0 -0
  84. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/embed.py +0 -0
  85. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/faithfulness.py +0 -0
  86. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/frontmatter.py +0 -0
  87. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/hookhost.py +0 -0
  88. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/imperative.py +0 -0
  89. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/injectscan.py +0 -0
  90. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/installscan.py +0 -0
  91. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/integrity.py +0 -0
  92. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/journal.py +0 -0
  93. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/localembed.py +0 -0
  94. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/lockfile.py +0 -0
  95. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/logs.py +0 -0
  96. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/mcp.py +0 -0
  97. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/mcpdecl.py +0 -0
  98. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/mcphost.py +0 -0
  99. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/minisign.py +0 -0
  100. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/nethttp.py +0 -0
  101. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/output.py +0 -0
  102. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/paths.py +0 -0
  103. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/policy.py +0 -0
  104. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/projectlock.py +0 -0
  105. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/provenance.py +0 -0
  106. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/rag.py +0 -0
  107. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/resolve.py +0 -0
  108. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/rules.py +0 -0
  109. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/scopes.py +0 -0
  110. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/secretscan.py +0 -0
  111. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/selfupdate.py +0 -0
  112. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/serve.py +0 -0
  113. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/stackprobe.py +0 -0
  114. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/staleness.py +0 -0
  115. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/store.py +0 -0
  116. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/trustaudit.py +0 -0
  117. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/typosquat.py +0 -0
  118. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/updatediff.py +0 -0
  119. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/util.py +0 -0
  120. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/core/workflows.py +0 -0
  121. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/data/registries.json +0 -0
  122. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/data/rules/boost-first.mdc +0 -0
  123. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/errors.py +0 -0
  124. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_cli/spin.py +0 -0
  125. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_langchain/__init__.py +0 -0
  126. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_langchain/_compat.py +0 -0
  127. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_langchain/graph.py +0 -0
  128. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_langchain/loader.py +0 -0
  129. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_langchain/py.typed +0 -0
  130. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_langchain/retriever.py +0 -0
  131. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  132. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  133. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_skill_cli.egg-info/requires.txt +0 -0
  134. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/boost_skill_cli.egg-info/top_level.txt +0 -0
  135. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/codecov.yml +0 -0
  136. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/.claude/settings.local.json +0 -0
  137. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/DEBUGGING.md +0 -0
  138. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/adapters.html +0 -0
  139. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/architecture/README.md +0 -0
  140. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/architecture/c4-components-core.md +0 -0
  141. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/architecture/c4-containers.md +0 -0
  142. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/architecture/c4-context.md +0 -0
  143. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/architecture/c4-dynamic-install.md +0 -0
  144. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/bmad.md +0 -0
  145. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/distill.gif +0 -0
  146. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/doctor.gif +0 -0
  147. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/explain.gif +0 -0
  148. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/hooks.gif +0 -0
  149. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/install.gif +0 -0
  150. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/pulse.gif +0 -0
  151. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/search.gif +0 -0
  152. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/gifs/tap.gif +0 -0
  153. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/distill.tape +0 -0
  154. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/doctor.tape +0 -0
  155. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/explain.tape +0 -0
  156. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/hooks.tape +0 -0
  157. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/install.tape +0 -0
  158. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/pulse.tape +0 -0
  159. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/search.tape +0 -0
  160. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/carousel/tapes/tap.tape +0 -0
  161. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/chat.html +0 -0
  162. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/code-review.md +0 -0
  163. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/commit-audit.md +0 -0
  164. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/demo-index.json +0 -0
  165. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/demo.gif +0 -0
  166. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/demo.html +0 -0
  167. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/demo.tape +0 -0
  168. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/dependencies.md +0 -0
  169. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/design-roadmap.html +0 -0
  170. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/eval-latest.json +0 -0
  171. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/eval.html +0 -0
  172. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/langchain.html +0 -0
  173. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/mcp-hub.html +0 -0
  174. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/openssf-badge.md +0 -0
  175. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/openssf-playbook.md +0 -0
  176. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/rag-architecture.md +0 -0
  177. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D01.md +0 -0
  178. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D02.md +0 -0
  179. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D03.md +0 -0
  180. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D04.md +0 -0
  181. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D05.md +0 -0
  182. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D06.md +0 -0
  183. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D07.md +0 -0
  184. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D08.md +0 -0
  185. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D09.md +0 -0
  186. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D10.md +0 -0
  187. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D11.md +0 -0
  188. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D12.md +0 -0
  189. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D13.md +0 -0
  190. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D14.md +0 -0
  191. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D15.md +0 -0
  192. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D16.md +0 -0
  193. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D17.md +0 -0
  194. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D18.md +0 -0
  195. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D19.md +0 -0
  196. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D20.md +0 -0
  197. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D21.md +0 -0
  198. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D22.md +0 -0
  199. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D23.md +0 -0
  200. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D24.md +0 -0
  201. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D25.md +0 -0
  202. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D26.md +0 -0
  203. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/BOOST-D27.md +0 -0
  204. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  205. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  206. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  207. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  208. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  209. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  210. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  211. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  212. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  213. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  214. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  215. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  216. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  217. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  218. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  219. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  220. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/boost-first-rule.md +0 -0
  221. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  222. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  223. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/branch-current-gate.md +0 -0
  224. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  225. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  226. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  227. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  228. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  229. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  230. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  231. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  232. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  233. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  234. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  235. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  236. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  237. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  238. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/cli-command-audit.md +0 -0
  239. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  240. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  241. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  242. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  243. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/command-carousel-page.md +0 -0
  244. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  245. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  246. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  247. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  248. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  249. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  250. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  251. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  252. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  253. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  254. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  255. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  256. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  257. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  258. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  259. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  260. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  261. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  262. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  263. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  264. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  265. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  266. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  267. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  268. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  269. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  270. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  271. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  272. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  273. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  274. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  275. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  276. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  277. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  278. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  279. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  280. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  281. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  282. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  283. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  284. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  285. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  286. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  287. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  288. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  289. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  290. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  291. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  292. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  293. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  294. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/github-community-health-files.md +0 -0
  295. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  296. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  297. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  298. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  299. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  300. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  301. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  302. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  303. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  304. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  305. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  306. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  307. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  308. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  309. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  310. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  311. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  312. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  313. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  314. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  315. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  316. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  317. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  318. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  319. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  320. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  321. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  322. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  323. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  324. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  325. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  326. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  327. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  328. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  329. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  330. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  331. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  332. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  333. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  334. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  335. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  336. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  337. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  338. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  339. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  340. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  341. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  342. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  343. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  344. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  345. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  346. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  347. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  348. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  349. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  350. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  351. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  352. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  353. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  354. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  355. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  356. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  357. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  358. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  359. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  360. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  361. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  362. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  363. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  364. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  365. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  366. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  367. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  368. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  369. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  370. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/openssf-playbook.md +0 -0
  371. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/openssf-silver.md +0 -0
  372. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  373. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  374. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  375. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  376. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  377. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  378. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  379. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  380. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  381. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  382. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  383. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  384. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  385. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  386. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  387. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  388. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  389. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  390. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  391. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  392. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  393. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  394. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  395. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  396. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  397. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  398. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  399. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  400. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  401. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  402. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  403. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/relicence-apache-2.md +0 -0
  404. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  405. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  406. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  407. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  408. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  409. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  410. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  411. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  412. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  413. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  414. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  415. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  416. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  417. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  418. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  419. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  420. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  421. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  422. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  423. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  424. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  425. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  426. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  427. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  428. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  429. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  430. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  431. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  432. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  433. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  434. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  435. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  436. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  437. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  438. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  439. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  440. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  441. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  442. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  443. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  444. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  445. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  446. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  447. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  448. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  449. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  450. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  451. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  452. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  453. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  454. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  455. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  456. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  457. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  458. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  459. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  460. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  461. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  462. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  463. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  464. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  465. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  466. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  467. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  468. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  469. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  470. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  471. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  472. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  473. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  474. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  475. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  476. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  477. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  478. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  479. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  480. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  481. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  482. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  483. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/workspace-scope-install.md +0 -0
  484. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/zip-strict-audit.md +0 -0
  485. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  486. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  487. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/security-design.md +0 -0
  488. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  489. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/verifying-releases.md +0 -0
  490. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/vex/meta.md +0 -0
  491. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/vex/openvex.json +0 -0
  492. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  493. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  494. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  495. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  496. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/eslint.config.mjs +0 -0
  497. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/README.md +0 -0
  498. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/__init__.py +0 -0
  499. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/baseline.json +0 -0
  500. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/faithfulness.py +0 -0
  501. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/golden_set.json +0 -0
  502. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/make_corpus.py +0 -0
  503. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/make_golden.py +0 -0
  504. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/metrics.py +0 -0
  505. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/publish_golden_dataset.py +0 -0
  506. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/evals/run_evals.py +0 -0
  507. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/examples/README.md +0 -0
  508. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/examples/adapt-demo.sh +0 -0
  509. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/examples/boost-run-prototype.sh +0 -0
  510. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/index.html +0 -0
  511. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/noxfile.py +0 -0
  512. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/pyproject.toml +0 -0
  513. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/coverage-tools.in +0 -0
  514. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/coverage-tools.txt +0 -0
  515. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/lint-tools.in +0 -0
  516. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/lint-tools.txt +0 -0
  517. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/mutation-tools.in +0 -0
  518. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/mutation-tools.txt +0 -0
  519. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/platform-pins.lock +0 -0
  520. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/release-tools.in +0 -0
  521. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/release-tools.txt +0 -0
  522. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/test-tools.in +0 -0
  523. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/requirements/test-tools.txt +0 -0
  524. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/a11y_check.py +0 -0
  525. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/add_spdx_headers.py +0 -0
  526. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/bench_cli.sh +0 -0
  527. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/build_command_reference.py +0 -0
  528. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/build_demo_index.py +0 -0
  529. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/build_registries.py +0 -0
  530. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/build_roadmap.py +0 -0
  531. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/build_scale_corpus.py +0 -0
  532. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/build_vex.py +0 -0
  533. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/check_anchors.py +0 -0
  534. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/check_branch_current.py +0 -0
  535. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/check_dco.py +0 -0
  536. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/check_licenses.py +0 -0
  537. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/check_reproducible.py +0 -0
  538. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/check_required_checks.py +0 -0
  539. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/ensure_eval_corpus.sh +0 -0
  540. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/eval_corpus.py +0 -0
  541. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/eval_explain.py +0 -0
  542. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/eval_gate.py +0 -0
  543. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/eval_recommend.py +0 -0
  544. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/eval_retrieval.py +0 -0
  545. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/eval_stats_summary.py +0 -0
  546. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/import_budget.py +0 -0
  547. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/lock_toolchain.py +0 -0
  548. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/measure_registry.py +0 -0
  549. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/mutation_gate.py +0 -0
  550. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/mutation_shards.py +0 -0
  551. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/mutation_weights.json +0 -0
  552. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/normalize_sdist.py +0 -0
  553. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/page_budget.py +0 -0
  554. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/perf_gate.py +0 -0
  555. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/post_deploy_smoke.py +0 -0
  556. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/publish_eval_json.py +0 -0
  557. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/release_guard.py +0 -0
  558. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/release_preflight.py +0 -0
  559. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/scripts/serve_docs.py +0 -0
  560. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/setup.cfg +0 -0
  561. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/sonar-project.properties +0 -0
  562. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/style/README.md +0 -0
  563. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/style/boost.css +0 -0
  564. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/style/boost.js +0 -0
  565. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/style/demo.html +0 -0
  566. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/adapt.feature +0 -0
  567. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/browse.feature +0 -0
  568. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/count.feature +0 -0
  569. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/discover.feature +0 -0
  570. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/doctor.feature +0 -0
  571. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/environment.py +0 -0
  572. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/explain.feature +0 -0
  573. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/index.feature +0 -0
  574. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/install.feature +0 -0
  575. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/list.feature +0 -0
  576. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/mcp.feature +0 -0
  577. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/search.feature +0 -0
  578. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/steps/cli_steps.py +0 -0
  579. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/steps/discovery_steps.py +0 -0
  580. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/steps/mcp_steps.py +0 -0
  581. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/bdd/features/steps/quality_steps.py +0 -0
  582. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/conftest.py +0 -0
  583. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/eval/baseline.json +0 -0
  584. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/eval/explain.jsonl +0 -0
  585. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/eval/golden-natural.jsonl +0 -0
  586. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/eval/golden.jsonl +0 -0
  587. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/eval/recommend.jsonl +0 -0
  588. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/eval/taps-scale.txt +0 -0
  589. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/eval/taps.txt +0 -0
  590. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_bmad_all_hosts.py +0 -0
  591. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_capabilities_policy.py +0 -0
  592. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_adapt.py +0 -0
  593. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_bmad.py +0 -0
  594. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_catalog.py +0 -0
  595. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_chat.py +0 -0
  596. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_configuration.py +0 -0
  597. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_discovery.py +0 -0
  598. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_hooks.py +0 -0
  599. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_hooks_gemini.py +0 -0
  600. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_info.py +0 -0
  601. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_intelligence.py +0 -0
  602. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_pane_width.py +0 -0
  603. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_pkg.py +0 -0
  604. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_quality.py +0 -0
  605. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_taps.py +0 -0
  606. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_cli_team.py +0 -0
  607. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_integrity_enforce.py +0 -0
  608. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_kind_conformance.py +0 -0
  609. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_property_parsers.py +0 -0
  610. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_run.py +0 -0
  611. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_tap_signing.py +0 -0
  612. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/functional/test_workspace_scope.py +0 -0
  613. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/README.md +0 -0
  614. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  615. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  616. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  617. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  618. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  619. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  620. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  621. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  622. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  623. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  624. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  625. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  626. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  627. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  628. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  629. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  630. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  631. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  632. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  633. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  634. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  635. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  636. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  637. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/fuzz_frontmatter.py +0 -0
  638. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/fuzz/fuzz_registry.py +0 -0
  639. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/langchain/conftest.py +0 -0
  640. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/langchain/test_graph.py +0 -0
  641. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/langchain/test_loader.py +0 -0
  642. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/langchain/test_retriever.py +0 -0
  643. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/make_fixture.py +0 -0
  644. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/perf/test_benchmarks.py +0 -0
  645. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_a11y_check.py +0 -0
  646. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_action_pin_lockstep.py +0 -0
  647. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_adapters.py +0 -0
  648. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_adapters_multi.py +0 -0
  649. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_adapters_runner.py +0 -0
  650. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_agents.py +0 -0
  651. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_ai.py +0 -0
  652. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_aihost.py +0 -0
  653. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_bmad_core.py +0 -0
  654. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_boost_first_offer.py +0 -0
  655. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_bootstrap.py +0 -0
  656. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_branch_current.py +0 -0
  657. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_browse.py +0 -0
  658. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_builtin.py +0 -0
  659. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_capabilities.py +0 -0
  660. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_catalog.py +0 -0
  661. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_catalogbundle.py +0 -0
  662. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_chat.py +0 -0
  663. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_check_anchors.py +0 -0
  664. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_check_dco.py +0 -0
  665. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_check_licenses.py +0 -0
  666. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_check_reproducible.py +0 -0
  667. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_claude_settings.py +0 -0
  668. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_clean_internal_cache.py +0 -0
  669. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_cliparse.py +0 -0
  670. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_codeql_analysis_key.py +0 -0
  671. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_command_reference_fresh.py +0 -0
  672. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_community_health_files.py +0 -0
  673. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_compact.py +0 -0
  674. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_complete.py +0 -0
  675. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_complete_rc_block.py +0 -0
  676. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_config.py +0 -0
  677. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_content_dedupe.py +0 -0
  678. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_content_identity.py +0 -0
  679. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_crash_redaction.py +0 -0
  680. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dedup_trust.py +0 -0
  681. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_demo_index.py +0 -0
  682. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense.py +0 -0
  683. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_embed_dedupe.py +0 -0
  684. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_fallback.py +0 -0
  685. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_fix_hint.py +0 -0
  686. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_quantized.py +0 -0
  687. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_ready_order.py +0 -0
  688. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_shard_real_schema.py +0 -0
  689. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  690. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_shards.py +0 -0
  691. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_status.py +0 -0
  692. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dense_status_cheap.py +0 -0
  693. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_dependabot_config.py +0 -0
  694. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_docs_pages_linked.py +0 -0
  695. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_docsite_chrome.py +0 -0
  696. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_ed25519.py +0 -0
  697. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_embed.py +0 -0
  698. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_embed_local.py +0 -0
  699. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_embed_truncated_response.py +0 -0
  700. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_entry_key.py +0 -0
  701. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_eval_baseline.py +0 -0
  702. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_eval_corpus.py +0 -0
  703. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_eval_faithfulness.py +0 -0
  704. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_eval_gate.py +0 -0
  705. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_eval_grading.py +0 -0
  706. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_eval_metrics.py +0 -0
  707. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_eval_stats_summary.py +0 -0
  708. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  709. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_faithfulness.py +0 -0
  710. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_frontmatter.py +0 -0
  711. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_fuzz_targets.py +0 -0
  712. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  713. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_gitleaks_config.py +0 -0
  714. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_gitutil.py +0 -0
  715. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_gitutil_lfs.py +0 -0
  716. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_gitutil_sparse.py +0 -0
  717. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_hook_settings_hosts.py +0 -0
  718. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_hookhost.py +0 -0
  719. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_imperative.py +0 -0
  720. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_import_budget.py +0 -0
  721. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_injectscan.py +0 -0
  722. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_install_permission_error.py +0 -0
  723. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_installscan.py +0 -0
  724. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_integrity.py +0 -0
  725. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_journal.py +0 -0
  726. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_langchain_packaging.py +0 -0
  727. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_link_ownership.py +0 -0
  728. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_localembed.py +0 -0
  729. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_localembed_e2e.py +0 -0
  730. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_lockfile.py +0 -0
  731. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_logs.py +0 -0
  732. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_marketing_counts.py +0 -0
  733. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mcp.py +0 -0
  734. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mcp_install_scan.py +0 -0
  735. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mcpdecl.py +0 -0
  736. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mcphost.py +0 -0
  737. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_measure_registry.py +0 -0
  738. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_minisign.py +0 -0
  739. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mutation_hardening.py +0 -0
  740. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mutation_shards.py +0 -0
  741. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mutation_subfile_shards.py +0 -0
  742. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_mutmut_source_paths.py +0 -0
  743. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_nethttp.py +0 -0
  744. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_normalize_sdist.py +0 -0
  745. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_output.py +0 -0
  746. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_page_budget.py +0 -0
  747. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_paths.py +0 -0
  748. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_perf_gate.py +0 -0
  749. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_pkg_confusions.py +0 -0
  750. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_pkg_injection.py +0 -0
  751. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_pkg_secrets.py +0 -0
  752. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_platform_pins.py +0 -0
  753. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_policy.py +0 -0
  754. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_post_deploy_smoke.py +0 -0
  755. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_project_mcp_sidecar.py +0 -0
  756. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_projectlock.py +0 -0
  757. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_provenance.py +0 -0
  758. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_publish_golden_dataset.py +0 -0
  759. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_rag.py +0 -0
  760. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_rag_fastpath.py +0 -0
  761. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_rag_fusion.py +0 -0
  762. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_registries_fresh.py +0 -0
  763. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_registry.py +0 -0
  764. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_registry_categories.py +0 -0
  765. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_registry_control_chars.py +0 -0
  766. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_release_guard.py +0 -0
  767. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_release_preflight.py +0 -0
  768. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_required_checks.py +0 -0
  769. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_rerank_cache.py +0 -0
  770. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_resolve.py +0 -0
  771. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_roadmap_fresh.py +0 -0
  772. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_rules.py +0 -0
  773. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_scale_corpus.py +0 -0
  774. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_scopes.py +0 -0
  775. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_secretscan.py +0 -0
  776. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_selfupdate.py +0 -0
  777. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_serve.py +0 -0
  778. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_serve_docs.py +0 -0
  779. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_shards_matrix.py +0 -0
  780. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_smoke_covers_every_command.py +0 -0
  781. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_spdx_headers.py +0 -0
  782. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_spin.py +0 -0
  783. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_stackprobe.py +0 -0
  784. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_staleness.py +0 -0
  785. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_store.py +0 -0
  786. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_store_materialize.py +0 -0
  787. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_sync_blocked_links.py +0 -0
  788. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  789. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_token_parity.py +0 -0
  790. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_toolchain_lock.py +0 -0
  791. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_trustaudit.py +0 -0
  792. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_typosquat.py +0 -0
  793. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_updatediff.py +0 -0
  794. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_util.py +0 -0
  795. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_version.py +0 -0
  796. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_vex.py +0 -0
  797. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_visual_harness_flags.py +0 -0
  798. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_workflow_concurrency.py +0 -0
  799. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  800. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  801. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_workflow_timeouts.py +0 -0
  802. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_workflows.py +0 -0
  803. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  804. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/visual/a11y_check.mjs +0 -0
  805. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/visual/console_check.mjs +0 -0
  806. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/visual/package-lock.json +0 -0
  807. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/visual/package.json +0 -0
  808. {boost_skill_cli-1.2.43 → boost_skill_cli-1.2.45}/tests/visual/visual_check.mjs +0 -0
@@ -69,6 +69,7 @@ idempotently
69
69
  JetBrains
70
70
  jonnyeclectic
71
71
  jonnyeclectic's
72
+ keyless
72
73
  Kotlin
73
74
  langchain
74
75
  Langfuse
@@ -306,7 +306,7 @@ for both — edit items, run `build_roadmap.py`, never touch the HTML by hand.
306
306
  ## Architecture
307
307
 
308
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.
309
+ source-of-truth list of `(name, group, module, summary)` for all 81 commands.
310
310
  Each command is implemented as `def cmd_<name_with_underscores>(argv) -> int`
311
311
  inside `boost_cli/commands/<module>.py`, and `_dispatch` imports that module
312
312
  lazily on invocation — so `boost --help` stays instant and command modules are
@@ -419,6 +419,26 @@ of the three item kinds (see Non-obvious rules above); `core/store.py` owns
419
419
  install, uninstall and sync — copying into the canonical store, symlinking into
420
420
  each agent's skills dir, and updating the lock file.
421
421
 
422
+ - **A published shard is only importable while three things match, and every
423
+ mismatch is silent if waved through.** `core/shards.py` fetches
424
+ `manifest.json` from a rolling `shards-latest` **prerelease** on this repo —
425
+ prerelease and `--latest=false` deliberately, so release-drafter (which
426
+ resolves the next version from published non-prereleases), the shields badge
427
+ in the README and setuptools-scm's `--match *[0-9]*` all keep ignoring it.
428
+ The manifest carries the embedding *space* once at the top, so
429
+ `shards.incompatible()` can refuse before downloading 129 MB; each row pins
430
+ the registry *commit*, checked in `shards.sync` and again in
431
+ `dense.import_shard`, because a stale shard makes `dense.build` mark that tap
432
+ "reused" forever; and each row's *sha256* is verified over the bytes written.
433
+ A shard URL off the manifest's own host is refused — a manifest names what
434
+ boost downloads, so it must not widen where the download goes. `boost tap
435
+ --at <sha>` exists for the commit rule: `boost quickstart` pins each registry
436
+ to the commit its vectors describe rather than tapping HEAD and hoping.
437
+ **Publish keyless vectors only** — a shard exported from a machine holding
438
+ `VOYAGE_API_KEY` is 1024-d `voyage-4` and can only be imported *or queried*
439
+ by another key-holder; `scripts/publish_shards.py manifest` refuses to
440
+ describe two spaces in one file.
441
+
422
442
  **Search has two engines**, both in `core/`: `rag.py` is the always-on,
423
443
  zero-dependency BM25 engine (full-content index, auto-builds on first
424
444
  search — this is what the required `eval` gate floors at recall@k ≥ 0.78).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.43
3
+ Version: 1.2.45
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -58,8 +58,8 @@ Cursor and Gemini CLI in a single pass.
58
58
 
59
59
  ```bash
60
60
  pipx install boost-skill-cli
61
- boost tap --defaults # 7 curated registries: skills, rules, workflows
62
- boost search tdd # full-content BM25 over every skill
61
+ boost quickstart # taps the 7 starter registries, loads prebuilt vectors
62
+ boost search tdd # keyword + semantic, fused
63
63
  boost install tdd-workflow # → every agent, version-pinned, one lock file
64
64
  ```
65
65
 
@@ -172,14 +172,26 @@ ln -s ~/.boost-src/boost ~/bin/boost # anywhere on PATH works
172
172
  itself on your first search, so there is nothing to set up.
173
173
 
174
174
  BM25 matches words, which fails when your query shares no vocabulary with the
175
- skill you want. Semantic search fixes that, needs no API key, and takes two
176
- commands:
175
+ skill you want. Semantic search fixes that and needs no API key — only the
176
+ extra:
177
177
 
178
178
  ```bash
179
179
  pipx inject boost-skill-cli "boost-skill-cli[rag]" # pip install "boost-skill-cli[rag]" if you used pip
180
- boost reindex --dense
180
+ boost quickstart # downloads prebuilt vectors
181
181
  ```
182
182
 
183
+ `boost quickstart` is the fast path: it taps the starter registries **pinned to
184
+ the commits the published vectors were built from**, then downloads and imports
185
+ those vectors. Embedding is ~1.2 s/chunk on CPU — hours for a real corpus —
186
+ and importing the same rows takes 0.12 s, so the difference between the two is
187
+ the difference between semantic search being available and being reachable.
188
+
189
+ Already tapped? `boost reindex --fetch-shards` does the download half alone,
190
+ and `boost reindex --dense` embeds locally whatever has no published shard.
191
+ Every download is checked against the sha256 in the manifest and refused on a
192
+ mismatch, and shards for a registry that has moved since publication are
193
+ refused rather than merged — stale vectors would otherwise look fresh forever.
194
+
183
195
  When both indexes exist boost fuses the rankings rather than choosing between
184
196
  them. See [docs/semantic-search.md](docs/semantic-search.md) for the whole
185
197
  setup, what it costs, and how to tell which engine is actually serving.
@@ -362,7 +374,7 @@ at least 95% alike, fold into one badged `×5`, with `^D` to show them again.
362
374
  Identity is the description and never the name: `code-reviewer` appears 75 times
363
375
  with 42 different descriptions, and those are 42 real skills.
364
376
 
365
- ## 80 commands, organized into 8 groups
377
+ ## 81 commands, organized into 8 groups
366
378
 
367
379
  `boost --help` prints the full grouped list. For every flag of every command see
368
380
  [`docs/commands.html`](docs/commands.html); for a visual tour,
@@ -16,8 +16,8 @@ Cursor and Gemini CLI in a single pass.
16
16
 
17
17
  ```bash
18
18
  pipx install boost-skill-cli
19
- boost tap --defaults # 7 curated registries: skills, rules, workflows
20
- boost search tdd # full-content BM25 over every skill
19
+ boost quickstart # taps the 7 starter registries, loads prebuilt vectors
20
+ boost search tdd # keyword + semantic, fused
21
21
  boost install tdd-workflow # → every agent, version-pinned, one lock file
22
22
  ```
23
23
 
@@ -130,14 +130,26 @@ ln -s ~/.boost-src/boost ~/bin/boost # anywhere on PATH works
130
130
  itself on your first search, so there is nothing to set up.
131
131
 
132
132
  BM25 matches words, which fails when your query shares no vocabulary with the
133
- skill you want. Semantic search fixes that, needs no API key, and takes two
134
- commands:
133
+ skill you want. Semantic search fixes that and needs no API key — only the
134
+ extra:
135
135
 
136
136
  ```bash
137
137
  pipx inject boost-skill-cli "boost-skill-cli[rag]" # pip install "boost-skill-cli[rag]" if you used pip
138
- boost reindex --dense
138
+ boost quickstart # downloads prebuilt vectors
139
139
  ```
140
140
 
141
+ `boost quickstart` is the fast path: it taps the starter registries **pinned to
142
+ the commits the published vectors were built from**, then downloads and imports
143
+ those vectors. Embedding is ~1.2 s/chunk on CPU — hours for a real corpus —
144
+ and importing the same rows takes 0.12 s, so the difference between the two is
145
+ the difference between semantic search being available and being reachable.
146
+
147
+ Already tapped? `boost reindex --fetch-shards` does the download half alone,
148
+ and `boost reindex --dense` embeds locally whatever has no published shard.
149
+ Every download is checked against the sha256 in the manifest and refused on a
150
+ mismatch, and shards for a registry that has moved since publication are
151
+ refused rather than merged — stale vectors would otherwise look fresh forever.
152
+
141
153
  When both indexes exist boost fuses the rankings rather than choosing between
142
154
  them. See [docs/semantic-search.md](docs/semantic-search.md) for the whole
143
155
  setup, what it costs, and how to tell which engine is actually serving.
@@ -320,7 +332,7 @@ at least 95% alike, fold into one badged `×5`, with `^D` to show them again.
320
332
  Identity is the description and never the name: `code-reviewer` appears 75 times
321
333
  with 42 different descriptions, and those are 42 real skills.
322
334
 
323
- ## 80 commands, organized into 8 groups
335
+ ## 81 commands, organized into 8 groups
324
336
 
325
337
  `boost --help` prints the full grouped list. For every flag of every command see
326
338
  [`docs/commands.html`](docs/commands.html); for a visual tour,
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.43'
22
- __version_tuple__ = version_tuple = (1, 2, 43)
21
+ __version__ = version = '1.2.45'
22
+ __version_tuple__ = version_tuple = (1, 2, 45)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  # Copyright the boost contributors.
2
2
  # SPDX-License-Identifier: Apache-2.0
3
- """boost CLI dispatcher — 80 commands across 8 groups.
3
+ """boost CLI dispatcher — 81 commands across 8 groups.
4
4
 
5
5
  Each command lives in boost_cli/commands/<module>.py as
6
6
  def cmd_<name_with_underscores>(argv: list[str]) -> int
@@ -117,6 +117,7 @@ COMMANDS = [
117
117
  ("health", "chk", "quality", "Dashboard of skill-environment health"),
118
118
  ("trust", "chk", "quality", "Manage signing keys & verify tap provenance"),
119
119
  # Configuration (13)
120
+ ("quickstart", "cfg", "quickstart", "Tap the starter registries and load prebuilt vectors"),
120
121
  ("config", "cfg", "configuration", "Display or modify boost configuration"),
121
122
  ("clean", "cfg", "configuration", "Clear stale caches & broken symlinks"),
122
123
  ("compact", "cfg", "configuration", "Shrink tap clones to the files boost indexes"),
@@ -270,6 +270,59 @@ def _shard_io(args) -> int:
270
270
  return 0
271
271
 
272
272
 
273
+ def _fetch_shards(args) -> int:
274
+ """`--fetch-shards`: the published half of the keyless tier, on demand.
275
+
276
+ Separate from `boost quickstart` because the two answer different
277
+ questions. Quickstart sets a machine up; this refreshes vectors on one that
278
+ is already tapped, including taps quickstart never touches.
279
+ """
280
+ from ..core import dense, shards
281
+ if not registry.list_taps():
282
+ raise BoostError("no taps configured — nothing to fetch",
283
+ hint="`boost quickstart` taps the defaults and fetches "
284
+ "their vectors in one pass")
285
+ manifest = shards.fetch_manifest()
286
+ why = shards.incompatible(manifest)
287
+ if why:
288
+ raise BoostError("published shards cannot serve this machine — %s" % why,
289
+ hint=dense.fix_hint(dense.status().get("reason", "")))
290
+ commits = rag._tap_commits()
291
+ by_name = {t.name: commits.get(t.safe_name, "") for t in registry.list_taps()}
292
+ results = shards.sync(list(by_name), by_name, manifest=manifest,
293
+ on_event=_shard_event)
294
+ if args.as_json:
295
+ print(json.dumps({"shards": results}, indent=2))
296
+ return 0
297
+ got = [r for r in results if r["status"] == "imported"]
298
+ total = sum(int(r.get("chunks") or 0) for r in got)
299
+ if got:
300
+ out.ok("imported %d shard(s), %s chunks — no embedding needed"
301
+ % (len(got), format(total, ",")))
302
+ else:
303
+ # Not a success line. Nothing landed, and saying "imported 0" with a
304
+ # tick reads as a job well done to the one user who most needs to know
305
+ # their vectors are still missing.
306
+ out.warn("no published vectors matched your taps")
307
+ missing = [r["tap"] for r in results if r["status"] != "imported"]
308
+ if missing:
309
+ out.info(out.role("%d tap(s) without usable vectors: %s"
310
+ % (len(missing), ", ".join(missing[:5])
311
+ + (" …" if len(missing) > 5 else "")), "muted"))
312
+ out.info("embed those locally with `boost reindex --dense`")
313
+ return 0
314
+
315
+
316
+ def _shard_event(tap: str, status: str, detail: str) -> None:
317
+ """Progress for one shard, quiet enough to run over forty taps."""
318
+ if status == "downloading":
319
+ out.info(out.role("fetching %s %s" % (tap, detail), "muted"))
320
+ elif status in ("failed", "refused"):
321
+ out.info(out.role("%s: %s%s" % (tap, status,
322
+ " (%s)" % detail if detail else ""),
323
+ "muted"))
324
+
325
+
273
326
  def cmd_reindex(argv):
274
327
  """Build/refresh the full-content (RAG) search index over tapped items."""
275
328
  p = cliparse.parser(
@@ -287,11 +340,16 @@ def cmd_reindex(argv):
287
340
  help="merge a prebuilt vector shard, skipping the embed "
288
341
  "cost; refused unless it matches this store's backend "
289
342
  "and the tap's current commit")
343
+ p.add_argument("--fetch-shards", action="store_true",
344
+ help="download and import published vectors for every tap "
345
+ "that has them, instead of embedding locally")
290
346
  p.add_argument("--json", action="store_true", dest="as_json",
291
347
  help="machine-readable output")
292
348
  args = p.parse_args(argv)
293
349
  if args.export_shard or args.import_shard:
294
350
  return _shard_io(args)
351
+ if args.fetch_shards:
352
+ return _fetch_shards(args)
295
353
  if not registry.list_taps():
296
354
  raise BoostError("no taps configured — nothing to index",
297
355
  hint="add the recommended registries with `boost tap --defaults`")
@@ -0,0 +1,149 @@
1
+ # Copyright the boost contributors.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ """`boost quickstart` — one command from empty machine to working search.
4
+
5
+ WHY A COMMAND AND NOT A DOC. The setup a new user needs is four steps that each
6
+ fail quietly when skipped: tap something, build the BM25 index, install the
7
+ `rag` extra, and embed the catalogue. The last one is the wall — ~1.2 s/chunk on
8
+ CPU, hours for a corpus worth searching — and it is why the keyless semantic
9
+ tier was reachable in principle and not in practice. Published shards remove it,
10
+ but only if the tap sits at the commit its vectors were built from, so tapping
11
+ and fetching cannot be two commands a user is trusted to order correctly.
12
+
13
+ WHAT IT WILL NOT DO. It never embeds as a side effect. A user who runs a
14
+ "quickstart" and gets an unannounced multi-hour CPU job has been ambushed; the
15
+ taps without a published shard are named, with the one command that would embed
16
+ them, and left alone.
17
+ """
18
+ from __future__ import annotations
19
+
20
+ from .. import cliparse, spin
21
+ from ..core import (
22
+ catalog,
23
+ complete,
24
+ config,
25
+ dense,
26
+ journal,
27
+ rag,
28
+ registry,
29
+ shards,
30
+ )
31
+ from ..core import output as out
32
+ from ..errors import BoostError
33
+
34
+
35
+ def _tap_defaults(pins: dict[str, dict], dry_run: bool) -> list[str]:
36
+ """Tap the default registries, pinned to a shard's commit when one exists.
37
+
38
+ Returns the tap names that are configured afterwards, tapped here or not.
39
+ Pinning is the whole point: tapping HEAD and then fetching a shard is the
40
+ ordering that produces a commit mismatch on every registry that moved since
41
+ the last shard run.
42
+ """
43
+ existing = {t.name for t in registry.list_taps()}
44
+ names = []
45
+ for default in config.DEFAULT_TAPS:
46
+ name = str(default["name"])
47
+ names.append(name)
48
+ if name in existing:
49
+ out.info(out.role("%s already tapped" % name, "muted"))
50
+ continue
51
+ row = pins.get(name)
52
+ at = str(row.get("commit")) if row else None
53
+ if dry_run:
54
+ out.info("would tap %s%s" % (name, " @ %s" % at[:7] if at else ""))
55
+ continue
56
+ try:
57
+ with spin.Spinner("tapping %s" % name):
58
+ tap = registry.add(str(default["url"]), curated=True, at=at)
59
+ entries = catalog.rebuild_tap(tap)
60
+ except BoostError as exc:
61
+ out.warn("could not tap %s: %s" % (name, exc.message))
62
+ continue
63
+ journal.log("tap", tap.name)
64
+ out.ok("tapped %s (%d items)%s"
65
+ % (name, len(entries), " @ %s" % at[:7] if at else ""))
66
+ return names
67
+
68
+
69
+ def _report(results: list[dict]) -> None:
70
+ """Say what each shard did, and name the remedy for what it did not do."""
71
+ imported = [r for r in results if r["status"] == "imported"]
72
+ if imported:
73
+ total = sum(int(r.get("chunks") or 0) for r in imported)
74
+ out.ok("imported %d prebuilt shard%s (%s chunks) — no embedding needed"
75
+ % (len(imported), "" if len(imported) == 1 else "s",
76
+ format(total, ",")))
77
+ for kind, label in (("unpublished", "no published shard"),
78
+ ("refused", "shard refused"),
79
+ ("failed", "shard failed")):
80
+ rows = [r for r in results if r["status"] == kind]
81
+ if not rows:
82
+ continue
83
+ for r in rows:
84
+ detail = r.get("detail") or ""
85
+ out.info(out.role("%s: %s%s" % (r["tap"], label,
86
+ " (%s)" % detail if detail else ""),
87
+ "muted"))
88
+ left = [r["tap"] for r in results if r["status"] != "imported"]
89
+ if left:
90
+ out.info("embed the rest locally when you want to: "
91
+ "`boost reindex --dense`")
92
+
93
+
94
+ def cmd_quickstart(argv) -> int:
95
+ """boost quickstart [--no-vectors] [--dry-run]"""
96
+ p = cliparse.parser(
97
+ prog="boost quickstart",
98
+ description="Tap the starter registries and load prebuilt vectors")
99
+ p.add_argument("--no-vectors", action="store_true",
100
+ help="set up taps and keyword search only, skip shards")
101
+ p.add_argument("--dry-run", action="store_true",
102
+ help="print what would happen, change nothing")
103
+ args = p.parse_args(argv)
104
+
105
+ manifest = None
106
+ pins: dict[str, dict] = {}
107
+ want_vectors = not args.no_vectors and dense.have_backend()
108
+ if want_vectors:
109
+ # Fetched first because it decides how the taps are pinned. A failure
110
+ # here is not fatal: keyword search is the documented default and works
111
+ # without a single vector.
112
+ try:
113
+ with spin.Spinner("reading the shard manifest"):
114
+ manifest = shards.fetch_manifest()
115
+ pins = shards.rows(manifest)
116
+ except BoostError as exc:
117
+ out.warn("no published shards: %s" % exc.message)
118
+ manifest = None
119
+
120
+ names = _tap_defaults(pins, args.dry_run)
121
+ if args.dry_run:
122
+ planned = [n for n in names if n in pins] if manifest else []
123
+ out.info("would build the keyword index, then import %d shard(s)"
124
+ % len(planned))
125
+ return 0
126
+
127
+ with spin.Spinner("building the keyword index"):
128
+ stats = rag.build()
129
+ out.ok("indexed %s items for keyword search" % format(
130
+ int(stats.get("entries", 0)), ","))
131
+
132
+ if manifest is not None:
133
+ commits = rag._tap_commits()
134
+ # `_tap_commits` is keyed by safe name; `sync` speaks tap names.
135
+ by_name = {t.name: commits.get(t.safe_name, "")
136
+ for t in registry.list_taps()}
137
+ results = shards.sync([n for n in names if n in by_name], by_name,
138
+ manifest=manifest)
139
+ _report(results)
140
+ elif args.no_vectors:
141
+ out.info(out.role("skipped vectors as asked", "muted"))
142
+ elif not dense.have_backend():
143
+ out.info("semantic search needs the extra: "
144
+ "`pipx inject boost-skill-cli \"boost-skill-cli[rag]\"`, "
145
+ "then `boost quickstart` again")
146
+
147
+ complete.refresh_names()
148
+ out.ok("ready — try `boost search brainstorming`")
149
+ return 0
@@ -101,7 +101,12 @@ def cmd_tap(argv) -> int:
101
101
  help="with --catalog: print what would be tapped, tap nothing")
102
102
  p.add_argument("--curated", action="store_true",
103
103
  help="mark the tap as curated (★ in listings)")
104
+ p.add_argument("--at", metavar="SHA",
105
+ help="pin the clone to one 40-character commit, as a "
106
+ "published vector shard requires")
104
107
  args = p.parse_args(argv)
108
+ if args.at and not args.spec:
109
+ p.error("--at pins one registry, so it needs a SPEC")
105
110
  if not args.spec and not args.defaults and not args.catalog:
106
111
  p.error("provide a SPEC, --defaults, or --catalog")
107
112
 
@@ -129,10 +134,11 @@ def cmd_tap(argv) -> int:
129
134
  % (tap.name, len(entries), default.get("focus", "")))
130
135
  if args.spec:
131
136
  with spin.Spinner("cloning %s" % args.spec):
132
- tap = registry.add(args.spec, curated=args.curated)
137
+ tap = registry.add(args.spec, curated=args.curated, at=args.at)
133
138
  entries = catalog.rebuild_tap(tap)
134
139
  journal.log("tap", tap.name)
135
- out.ok("Tapped %s (%d items)" % (tap.name, len(entries)))
140
+ pin = " @ %s" % args.at[:7] if args.at else ""
141
+ out.ok("Tapped %s (%d items)%s" % (tap.name, len(entries), pin))
136
142
  # Refresh the TAB-completion name cache so `boost install <TAB>` sees
137
143
  # whatever this call just tapped instead of the pre-tap snapshot.
138
144
  complete.refresh_names()
@@ -284,6 +284,44 @@ def head_commit(repo: Path) -> str:
284
284
  return proc.stdout.strip() if proc.returncode == 0 else ""
285
285
 
286
286
 
287
+ def checkout_commit(repo: Path, sha: str) -> None:
288
+ """Detach `repo` at `sha`, fetching that commit first if it is absent.
289
+
290
+ A tap is cloned `--depth 1`, so the commit a published shard was built from
291
+ is usually *not* in the clone: the fetch is the normal path, not the
292
+ fallback. GitHub serves a fetch by full SHA for a reachable commit, which
293
+ is what makes pinning possible without un-shallowing a repo that exists to
294
+ stay small.
295
+
296
+ The fetch keeps `--depth 1` and the blobless filter for the same reason the
297
+ clone does — pinning a tap must not cost the history and blobs the sparse
298
+ clone was built to avoid (458 taps held 12 GB before that work).
299
+ """
300
+ if not _is_sha(sha):
301
+ raise BoostError("%r is not a full commit SHA" % sha,
302
+ hint="pin with the 40-character hash a manifest names")
303
+ have = run(["-C", str(repo), "cat-file", "-e", sha + "^{commit}"],
304
+ check=False)
305
+ if have.returncode != 0:
306
+ run(["-C", str(repo), "fetch", "--quiet", "--depth", "1",
307
+ "--filter=blob:none", "origin", sha])
308
+ run(["-C", str(repo), "checkout", "--quiet", "--detach", sha])
309
+ # A detached checkout leaves the sparse cone as it was, but re-applying is
310
+ # cheap and keeps a pinned clone byte-identical to a freshly cloned one.
311
+ run(["-C", str(repo), "sparse-checkout", "reapply"], check=False)
312
+
313
+
314
+ def _is_sha(value: str) -> bool:
315
+ """True for a full 40-character hex commit hash.
316
+
317
+ Deliberately strict. An abbreviated hash is ambiguous across a fetch, and a
318
+ branch or tag name is not a pin at all — both would silently give a
319
+ different tree than the shard was built against, which `import_shard` would
320
+ then refuse with a confusing commit mismatch.
321
+ """
322
+ return len(value) == 40 and all(c in "0123456789abcdef" for c in value.lower())
323
+
324
+
287
325
  def remote_url(repo: Path) -> str:
288
326
  """Return the URL of `repo`'s `origin` remote, or "" if it has none."""
289
327
  proc = run(["-C", str(repo), "remote", "get-url", "origin"], check=False)
@@ -161,9 +161,15 @@ def get(name: str) -> Tap:
161
161
  else "list taps with `boost taps`")
162
162
 
163
163
 
164
- def add(spec: str, curated: bool = False) -> Tap:
164
+ def add(spec: str, curated: bool = False, at: str | None = None) -> Tap:
165
165
  """Parse `spec`, shallow-clone it, and record the tap in config.
166
166
 
167
+ ``at`` pins the clone to one commit. It exists for published vector shards:
168
+ a shard is only importable while the tap sits at the commit it was built
169
+ from (see ``core.shards``), so "tap this registry as the shard expects it"
170
+ has to be one operation — tapping HEAD and then moving would re-scan the
171
+ catalog for a tree the vectors do not describe.
172
+
167
173
  Raises BoostError if a tap with that name is already configured.
168
174
  """
169
175
  name, url = parse_spec(spec)
@@ -176,6 +182,16 @@ def add(spec: str, curated: bool = False) -> Tap:
176
182
  if tap.path.exists():
177
183
  util.rmtree(tap.path)
178
184
  gitutil.clone_shallow(url, tap.path)
185
+ if at:
186
+ try:
187
+ gitutil.checkout_commit(tap.path, at)
188
+ except BoostError:
189
+ # A pin that cannot be honoured must not leave a tap silently on
190
+ # HEAD: the caller asked for one tree and would get another, and
191
+ # every shard keyed to the pin would then be refused for a commit
192
+ # mismatch whose cause is three steps back.
193
+ util.rmtree(tap.path)
194
+ raise
179
195
  problems = policy.check_tap_signing(tap.path)
180
196
  if problems:
181
197
  util.rmtree(tap.path) # leave no half-added tap behind