boost-skill-cli 1.0.418__tar.gz → 1.0.419__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 (653) hide show
  1. {boost_skill_cli-1.0.418/boost_skill_cli.egg-info → boost_skill_cli-1.0.419}/PKG-INFO +13 -4
  2. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/README.md +12 -3
  3. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/configuration.py +131 -33
  5. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/taps.py +5 -2
  6. boost_skill_cli-1.0.419/boost_cli/core/bootstrap.py +135 -0
  7. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/config.py +22 -1
  8. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/mcp.py +96 -8
  9. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419/boost_skill_cli.egg-info}/PKG-INFO +13 -4
  10. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
  11. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/commands.html +5 -3
  12. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/index.html +28 -12
  13. boost_skill_cli-1.0.419/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +46 -0
  14. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap.html +44 -1
  15. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/environment.py +6 -1
  16. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/conftest.py +5 -0
  17. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_configuration.py +184 -3
  18. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_taps.py +3 -3
  19. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_everyday_loop.py +1 -1
  20. boost_skill_cli-1.0.419/tests/unit/test_bootstrap.py +282 -0
  21. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_config.py +16 -2
  22. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mcp.py +184 -0
  23. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.gitattributes +0 -0
  24. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.gitignore +0 -0
  25. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.gitleaks.toml +0 -0
  26. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.htmlvalidate.json +0 -0
  27. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.lighthouserc.json +0 -0
  28. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.lycheeignore +0 -0
  29. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.markdownlint-cli2.jsonc +0 -0
  30. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.pre-commit-config.yaml +0 -0
  31. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.stylelintrc.json +0 -0
  32. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.vale/styles/boost/Terminology.yml +0 -0
  33. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  34. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/.vale.ini +0 -0
  35. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/CLAUDE.md +0 -0
  36. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/CODE_OF_CONDUCT.md +0 -0
  37. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/CONTRIBUTING.md +0 -0
  38. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/LICENSE +0 -0
  39. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/MANIFEST.in +0 -0
  40. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/Makefile +0 -0
  41. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/SECURITY.md +0 -0
  42. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost +0 -0
  43. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/__init__.py +0 -0
  44. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/__main__.py +0 -0
  45. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/cli.py +0 -0
  46. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/cliparse.py +0 -0
  47. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/__init__.py +0 -0
  48. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/_common.py +0 -0
  49. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/bmad.py +0 -0
  50. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/discovery.py +0 -0
  51. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/hooks.py +0 -0
  52. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/info.py +0 -0
  53. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/intelligence.py +0 -0
  54. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/pkg.py +0 -0
  55. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/quality.py +0 -0
  56. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/run.py +0 -0
  57. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/safety.py +0 -0
  58. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/commands/team.py +0 -0
  59. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/__init__.py +0 -0
  60. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/adapters.py +0 -0
  61. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/agents.py +0 -0
  62. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/ai.py +0 -0
  63. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/capabilities.py +0 -0
  64. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/catalog.py +0 -0
  65. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/chat.py +0 -0
  66. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/claude_settings.py +0 -0
  67. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/complete.py +0 -0
  68. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/dense.py +0 -0
  69. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/ed25519.py +0 -0
  70. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/embed.py +0 -0
  71. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/faithfulness.py +0 -0
  72. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/frontmatter.py +0 -0
  73. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/gitutil.py +0 -0
  74. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/imperative.py +0 -0
  75. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/injectscan.py +0 -0
  76. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/installscan.py +0 -0
  77. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/integrity.py +0 -0
  78. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/journal.py +0 -0
  79. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/localembed.py +0 -0
  80. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/lockfile.py +0 -0
  81. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/logs.py +0 -0
  82. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/mcpdecl.py +0 -0
  83. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/mcphost.py +0 -0
  84. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/minisign.py +0 -0
  85. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/nethttp.py +0 -0
  86. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/output.py +0 -0
  87. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/paths.py +0 -0
  88. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/policy.py +0 -0
  89. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/projectlock.py +0 -0
  90. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/provenance.py +0 -0
  91. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/rag.py +0 -0
  92. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/registry.py +0 -0
  93. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/resolve.py +0 -0
  94. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/rules.py +0 -0
  95. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/scopes.py +0 -0
  96. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/secretscan.py +0 -0
  97. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/selfupdate.py +0 -0
  98. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/serve.py +0 -0
  99. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/stackprobe.py +0 -0
  100. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/staleness.py +0 -0
  101. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/store.py +0 -0
  102. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/trustaudit.py +0 -0
  103. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/typosquat.py +0 -0
  104. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/updatediff.py +0 -0
  105. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/util.py +0 -0
  106. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/core/workflows.py +0 -0
  107. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/data/registries.json +0 -0
  108. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/errors.py +0 -0
  109. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_cli/spin.py +0 -0
  110. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_langchain/__init__.py +0 -0
  111. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_langchain/_compat.py +0 -0
  112. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_langchain/graph.py +0 -0
  113. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_langchain/loader.py +0 -0
  114. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_langchain/py.typed +0 -0
  115. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_langchain/retriever.py +0 -0
  116. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  117. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  118. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_skill_cli.egg-info/requires.txt +0 -0
  119. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/boost_skill_cli.egg-info/top_level.txt +0 -0
  120. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/codecov.yml +0 -0
  121. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/.claude/settings.local.json +0 -0
  122. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/DEBUGGING.md +0 -0
  123. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/adapters.html +0 -0
  124. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/architecture/README.md +0 -0
  125. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/architecture/c4-components-core.md +0 -0
  126. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/architecture/c4-containers.md +0 -0
  127. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/architecture/c4-context.md +0 -0
  128. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/architecture/c4-dynamic-install.md +0 -0
  129. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/distill.gif +0 -0
  130. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/doctor.gif +0 -0
  131. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/explain.gif +0 -0
  132. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/hooks.gif +0 -0
  133. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/install.gif +0 -0
  134. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/pulse.gif +0 -0
  135. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/search.gif +0 -0
  136. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/gifs/tap.gif +0 -0
  137. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/distill.tape +0 -0
  138. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/doctor.tape +0 -0
  139. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/explain.tape +0 -0
  140. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/hooks.tape +0 -0
  141. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/install.tape +0 -0
  142. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/pulse.tape +0 -0
  143. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/search.tape +0 -0
  144. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel/tapes/tap.tape +0 -0
  145. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/carousel.html +0 -0
  146. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/chat.html +0 -0
  147. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/demo-index.json +0 -0
  148. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/demo.gif +0 -0
  149. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/demo.html +0 -0
  150. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/demo.tape +0 -0
  151. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/design-roadmap.html +0 -0
  152. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/eval-latest.json +0 -0
  153. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/eval.html +0 -0
  154. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/langchain.html +0 -0
  155. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/mcp-hub.html +0 -0
  156. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/rag-architecture.md +0 -0
  157. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D01.md +0 -0
  158. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D02.md +0 -0
  159. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D03.md +0 -0
  160. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D04.md +0 -0
  161. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D05.md +0 -0
  162. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D06.md +0 -0
  163. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D07.md +0 -0
  164. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D08.md +0 -0
  165. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D09.md +0 -0
  166. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D10.md +0 -0
  167. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D11.md +0 -0
  168. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D12.md +0 -0
  169. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D13.md +0 -0
  170. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D14.md +0 -0
  171. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D15.md +0 -0
  172. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D16.md +0 -0
  173. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D17.md +0 -0
  174. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D18.md +0 -0
  175. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D19.md +0 -0
  176. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D20.md +0 -0
  177. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D21.md +0 -0
  178. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D22.md +0 -0
  179. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D23.md +0 -0
  180. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D24.md +0 -0
  181. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D25.md +0 -0
  182. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/BOOST-D26.md +0 -0
  183. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  184. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  185. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  186. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  187. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  188. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  189. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  190. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  191. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  192. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  193. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  194. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  195. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  196. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  197. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  198. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  199. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  200. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  201. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  202. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  203. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  204. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  205. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  206. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  207. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  208. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  209. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  210. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/command-carousel-page.md +0 -0
  211. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  212. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  213. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  214. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  215. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  216. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  217. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  218. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  219. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  220. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  221. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  222. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  223. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  224. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  225. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  226. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  227. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  228. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  229. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  230. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  231. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  232. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  233. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  234. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  235. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  236. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  237. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  238. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  239. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  240. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  241. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  242. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  243. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  244. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  245. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  246. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  247. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  248. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/github-community-health-files.md +0 -0
  249. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  250. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  251. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  252. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  253. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  254. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  255. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  256. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  257. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  258. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  259. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  260. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  261. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  262. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  263. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  264. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  265. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  266. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  267. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  268. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  269. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  270. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  271. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  272. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  273. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  274. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  275. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  276. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  277. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  278. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  279. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  280. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  281. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  282. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  283. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  284. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  285. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  286. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  287. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  288. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  289. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  290. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  291. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  292. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  293. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  294. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  295. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  296. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  297. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  298. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  299. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  300. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  301. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  302. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  303. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  304. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  305. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  306. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  307. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  308. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  309. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  310. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  311. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  312. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  313. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  314. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  315. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  316. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  317. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  318. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  319. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  320. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  321. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  322. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  323. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  324. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  325. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  326. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  327. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  328. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  329. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  330. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  331. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  332. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  333. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  334. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  335. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  336. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  337. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  338. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  339. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  340. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  341. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  342. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  343. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  344. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  345. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  346. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  347. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  348. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  349. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  350. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  351. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  352. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  353. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  354. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  355. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  356. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  357. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  358. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  359. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  360. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  361. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  362. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  363. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  364. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  365. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  366. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  367. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  368. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  369. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  370. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  371. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  372. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  373. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  374. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  375. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  376. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  377. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  378. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  379. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  380. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  381. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  382. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  383. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  384. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  385. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  386. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  387. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  388. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  389. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  390. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  391. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  392. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  393. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  394. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  395. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  396. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  397. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  398. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  399. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  400. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  401. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  402. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  403. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/workspace-scope-install.md +0 -0
  404. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/zip-strict-audit.md +0 -0
  405. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  406. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/eslint.config.mjs +0 -0
  407. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/README.md +0 -0
  408. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/__init__.py +0 -0
  409. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/baseline.json +0 -0
  410. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/faithfulness.py +0 -0
  411. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/golden_set.json +0 -0
  412. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/make_corpus.py +0 -0
  413. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/make_golden.py +0 -0
  414. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/metrics.py +0 -0
  415. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/publish_golden_dataset.py +0 -0
  416. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/evals/run_evals.py +0 -0
  417. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/examples/README.md +0 -0
  418. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/examples/adapt-demo.sh +0 -0
  419. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/examples/boost-run-prototype.sh +0 -0
  420. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/index.html +0 -0
  421. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/noxfile.py +0 -0
  422. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/pyproject.toml +0 -0
  423. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/coverage-tools.in +0 -0
  424. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/coverage-tools.txt +0 -0
  425. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/lint-tools.in +0 -0
  426. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/lint-tools.txt +0 -0
  427. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/mutation-tools.in +0 -0
  428. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/mutation-tools.txt +0 -0
  429. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/platform-pins.lock +0 -0
  430. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/release-tools.in +0 -0
  431. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/release-tools.txt +0 -0
  432. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/test-tools.in +0 -0
  433. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/requirements/test-tools.txt +0 -0
  434. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/a11y_check.py +0 -0
  435. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/bench_cli.sh +0 -0
  436. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/build_command_reference.py +0 -0
  437. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/build_demo_index.py +0 -0
  438. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/build_registries.py +0 -0
  439. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/build_roadmap.py +0 -0
  440. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/build_scale_corpus.py +0 -0
  441. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/check_anchors.py +0 -0
  442. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/check_licenses.py +0 -0
  443. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/check_required_checks.py +0 -0
  444. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/ensure_eval_corpus.sh +0 -0
  445. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/eval_corpus.py +0 -0
  446. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/eval_explain.py +0 -0
  447. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/eval_gate.py +0 -0
  448. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/eval_recommend.py +0 -0
  449. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/eval_retrieval.py +0 -0
  450. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/eval_stats_summary.py +0 -0
  451. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/import_budget.py +0 -0
  452. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/lock_toolchain.py +0 -0
  453. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/mutation_gate.py +0 -0
  454. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/mutation_shards.py +0 -0
  455. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/mutation_weights.json +0 -0
  456. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/page_budget.py +0 -0
  457. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/perf_gate.py +0 -0
  458. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/post_deploy_smoke.py +0 -0
  459. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/publish_eval_json.py +0 -0
  460. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/release_guard.py +0 -0
  461. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/release_preflight.py +0 -0
  462. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/scripts/serve_docs.py +0 -0
  463. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/setup.cfg +0 -0
  464. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/sonar-project.properties +0 -0
  465. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/style/README.md +0 -0
  466. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/style/boost.css +0 -0
  467. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/style/boost.js +0 -0
  468. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/style/demo.html +0 -0
  469. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/adapt.feature +0 -0
  470. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/browse.feature +0 -0
  471. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/count.feature +0 -0
  472. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/discover.feature +0 -0
  473. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/doctor.feature +0 -0
  474. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/explain.feature +0 -0
  475. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/index.feature +0 -0
  476. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/install.feature +0 -0
  477. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/list.feature +0 -0
  478. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/mcp.feature +0 -0
  479. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/search.feature +0 -0
  480. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/steps/cli_steps.py +0 -0
  481. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/steps/discovery_steps.py +0 -0
  482. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/steps/mcp_steps.py +0 -0
  483. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/bdd/features/steps/quality_steps.py +0 -0
  484. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/eval/baseline.json +0 -0
  485. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/eval/explain.jsonl +0 -0
  486. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/eval/golden-natural.jsonl +0 -0
  487. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/eval/golden.jsonl +0 -0
  488. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/eval/recommend.jsonl +0 -0
  489. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/eval/taps-scale.txt +0 -0
  490. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/eval/taps.txt +0 -0
  491. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_capabilities_policy.py +0 -0
  492. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_adapt.py +0 -0
  493. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_bmad.py +0 -0
  494. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_chat.py +0 -0
  495. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_discovery.py +0 -0
  496. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_hooks.py +0 -0
  497. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_info.py +0 -0
  498. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_intelligence.py +0 -0
  499. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_pkg.py +0 -0
  500. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_quality.py +0 -0
  501. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_cli_team.py +0 -0
  502. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_integrity_enforce.py +0 -0
  503. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_kind_conformance.py +0 -0
  504. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_property_parsers.py +0 -0
  505. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_run.py +0 -0
  506. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_tap_signing.py +0 -0
  507. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/functional/test_workspace_scope.py +0 -0
  508. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/README.md +0 -0
  509. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  510. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  511. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  512. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  513. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  514. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  515. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  516. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  517. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  518. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  519. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  520. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  521. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  522. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  523. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  524. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  525. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  526. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  527. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  528. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  529. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/fuzz_frontmatter.py +0 -0
  530. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/fuzz/fuzz_registry.py +0 -0
  531. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/langchain/conftest.py +0 -0
  532. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/langchain/test_graph.py +0 -0
  533. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/langchain/test_loader.py +0 -0
  534. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/langchain/test_retriever.py +0 -0
  535. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/make_fixture.py +0 -0
  536. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/perf/test_benchmarks.py +0 -0
  537. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/smoke.sh +0 -0
  538. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_a11y_check.py +0 -0
  539. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_adapters.py +0 -0
  540. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_adapters_multi.py +0 -0
  541. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_adapters_runner.py +0 -0
  542. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_agents.py +0 -0
  543. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_ai.py +0 -0
  544. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_capabilities.py +0 -0
  545. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_catalog.py +0 -0
  546. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_chat.py +0 -0
  547. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_check_anchors.py +0 -0
  548. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_check_licenses.py +0 -0
  549. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_claude_settings.py +0 -0
  550. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_cliparse.py +0 -0
  551. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_codeql_analysis_key.py +0 -0
  552. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_command_reference_fresh.py +0 -0
  553. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_community_health_files.py +0 -0
  554. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_complete.py +0 -0
  555. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_content_dedupe.py +0 -0
  556. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_dedup_trust.py +0 -0
  557. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_demo_index.py +0 -0
  558. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_dense.py +0 -0
  559. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_dense_fallback.py +0 -0
  560. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_dense_fix_hint.py +0 -0
  561. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_dense_shards.py +0 -0
  562. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_dense_status.py +0 -0
  563. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_dependabot_config.py +0 -0
  564. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_docs_pages_linked.py +0 -0
  565. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_docsite_chrome.py +0 -0
  566. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_ed25519.py +0 -0
  567. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_embed.py +0 -0
  568. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_embed_local.py +0 -0
  569. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_entry_key.py +0 -0
  570. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_errors_and_cli_table.py +0 -0
  571. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_eval_baseline.py +0 -0
  572. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_eval_corpus.py +0 -0
  573. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_eval_faithfulness.py +0 -0
  574. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_eval_gate.py +0 -0
  575. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_eval_grading.py +0 -0
  576. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_eval_metrics.py +0 -0
  577. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_eval_stats_summary.py +0 -0
  578. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_faithfulness.py +0 -0
  579. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_frontmatter.py +0 -0
  580. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_fuzz_targets.py +0 -0
  581. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_gitleaks_config.py +0 -0
  582. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_gitutil.py +0 -0
  583. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_imperative.py +0 -0
  584. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_import_budget.py +0 -0
  585. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_injectscan.py +0 -0
  586. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_installscan.py +0 -0
  587. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_integrity.py +0 -0
  588. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_journal.py +0 -0
  589. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_langchain_packaging.py +0 -0
  590. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_link_ownership.py +0 -0
  591. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_localembed.py +0 -0
  592. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_localembed_e2e.py +0 -0
  593. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_lockfile.py +0 -0
  594. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_logs.py +0 -0
  595. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_marketing_counts.py +0 -0
  596. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mcp_install_scan.py +0 -0
  597. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mcpdecl.py +0 -0
  598. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mcphost.py +0 -0
  599. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_minisign.py +0 -0
  600. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mutation_hardening.py +0 -0
  601. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mutation_shards.py +0 -0
  602. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mutation_subfile_shards.py +0 -0
  603. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_mutmut_source_paths.py +0 -0
  604. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_nethttp.py +0 -0
  605. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_output.py +0 -0
  606. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_page_budget.py +0 -0
  607. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_paths.py +0 -0
  608. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_perf_gate.py +0 -0
  609. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_pkg_confusions.py +0 -0
  610. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_pkg_injection.py +0 -0
  611. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_pkg_secrets.py +0 -0
  612. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_platform_pins.py +0 -0
  613. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_policy.py +0 -0
  614. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_post_deploy_smoke.py +0 -0
  615. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_project_mcp_sidecar.py +0 -0
  616. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_projectlock.py +0 -0
  617. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_provenance.py +0 -0
  618. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_rag.py +0 -0
  619. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_rag_fusion.py +0 -0
  620. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_registries_fresh.py +0 -0
  621. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_registry.py +0 -0
  622. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_registry_categories.py +0 -0
  623. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_release_guard.py +0 -0
  624. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_release_preflight.py +0 -0
  625. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_required_checks.py +0 -0
  626. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_resolve.py +0 -0
  627. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_roadmap_fresh.py +0 -0
  628. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_rules.py +0 -0
  629. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_scale_corpus.py +0 -0
  630. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_scopes.py +0 -0
  631. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_secretscan.py +0 -0
  632. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_selfupdate.py +0 -0
  633. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_serve.py +0 -0
  634. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_serve_docs.py +0 -0
  635. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_spin.py +0 -0
  636. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_stackprobe.py +0 -0
  637. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_staleness.py +0 -0
  638. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_store.py +0 -0
  639. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_token_parity.py +0 -0
  640. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_toolchain_lock.py +0 -0
  641. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_trustaudit.py +0 -0
  642. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_typosquat.py +0 -0
  643. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_updatediff.py +0 -0
  644. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_util.py +0 -0
  645. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_version.py +0 -0
  646. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_workflow_concurrency.py +0 -0
  647. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_workflow_timeouts.py +0 -0
  648. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/unit/test_workflows.py +0 -0
  649. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/visual/a11y_check.mjs +0 -0
  650. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/visual/console_check.mjs +0 -0
  651. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/visual/package-lock.json +0 -0
  652. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/visual/package.json +0 -0
  653. {boost_skill_cli-1.0.418 → boost_skill_cli-1.0.419}/tests/visual/visual_check.mjs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.418
3
+ Version: 1.0.419
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -732,7 +732,7 @@ Windsurf, Cursor, and Gemini CLI** in a single pass.
732
732
 
733
733
  ```bash
734
734
  pipx install boost-skill-cli
735
- boost tap --defaults # 5 curated registries
735
+ boost tap --defaults # 7 curated registries: skills, rules, workflows
736
736
  boost search tdd # full-content BM25 over every skill
737
737
  boost install tdd-workflow # → every agent, version-pinned, one lock file
738
738
  ```
@@ -776,7 +776,7 @@ Needs Python 3.12+ and `git`.
776
776
  ```bash
777
777
  pipx install boost-skill-cli # or: pip install boost-skill-cli
778
778
  boost --version
779
- boost tap --defaults # pull in the 5 starter registries
779
+ boost tap --defaults # pull in the 7 starter registries
780
780
 
781
781
  # upgrading later is `upgrade`, not `install --upgrade` — with a bare package
782
782
  # name the latter matches the spec you already satisfy and silently does nothing
@@ -958,14 +958,23 @@ just less cleverly.
958
958
 
959
959
  boost is itself an MCP server, so an agent can search and install skills mid-task
960
960
  instead of waiting for you to shell out. `boost mcp register` wires it into every
961
- agent CLI it finds on your PATH:
961
+ agent CLI it finds on your PATH — and on a machine with no taps yet it also pulls
962
+ in the starter registries first, so **installing boost and running `boost mcp` is
963
+ the whole setup**:
962
964
 
963
965
  ```bash
964
966
  boost mcp register # every installed host (default: --host auto)
965
967
  boost mcp register --host gemini # just one
968
+ boost mcp register --no-seed # register only; tap nothing
969
+ boost mcp register --seed # re-tap the defaults even if taps exist
966
970
  boost mcp unregister # same host selection, in reverse
967
971
  ```
968
972
 
973
+ The seed only fires when the catalog is empty — re-running `boost mcp` on a
974
+ configured machine leaves your taps alone — and a failed clone is reported
975
+ without taking the registration down with it. Export `BOOST_NO_SEED=1` to keep
976
+ `boost mcp` a purely local operation (CI images, air-gapped machines).
977
+
969
978
  | Host | CLI | Registered in |
970
979
  |------|-----|---------------|
971
980
  | Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
@@ -14,7 +14,7 @@ Windsurf, Cursor, and Gemini CLI** in a single pass.
14
14
 
15
15
  ```bash
16
16
  pipx install boost-skill-cli
17
- boost tap --defaults # 5 curated registries
17
+ boost tap --defaults # 7 curated registries: skills, rules, workflows
18
18
  boost search tdd # full-content BM25 over every skill
19
19
  boost install tdd-workflow # → every agent, version-pinned, one lock file
20
20
  ```
@@ -58,7 +58,7 @@ Needs Python 3.12+ and `git`.
58
58
  ```bash
59
59
  pipx install boost-skill-cli # or: pip install boost-skill-cli
60
60
  boost --version
61
- boost tap --defaults # pull in the 5 starter registries
61
+ boost tap --defaults # pull in the 7 starter registries
62
62
 
63
63
  # upgrading later is `upgrade`, not `install --upgrade` — with a bare package
64
64
  # name the latter matches the spec you already satisfy and silently does nothing
@@ -240,14 +240,23 @@ just less cleverly.
240
240
 
241
241
  boost is itself an MCP server, so an agent can search and install skills mid-task
242
242
  instead of waiting for you to shell out. `boost mcp register` wires it into every
243
- agent CLI it finds on your PATH:
243
+ agent CLI it finds on your PATH — and on a machine with no taps yet it also pulls
244
+ in the starter registries first, so **installing boost and running `boost mcp` is
245
+ the whole setup**:
244
246
 
245
247
  ```bash
246
248
  boost mcp register # every installed host (default: --host auto)
247
249
  boost mcp register --host gemini # just one
250
+ boost mcp register --no-seed # register only; tap nothing
251
+ boost mcp register --seed # re-tap the defaults even if taps exist
248
252
  boost mcp unregister # same host selection, in reverse
249
253
  ```
250
254
 
255
+ The seed only fires when the catalog is empty — re-running `boost mcp` on a
256
+ configured machine leaves your taps alone — and a failed clone is reported
257
+ without taking the registration down with it. Export `BOOST_NO_SEED=1` to keep
258
+ `boost mcp` a purely local operation (CI images, air-gapped machines).
259
+
251
260
  | Host | CLI | Registered in |
252
261
  |------|-----|---------------|
253
262
  | Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
@@ -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.0.418'
22
- __version_tuple__ = version_tuple = (1, 0, 418)
21
+ __version__ = version = '1.0.419'
22
+ __version_tuple__ = version_tuple = (1, 0, 419)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -16,6 +16,7 @@ from pathlib import Path
16
16
  from .. import __version__, cliparse
17
17
  from ..core import (
18
18
  agents,
19
+ bootstrap,
19
20
  catalog,
20
21
  complete,
21
22
  config,
@@ -877,23 +878,23 @@ def _tool_search(args: dict):
877
878
  # the asymmetry with the CLI is a decision someone can revisit, not a
878
879
  # default nobody chose. It degrades on its own when no AI is configured.
879
880
  rag_result = rag.search(query, limit=10, smart=True)
881
+ # Both empty branches route through mcp.no_results, which tells a real
882
+ # miss apart from a machine that has never been tapped — the two used to
883
+ # share one sentence, and the fresh-install case is the one an agent reads
884
+ # first and learns the most from.
885
+ tapped = len(registry.list_taps())
880
886
  if rag_result is not None: # full-content index is built
881
887
  hits, ranker = rag_result
882
888
  if not hits:
883
- return "no skills match %r" % query, False
884
- lines = [
885
- "%s — %s (%s)" % (h["entry"]["name"],
886
- h["entry"].get("description", ""),
887
- h["entry"]["tap"])
888
- for h in hits]
889
+ return mcp.no_results(query, tapped=tapped), False
890
+ lines = [mcp.hit_line(h["entry"]) for h in hits]
889
891
  lines.append(_ranking_note(ranker))
890
892
  return "\n".join(lines), False
891
893
  # no index yet -> keep today's frontmatter search so nothing regresses
892
894
  scored = catalog.search(query)[:10]
893
895
  if not scored:
894
- return "no skills match %r" % query, False
895
- return "\n".join("%s — %s (%s)" % (e["name"], e["description"], e["tap"])
896
- for e, _score in scored), False
896
+ return mcp.no_results(query, tapped=tapped), False
897
+ return "\n".join(mcp.hit_line(e) for e, _score in scored), False
897
898
 
898
899
 
899
900
  def _tool_list(args: dict):
@@ -987,7 +988,10 @@ def _tool_doctor(args: dict):
987
988
  lines = ["installed skills: %d" % len(everything["skill"]),
988
989
  "installed rules: %d · workflows: %d"
989
990
  % (len(everything["rule"]), len(everything["workflow"])),
990
- "taps: %d (%d skills available)" % (len(taps), len(catalog.all_entries()))]
991
+ # "items", not "skills": the default taps now carry rules and
992
+ # workflows too, so counting all of them as skills overstates one
993
+ # kind and hides the other two in the same breath.
994
+ "taps: %d (%d items available)" % (len(taps), len(catalog.all_entries()))]
991
995
  for key, vals in plan.items():
992
996
  if vals:
993
997
  lines.append("%s: %s" % (key, ", ".join(str(v) for v in vals)))
@@ -1000,8 +1004,26 @@ def _tool_doctor(args: dict):
1000
1004
  == integrity.STATUS_MODIFIED)]
1001
1005
  lines.extend(mat_issues)
1002
1006
  total = issues + len(mat_issues)
1007
+ # A machine with no taps has nothing to disagree about, so every check
1008
+ # above passes and the old reply called it "healthy" — directly under the
1009
+ # line saying `taps: 0 (0 items available)`. That is the one state where
1010
+ # a clean bill of health is actively misleading: the surface cannot answer
1011
+ # anything yet, which is a setup step, not health. Reported, never fatal.
1012
+ # Additive, deliberately: an untapped machine can ALSO have a broken
1013
+ # materialization, and folding the two into one branch would hide the
1014
+ # issue count behind the setup note.
1015
+ if not taps:
1016
+ # Same command, same order, as mcp.no_results: an agent that calls
1017
+ # both tools in one session must not see the recommendation flipped
1018
+ # and read it as two different fixes. `boost tap --defaults` leads
1019
+ # because it is the precise one — `boost mcp --seed` also
1020
+ # re-registers the server with every agent CLI on PATH.
1021
+ lines.append("no registries tapped — nothing is searchable yet; ask "
1022
+ "the user to run `boost tap --defaults` to add the "
1023
+ "recommended ones")
1003
1024
  if total == 0:
1004
- lines.append("healthy — no issues found")
1025
+ if taps:
1026
+ lines.append("healthy — no issues found")
1005
1027
  elif mat_issues:
1006
1028
  lines.append("%d issue(s) — run `boost doctor` for details" % total)
1007
1029
  else:
@@ -1045,12 +1067,19 @@ def _tool_discover_github(args: dict):
1045
1067
  REGISTRY.register(
1046
1068
  "boost_search",
1047
1069
  "Someone has probably solved this already — one call tells you. Searches "
1048
- "every installable AI-agent skill in every registry you have "
1049
- "tapped and returns ranked matches: each one a procedure a "
1050
- "practitioner already worked out, debugged and wrote down, edge cases "
1051
- "included. Reach for it the moment the task in front of you has a name you "
1070
+ "every skill, rule and workflow in every registry you have tapped and "
1071
+ "returns ranked matches, one per line: name, a [rule] or [workflow] kind "
1072
+ "marker where it is not a skill, the one-line description, and the tap it "
1073
+ "came from. The kinds differ in what they do for you — a SKILL is a "
1074
+ "procedure a practitioner already worked out and debugged, edge cases "
1075
+ "included; a RULE is a guardrail that steers toward a better path and "
1076
+ "rules out an anti-pattern; a WORKFLOW is a slash-command or subagent. "
1077
+ "Reach for it the moment the task in front of you has a name you "
1052
1078
  "could say out loud — \"set up code review\", \"add commit conventions\", "
1053
- "\"debug flaky tests\" — and before writing a skill, subagent, "
1079
+ "\"debug flaky tests\" — and especially where a choice is about to get "
1080
+ "locked in for everything after it: a new project or subsystem, an "
1081
+ "architecture decision, environment and tooling config, a linter or "
1082
+ "formatter, tests, CI. Also before writing a skill, subagent, "
1054
1083
  "slash-command or rule from scratch. Read-only where it counts: it "
1055
1084
  "installs nothing and touches nothing you are working on, though the first "
1056
1085
  "search builds a local index under ~/.boost. A hit commits you to nothing "
@@ -1059,32 +1088,41 @@ REGISTRY.register(
1059
1088
  "result worth acting on rather than skimming. Worth budgeting for, not a "
1060
1089
  "surprise. Coming back empty is a real answer too, not a "
1061
1090
  "wasted turn: it means build it yourself, now knowing nothing already "
1062
- "covers it.",
1091
+ "covers it — and on a machine with nothing tapped yet it says so and names "
1092
+ "the one command that fixes it, rather than reporting a miss.",
1063
1093
  {"type": "object",
1064
1094
  "properties": {"query": {"type": "string",
1065
- "description": "what the skill should do (a task, "
1066
- "capability, or topic), not just a keyword"}},
1095
+ "description": "what you are trying to do, in "
1096
+ "your own words — a task, capability or problem "
1097
+ "(\"set up pre-commit hooks for a python repo\") "
1098
+ "rather than a bare keyword"}},
1067
1099
  "required": ["query"]},
1068
1100
  _tool_search)
1069
1101
  REGISTRY.register(
1070
1102
  "boost_list",
1071
- "The skills already installed on this machine and usable this second — "
1072
- "capability you own and may not know you own. Read-only, instant, installs "
1073
- "nothing. Worth a call at the start of "
1074
- "anything that will take more than a few steps: planning from memory while "
1103
+ "The skills, rules and workflows already installed on this machine and "
1104
+ "usable this second — capability you own and may not know you own. "
1105
+ "Returns one line each: name, version, tap, a [rule] or [workflow] marker "
1106
+ "where it is not a skill, and [pinned] where the version is held. "
1107
+ "Read-only, instant, installs nothing — so unlike boost_search there is "
1108
+ "no threshold worth applying: call it whenever you are about to plan "
1109
+ "something. Planning from memory while "
1075
1110
  "the answer already sits on disk is the one avoidable mistake here.",
1076
1111
  {"type": "object", "properties": {}},
1077
1112
  _tool_list)
1078
1113
  REGISTRY.register(
1079
1114
  "boost_info",
1080
- "The whole picture of one skill by name — what it does, the tap it came "
1115
+ "The whole picture of one skill, rule or workflow by name — what it does, "
1116
+ "its kind, the tap it came "
1081
1117
  "from, its version, and whether it is already installed — so you can "
1082
1118
  "commit or move on without guessing. Reach for it when a name arrives from "
1083
1119
  "somewhere else: a teammate, a README, a repo you are reading. You do not "
1084
1120
  "need this between a search and an install — boost_search already returns "
1085
- "each match's description.",
1121
+ "each match's kind and description.",
1086
1122
  {"type": "object",
1087
- "properties": {"name": {"type": "string", "description": "skill name"}},
1123
+ "properties": {"name": {"type": "string",
1124
+ "description": "the item's name, as boost_search "
1125
+ "or boost_list returned it"}},
1088
1126
  "required": ["name"]},
1089
1127
  _tool_info)
1090
1128
  REGISTRY.register(
@@ -1096,18 +1134,29 @@ REGISTRY.register(
1096
1134
  "a prompt, which lasts one "
1097
1135
  "session and helps nobody else: an installed skill is version-tracked, "
1098
1136
  "survives restarts, updates cleanly, and your team can install the "
1099
- "identical thing by name. Worth knowing before you call it: boost_search "
1100
- "also returns rules, and installing a rule copies nothing into the store — "
1101
- "it merges into the context file your agent loads every session, which is "
1102
- "the more invasive change. Check what kind of thing you are installing.",
1137
+ "identical thing by name. Worth knowing before you call it: what happens "
1138
+ "on disk depends on the kind, which boost_search marks on every hit. A "
1139
+ "skill is copied into the store and linked out. A WORKFLOW is rendered "
1140
+ "into each agent's commands or agents directory, in that agent's own "
1141
+ "format. A RULE copies nothing into the store — it becomes part of your "
1142
+ "agent's standing instructions (a managed block in its context file, or a "
1143
+ "file in its rules directory), which is the more invasive change because "
1144
+ "it applies to every session afterwards, not just when you reach for it. "
1145
+ "Check the marker on the hit you are installing.",
1103
1146
  {"type": "object",
1104
- "properties": {"name": {"type": "string", "description": "skill name"}},
1147
+ "properties": {"name": {"type": "string",
1148
+ "description": "the name exactly as boost_search "
1149
+ "or boost_list returned it; qualify with the tap "
1150
+ "(\"owner/repo:name\") when the same name exists "
1151
+ "in more than one"}},
1105
1152
  "required": ["name"]},
1106
1153
  _tool_install)
1107
1154
  REGISTRY.register(
1108
1155
  "boost_doctor",
1109
1156
  "Prove the skills you think are installed are actually usable. Reports how "
1110
- "many skills are installed, how many taps and skills are reachable, and "
1157
+ "many skills, rules and workflows are installed, how many taps and items "
1158
+ "are reachable (including the case where nothing is tapped at all, which "
1159
+ "is a setup step rather than a fault), and "
1111
1160
  "anything the store and the lock file disagree about — and when they do "
1112
1161
  "disagree it points at the next action, `boost sync` — though some classes "
1113
1162
  "need `boost sync --prune` — rather than leaving you a "
@@ -1170,8 +1219,39 @@ def _run_mcp_host(host: str, action: str, cmd) -> bool:
1170
1219
  return True
1171
1220
 
1172
1221
 
1222
+ def _seed_catalog_for_mcp(force: bool) -> None:
1223
+ """Tap the recommended registries so the surface just registered can answer.
1224
+
1225
+ `boost mcp` is the only command a new user is told to run after installing,
1226
+ and it used to leave them with a registered server over an empty catalog —
1227
+ where the first thing any agent asks comes back as a miss. Seeding here is
1228
+ what makes "install boost, run boost mcp" the whole setup.
1229
+
1230
+ Deliberately quiet on an already-tapped machine (see bootstrap.seed_catalog:
1231
+ it returns skipped), and deliberately non-fatal — the user asked to register
1232
+ an MCP server, so a dead network costs them a reported line rather than the
1233
+ registration itself.
1234
+ """
1235
+ # Announced before the clones start, because the loop that follows is
1236
+ # 14-45s of network with nothing to show for it until it finishes — on
1237
+ # the one command a first-time user was told to run, silence that long
1238
+ # reads as a hang.
1239
+ if bootstrap.will_seed(force=force):
1240
+ out.info("no registries tapped yet — adding the %d recommended ones "
1241
+ "(one-time, needs the network)" % len(config.DEFAULT_TAPS))
1242
+ res = bootstrap.seed_catalog(force=force)
1243
+ if res.skipped:
1244
+ return
1245
+ for line in res.failed:
1246
+ out.warn("could not tap %s" % line)
1247
+ if res.tapped:
1248
+ out.ok(res.summary())
1249
+ else:
1250
+ out.warn(res.summary())
1251
+
1252
+
1173
1253
  def cmd_mcp(argv) -> int:
1174
- """boost mcp [register|unregister] [--host H] [--stdio]"""
1254
+ """boost mcp [register|unregister] [--host H] [--stdio] [--seed|--no-seed]"""
1175
1255
  p = cliparse.parser(
1176
1256
  prog="boost mcp",
1177
1257
  description="Register boost as an MCP server for your agent CLIs")
@@ -1184,6 +1264,16 @@ def cmd_mcp(argv) -> int:
1184
1264
  % ", ".join(mcphost.hosts()))
1185
1265
  p.add_argument("--stdio", action="store_true",
1186
1266
  help="run the MCP server on stdin/stdout (used by the agent)")
1267
+ # Mutually exclusive: `--seed --no-seed` used to resolve silently to the
1268
+ # network-touching side, which is the wrong way for an ambiguous pair of
1269
+ # explicitly typed flags to break.
1270
+ seeding = p.add_mutually_exclusive_group()
1271
+ seeding.add_argument("--seed", action="store_true",
1272
+ help="top up any missing recommended registries even "
1273
+ "if others are already tapped (the repair path)")
1274
+ seeding.add_argument("--no-seed", dest="seed_ok", action="store_false",
1275
+ default=True,
1276
+ help="register only; do not tap anything")
1187
1277
  args = p.parse_args(argv)
1188
1278
 
1189
1279
  if args.stdio:
@@ -1195,6 +1285,14 @@ def cmd_mcp(argv) -> int:
1195
1285
  raise BoostError("unknown MCP host %r" % args.host,
1196
1286
  hint="known hosts: %s" % ", ".join(mcphost.hosts())) from e
1197
1287
 
1288
+ # After the host name is validated and before anything is registered. The
1289
+ # ordering is not cosmetic in either direction: seeding first meant a
1290
+ # typo'd `--host` spent 14-45s and half a gigabyte before argparse's own
1291
+ # error, and seeding last would have registered a server the user then
1292
+ # watches answer nothing while the clones run.
1293
+ if args.action == "register" and (args.seed_ok or args.seed):
1294
+ _seed_catalog_for_mcp(args.seed)
1295
+
1198
1296
  shim = str(paths.launcher())
1199
1297
  # `auto` skips hosts that are not installed; naming a host explicitly (or
1200
1298
  # `all`) always reports it, so a user setting up a machine can see the argv
@@ -119,14 +119,17 @@ def cmd_tap(argv) -> int:
119
119
  rc = 1
120
120
  continue
121
121
  journal.log("tap", tap.name)
122
- out.ok("tapped %s (%d skills) — %s"
122
+ # "items", not "skills": the defaults now carry rules and
123
+ # workflows, so a pure rules registry reported "257 skills"
124
+ # immediately after the README promised three kinds.
125
+ out.ok("tapped %s (%d items) — %s"
123
126
  % (tap.name, len(entries), default.get("focus", "")))
124
127
  if args.spec:
125
128
  with spin.Spinner("cloning %s" % args.spec):
126
129
  tap = registry.add(args.spec, curated=args.curated)
127
130
  entries = catalog.rebuild_tap(tap)
128
131
  journal.log("tap", tap.name)
129
- out.ok("Tapped %s (%d skills)" % (tap.name, len(entries)))
132
+ out.ok("Tapped %s (%d items)" % (tap.name, len(entries)))
130
133
  # Refresh the TAB-completion name cache so `boost install <TAB>` sees
131
134
  # whatever this call just tapped instead of the pre-tap snapshot.
132
135
  complete.refresh_names()
@@ -0,0 +1,135 @@
1
+ """Seed an empty machine's catalog, so one command is the whole setup.
2
+
3
+ `boost mcp` is the only command a new user is told to run after installing.
4
+ It registered the server and stopped there — against a catalog with nothing in
5
+ it — so the first question any agent asked came back as a miss, which is the
6
+ fastest possible way to teach an agent that boost is not worth asking again.
7
+
8
+ Seeding belongs here rather than in the command layer for the usual reason:
9
+ it is behavior with rules worth pinning (idempotent, never fatal, reports what
10
+ it did), and `boost_cli/core` is what the mutation gate targets.
11
+ """
12
+ from __future__ import annotations
13
+
14
+ import os
15
+ from dataclasses import dataclass, field
16
+
17
+ from ..errors import BoostError
18
+ from . import catalog, config, journal, registry
19
+
20
+ #: Escape hatch, same shape as ``BOOST_NO_MCP_OFFER``: suppress the implicit
21
+ #: seed for anyone who wants `boost mcp` to stay a local, offline operation —
22
+ #: CI images, air-gapped machines, and the test suite, which must never clone
23
+ #: seven repositories to check that registration prints the right line. An
24
+ #: explicit ``--seed`` still wins over it: a flag the user typed outranks an
25
+ #: environment default they may not know is set.
26
+ NO_SEED_ENV = "BOOST_NO_SEED"
27
+
28
+
29
+ @dataclass
30
+ class SeedResult:
31
+ """What a seed attempt did, in terms a caller can print."""
32
+
33
+ #: (tap name, item count) for each registry that landed.
34
+ tapped: list[tuple[str, int]] = field(default_factory=list)
35
+ #: One human-readable line per registry that could not be fetched.
36
+ failed: list[str] = field(default_factory=list)
37
+ #: Defaults that were already configured, so nothing was done for them.
38
+ already: list[str] = field(default_factory=list)
39
+ #: True when nothing was attempted at all (opted out, or already complete).
40
+ skipped: bool = False
41
+
42
+ @property
43
+ def item_count(self) -> int:
44
+ """Total catalog items across every registry this call added."""
45
+ return sum(count for _name, count in self.tapped)
46
+
47
+ def summary(self) -> str:
48
+ """One line for the user: what is now searchable, or why nothing is."""
49
+ if self.skipped:
50
+ return "catalog already tapped — leaving it alone"
51
+ if not self.tapped:
52
+ # Only claim the network is the problem when the network was
53
+ # actually the problem. A run where every default was already
54
+ # configured reaches here too, and telling that user to retry
55
+ # "once you have a network" is advice about a machine they do
56
+ # not have — see the `--seed` repair path, which hits it head-on.
57
+ if self.failed:
58
+ return ("could not reach any default registry — run "
59
+ "`boost tap --defaults` once you have a network")
60
+ return "catalog already tapped — leaving it alone"
61
+ line = ("tapped %d registries (%d items searchable)"
62
+ % (len(self.tapped), self.item_count))
63
+ if self.already:
64
+ line += " — %d already tapped" % len(self.already)
65
+ if self.failed:
66
+ line += " — %d could not be fetched" % len(self.failed)
67
+ return line
68
+
69
+
70
+ def will_seed(*, force: bool = False) -> bool:
71
+ """True when :func:`seed_catalog` would actually clone something.
72
+
73
+ Exists so a caller can announce the wait BEFORE it starts. The seed is
74
+ 14-45s of network with nothing to print until it returns, and on the one
75
+ command a first-time user was told to run, silence that long reads as a
76
+ hang. Deliberately mirrors seed_catalog's own gates rather than guessing.
77
+ """
78
+ if not force and os.environ.get(NO_SEED_ENV):
79
+ return False
80
+ existing = {t.name for t in registry.list_taps()}
81
+ if not force and existing:
82
+ return False
83
+ return any(str(d["name"]) not in existing for d in config.DEFAULT_TAPS)
84
+
85
+
86
+ def seed_catalog(*, force: bool = False) -> SeedResult:
87
+ """Tap whichever recommended registries this machine is missing.
88
+
89
+ The decision is per registry, not per machine, and that distinction is
90
+ load-bearing twice over. A seed interrupted after two clones used to leave
91
+ a machine that read as "configured" forever, because the check was "does
92
+ ANY tap exist" — so the remaining five never arrived and nothing ever said
93
+ so. And `--seed`, documented as the repair path, called ``registry.add``
94
+ on registries that were already there; ``add`` rejects those before it
95
+ touches the network, so the repair reported seven failures and blamed the
96
+ connection on a machine whose connection was fine.
97
+
98
+ Skips silently when the user opted out (``BOOST_NO_SEED``) or when every
99
+ default is already present. Never raises: this runs on the registration
100
+ path, where the user's actual request was "register the MCP server" — a
101
+ dead network or one bad remote must cost them a reported line, not the
102
+ server they asked for.
103
+ """
104
+ if not force and os.environ.get(NO_SEED_ENV):
105
+ return SeedResult(skipped=True)
106
+ existing = {t.name for t in registry.list_taps()}
107
+ # `force` re-checks the DEFAULTS rather than re-adding them: a machine
108
+ # missing two of seven is topped up, and one missing none is left alone.
109
+ missing = [d for d in config.DEFAULT_TAPS if str(d["name"]) not in existing]
110
+ if not missing:
111
+ return SeedResult(skipped=True)
112
+ # Without --seed the implicit path stays conservative: a machine with taps
113
+ # of its own is somebody's configured setup, and quietly adding seven
114
+ # registries to it because they re-ran `boost mcp` is boost editing state
115
+ # it was not asked to touch.
116
+ if not force and existing:
117
+ return SeedResult(skipped=True)
118
+ res = SeedResult(already=[str(d["name"]) for d in config.DEFAULT_TAPS
119
+ if str(d["name"]) in existing])
120
+ for default in missing:
121
+ name = str(default["name"])
122
+ try:
123
+ tap = registry.add(str(default["url"]), curated=True)
124
+ entries = catalog.rebuild_tap(tap)
125
+ except BoostError as e:
126
+ res.failed.append("%s: %s" % (name, e.message))
127
+ continue
128
+ except OSError as e:
129
+ # A clone can fail below BoostError (disk full, permissions).
130
+ # Same contract: report it, keep going, never take the caller down.
131
+ res.failed.append("%s: %s" % (name, e))
132
+ continue
133
+ journal.log("tap", tap.name)
134
+ res.tapped.append((tap.name, len(entries)))
135
+ return res
@@ -51,7 +51,18 @@ DEFAULTS = {
51
51
  },
52
52
  }
53
53
 
54
- # Recommended public registries, added via `boost tap --defaults`.
54
+ # Recommended public registries, added via `boost tap --defaults` and by the
55
+ # seed that runs on `boost mcp` (core/bootstrap.py) so one command is the
56
+ # whole setup.
57
+ #
58
+ # The list covers all THREE item kinds on purpose. The five skills-first repos
59
+ # measured 302 skills and 41 workflows between them and — the gap this closes
60
+ # — zero rules, so the kind whose entire job is steering toward a better path
61
+ # and away from an anti-pattern could not be found by a default install at
62
+ # all. Adding one canonical rules repo and one commands/agents repo takes the
63
+ # default corpus to 946 items (302 skills, 387 workflows, 257 rules) for about
64
+ # 14 MB more on disk than the five, measured end-to-end at 14-45s across runs
65
+ # (network-bound, hence the range).
55
66
  DEFAULT_TAPS = [
56
67
  {"name": "anthropics/skills", "url": "https://github.com/anthropics/skills",
57
68
  "curated": True,
@@ -69,6 +80,16 @@ DEFAULT_TAPS = [
69
80
  "url": "https://github.com/K-Dense-AI/scientific-agent-skills",
70
81
  "curated": True,
71
82
  "focus": "Scientific computing — research libraries, databases, analysis"},
83
+ {"name": "PatrickJS/awesome-cursorrules",
84
+ "url": "https://github.com/PatrickJS/awesome-cursorrules",
85
+ "curated": True,
86
+ "focus": "Rules — the canonical .cursorrules/.mdc collection: per-stack "
87
+ "conventions and anti-patterns to avoid"},
88
+ {"name": "qdhenry/Claude-Command-Suite",
89
+ "url": "https://github.com/qdhenry/Claude-Command-Suite",
90
+ "curated": True,
91
+ "focus": "Workflows — slash commands and subagents for review, testing, "
92
+ "refactoring and release"},
72
93
  ]
73
94
 
74
95