boost-skill-cli 1.2.50__tar.gz → 1.2.52__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 (815) hide show
  1. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale/styles/config/vocabularies/boost/accept.txt +5 -0
  2. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/CLAUDE.md +36 -2
  3. {boost_skill_cli-1.2.50/boost_skill_cli.egg-info → boost_skill_cli-1.2.52}/PKG-INFO +7 -3
  4. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/README.md +6 -2
  5. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/_version.py +2 -2
  6. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/configuration.py +5 -2
  7. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/discovery.py +41 -4
  8. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/agents.py +50 -1
  9. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/config.py +23 -0
  10. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/dense.py +43 -8
  11. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/mcphost.py +50 -2
  12. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/store.py +7 -3
  13. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/util.py +17 -0
  14. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52/boost_skill_cli.egg-info}/PKG-INFO +7 -3
  15. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  16. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/commands.html +1 -1
  17. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/index.html +3 -3
  18. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/mcp.feature +6 -5
  19. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_configuration.py +19 -4
  20. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_info.py +2 -1
  21. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_pkg.py +29 -6
  22. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_quality.py +9 -6
  23. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_team.py +1 -1
  24. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_everyday_loop.py +1 -1
  25. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_agents.py +40 -1
  26. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_config.py +9 -2
  27. boost_skill_cli-1.2.52/tests/unit/test_dense_progress.py +211 -0
  28. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcphost.py +58 -4
  29. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_store.py +52 -17
  30. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.gitattributes +0 -0
  31. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.gitignore +0 -0
  32. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.gitleaks.toml +0 -0
  33. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.htmlvalidate.json +0 -0
  34. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.lighthouserc.json +0 -0
  35. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.lycheeignore +0 -0
  36. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.markdownlint-cli2.jsonc +0 -0
  37. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.pre-commit-config.yaml +0 -0
  38. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.stylelintrc.json +0 -0
  39. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale/styles/boost/AIWriting.yml +0 -0
  40. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale/styles/boost/Terminology.yml +0 -0
  41. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale.ini +0 -0
  42. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/CODE_OF_CONDUCT.md +0 -0
  43. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/CONTRIBUTING.md +0 -0
  44. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/DCO +0 -0
  45. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/GOVERNANCE.md +0 -0
  46. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/LICENSE +0 -0
  47. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/MAINTAINERS.md +0 -0
  48. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/MANIFEST.in +0 -0
  49. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/Makefile +0 -0
  50. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/SECURITY.md +0 -0
  51. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/SUPPORT.md +0 -0
  52. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost +0 -0
  53. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/__init__.py +0 -0
  54. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/__main__.py +0 -0
  55. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/cli.py +0 -0
  56. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/cliparse.py +0 -0
  57. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/__init__.py +0 -0
  58. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/_common.py +0 -0
  59. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/bmad.py +0 -0
  60. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/hooks.py +0 -0
  61. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/info.py +0 -0
  62. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/intelligence.py +0 -0
  63. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/pkg.py +0 -0
  64. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/quality.py +0 -0
  65. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/quickstart.py +0 -0
  66. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/run.py +0 -0
  67. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/safety.py +0 -0
  68. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/taps.py +0 -0
  69. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/team.py +0 -0
  70. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/__init__.py +0 -0
  71. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/adapters.py +0 -0
  72. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/ai.py +0 -0
  73. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/aihost.py +0 -0
  74. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/bmad.py +0 -0
  75. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/bootstrap.py +0 -0
  76. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/browse.py +0 -0
  77. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/builtin.py +0 -0
  78. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/capabilities.py +0 -0
  79. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/catalog.py +0 -0
  80. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/catalogbundle.py +0 -0
  81. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/chat.py +0 -0
  82. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/claude_settings.py +0 -0
  83. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/complete.py +0 -0
  84. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/ed25519.py +0 -0
  85. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/embed.py +0 -0
  86. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/faithfulness.py +0 -0
  87. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/frontmatter.py +0 -0
  88. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/gitutil.py +0 -0
  89. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/hookhost.py +0 -0
  90. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/imperative.py +0 -0
  91. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/injectscan.py +0 -0
  92. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/installscan.py +0 -0
  93. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/integrity.py +0 -0
  94. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/journal.py +0 -0
  95. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/localembed.py +0 -0
  96. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/lockfile.py +0 -0
  97. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/logs.py +0 -0
  98. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/mcp.py +0 -0
  99. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/mcpdecl.py +0 -0
  100. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/minisign.py +0 -0
  101. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/nethttp.py +0 -0
  102. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/output.py +0 -0
  103. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/paths.py +0 -0
  104. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/policy.py +0 -0
  105. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/projectlock.py +0 -0
  106. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/provenance.py +0 -0
  107. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/rag.py +0 -0
  108. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/registry.py +0 -0
  109. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/resolve.py +0 -0
  110. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/rules.py +0 -0
  111. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/scopes.py +0 -0
  112. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/secretscan.py +0 -0
  113. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/selfupdate.py +0 -0
  114. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/serve.py +0 -0
  115. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/shards.py +0 -0
  116. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/stackprobe.py +0 -0
  117. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/staleness.py +0 -0
  118. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/trustaudit.py +0 -0
  119. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/typosquat.py +0 -0
  120. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/updatediff.py +0 -0
  121. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/workflows.py +0 -0
  122. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/data/registries.json +0 -0
  123. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/data/rules/boost-first.mdc +0 -0
  124. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/errors.py +0 -0
  125. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/spin.py +0 -0
  126. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/__init__.py +0 -0
  127. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/_compat.py +0 -0
  128. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/graph.py +0 -0
  129. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/loader.py +0 -0
  130. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/py.typed +0 -0
  131. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/retriever.py +0 -0
  132. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  133. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  134. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/requires.txt +0 -0
  135. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/top_level.txt +0 -0
  136. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/codecov.yml +0 -0
  137. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/.claude/settings.local.json +0 -0
  138. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/DEBUGGING.md +0 -0
  139. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/adapters.html +0 -0
  140. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/README.md +0 -0
  141. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-components-core.md +0 -0
  142. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-containers.md +0 -0
  143. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-context.md +0 -0
  144. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-dynamic-install.md +0 -0
  145. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/bmad.md +0 -0
  146. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/distill.gif +0 -0
  147. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/doctor.gif +0 -0
  148. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/explain.gif +0 -0
  149. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/hooks.gif +0 -0
  150. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/install.gif +0 -0
  151. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/pulse.gif +0 -0
  152. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/search.gif +0 -0
  153. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/tap.gif +0 -0
  154. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/distill.tape +0 -0
  155. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/doctor.tape +0 -0
  156. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/explain.tape +0 -0
  157. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/hooks.tape +0 -0
  158. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/install.tape +0 -0
  159. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/pulse.tape +0 -0
  160. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/search.tape +0 -0
  161. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/tap.tape +0 -0
  162. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel.html +0 -0
  163. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/chat.html +0 -0
  164. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/code-review.md +0 -0
  165. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/commit-audit.md +0 -0
  166. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo-index.json +0 -0
  167. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo.gif +0 -0
  168. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo.html +0 -0
  169. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo.tape +0 -0
  170. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/dependencies.md +0 -0
  171. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/design-roadmap.html +0 -0
  172. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/eval-latest.json +0 -0
  173. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/eval.html +0 -0
  174. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/langchain.html +0 -0
  175. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/mcp-hub.html +0 -0
  176. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/openssf-badge.md +0 -0
  177. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/openssf-playbook.md +0 -0
  178. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/rag-architecture.md +0 -0
  179. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D01.md +0 -0
  180. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D02.md +0 -0
  181. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D03.md +0 -0
  182. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D04.md +0 -0
  183. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D05.md +0 -0
  184. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D06.md +0 -0
  185. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D07.md +0 -0
  186. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D08.md +0 -0
  187. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D09.md +0 -0
  188. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D10.md +0 -0
  189. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D11.md +0 -0
  190. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D12.md +0 -0
  191. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D13.md +0 -0
  192. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D14.md +0 -0
  193. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D15.md +0 -0
  194. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D16.md +0 -0
  195. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D17.md +0 -0
  196. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D18.md +0 -0
  197. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D19.md +0 -0
  198. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D20.md +0 -0
  199. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D21.md +0 -0
  200. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D22.md +0 -0
  201. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D23.md +0 -0
  202. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D24.md +0 -0
  203. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D25.md +0 -0
  204. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D26.md +0 -0
  205. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D27.md +0 -0
  206. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  207. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  208. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  209. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  210. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  211. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  212. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  213. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  214. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  215. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  216. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  217. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  218. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  219. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  220. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  221. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  222. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-first-rule.md +0 -0
  223. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  224. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  225. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/branch-current-gate.md +0 -0
  226. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  227. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  228. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  229. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  230. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  231. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  232. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  233. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  234. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  235. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  236. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  237. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  238. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  239. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  240. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cli-command-audit.md +0 -0
  241. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  242. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  243. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  244. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  245. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/command-carousel-page.md +0 -0
  246. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  247. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  248. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  249. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  250. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  251. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  252. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  253. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  254. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  255. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  256. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  257. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  258. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  259. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  260. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  261. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  262. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  263. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  264. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  265. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  266. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  267. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  268. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  269. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  270. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  271. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  272. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  273. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  274. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  275. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  276. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  277. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  278. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  279. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  280. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  281. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  282. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  283. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  284. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  285. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  286. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  287. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  288. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  289. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  290. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  291. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  292. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  293. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  294. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  295. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  296. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/github-community-health-files.md +0 -0
  297. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  298. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  299. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  300. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  301. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  302. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  303. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  304. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  305. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  306. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  307. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  308. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  309. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  310. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  311. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  312. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  313. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  314. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  315. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  316. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  317. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  318. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  319. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  320. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  321. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  322. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  323. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  324. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  325. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  326. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  327. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  328. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  329. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  330. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  331. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  332. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  333. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  334. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  335. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  336. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  337. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  338. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  339. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  340. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  341. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  342. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  343. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  344. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  345. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  346. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  347. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  348. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  349. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  350. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  351. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  352. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  353. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  354. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  355. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  356. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  357. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  358. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  359. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  360. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  361. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  362. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  363. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  364. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  365. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  366. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  367. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  368. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  369. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  370. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  371. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  372. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  373. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-playbook.md +0 -0
  374. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-silver.md +0 -0
  375. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  376. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  377. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  378. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  379. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  380. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  381. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  382. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  383. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  384. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  385. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  386. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  387. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  388. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  389. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  390. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  391. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  392. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  393. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  394. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  395. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  396. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  397. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  398. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  399. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  400. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  401. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  402. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  403. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  404. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  405. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  406. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  407. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/relicence-apache-2.md +0 -0
  408. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  409. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  410. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  411. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  412. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  413. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  414. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  415. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  416. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  417. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  418. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  419. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  420. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  421. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  422. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  423. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  424. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  425. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  426. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  427. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  428. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  429. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  430. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  431. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  432. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  433. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  434. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  435. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  436. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  437. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  438. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  439. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  440. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  441. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  442. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  443. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  444. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  445. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  446. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  447. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  448. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  449. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  450. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  451. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  452. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  453. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  454. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  455. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  456. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  457. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  458. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  459. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  460. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  461. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  462. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  463. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  464. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  465. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  466. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  467. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  468. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  469. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  470. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  471. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  472. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  473. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  474. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  475. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  476. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  477. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  478. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  479. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  480. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  481. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  482. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  483. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  484. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  485. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  486. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  487. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workspace-scope-install.md +0 -0
  488. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/zip-strict-audit.md +0 -0
  489. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  490. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  491. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap.html +0 -0
  492. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/security-design.md +0 -0
  493. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/semantic-search.md +0 -0
  494. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  495. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/verifying-releases.md +0 -0
  496. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/meta.md +0 -0
  497. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/openvex.json +0 -0
  498. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  499. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  500. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  501. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  502. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/eslint.config.mjs +0 -0
  503. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/README.md +0 -0
  504. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/__init__.py +0 -0
  505. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/baseline.json +0 -0
  506. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/faithfulness.py +0 -0
  507. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/golden_set.json +0 -0
  508. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/make_corpus.py +0 -0
  509. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/make_golden.py +0 -0
  510. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/metrics.py +0 -0
  511. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/publish_golden_dataset.py +0 -0
  512. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/run_evals.py +0 -0
  513. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/examples/README.md +0 -0
  514. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/examples/adapt-demo.sh +0 -0
  515. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/examples/boost-run-prototype.sh +0 -0
  516. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/index.html +0 -0
  517. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/noxfile.py +0 -0
  518. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/pyproject.toml +0 -0
  519. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/coverage-tools.in +0 -0
  520. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/coverage-tools.txt +0 -0
  521. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/lint-tools.in +0 -0
  522. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/lint-tools.txt +0 -0
  523. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/mutation-tools.in +0 -0
  524. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/mutation-tools.txt +0 -0
  525. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/platform-pins.lock +0 -0
  526. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/release-tools.in +0 -0
  527. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/release-tools.txt +0 -0
  528. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/test-tools.in +0 -0
  529. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/test-tools.txt +0 -0
  530. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/a11y_check.py +0 -0
  531. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/add_spdx_headers.py +0 -0
  532. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/bench_cli.sh +0 -0
  533. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_command_reference.py +0 -0
  534. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_demo_index.py +0 -0
  535. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_registries.py +0 -0
  536. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_roadmap.py +0 -0
  537. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_scale_corpus.py +0 -0
  538. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_vex.py +0 -0
  539. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_anchors.py +0 -0
  540. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_branch_current.py +0 -0
  541. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_dco.py +0 -0
  542. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_licenses.py +0 -0
  543. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_reproducible.py +0 -0
  544. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_required_checks.py +0 -0
  545. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/ensure_eval_corpus.sh +0 -0
  546. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_corpus.py +0 -0
  547. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_explain.py +0 -0
  548. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_gate.py +0 -0
  549. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_recommend.py +0 -0
  550. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_retrieval.py +0 -0
  551. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_stats_summary.py +0 -0
  552. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/import_budget.py +0 -0
  553. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/lock_toolchain.py +0 -0
  554. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/measure_registry.py +0 -0
  555. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/mutation_gate.py +0 -0
  556. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/mutation_shards.py +0 -0
  557. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/mutation_weights.json +0 -0
  558. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/normalize_sdist.py +0 -0
  559. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/page_budget.py +0 -0
  560. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/perf_gate.py +0 -0
  561. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/post_deploy_smoke.py +0 -0
  562. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/publish_eval_json.py +0 -0
  563. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/publish_shards.py +0 -0
  564. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/release_guard.py +0 -0
  565. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/release_preflight.py +0 -0
  566. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/serve_docs.py +0 -0
  567. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/shard_plan.py +0 -0
  568. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/setup.cfg +0 -0
  569. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/sonar-project.properties +0 -0
  570. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/README.md +0 -0
  571. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/boost.css +0 -0
  572. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/boost.js +0 -0
  573. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/demo.html +0 -0
  574. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/adapt.feature +0 -0
  575. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/browse.feature +0 -0
  576. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/count.feature +0 -0
  577. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/discover.feature +0 -0
  578. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/doctor.feature +0 -0
  579. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/environment.py +0 -0
  580. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/explain.feature +0 -0
  581. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/index.feature +0 -0
  582. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/install.feature +0 -0
  583. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/list.feature +0 -0
  584. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/search.feature +0 -0
  585. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/cli_steps.py +0 -0
  586. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/discovery_steps.py +0 -0
  587. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/mcp_steps.py +0 -0
  588. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/quality_steps.py +0 -0
  589. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/conftest.py +0 -0
  590. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/baseline.json +0 -0
  591. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/explain.jsonl +0 -0
  592. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/golden-natural.jsonl +0 -0
  593. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/golden.jsonl +0 -0
  594. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/recommend.jsonl +0 -0
  595. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/taps-scale.txt +0 -0
  596. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/taps.txt +0 -0
  597. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_bmad_all_hosts.py +0 -0
  598. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_capabilities_policy.py +0 -0
  599. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_adapt.py +0 -0
  600. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_bmad.py +0 -0
  601. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_catalog.py +0 -0
  602. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_chat.py +0 -0
  603. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_discovery.py +0 -0
  604. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_hooks.py +0 -0
  605. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_hooks_gemini.py +0 -0
  606. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_intelligence.py +0 -0
  607. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_pane_width.py +0 -0
  608. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_quickstart.py +0 -0
  609. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_tap_pins.py +0 -0
  610. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_taps.py +0 -0
  611. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_integrity_enforce.py +0 -0
  612. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_kind_conformance.py +0 -0
  613. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_property_parsers.py +0 -0
  614. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_run.py +0 -0
  615. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_tap_signing.py +0 -0
  616. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_workspace_scope.py +0 -0
  617. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/README.md +0 -0
  618. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  619. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  620. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  621. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  622. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  623. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  624. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  625. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  626. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  627. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  628. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  629. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  630. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  631. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  632. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  633. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  634. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  635. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  636. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  637. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  638. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  639. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  640. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  641. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/fuzz_frontmatter.py +0 -0
  642. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/fuzz_registry.py +0 -0
  643. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/conftest.py +0 -0
  644. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/test_graph.py +0 -0
  645. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/test_loader.py +0 -0
  646. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/test_retriever.py +0 -0
  647. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/make_fixture.py +0 -0
  648. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/perf/test_benchmarks.py +0 -0
  649. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/smoke.sh +0 -0
  650. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_a11y_check.py +0 -0
  651. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_action_pin_lockstep.py +0 -0
  652. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_adapters.py +0 -0
  653. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_adapters_multi.py +0 -0
  654. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_adapters_runner.py +0 -0
  655. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_ai.py +0 -0
  656. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_aihost.py +0 -0
  657. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_bmad_core.py +0 -0
  658. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_boost_first_offer.py +0 -0
  659. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_bootstrap.py +0 -0
  660. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_branch_current.py +0 -0
  661. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_browse.py +0 -0
  662. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_builtin.py +0 -0
  663. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_capabilities.py +0 -0
  664. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_catalog.py +0 -0
  665. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_catalogbundle.py +0 -0
  666. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_chat.py +0 -0
  667. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_anchors.py +0 -0
  668. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_dco.py +0 -0
  669. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_licenses.py +0 -0
  670. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_reproducible.py +0 -0
  671. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_claude_settings.py +0 -0
  672. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_clean_internal_cache.py +0 -0
  673. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_cliparse.py +0 -0
  674. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_codeql_analysis_key.py +0 -0
  675. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_command_reference_fresh.py +0 -0
  676. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_community_health_files.py +0 -0
  677. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_compact.py +0 -0
  678. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_complete.py +0 -0
  679. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_complete_rc_block.py +0 -0
  680. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_content_dedupe.py +0 -0
  681. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_content_identity.py +0 -0
  682. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_crash_redaction.py +0 -0
  683. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dedup_trust.py +0 -0
  684. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_demo_index.py +0 -0
  685. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense.py +0 -0
  686. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_embed_dedupe.py +0 -0
  687. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_fallback.py +0 -0
  688. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_fix_hint.py +0 -0
  689. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_quantized.py +0 -0
  690. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_ready_order.py +0 -0
  691. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_shard_real_schema.py +0 -0
  692. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  693. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_shards.py +0 -0
  694. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_status.py +0 -0
  695. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_status_cheap.py +0 -0
  696. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dependabot_config.py +0 -0
  697. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_docs_pages_linked.py +0 -0
  698. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_docsite_chrome.py +0 -0
  699. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_ed25519.py +0 -0
  700. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_embed.py +0 -0
  701. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_embed_local.py +0 -0
  702. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_embed_truncated_response.py +0 -0
  703. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_entry_key.py +0 -0
  704. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_errors_and_cli_table.py +0 -0
  705. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_baseline.py +0 -0
  706. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_corpus.py +0 -0
  707. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_faithfulness.py +0 -0
  708. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_gate.py +0 -0
  709. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_grading.py +0 -0
  710. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_metrics.py +0 -0
  711. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_stats_summary.py +0 -0
  712. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  713. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_faithfulness.py +0 -0
  714. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_frontmatter.py +0 -0
  715. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_fuzz_targets.py +0 -0
  716. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  717. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitleaks_config.py +0 -0
  718. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitutil.py +0 -0
  719. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitutil_lfs.py +0 -0
  720. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitutil_sparse.py +0 -0
  721. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_hook_settings_hosts.py +0 -0
  722. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_hookhost.py +0 -0
  723. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_imperative.py +0 -0
  724. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_import_budget.py +0 -0
  725. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_injectscan.py +0 -0
  726. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_install_permission_error.py +0 -0
  727. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_installscan.py +0 -0
  728. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_integrity.py +0 -0
  729. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_journal.py +0 -0
  730. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_langchain_packaging.py +0 -0
  731. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_link_ownership.py +0 -0
  732. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_localembed.py +0 -0
  733. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_localembed_e2e.py +0 -0
  734. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_lockfile.py +0 -0
  735. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_logs.py +0 -0
  736. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_marketing_counts.py +0 -0
  737. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcp.py +0 -0
  738. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcp_install_scan.py +0 -0
  739. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcpdecl.py +0 -0
  740. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_measure_registry.py +0 -0
  741. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_minisign.py +0 -0
  742. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutation_hardening.py +0 -0
  743. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutation_shards.py +0 -0
  744. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutation_subfile_shards.py +0 -0
  745. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutmut_source_paths.py +0 -0
  746. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_nethttp.py +0 -0
  747. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_normalize_sdist.py +0 -0
  748. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_output.py +0 -0
  749. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_page_budget.py +0 -0
  750. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_paths.py +0 -0
  751. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_perf_gate.py +0 -0
  752. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_pkg_confusions.py +0 -0
  753. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_pkg_injection.py +0 -0
  754. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_pkg_secrets.py +0 -0
  755. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_platform_pins.py +0 -0
  756. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_policy.py +0 -0
  757. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_post_deploy_smoke.py +0 -0
  758. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_project_mcp_sidecar.py +0 -0
  759. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_projectlock.py +0 -0
  760. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_provenance.py +0 -0
  761. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_publish_golden_dataset.py +0 -0
  762. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rag.py +0 -0
  763. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rag_fastpath.py +0 -0
  764. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rag_fusion.py +0 -0
  765. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registries_fresh.py +0 -0
  766. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry.py +0 -0
  767. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry_categories.py +0 -0
  768. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry_control_chars.py +0 -0
  769. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry_parallel.py +0 -0
  770. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_release_guard.py +0 -0
  771. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_release_preflight.py +0 -0
  772. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_required_checks.py +0 -0
  773. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rerank_cache.py +0 -0
  774. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_resolve.py +0 -0
  775. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_roadmap_fresh.py +0 -0
  776. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rules.py +0 -0
  777. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_scale_corpus.py +0 -0
  778. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_scopes.py +0 -0
  779. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_secretscan.py +0 -0
  780. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_selfupdate.py +0 -0
  781. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_serve.py +0 -0
  782. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_serve_docs.py +0 -0
  783. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_shard_plan.py +0 -0
  784. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_shards.py +0 -0
  785. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_shards_matrix.py +0 -0
  786. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_smoke_covers_every_command.py +0 -0
  787. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_spdx_headers.py +0 -0
  788. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_spin.py +0 -0
  789. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_stackprobe.py +0 -0
  790. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_staleness.py +0 -0
  791. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_store_materialize.py +0 -0
  792. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_sync_blocked_links.py +0 -0
  793. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  794. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_tap_pins.py +0 -0
  795. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_token_parity.py +0 -0
  796. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_toolchain_lock.py +0 -0
  797. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_trustaudit.py +0 -0
  798. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_typosquat.py +0 -0
  799. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_updatediff.py +0 -0
  800. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_util.py +0 -0
  801. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_version.py +0 -0
  802. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_version_tags.py +0 -0
  803. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_vex.py +0 -0
  804. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_visual_harness_flags.py +0 -0
  805. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_concurrency.py +0 -0
  806. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  807. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  808. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_timeouts.py +0 -0
  809. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflows.py +0 -0
  810. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  811. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/a11y_check.mjs +0 -0
  812. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/console_check.mjs +0 -0
  813. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/package-lock.json +0 -0
  814. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/package.json +0 -0
  815. {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/visual_check.mjs +0 -0
@@ -1,9 +1,12 @@
1
1
  ABM
2
2
  agentic
3
+ agy
3
4
  Algolia
4
5
  allowlist
5
6
  allowlisted
6
7
  argparse
8
+ args
9
+ argv
7
10
  Arize
8
11
  ASan
9
12
  Attio
@@ -172,6 +175,8 @@ unremediated
172
175
  unstaged
173
176
  untap
174
177
  untrusted
178
+ upsert
179
+ upserts
175
180
  uv
176
181
  Vaadin
177
182
  Valgrind
@@ -363,7 +363,7 @@ work in tests and the dev loop:
363
363
  ~/.gemini/ rules (GEMINI.md) + workflows only — see below
364
364
  ```
365
365
 
366
- **Four agent targets, but only three get symlinks.** Gemini CLI implements the
366
+ **Five agent targets, and only Gemini CLI skips symlinks.** Gemini CLI implements the
367
367
  Agent Skills standard and discovers `~/.agents/skills` — the canonical store —
368
368
  *directly*, so it is configured with `links_skills: false`. Linking into
369
369
  `~/.gemini/skills` too would put one skill in two of its discovery tiers, where
@@ -394,6 +394,19 @@ for code you write:
394
394
  one hop lands in another agent's dir. It resolves **both sides**: on macOS a
395
395
  `$HOME` under `/var/folders` resolves to `/private/var/...`, so resolving
396
396
  only the target compares a real path against a nominal one and never matches.
397
+ - **Antigravity CLI (`agy`) is Gemini's successor and is NOT a native-store
398
+ agent.** It shares the `~/.gemini` tree but reads neither `~/.agents/skills`
399
+ nor — for CLI scope — the shared `~/.gemini/skills`, so it takes real
400
+ symlinks, into `~/.gemini/antigravity-cli/skills`. Linking into the *shared*
401
+ dir instead would be the mistake: Gemini CLI reads that path too and already
402
+ sees the same skills through the `~/.agents/skills` alias, so every skill
403
+ would cost a "Skill conflict detected" line per session — the exact failure
404
+ `links_skills: false` exists to prevent. Its rules arrive through the
405
+ `gemini` agent, which already writes the `~/.gemini/GEMINI.md` Antigravity
406
+ reads; its workflow and MCP surfaces are **not** wired up, because their
407
+ formats have not been verified against the real CLI, and this file does not
408
+ record guesses (see `hookhost.py` for the standard: name the sources).
409
+
397
410
  - Per-agent *formats* differ and are pure functions in `core/`: `rules.CONTEXT_FILES`
398
411
  maps an agent with no rules dir to its context file (`claude-code` → CLAUDE.md /
399
412
  CLAUDE.local.md, `gemini` → GEMINI.md for both scopes), and
@@ -401,7 +414,16 @@ for code you write:
401
414
  Gemini's `commands/` slot is `.toml` (`workflows.render_gemini_command`); its
402
415
  `agents/` slot stays verbatim Markdown. Getting that backwards produces a file
403
416
  the agent silently never loads.
404
- - `core/mcphost.py` holds the per-host `mcp add`/`remove` grammar. Claude and
417
+ - `core/mcphost.py` holds the per-host `mcp add`/`remove` grammar.
418
+ **Antigravity CLI (`agy`) is the third host**, and its two argv rules both bite: flags must
419
+ come *before* `<name>` (a flag after it is rejected) and `--` must precede a
420
+ command whose args start with `-`, or `--stdio` is eaten as an agy flag. It
421
+ has **no scope** — one global file at `~/.gemini/config/mcp_config.json`,
422
+ inherited from Gemini CLI, so there is no `~/.antigravity` — which is why
423
+ `has_scope()` exists and the success line drops "(scope: user)" for it. Its
424
+ `add` **upserts** where Claude's errors on a duplicate name; that asymmetry
425
+ is what made `--host auto` abort on a machine already registered with
426
+ Claude. Claude and
405
427
  Gemini disagree on name position, the `--` separator, and whether unregister
406
428
  needs an explicit scope — all three verified against the real CLIs and pinned
407
429
  by `tests/unit/test_mcphost.py`. Don't "simplify" them into one shape.
@@ -534,6 +556,18 @@ Consequences for code you write here:
534
556
  the measured trade is **3.40 GB → 3.87 GB (+14%), in 1360 s**, peaking at
535
557
  ~2× while both copies coexist. Don't describe it as size-neutral — an earlier
536
558
  draft of this section did, from prediction rather than measurement.
559
+ - **Embedding reports progress and commits as it goes.** `dense.build` takes
560
+ `on_progress(done, total)` and `_embed_and_store` commits every
561
+ `_COMMIT_EVERY` rows. Both are bug fixes, not polish: a full catalogue is
562
+ tens of thousands of distinct chunks under one fixed spinner label, which a
563
+ user reported as a hang after hours; and every row used to land in a single
564
+ transaction that committed after the last one, so an interrupt threw away the
565
+ whole build. Periodic commits are safe because `build` deletes each changed
566
+ tap's rows *before* re-inserting, so a partial store is replaced rather than
567
+ doubled. The total counts **distinct** texts, not rows — 42.9% of chunks on a
568
+ real install are repeats and are embedded once — so a progress total taken
569
+ from row count would over-report the work.
570
+
537
571
  - **Nothing on the search path may count `chunks`.** `SELECT COUNT(*)` scans the
538
572
  `chunks_tap` covering index — 8,419 pages / 34.5 MB, measured 1.94 s — and
539
573
  both `ready()` and `status()` did it on every search, the latter only to word
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.50
3
+ Version: 1.2.52
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -54,7 +54,11 @@ Dynamic: license-file
54
54
 
55
55
  **Homebrew for AI coding skills.** boost finds, installs, and version-tracks skills
56
56
  from GitHub-hosted registries, and wires each one into Claude Code, Windsurf,
57
- Cursor and Gemini CLI in a single pass.
57
+ Cursor, Gemini CLI and Antigravity CLI in a single pass.
58
+
59
+ Antigravity CLI (`agy`) is wired up the same way: skills link into
60
+ `~/.gemini/antigravity-cli/skills`, and `boost mcp register` reaches it through
61
+ `agy mcp add` alongside Claude Code.
58
62
 
59
63
  ```bash
60
64
  pipx install boost-skill-cli
@@ -66,7 +70,7 @@ boost install tdd-workflow # → every agent, version-pinned, one lock file
66
70
  (No `pipx` yet? macOS ships neither it nor a new enough Python — run the
67
71
  [prerequisites check](#prerequisites) first.)
68
72
 
69
- No more copying `SKILL.md` into four agent folders and forgetting which one is
73
+ No more copying `SKILL.md` into five agent folders and forgetting which one is
70
74
  stale. The default install is pure stdlib, with no build step and no
71
75
  dependencies.
72
76
 
@@ -12,7 +12,11 @@
12
12
 
13
13
  **Homebrew for AI coding skills.** boost finds, installs, and version-tracks skills
14
14
  from GitHub-hosted registries, and wires each one into Claude Code, Windsurf,
15
- Cursor and Gemini CLI in a single pass.
15
+ Cursor, Gemini CLI and Antigravity CLI in a single pass.
16
+
17
+ Antigravity CLI (`agy`) is wired up the same way: skills link into
18
+ `~/.gemini/antigravity-cli/skills`, and `boost mcp register` reaches it through
19
+ `agy mcp add` alongside Claude Code.
16
20
 
17
21
  ```bash
18
22
  pipx install boost-skill-cli
@@ -24,7 +28,7 @@ boost install tdd-workflow # → every agent, version-pinned, one lock file
24
28
  (No `pipx` yet? macOS ships neither it nor a new enough Python — run the
25
29
  [prerequisites check](#prerequisites) first.)
26
30
 
27
- No more copying `SKILL.md` into four agent folders and forgetting which one is
31
+ No more copying `SKILL.md` into five agent folders and forgetting which one is
28
32
  stale. The default install is pure stdlib, with no build step and no
29
33
  dependencies.
30
34
 
@@ -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.50'
22
- __version_tuple__ = version_tuple = (1, 2, 50)
21
+ __version__ = version = '1.2.52'
22
+ __version_tuple__ = version_tuple = (1, 2, 52)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1664,8 +1664,11 @@ def cmd_mcp(argv) -> int:
1664
1664
 
1665
1665
  verb = "register" if args.action == "register" else "unregister"
1666
1666
  for host in done:
1667
- out.ok("%sed boost as an MCP server for %s (scope: user)"
1668
- % (verb, mcphost.label(host)))
1667
+ # agy has no scopes — one global file — so claiming "(scope: user)"
1668
+ # would describe a distinction its CLI does not have.
1669
+ scope_note = " (scope: user)" if mcphost.has_scope(host) else ""
1670
+ out.ok("%sed boost as an MCP server for %s%s"
1671
+ % (verb, mcphost.label(host), scope_note))
1669
1672
  for host in already:
1670
1673
  out.ok("already registered with %s — nothing to do"
1671
1674
  % mcphost.label(host))
@@ -388,8 +388,8 @@ def cmd_reindex(argv):
388
388
  # holds — count, stats, trending, plain search. See the import-budget
389
389
  # gate (scripts/import_budget.py).
390
390
  from ..core import embed
391
- with spin.Spinner("embedding chunks into the dense store"):
392
- dense_stats = _reindex_dense(args.force)
391
+ with spin.Spinner("embedding chunks into the dense store") as sp:
392
+ dense_stats = _reindex_dense(args.force, spinner=sp)
393
393
  if args.as_json:
394
394
  print(json.dumps({"bm25": stats, "dense": dense_stats}
395
395
  if args.dense else stats))
@@ -434,7 +434,44 @@ def cmd_reindex(argv):
434
434
  return 0
435
435
 
436
436
 
437
- def _reindex_dense(force):
437
+ def _embed_progress(spinner):
438
+ """A callback that rewrites the spinner's label with real numbers.
439
+
440
+ Embedding is the longest thing boost does — tens of thousands of distinct
441
+ chunks at roughly a second each for a full catalogue — and it ran under a
442
+ fixed label for hours. "embedding chunks into the dense store" is
443
+ indistinguishable from a hang, which is exactly how it was reported.
444
+
445
+ The rate comes from this run rather than a constant, because the two
446
+ backends differ by an order of magnitude and a local model's throughput
447
+ depends on the machine. Until a batch has finished there is nothing to
448
+ estimate from, so it says the total and nothing else rather than guessing.
449
+ """
450
+ started = time.monotonic()
451
+
452
+ def report(done: int, total: int) -> None:
453
+ if spinner is None or not total:
454
+ return
455
+ pct = 100.0 * done / total
456
+ # The bar first, because it is the part that answers the question the
457
+ # user actually has — "is this moving?" — at a glance, before any of
458
+ # the digits are read. `spin.bar` is the same determinate bar the rest
459
+ # of the CLI draws, so this looks like boost rather than like a
460
+ # second progress convention.
461
+ label = "embedding %s %d%% · %s/%s chunks" % (
462
+ spin.bar(done, total, width=16), int(pct),
463
+ format(done, ","), format(total, ","))
464
+ elapsed = time.monotonic() - started
465
+ if done and elapsed > 1:
466
+ remaining = (total - done) * (elapsed / done)
467
+ if remaining >= 1:
468
+ label += " · ~%s left" % util.human_duration(remaining)
469
+ spinner.label = label
470
+
471
+ return report
472
+
473
+
474
+ def _reindex_dense(force, spinner=None):
438
475
  """Build the dense vector store; returns stats or None when unavailable."""
439
476
  # Local import: the dense/embedding engines are opt-in (`search --dense`),
440
477
  # so they stay out of startup for every other command in this module.
@@ -447,7 +484,7 @@ def _reindex_dense(force):
447
484
  # only what changed. Doing it after would quantize, then write float32 rows
448
485
  # into a store that no longer has a float32 table.
449
486
  migrated = dense.quantize()
450
- stats = dense.build(force=force)
487
+ stats = dense.build(force=force, on_progress=_embed_progress(spinner))
451
488
  if migrated and isinstance(stats, dict):
452
489
  stats = stats | {"quantized": migrated["chunks"]}
453
490
  return stats
@@ -8,7 +8,8 @@ from pathlib import Path
8
8
  from . import config, paths
9
9
 
10
10
  DISPLAY = {"claude-code": "Claude Code", "windsurf": "Windsurf",
11
- "cursor": "Cursor", "gemini": "Gemini CLI"}
11
+ "cursor": "Cursor", "gemini": "Gemini CLI",
12
+ "antigravity": "Antigravity CLI"}
12
13
 
13
14
 
14
15
  def known_agents() -> dict[str, dict]:
@@ -22,6 +23,15 @@ def known_agents() -> dict[str, dict]:
22
23
  # implements the Agent Skills standard's `~/.agents/skills` path,
23
24
  # which most do not, so the symlink is the safe assumption.
24
25
  "links_skills": bool(spec.get("links_skills", True)),
26
+ # Defaults True: nearly every agent reads a repo-local copy of its
27
+ # own dotdir, so a project install lands in `<repo>/.claude/skills`
28
+ # and its siblings. False marks an agent whose project layout boost
29
+ # does not know — see :func:`project_agents`.
30
+ "project_scope": bool(spec.get("project_scope", True)),
31
+ # Defaults False: most agents take all three kinds. True marks an
32
+ # agent where only the skills surface is known — see
33
+ # :func:`materializing_agents`.
34
+ "skills_only": bool(spec.get("skills_only", False)),
25
35
  }
26
36
  return out
27
37
 
@@ -52,6 +62,45 @@ def linking_agents() -> dict[str, Path]:
52
62
  if s["enabled"] and s["links_skills"]}
53
63
 
54
64
 
65
+ def project_agents() -> dict[str, Path]:
66
+ """Enabled agents whose *project* layout boost actually knows.
67
+
68
+ Project scope is derived from the agent's own dotdir
69
+ (``scopes.agent_root``: ``<repo>/.claude/skills/…``), which holds for every
70
+ agent whose skills dir is one level under a dotdir. Antigravity CLI's is
71
+ two — ``~/.gemini/antigravity-cli/skills`` — so the derivation would create
72
+ a dotless ``<repo>/antigravity-cli/`` that nothing reads, and boost would
73
+ report a coverage it does not have. Its documented project location is
74
+ inside ``~/.gemini/config/projects/``, which is not a repo-local directory
75
+ at all; until that is verified against the CLI, the honest answer is to
76
+ leave it out of project scope rather than invent a path for it.
77
+ """
78
+ return {n: s["dir"] for n, s in known_agents().items()
79
+ if s["enabled"] and s["project_scope"]}
80
+
81
+
82
+ def agents_for_scope(base) -> dict[str, Path]:
83
+ """Enabled agents for user scope (``base is None``) or project scope."""
84
+ return enabled_agents() if base is None else project_agents()
85
+
86
+
87
+ def materializing_agents(base=None) -> dict[str, Path]:
88
+ """Agents a *rule* or *workflow* may be written into.
89
+
90
+ A skill is a directory boost symlinks; a rule and a workflow are files
91
+ boost writes in a format the agent has to already read — a context file at
92
+ a known path, or a slash command in a known dir and syntax. So this set is
93
+ narrower than :func:`agents_for_scope`: an agent whose rule and workflow
94
+ formats have not been verified is skills-only, and writing a plausible file
95
+ into its config tree would claim a coverage that does not exist.
96
+
97
+ Antigravity CLI is the current case. Its rules arrive anyway, through the
98
+ ``gemini`` agent, which already writes the ``~/.gemini/GEMINI.md`` it reads.
99
+ """
100
+ return {n: d for n, d in agents_for_scope(base).items()
101
+ if not known_agents()[n]["skills_only"]}
102
+
103
+
55
104
  def native_store_agents() -> dict[str, Path]:
56
105
  """Enabled agents that read the canonical store without a symlink.
57
106
 
@@ -28,6 +28,29 @@ DEFAULTS = {
28
28
  # symlink if that alias is ever narrowed.
29
29
  "gemini": {"dir": "~/.gemini/skills", "enabled": True,
30
30
  "links_skills": False},
31
+ # Antigravity CLI (`agy`) is Gemini CLI's successor and shares its
32
+ # `~/.gemini` tree, but it does **not** implement the Agent Skills
33
+ # standard: it reads neither `~/.agents/skills` nor, for CLI scope,
34
+ # anything outside `~/.gemini/antigravity-cli/`. So unlike gemini it
35
+ # needs real symlinks — `links_skills` defaults true and stays true.
36
+ #
37
+ # Why the CLI-scoped dir and not the shared `~/.gemini/skills`: that
38
+ # shared dir is one of *Gemini CLI's* user-tier discovery paths, and
39
+ # Gemini already reads the same skills through the `~/.agents/skills`
40
+ # alias. Linking there would put one skill in two of Gemini's tiers and
41
+ # cost a "Skill conflict detected" line per skill per session — the
42
+ # exact failure `links_skills: false` exists to avoid. Linking into
43
+ # `antigravity-cli/skills` is invisible to Gemini and is the tier the
44
+ # CLI itself reads.
45
+ # `project_scope: false` — its skills dir is two levels under the
46
+ # dotdir, so the repo-local derivation would make a dotless
47
+ # `<repo>/antigravity-cli/` nothing reads. See agents.project_agents.
48
+ # `skills_only`: its rule and workflow formats are unverified, and a
49
+ # rule reaches it anyway through the `gemini` entry above, which writes
50
+ # the ~/.gemini/GEMINI.md Antigravity reads.
51
+ "antigravity": {"dir": "~/.gemini/antigravity-cli/skills",
52
+ "enabled": True, "project_scope": False,
53
+ "skills_only": True},
31
54
  },
32
55
  "taps": [], # [{"name": "owner/repo", "url": "...", "curated": bool}]
33
56
  "ai": {
@@ -25,6 +25,11 @@ from .rag import Hit, chunk, entry_key, read_body
25
25
 
26
26
  INDEX_VERSION = 2
27
27
  _BATCH = 128 # texts per embedding request
28
+
29
+ #: Rows between commits while storing vectors. Small enough that an interrupted
30
+ #: build keeps almost everything it embedded, large enough that the commits are
31
+ #: not the cost — on a 750k-chunk store this is ~150 commits.
32
+ _COMMIT_EVERY = 5000
28
33
  _POOL = 8 # chunk over-fetch factor for KNN before per-entry reduce
29
34
 
30
35
 
@@ -462,12 +467,20 @@ def ready() -> bool:
462
467
  con.close()
463
468
 
464
469
 
465
- def build(entries: list[dict] | None = None,
466
- force: bool = False) -> dict | None:
470
+ def build(entries: list[dict] | None = None, force: bool = False,
471
+ on_progress=None) -> dict | None:
467
472
  """(Re)embed and store chunk vectors, reusing unchanged taps.
468
473
 
469
474
  Returns stats, or ``None`` if the backend or an embeddings provider is
470
475
  unavailable (nothing is written in that case).
476
+
477
+ ``on_progress(done, total)`` is called before the first batch and after
478
+ each one. It exists because this is the longest-running thing boost does —
479
+ a full catalogue is tens of thousands of distinct chunks at roughly a
480
+ second each — and it used to run under a bare spinner that said "embedding
481
+ chunks into the dense store" for hours without a number. A user cannot
482
+ tell that apart from a hang, and the honest fix is to say how many there
483
+ are and how far in we got.
471
484
  """
472
485
  from .rag import _tap_commits, _tap_paths
473
486
  if not have_backend() or not embed.available():
@@ -517,7 +530,8 @@ def build(entries: list[dict] | None = None,
517
530
  removed_taps = sorted(_indexed_taps(con) - {e["tap"] for e in entries})
518
531
  _delete_taps(con, changed_taps + removed_taps)
519
532
 
520
- added, failed_taps = _embed_and_store(con, fresh, tap_paths)
533
+ added, failed_taps = _embed_and_store(con, fresh, tap_paths,
534
+ on_progress=on_progress)
521
535
  # Only record a commit for a tap whose chunks actually landed. Recording
522
536
  # one for a tap that stored nothing makes every later non-forced run
523
537
  # treat it as already built and skip it — one transient rate limit would
@@ -743,8 +757,8 @@ def _delete_taps(con: sqlite3.Connection, taps: list[str]) -> None:
743
757
 
744
758
 
745
759
  def _embed_and_store(con: sqlite3.Connection, entries: list[dict],
746
- tap_paths: dict[str, Path] | None
747
- ) -> tuple[int, set]:
760
+ tap_paths: dict[str, Path] | None,
761
+ on_progress=None) -> tuple[int, set]:
748
762
  """Embed every chunk of ``entries``; returns ``(added, failed_taps)``.
749
763
 
750
764
  A batch the provider rejects (rate limit, quota, oversized input) yields no
@@ -778,15 +792,31 @@ def _embed_and_store(con: sqlite3.Connection, entries: list[dict],
778
792
  order.append(text)
779
793
 
780
794
  vec_of: dict[str, object] = {}
795
+ if on_progress is not None:
796
+ # Reported before the first request, so the size of the job is known
797
+ # up front rather than inferred from how long it has already taken.
798
+ on_progress(0, len(order))
781
799
  for start in range(0, len(order), _BATCH):
782
800
  batch = order[start:start + _BATCH]
783
801
  vecs = embed.embed(batch, input_type="document")
784
- if not vecs or len(vecs) != len(batch):
785
- continue # taps are attributed per row below, not per batch
786
- vec_of.update(zip(batch, vecs, strict=True))
802
+ if vecs and len(vecs) == len(batch):
803
+ vec_of.update(zip(batch, vecs, strict=True))
804
+ # else: taps are attributed per row below, not per batch — but the
805
+ # progress count still advances, or a run with a few rejected batches
806
+ # would appear to stall.
807
+ if on_progress is not None:
808
+ on_progress(min(start + _BATCH, len(order)), len(order))
787
809
 
788
810
  added = 0
789
811
  failed_taps: set = set()
812
+ # Durability, not speed. Every row used to land in one transaction that
813
+ # committed only after the last one, so interrupting a three-hour build —
814
+ # or losing the machine to a sleep or an OOM — threw away every vector it
815
+ # had paid for. Committing as the rows accumulate keeps the work, and
816
+ # re-running is still correct because `_delete_taps` has already removed
817
+ # each changed tap's old rows, so a partial store is replaced rather than
818
+ # doubled.
819
+ since_commit = 0
790
820
  for e, ci, text in rows:
791
821
  vec = vec_of.get(text)
792
822
  if vec is None:
@@ -801,6 +831,11 @@ def _embed_and_store(con: sqlite3.Connection, entries: list[dict],
801
831
  e.get("kind", "skill"), ci, text[:200].strip()))
802
832
  _store_vector(con, cur.lastrowid, mod.serialize_float32(vec))
803
833
  added += 1
834
+ since_commit += 1
835
+ if since_commit >= _COMMIT_EVERY:
836
+ con.commit()
837
+ since_commit = 0
838
+ con.commit()
804
839
  return added, failed_taps
805
840
 
806
841
 
@@ -10,7 +10,22 @@ and I/O-free (like :mod:`boost_cli.core.mcpdecl`) so every branch is unit
10
10
  testable and reachable by the mutation gate; the command layer does the
11
11
  ``shutil.which`` probing and the ``subprocess.run``.
12
12
 
13
- The three ways the two grammars differ, all of them load-bearing:
13
+ Antigravity CLI (``agy``) is the third host, and it is Gemini CLI's successor
14
+ rather than a variant of it: Gemini is being deprecated in its favour. Its
15
+ ``add`` **upserts** where Claude's errors on a duplicate name, it has **no
16
+ scope** (one global file at ``~/.gemini/config/mcp_config.json`` — it inherited
17
+ Gemini's directory, so there is no ``~/.antigravity``), its off-switch is
18
+ ``enable``/``disable`` rather than removal, and it has no per-server ``get``.
19
+ Its two argv rules come from its own help and both bite: **flags must precede
20
+ the name**, and **``--`` must precede a command whose args start with ``-``**,
21
+ or ``--stdio`` is eaten as an agy flag.
22
+
23
+ That upsert-vs-error asymmetry is also why `boost mcp register --host auto`
24
+ used to abort: Claude rejects the duplicate, and the sweep gave up before
25
+ reaching the next agent. Against agy alone it would never have surfaced.
26
+
27
+ The three ways the Claude and Gemini grammars differ, all of them
28
+ load-bearing:
14
29
 
15
30
  * **Name position.** Both CLIs advertise the same usage string —
16
31
  ``[options] <name> <commandOrUrl> [args...]`` — so the shape is not the
@@ -68,12 +83,15 @@ LAUNCH_ENV = {
68
83
 
69
84
  CLAUDE = "claude"
70
85
  GEMINI = "gemini"
86
+ AGY = "agy"
71
87
 
72
88
  # name -> {"cli": executable, "label": display name}. Order is the order hosts
73
- # are tried and reported in.
89
+ # are tried and reported in; new hosts are appended so the existing order is
90
+ # untouched.
74
91
  HOSTS: dict[str, dict] = {
75
92
  CLAUDE: {"cli": "claude", "label": "Claude Code"},
76
93
  GEMINI: {"cli": "gemini", "label": "Gemini CLI"},
94
+ AGY: {"cli": "agy", "label": "Antigravity CLI"},
77
95
  }
78
96
 
79
97
 
@@ -92,6 +110,17 @@ def label(host: str) -> str:
92
110
  return str(HOSTS[host]["label"])
93
111
 
94
112
 
113
+ def has_scope(host: str) -> bool:
114
+ """True when this host's registrations are scoped at all.
115
+
116
+ Claude and Gemini keep local/user/project settings; agy keeps one global
117
+ file. Reporting "(scope: user)" for agy would describe a distinction its
118
+ CLI does not have — and would send anyone looking for a project-scoped
119
+ entry after something that cannot exist.
120
+ """
121
+ return host != AGY
122
+
123
+
95
124
  def _env_flags(env: dict[str, str] | None) -> list[str]:
96
125
  """``-e KEY=VALUE`` pairs, sorted so the argv is deterministic."""
97
126
  if not env:
@@ -113,6 +142,17 @@ def register_argv(host: str, launcher: str, *, scope: str = "user",
113
142
  """
114
143
  exe = cli(host)
115
144
  flags = _env_flags(LAUNCH_ENV if env is None else env)
145
+ if host == AGY:
146
+ # [flags] <name> <commandOrUrl> [args...], and both of its rules bite
147
+ # here. Flags must come BEFORE the name — a flag after it is rejected —
148
+ # and `--` must precede a command whose own args start with `-`, or
149
+ # `--stdio` is eaten as an agy flag rather than passed to boost. There
150
+ # is no scope: agy keeps one global file
151
+ # (~/.gemini/config/mcp_config.json, inherited from Gemini CLI — there
152
+ # is no ~/.antigravity), so passing `--scope` would be an error rather
153
+ # than a no-op.
154
+ return [exe, "mcp", "add", *flags, name,
155
+ "--", launcher, "mcp", "--stdio"]
116
156
  if host == GEMINI:
117
157
  # [options] <name> <commandOrUrl> [args...]. No `--`: yargs
118
158
  # `unknown-options-as-args` already carries `--stdio` into [args...],
@@ -135,6 +175,14 @@ def unregister_argv(host: str, *, scope: str = "user",
135
175
  exe = cli(host)
136
176
  if host == GEMINI:
137
177
  return [exe, "mcp", "remove", "--scope", scope, name]
178
+ if host == AGY:
179
+ # No scope flag: one global file. NOTE — `add`, `enable` and `disable`
180
+ # are the subcommands verified from agy's own help; `remove` mirrors
181
+ # Claude's and is the only shape that matches this command's meaning.
182
+ # If a release turns out not to have it, the failure is loud and names
183
+ # the argv, and `agy mcp disable boost` is the documented off-switch
184
+ # that keeps the entry.
185
+ return [exe, "mcp", "remove", name]
138
186
  return [exe, "mcp", "remove", name]
139
187
 
140
188
 
@@ -604,8 +604,12 @@ def _install_project_skill(entry: dict, force: bool = False,
604
604
  src = source_dir_for(entry)
605
605
  _enforce_capability_policy(name, src / "SKILL.md")
606
606
  only_agents = preserved_agent_scope(only_agents, existing)
607
+ # agents_for_scope, not enabled_agents: project scope derives a repo-local
608
+ # dotdir from the agent's own, which holds for every agent whose skills dir
609
+ # sits one level under it. Antigravity's sits two, so it is excluded rather
610
+ # than given an invented `<repo>/antigravity-cli/`.
607
611
  targets = [(agent, scopes.skill_target(skills_dir, name, base=resolved_base))
608
- for agent, skills_dir in agents.enabled_agents().items()
612
+ for agent, skills_dir in agents.agents_for_scope(resolved_base).items()
609
613
  if not only_agents or agent in only_agents]
610
614
 
611
615
  # Refuse to write through a symlink that leaves the repo. An agent dir like
@@ -836,7 +840,7 @@ def _install_rule(entry: dict, force: bool = False,
836
840
  paths.ensure_dirs()
837
841
  materializations: list[dict] = []
838
842
  linked: list[str] = []
839
- for agent, skills_dir in agents.enabled_agents().items():
843
+ for agent, skills_dir in agents.materializing_agents(resolved_base).items():
840
844
  if only_agents and agent not in only_agents:
841
845
  continue
842
846
  mode, path = rules.rule_target(agent, skills_dir, name, base=resolved_base)
@@ -1070,7 +1074,7 @@ def _install_workflow(entry: dict, force: bool = False,
1070
1074
  paths.ensure_dirs()
1071
1075
  materializations: list[dict] = []
1072
1076
  linked: list[str] = []
1073
- for agent, skills_dir in agents.enabled_agents().items():
1077
+ for agent, skills_dir in agents.materializing_agents(resolved_base).items():
1074
1078
  if only_agents and agent not in only_agents:
1075
1079
  continue
1076
1080
  path = workflows.workflow_target(skills_dir, slot, name,
@@ -168,6 +168,23 @@ def rel_time(iso: str) -> str:
168
168
  return then.strftime("%Y-%m-%d")
169
169
 
170
170
 
171
+ def human_duration(seconds: float) -> str:
172
+ """A short, honest duration: ``'45s'``, ``'12m'``, ``'2h 5m'``.
173
+
174
+ Coarse on purpose. This labels an estimate that is extrapolated from a
175
+ partial run, so seconds of precision on a two-hour figure would claim an
176
+ accuracy the number does not have.
177
+ """
178
+ seconds = max(0, int(seconds))
179
+ if seconds < 60:
180
+ return "%ds" % seconds
181
+ minutes = seconds // 60
182
+ if minutes < 60:
183
+ return "%dm" % minutes
184
+ hours, minutes = divmod(minutes, 60)
185
+ return "%dh %dm" % (hours, minutes) if minutes else "%dh" % hours
186
+
187
+
171
188
  def human_size(n: int) -> str:
172
189
  """Format a byte count for humans: ``1536`` -> ``'1.5KB'``.
173
190
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.50
3
+ Version: 1.2.52
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -54,7 +54,11 @@ Dynamic: license-file
54
54
 
55
55
  **Homebrew for AI coding skills.** boost finds, installs, and version-tracks skills
56
56
  from GitHub-hosted registries, and wires each one into Claude Code, Windsurf,
57
- Cursor and Gemini CLI in a single pass.
57
+ Cursor, Gemini CLI and Antigravity CLI in a single pass.
58
+
59
+ Antigravity CLI (`agy`) is wired up the same way: skills link into
60
+ `~/.gemini/antigravity-cli/skills`, and `boost mcp register` reaches it through
61
+ `agy mcp add` alongside Claude Code.
58
62
 
59
63
  ```bash
60
64
  pipx install boost-skill-cli
@@ -66,7 +70,7 @@ boost install tdd-workflow # → every agent, version-pinned, one lock file
66
70
  (No `pipx` yet? macOS ships neither it nor a new enough Python — run the
67
71
  [prerequisites check](#prerequisites) first.)
68
72
 
69
- No more copying `SKILL.md` into four agent folders and forgetting which one is
73
+ No more copying `SKILL.md` into five agent folders and forgetting which one is
70
74
  stale. The default install is pure stdlib, with no build step and no
71
75
  dependencies.
72
76
 
@@ -682,6 +682,7 @@ tests/unit/test_dense.py
682
682
  tests/unit/test_dense_embed_dedupe.py
683
683
  tests/unit/test_dense_fallback.py
684
684
  tests/unit/test_dense_fix_hint.py
685
+ tests/unit/test_dense_progress.py
685
686
  tests/unit/test_dense_quantized.py
686
687
  tests/unit/test_dense_ready_order.py
687
688
  tests/unit/test_dense_shard_real_schema.py
@@ -1117,7 +1117,7 @@
1117
1117
  </div>
1118
1118
  <div class="args-h">Options</div>
1119
1119
  <div class="args">
1120
- <div class="arg"><code>--host H</code><span>agent CLI to (un)register with: claude, gemini, or `auto` (default) for every one that is installed</span></div>
1120
+ <div class="arg"><code>--host H</code><span>agent CLI to (un)register with: claude, gemini, agy, or `auto` (default) for every one that is installed</span></div>
1121
1121
  <div class="arg"><code>--stdio</code><span>run the MCP server on stdin/stdout (used by the agent)</span></div>
1122
1122
  <div class="arg"><code>--seed</code><span>top up any missing recommended registries even if others are already tapped (the repair path)</span></div>
1123
1123
  <div class="arg"><code>--no-seed</code><span>register only; do not tap anything</span></div>