boost-skill-cli 1.0.309__tar.gz → 1.0.310__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 (569) hide show
  1. {boost_skill_cli-1.0.309/boost_skill_cli.egg-info → boost_skill_cli-1.0.310}/PKG-INFO +12 -4
  2. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/README.md +11 -3
  3. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/configuration.py +24 -15
  5. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/mcp.py +39 -41
  6. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310/boost_skill_cli.egg-info}/PKG-INFO +12 -4
  7. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  8. boost_skill_cli-1.0.310/docs/roadmap/items/mcp-one-benefit-nameable-task.md +44 -0
  9. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap.html +41 -1
  10. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_configuration.py +21 -13
  11. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcp.py +41 -18
  12. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.gitattributes +0 -0
  13. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.gitignore +0 -0
  14. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.gitleaks.toml +0 -0
  15. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.htmlvalidate.json +0 -0
  16. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.lighthouserc.json +0 -0
  17. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.lycheeignore +0 -0
  18. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.markdownlint-cli2.jsonc +0 -0
  19. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.pre-commit-config.yaml +0 -0
  20. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.stylelintrc.json +0 -0
  21. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.vale/styles/boost/Terminology.yml +0 -0
  22. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  23. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.vale.ini +0 -0
  24. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/CLAUDE.md +0 -0
  25. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/CODE_OF_CONDUCT.md +0 -0
  26. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/CONTRIBUTING.md +0 -0
  27. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/LICENSE +0 -0
  28. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/MANIFEST.in +0 -0
  29. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/Makefile +0 -0
  30. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/SECURITY.md +0 -0
  31. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost +0 -0
  32. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/__init__.py +0 -0
  33. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/__main__.py +0 -0
  34. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/cli.py +0 -0
  35. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/cliparse.py +0 -0
  36. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/__init__.py +0 -0
  37. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/_common.py +0 -0
  38. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/bmad.py +0 -0
  39. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/discovery.py +0 -0
  40. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/hooks.py +0 -0
  41. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/info.py +0 -0
  42. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/intelligence.py +0 -0
  43. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/pkg.py +0 -0
  44. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/quality.py +0 -0
  45. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/run.py +0 -0
  46. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/safety.py +0 -0
  47. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/taps.py +0 -0
  48. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/team.py +0 -0
  49. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/__init__.py +0 -0
  50. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/adapters.py +0 -0
  51. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/agents.py +0 -0
  52. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/ai.py +0 -0
  53. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/capabilities.py +0 -0
  54. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/catalog.py +0 -0
  55. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/claude_settings.py +0 -0
  56. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/config.py +0 -0
  57. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/dense.py +0 -0
  58. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/ed25519.py +0 -0
  59. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/embed.py +0 -0
  60. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/faithfulness.py +0 -0
  61. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/frontmatter.py +0 -0
  62. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/gitutil.py +0 -0
  63. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/imperative.py +0 -0
  64. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/injectscan.py +0 -0
  65. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/installscan.py +0 -0
  66. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/integrity.py +0 -0
  67. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/journal.py +0 -0
  68. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/localembed.py +0 -0
  69. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/lockfile.py +0 -0
  70. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/logs.py +0 -0
  71. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/mcpdecl.py +0 -0
  72. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/mcphost.py +0 -0
  73. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/minisign.py +0 -0
  74. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/nethttp.py +0 -0
  75. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/output.py +0 -0
  76. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/paths.py +0 -0
  77. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/policy.py +0 -0
  78. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/projectlock.py +0 -0
  79. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/provenance.py +0 -0
  80. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/rag.py +0 -0
  81. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/registry.py +0 -0
  82. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/resolve.py +0 -0
  83. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/rules.py +0 -0
  84. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/scopes.py +0 -0
  85. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/secretscan.py +0 -0
  86. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/selfupdate.py +0 -0
  87. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/serve.py +0 -0
  88. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/stackprobe.py +0 -0
  89. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/staleness.py +0 -0
  90. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/store.py +0 -0
  91. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/trustaudit.py +0 -0
  92. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/typosquat.py +0 -0
  93. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/updatediff.py +0 -0
  94. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/util.py +0 -0
  95. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/workflows.py +0 -0
  96. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/data/registries.json +0 -0
  97. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/errors.py +0 -0
  98. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/spin.py +0 -0
  99. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  100. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  101. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/requires.txt +0 -0
  102. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/top_level.txt +0 -0
  103. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/codecov.yml +0 -0
  104. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/.claude/settings.local.json +0 -0
  105. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/DEBUGGING.md +0 -0
  106. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/adapters.html +0 -0
  107. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/README.md +0 -0
  108. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-components-core.md +0 -0
  109. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-containers.md +0 -0
  110. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-context.md +0 -0
  111. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-dynamic-install.md +0 -0
  112. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/distill.gif +0 -0
  113. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/doctor.gif +0 -0
  114. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/explain.gif +0 -0
  115. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/hooks.gif +0 -0
  116. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/install.gif +0 -0
  117. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/pulse.gif +0 -0
  118. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/search.gif +0 -0
  119. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/tap.gif +0 -0
  120. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/distill.tape +0 -0
  121. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/doctor.tape +0 -0
  122. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/explain.tape +0 -0
  123. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/hooks.tape +0 -0
  124. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/install.tape +0 -0
  125. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/pulse.tape +0 -0
  126. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/search.tape +0 -0
  127. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/tap.tape +0 -0
  128. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel.html +0 -0
  129. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/commands.html +0 -0
  130. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/demo.gif +0 -0
  131. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/demo.tape +0 -0
  132. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/design-roadmap.html +0 -0
  133. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/eval.html +0 -0
  134. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/index.html +0 -0
  135. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/mcp-hub.html +0 -0
  136. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/rag-architecture.md +0 -0
  137. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D01.md +0 -0
  138. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D02.md +0 -0
  139. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D03.md +0 -0
  140. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D04.md +0 -0
  141. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D05.md +0 -0
  142. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D06.md +0 -0
  143. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D07.md +0 -0
  144. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D08.md +0 -0
  145. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D09.md +0 -0
  146. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D10.md +0 -0
  147. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D11.md +0 -0
  148. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D12.md +0 -0
  149. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D13.md +0 -0
  150. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D14.md +0 -0
  151. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D15.md +0 -0
  152. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D16.md +0 -0
  153. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D17.md +0 -0
  154. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D18.md +0 -0
  155. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D19.md +0 -0
  156. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D20.md +0 -0
  157. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D21.md +0 -0
  158. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D22.md +0 -0
  159. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D23.md +0 -0
  160. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D24.md +0 -0
  161. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D25.md +0 -0
  162. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D26.md +0 -0
  163. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  164. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  165. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  166. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  167. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  168. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  169. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  170. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  171. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  172. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  173. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  174. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  175. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  176. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  177. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  178. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  179. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  180. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  181. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  182. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  183. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  184. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  185. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/command-carousel-page.md +0 -0
  186. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  187. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  188. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  189. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  190. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  191. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  192. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  193. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  194. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  195. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  196. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  197. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  198. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  199. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  200. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  201. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  202. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  203. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  204. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  205. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  206. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  207. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  208. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  209. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  210. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  211. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  212. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  213. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  214. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  215. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/github-community-health-files.md +0 -0
  216. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  217. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  218. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  219. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  220. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  221. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  222. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  223. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  224. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  225. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  226. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  227. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  228. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  229. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  230. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  231. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  232. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  233. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  234. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  235. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  236. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  237. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  238. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  239. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  240. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  241. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  242. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  243. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  244. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  245. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  246. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  247. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  248. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  249. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  250. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  251. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  252. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  253. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  254. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  255. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  256. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  257. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  258. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  259. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  260. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  261. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  262. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  263. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  264. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  265. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  266. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  267. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  268. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  269. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  270. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  271. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  272. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  273. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  274. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  275. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  276. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  277. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  278. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  279. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  280. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  281. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  282. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  283. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  284. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  285. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  286. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  287. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  288. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  289. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  290. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  291. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  292. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  293. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  294. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  295. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  296. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  297. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  298. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  299. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  300. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  301. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  302. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  303. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  304. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  305. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  306. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  307. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  308. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  309. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  310. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  311. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  312. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  313. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  314. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  315. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  316. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  317. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  318. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  319. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  320. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  321. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  322. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  323. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  324. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  325. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  326. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  327. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  328. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  329. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  330. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  331. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  332. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  333. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  334. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  335. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  336. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  337. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  338. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  339. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  340. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  341. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  342. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  343. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  344. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  345. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  346. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  347. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  348. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workspace-scope-install.md +0 -0
  349. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  350. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/eslint.config.mjs +0 -0
  351. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/README.md +0 -0
  352. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/__init__.py +0 -0
  353. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/baseline.json +0 -0
  354. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/faithfulness.py +0 -0
  355. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/golden_set.json +0 -0
  356. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/make_corpus.py +0 -0
  357. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/make_golden.py +0 -0
  358. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/metrics.py +0 -0
  359. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/run_evals.py +0 -0
  360. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/examples/README.md +0 -0
  361. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/examples/adapt-demo.sh +0 -0
  362. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/examples/boost-run-prototype.sh +0 -0
  363. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/index.html +0 -0
  364. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/noxfile.py +0 -0
  365. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/pyproject.toml +0 -0
  366. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/coverage-tools.in +0 -0
  367. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/coverage-tools.txt +0 -0
  368. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/lint-tools.in +0 -0
  369. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/lint-tools.txt +0 -0
  370. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/mutation-tools.in +0 -0
  371. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/mutation-tools.txt +0 -0
  372. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/platform-pins.lock +0 -0
  373. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/release-tools.in +0 -0
  374. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/release-tools.txt +0 -0
  375. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/test-tools.in +0 -0
  376. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/test-tools.txt +0 -0
  377. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/a11y_check.py +0 -0
  378. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/bench_cli.sh +0 -0
  379. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/build_command_reference.py +0 -0
  380. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/build_registries.py +0 -0
  381. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/build_roadmap.py +0 -0
  382. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/check_anchors.py +0 -0
  383. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/check_licenses.py +0 -0
  384. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/check_required_checks.py +0 -0
  385. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/ensure_eval_corpus.sh +0 -0
  386. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_explain.py +0 -0
  387. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_gate.py +0 -0
  388. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_recommend.py +0 -0
  389. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_retrieval.py +0 -0
  390. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_stats_summary.py +0 -0
  391. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/import_budget.py +0 -0
  392. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/lock_toolchain.py +0 -0
  393. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/mutation_gate.py +0 -0
  394. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/mutation_shards.py +0 -0
  395. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/mutation_weights.json +0 -0
  396. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/perf_gate.py +0 -0
  397. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/post_deploy_smoke.py +0 -0
  398. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/release_guard.py +0 -0
  399. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/release_preflight.py +0 -0
  400. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/setup.cfg +0 -0
  401. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/sonar-project.properties +0 -0
  402. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/README.md +0 -0
  403. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/boost.css +0 -0
  404. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/boost.js +0 -0
  405. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/demo.html +0 -0
  406. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/adapt.feature +0 -0
  407. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/browse.feature +0 -0
  408. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/count.feature +0 -0
  409. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/discover.feature +0 -0
  410. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/doctor.feature +0 -0
  411. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/environment.py +0 -0
  412. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/explain.feature +0 -0
  413. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/index.feature +0 -0
  414. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/install.feature +0 -0
  415. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/list.feature +0 -0
  416. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/mcp.feature +0 -0
  417. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/search.feature +0 -0
  418. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/cli_steps.py +0 -0
  419. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/discovery_steps.py +0 -0
  420. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/mcp_steps.py +0 -0
  421. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/quality_steps.py +0 -0
  422. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/conftest.py +0 -0
  423. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/baseline.json +0 -0
  424. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/explain.jsonl +0 -0
  425. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/golden.jsonl +0 -0
  426. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/recommend.jsonl +0 -0
  427. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/taps.txt +0 -0
  428. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_capabilities_policy.py +0 -0
  429. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_adapt.py +0 -0
  430. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_bmad.py +0 -0
  431. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_discovery.py +0 -0
  432. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_hooks.py +0 -0
  433. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_info.py +0 -0
  434. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_intelligence.py +0 -0
  435. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_pkg.py +0 -0
  436. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_quality.py +0 -0
  437. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_taps.py +0 -0
  438. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_team.py +0 -0
  439. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_everyday_loop.py +0 -0
  440. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_integrity_enforce.py +0 -0
  441. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_property_parsers.py +0 -0
  442. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_run.py +0 -0
  443. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_tap_signing.py +0 -0
  444. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_workspace_scope.py +0 -0
  445. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/README.md +0 -0
  446. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  447. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  448. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  449. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  450. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  451. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  452. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  453. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  454. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  455. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  456. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  457. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  458. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  459. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  460. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  461. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  462. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  463. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  464. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  465. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  466. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/fuzz_frontmatter.py +0 -0
  467. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/fuzz_registry.py +0 -0
  468. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/make_fixture.py +0 -0
  469. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/perf/test_benchmarks.py +0 -0
  470. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/smoke.sh +0 -0
  471. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_a11y_check.py +0 -0
  472. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_adapters.py +0 -0
  473. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_adapters_multi.py +0 -0
  474. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_adapters_runner.py +0 -0
  475. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_agents.py +0 -0
  476. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_ai.py +0 -0
  477. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_capabilities.py +0 -0
  478. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_catalog.py +0 -0
  479. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_check_anchors.py +0 -0
  480. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_check_licenses.py +0 -0
  481. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_claude_settings.py +0 -0
  482. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_cliparse.py +0 -0
  483. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_codeql_analysis_key.py +0 -0
  484. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_command_reference_fresh.py +0 -0
  485. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_community_health_files.py +0 -0
  486. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_config.py +0 -0
  487. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dense.py +0 -0
  488. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dense_fallback.py +0 -0
  489. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dense_status.py +0 -0
  490. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dependabot_config.py +0 -0
  491. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_docs_pages_linked.py +0 -0
  492. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_docsite_chrome.py +0 -0
  493. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_ed25519.py +0 -0
  494. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_embed.py +0 -0
  495. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_embed_local.py +0 -0
  496. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_errors_and_cli_table.py +0 -0
  497. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_faithfulness.py +0 -0
  498. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_gate.py +0 -0
  499. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_metrics.py +0 -0
  500. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_stats_summary.py +0 -0
  501. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_faithfulness.py +0 -0
  502. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_frontmatter.py +0 -0
  503. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_fuzz_targets.py +0 -0
  504. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_gitleaks_config.py +0 -0
  505. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_gitutil.py +0 -0
  506. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_imperative.py +0 -0
  507. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_import_budget.py +0 -0
  508. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_injectscan.py +0 -0
  509. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_installscan.py +0 -0
  510. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_integrity.py +0 -0
  511. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_journal.py +0 -0
  512. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_localembed.py +0 -0
  513. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_lockfile.py +0 -0
  514. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_logs.py +0 -0
  515. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_marketing_counts.py +0 -0
  516. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcp_install_scan.py +0 -0
  517. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcpdecl.py +0 -0
  518. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcphost.py +0 -0
  519. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_minisign.py +0 -0
  520. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutation_hardening.py +0 -0
  521. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutation_shards.py +0 -0
  522. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutation_subfile_shards.py +0 -0
  523. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutmut_source_paths.py +0 -0
  524. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_nethttp.py +0 -0
  525. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_output.py +0 -0
  526. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_paths.py +0 -0
  527. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_perf_gate.py +0 -0
  528. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_pkg_confusions.py +0 -0
  529. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_pkg_injection.py +0 -0
  530. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_pkg_secrets.py +0 -0
  531. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_platform_pins.py +0 -0
  532. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_policy.py +0 -0
  533. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_post_deploy_smoke.py +0 -0
  534. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_project_mcp_sidecar.py +0 -0
  535. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_projectlock.py +0 -0
  536. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_provenance.py +0 -0
  537. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_rag.py +0 -0
  538. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_registries_fresh.py +0 -0
  539. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_registry.py +0 -0
  540. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_registry_categories.py +0 -0
  541. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_release_guard.py +0 -0
  542. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_release_preflight.py +0 -0
  543. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_required_checks.py +0 -0
  544. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_resolve.py +0 -0
  545. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_roadmap_fresh.py +0 -0
  546. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_rules.py +0 -0
  547. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_scopes.py +0 -0
  548. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_secretscan.py +0 -0
  549. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_selfupdate.py +0 -0
  550. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_serve.py +0 -0
  551. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_spin.py +0 -0
  552. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_stackprobe.py +0 -0
  553. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_staleness.py +0 -0
  554. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_store.py +0 -0
  555. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_token_parity.py +0 -0
  556. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_toolchain_lock.py +0 -0
  557. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_trustaudit.py +0 -0
  558. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_typosquat.py +0 -0
  559. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_updatediff.py +0 -0
  560. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_util.py +0 -0
  561. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_version.py +0 -0
  562. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_workflow_concurrency.py +0 -0
  563. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_workflow_timeouts.py +0 -0
  564. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_workflows.py +0 -0
  565. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/a11y_check.mjs +0 -0
  566. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/console_check.mjs +0 -0
  567. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/package-lock.json +0 -0
  568. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/package.json +0 -0
  569. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/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.309
3
+ Version: 1.0.310
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -956,9 +956,17 @@ A host whose CLI isn't installed is skipped, not an error — name it explicitly
956
956
 
957
957
  Six tools are exposed: `boost_search`, `boost_list`, `boost_info`,
958
958
  `boost_install`, `boost_doctor`, and `boost_discover_github`. The server also
959
- returns MCP `instructions`, which both hosts load into the model's context — it
960
- tells the agent *when* boost is relevant, so a matching skill gets found at the
961
- start of a task rather than after the work is already reconstructed by hand.
959
+ returns MCP `instructions`, which tell the agent *when* boost is relevant, so a
960
+ matching skill gets found at the start of a task rather than after the work is
961
+ already reconstructed by hand.
962
+
963
+ The two hosts place those instructions differently, and it matters. Claude Code
964
+ loads them as server instructions in the system prompt. Gemini CLI appends them
965
+ to its **memory tier** alongside `GEMINI.md`, and only in a trusted folder — so
966
+ outside one they are dropped silently. Each tool's own description therefore
967
+ repeats its trigger rather than relying on the server text, because a tool
968
+ description is the only part that is always in context at the moment the agent
969
+ chooses a tool.
962
970
 
963
971
  Verify the wiring with `claude mcp list` or `gemini mcp list` — boost should show
964
972
  as **Connected**. (Gemini only connects stdio servers in a trusted folder; run
@@ -238,9 +238,17 @@ A host whose CLI isn't installed is skipped, not an error — name it explicitly
238
238
 
239
239
  Six tools are exposed: `boost_search`, `boost_list`, `boost_info`,
240
240
  `boost_install`, `boost_doctor`, and `boost_discover_github`. The server also
241
- returns MCP `instructions`, which both hosts load into the model's context — it
242
- tells the agent *when* boost is relevant, so a matching skill gets found at the
243
- start of a task rather than after the work is already reconstructed by hand.
241
+ returns MCP `instructions`, which tell the agent *when* boost is relevant, so a
242
+ matching skill gets found at the start of a task rather than after the work is
243
+ already reconstructed by hand.
244
+
245
+ The two hosts place those instructions differently, and it matters. Claude Code
246
+ loads them as server instructions in the system prompt. Gemini CLI appends them
247
+ to its **memory tier** alongside `GEMINI.md`, and only in a trusted folder — so
248
+ outside one they are dropped silently. Each tool's own description therefore
249
+ repeats its trigger rather than relying on the server text, because a tool
250
+ description is the only part that is always in context at the moment the agent
251
+ chooses a tool.
244
252
 
245
253
  Verify the wiring with `claude mcp list` or `gemini mcp list` — boost should show
246
254
  as **Connected**. (Gemini only connects stdio servers in a trusted folder; run
@@ -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.309'
22
- __version_tuple__ = version_tuple = (1, 0, 309)
21
+ __version__ = version = '1.0.310'
22
+ __version_tuple__ = version_tuple = (1, 0, 310)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -937,16 +937,24 @@ def _tool_discover_github(args: dict):
937
937
  for h in hits), False
938
938
 
939
939
 
940
+ # These descriptions do more work than they look like they should. Gemini CLI
941
+ # appends a server's `initialize` instructions to the GEMINI.md *memory* tier
942
+ # (McpClientManager.getMcpInstructions -> categorizeMemoryContents), gated on
943
+ # folder trust — so that block reads as background documentation, sits far from
944
+ # the decision point, and vanishes entirely in an untrusted folder. The function
945
+ # declarations are the only boost text reliably in context at the moment an
946
+ # agent chooses a tool, so each one repeats the trigger, the cost and the
947
+ # miss protocol rather than deferring to the server instructions.
940
948
  REGISTRY.register(
941
949
  "boost_search",
942
- "Find an existing, installable skill instead of improvising one. Reach for "
943
- "this at two moments: (1) when starting non-trivial work — check whether a "
944
- "vetted skill already covers the task before planning it yourself; (2) as "
945
- "the FIRST STOP before writing a skill, subagent, slash-command, rule, or "
946
- "any reusable block of agent instructions from scratch. Searches thousands "
947
- "of curated AI-agent skills across the configured registries and returns "
948
- "ranked matches you can install in one call — don't reinvent one that "
949
- "already exists.",
950
+ "Check whether someone already wrote down how to do this. Searches "
951
+ "thousands of vetted, installable AI-agent skills across the configured "
952
+ "registries and returns ranked matches. Worth one call whenever the task "
953
+ "in front of you has a name you could say out loud — \"set up code "
954
+ "review\", \"add commit conventions\", \"debug flaky tests\" — and before "
955
+ "writing a skill, subagent, slash-command or rule from scratch. Read-only, "
956
+ "no side effects, installs nothing. Returning nothing relevant is a fine "
957
+ "answer: it means build it yourself.",
950
958
  {"type": "object",
951
959
  "properties": {"query": {"type": "string",
952
960
  "description": "what the skill should do (a task, "
@@ -955,17 +963,18 @@ REGISTRY.register(
955
963
  _tool_search)
956
964
  REGISTRY.register(
957
965
  "boost_list",
958
- "List the skills already installed and usable right now. Check at the "
959
- "START of a task to leverage a capability you already have — an installed "
960
- "skill is a vetted procedure you can follow immediately, at no cost — and "
961
- "again before installing, to avoid duplicating something you have.",
966
+ "The skills already installed on this machine and usable right now — "
967
+ "capability you have but may not know about. Read-only, instant, installs "
968
+ "nothing. Worth a call at the start of any task that will take more than a "
969
+ "few steps, before planning it from memory.",
962
970
  {"type": "object", "properties": {}},
963
971
  _tool_list)
964
972
  REGISTRY.register(
965
973
  "boost_info",
966
- "Vet a skill before installing it: its description, source tap, version and "
967
- "declared capabilities. Use after boost_search to decide whether a candidate "
968
- "fits before boost_install.",
974
+ "Look up one skill by name: description, source tap, version, and whether "
975
+ "it is already installed. Use it when you have a name from somewhere else "
976
+ "and want the details. You do not need this between a search and an "
977
+ "install — boost_search already returns each match's description.",
969
978
  {"type": "object",
970
979
  "properties": {"name": {"type": "string", "description": "skill name"}},
971
980
  "required": ["name"]},
@@ -85,52 +85,50 @@ PROTOCOL_VERSION = "2024-11-05"
85
85
  # is relevant — the difference between a search tool that sits unused and one an
86
86
  # agent reaches for. Framed by the agent's triggers, not boost's nouns.
87
87
  #
88
- # It declares TWO triggers, and the first exists because the second alone was
89
- # not enough. Framed only as "before you author a skill", agents reached for
90
- # boost exclusively when they were already about to write one — which is the
91
- # rarer moment. The common one is starting ordinary work that an installed or
92
- # installable skill already covers, and nothing was telling them to look. The
93
- # closing proportion note is load-bearing in the other direction: an unbounded
94
- # "always check first" turns every trivial turn into a tool call, and an agent
95
- # that learns to ignore the guidance ignores all of it.
88
+ # ONE benefit, stated once: find a skill for the task in front of you. Earlier
89
+ # passes gave equal billing to "before you author a skill", and that cost more
90
+ # than it bought — authoring is the rarer moment, and an agent handed two
91
+ # triggers matches the one it can recognise fastest, which was the wrong one.
92
+ # Authoring now lives as a clause on boost_search's own description.
93
+ #
94
+ # The trigger is observable rather than a judgement call. "Before non-trivial
95
+ # work" lost to its own escape hatch every time: deciding a task is non-trivial
96
+ # takes judgement, while "this turn looks small" is free, and every turn looks
97
+ # small when it opens. Whether the task has a NAME can be pattern-matched
98
+ # without deciding anything, and a named task is exactly the kind someone has
99
+ # already written down.
100
+ #
101
+ # Three things below are load-bearing, not padding. The stated COST kills the
102
+ # hesitation over an unknown-price call. The MISS PROTOCOL stops a zero-result
103
+ # search reading as a wasted turn — without it one empty search teaches an agent
104
+ # to stop checking. And "the task stays yours" is what makes an agent willing to
105
+ # look at all: one that expects a hit to seize the work is safer not looking.
106
+ # The closing bound names concrete shapes instead of the word "trivial", which
107
+ # an unbounded "always check first" needs or the guidance gets ignored wholesale.
96
108
  INSTRUCTIONS = (
97
- "boost is a package manager for AI-agent skills: reusable, version-tracked "
98
- "capabilities (skills, rules, slash-commands, subagents) from curated "
99
- "registries.\n"
100
- "\n"
101
- "Three moments make boost relevant. The first is the one usually missed:\n"
102
- "\n"
103
- "1. STARTING A TASK. Before doing non-trivial work — building a feature, "
104
- "setting up tooling or CI, reviewing code, debugging a class of problem, "
105
- "writing docs — stop and check whether a skill already covers it. Call "
106
- "boost_list for what is installed and usable right now, and boost_search "
107
- "for what could be. A matching skill is a procedure someone already got "
108
- "right and vetted; following it beats reconstructing the same steps from "
109
- "memory.\n"
109
+ "boost is a shared shelf of vetted, version-tracked skills for AI coding "
110
+ "agents — procedures someone already worked out, ready to follow.\n"
110
111
  "\n"
111
- "2. AUTHORING. Before you write a new skill, subagent, slash-command, "
112
- "rule, or any reusable block of agent instructions — or when the user "
113
- "describes a repeatable workflow (\"set up code review\", \"add a commit "
114
- "convention\") — call boost_search FIRST to check whether a vetted one "
115
- "already exists. Installing beats hand-writing: an installed skill is "
116
- "version-pinned, wired into every agent on this machine, policy-governed, "
117
- "and shareable with the team.\n"
112
+ "THE CHECK: if the task in front of you has a name — \"set up code "
113
+ "review\", \"add commit conventions\", \"write a migration\", \"debug "
114
+ "flaky tests\" — someone has probably already written it down. Call "
115
+ "boost_list for what is installed on this machine and boost_search for "
116
+ "what exists. Both are read-only, take about a second, and install "
117
+ "nothing.\n"
118
118
  "\n"
119
- "3. SCOPE GROWTH. A turn that began trivial and grew is still a task "
120
- "start — it just did not look like one at the time. When a question "
121
- "becomes an investigation, a one-line fix becomes a refactor, or a quick "
122
- "check turns into hours of work, run the check at the moment the scope "
123
- "changes rather than treating the original framing as settled. The most "
124
- "expensive misses are the tasks nobody checked because they were not "
125
- "tasks when they began.\n"
119
+ "Finding nothing is a good outcome, not a wasted call: it tells you to "
120
+ "build it yourself, now knowing that nothing already covers it. Finding "
121
+ "something is a head start, not an instruction — read it, take what fits, "
122
+ "discard the rest. The task stays yours.\n"
126
123
  "\n"
127
- "Typical flow: boost_search -> boost_info -> boost_install. Only build "
128
- "from scratch when a search turns up nothing relevant.\n"
124
+ "Two moments beat the odds: the first step of anything that will take more "
125
+ "than a few steps, and the moment a small task turns out to be a large "
126
+ "one. The second matters because the first only fires at a boundary you "
127
+ "recognized at the time — a question that became an investigation never "
128
+ "got one.\n"
129
129
  "\n"
130
- "Proportion: skip the check for trivial or one-off turns — answering a "
131
- "question, a small edit, running a command you were just handed. Checking "
132
- "once when a task starts, or when it grows into one, is the habit; "
133
- "checking before every tool call is noise."
130
+ "Flow: boost_search -> boost_install. Skip it for a question, a one-line "
131
+ "edit, or a command you were just handed."
134
132
  )
135
133
 
136
134
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.309
3
+ Version: 1.0.310
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -956,9 +956,17 @@ A host whose CLI isn't installed is skipped, not an error — name it explicitly
956
956
 
957
957
  Six tools are exposed: `boost_search`, `boost_list`, `boost_info`,
958
958
  `boost_install`, `boost_doctor`, and `boost_discover_github`. The server also
959
- returns MCP `instructions`, which both hosts load into the model's context — it
960
- tells the agent *when* boost is relevant, so a matching skill gets found at the
961
- start of a task rather than after the work is already reconstructed by hand.
959
+ returns MCP `instructions`, which tell the agent *when* boost is relevant, so a
960
+ matching skill gets found at the start of a task rather than after the work is
961
+ already reconstructed by hand.
962
+
963
+ The two hosts place those instructions differently, and it matters. Claude Code
964
+ loads them as server instructions in the system prompt. Gemini CLI appends them
965
+ to its **memory tier** alongside `GEMINI.md`, and only in a trusted folder — so
966
+ outside one they are dropped silently. Each tool's own description therefore
967
+ repeats its trigger rather than relying on the server text, because a tool
968
+ description is the only part that is always in context at the moment the agent
969
+ chooses a tool.
962
970
 
963
971
  Verify the wiring with `claude mcp list` or `gemini mcp list` — boost should show
964
972
  as **Connected**. (Gemini only connects stdio servers in a trusted folder; run
@@ -251,6 +251,7 @@ docs/roadmap/items/mcp-check-skills-before-starting-a-task.md
251
251
  docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md
252
252
  docs/roadmap/items/mcp-install-skips-the-injection-scan.md
253
253
  docs/roadmap/items/mcp-launch-objc-fork-safety.md
254
+ docs/roadmap/items/mcp-one-benefit-nameable-task.md
254
255
  docs/roadmap/items/mcp-register-names-server-before-env.md
255
256
  docs/roadmap/items/mcp-search-before-reinventing.md
256
257
  docs/roadmap/items/mcp-servers-ignore-install-scope.md
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: mcp-one-benefit-nameable-task
3
+ board: code
4
+ section: dx
5
+ status: inflight
6
+ category: Interop · Adoption
7
+ complexity: S
8
+ impact: High
9
+ wow: 3
10
+ note: agent reflex
11
+ order: 74
12
+ owner: loop/mcp-nameable-task
13
+ pr: 355
14
+ title: MCP — one benefit, one observable trigger (and stop routing through boost_info)
15
+ ---
16
+ Gemini CLI used the boost MCP server only when asked by hand, never on its own.
17
+ Two causes, and neither was fixed by writing more instructions.
18
+ <strong>Placement:</strong> Gemini appends a server's <code>initialize</code>
19
+ <code>instructions</code> to the <em>GEMINI.md memory tier</em>
20
+ (<code>getMcpInstructions</code> → <code>categorizeMemoryContents</code>), gated on
21
+ folder trust — so the block reads as background documentation, sits far from the
22
+ tool-call decision, and is dropped entirely in an untrusted folder. Claude Code puts
23
+ the same text in the system prompt, which is why the gap only showed on Gemini. The
24
+ tool descriptions are the only boost text reliably in context at the decision point,
25
+ so each now repeats the trigger, the cost and the miss protocol instead of deferring
26
+ upward. <strong>Wording:</strong> <a href="#mcp-check-skills-before-starting-a-task">the
27
+ previous pass</a> declared three triggers bounded by a proportionality note, and the
28
+ bound beat the triggers every time — judging work "non-trivial" takes judgement, while
29
+ "this turn looks small" is free, and every turn looks small when it opens. Collapse to
30
+ <strong>one</strong> benefit (find a skill for the task in front of you) and
31
+ <strong>one observable</strong> trigger (<em>does the task have a name?</em>), which an
32
+ agent can pattern-match without deciding anything. Authoring drops from co-equal
33
+ trigger to a clause on <code>boost_search</code> — it is the rarer moment and it was
34
+ crowding out the common one. Three additions are load-bearing, not padding: the stated
35
+ <em>cost</em> (read-only, ~1s, installs nothing) kills the unknown-price hesitation; the
36
+ <em>miss protocol</em> ("finding nothing is a good outcome") stops one empty search
37
+ teaching an agent to quit checking; and "the task stays yours" is what makes an agent
38
+ willing to look, since one that expects a hit to seize the work is safer not looking.
39
+ Finally, drop <code>boost_info</code> from the advertised flow — <code>boost_search</code>
40
+ already returns each hit's description, the only field that changes an install decision,
41
+ so the hop bought a round-trip and a decision point and nothing else. It stays registered
42
+ for looking up a name from elsewhere, and its description now says so. All of it is
43
+ pinned by tests, including negative assertions so authoring and the info hop cannot
44
+ creep back.
@@ -111,7 +111,7 @@
111
111
  <div class="stat"><b>16</b><span>Shipped</span></div>
112
112
  <div class="stat"><b>1</b><span>Next up</span></div>
113
113
  <div class="stat"><b>4</b><span>Planned</span></div>
114
- <div class="stat"><b>187</b><span>Loop finds</span></div>
114
+ <div class="stat"><b>188</b><span>Loop finds</span></div>
115
115
  <!-- /ROADMAP:stats -->
116
116
  </div>
117
117
  </section>
@@ -3914,6 +3914,46 @@ open: <code>zizmor</code> and <code>gitleaks</code> run only in CI and have no M
3914
3914
  <span class="m">fixed — shellcheck is pinned in lint-tools and both gates now assert it is there</span>
3915
3915
  </div>
3916
3916
  </article>
3917
+
3918
+ <article class="cap rcard" id="mcp-one-benefit-nameable-task">
3919
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">Interop · Adoption</span></div>
3920
+ <h3>MCP — one benefit, one observable trigger (and stop routing through boost_info)</h3>
3921
+ <p>Gemini CLI used the boost MCP server only when asked by hand, never on its own.
3922
+ Two causes, and neither was fixed by writing more instructions.
3923
+ <strong>Placement:</strong> Gemini appends a server's <code>initialize</code>
3924
+ <code>instructions</code> to the <em>GEMINI.md memory tier</em>
3925
+ (<code>getMcpInstructions</code> → <code>categorizeMemoryContents</code>), gated on
3926
+ folder trust — so the block reads as background documentation, sits far from the
3927
+ tool-call decision, and is dropped entirely in an untrusted folder. Claude Code puts
3928
+ the same text in the system prompt, which is why the gap only showed on Gemini. The
3929
+ tool descriptions are the only boost text reliably in context at the decision point,
3930
+ so each now repeats the trigger, the cost and the miss protocol instead of deferring
3931
+ upward. <strong>Wording:</strong> <a href="#mcp-check-skills-before-starting-a-task">the
3932
+ previous pass</a> declared three triggers bounded by a proportionality note, and the
3933
+ bound beat the triggers every time — judging work "non-trivial" takes judgement, while
3934
+ "this turn looks small" is free, and every turn looks small when it opens. Collapse to
3935
+ <strong>one</strong> benefit (find a skill for the task in front of you) and
3936
+ <strong>one observable</strong> trigger (<em>does the task have a name?</em>), which an
3937
+ agent can pattern-match without deciding anything. Authoring drops from co-equal
3938
+ trigger to a clause on <code>boost_search</code> — it is the rarer moment and it was
3939
+ crowding out the common one. Three additions are load-bearing, not padding: the stated
3940
+ <em>cost</em> (read-only, ~1s, installs nothing) kills the unknown-price hesitation; the
3941
+ <em>miss protocol</em> ("finding nothing is a good outcome") stops one empty search
3942
+ teaching an agent to quit checking; and "the task stays yours" is what makes an agent
3943
+ willing to look, since one that expects a hit to seize the work is safer not looking.
3944
+ Finally, drop <code>boost_info</code> from the advertised flow — <code>boost_search</code>
3945
+ already returns each hit's description, the only field that changes an install decision,
3946
+ so the hop bought a round-trip and a decision point and nothing else. It stays registered
3947
+ for looking up a name from elsewhere, and its description now says so. All of it is
3948
+ pinned by tests, including negative assertions so authoring and the info hop cannot
3949
+ creep back.</p>
3950
+ <div class="meta">
3951
+ <span class="m">Complexity <b>S</b></span>
3952
+ <span class="m hi">Impact <b>High</b></span>
3953
+ <span class="m">Wow <b class="wow">★★★</b></span>
3954
+ <span class="m">agent reflex</span>
3955
+ </div>
3956
+ </article>
3917
3957
  <!-- /ROADMAP:cards -->
3918
3958
 
3919
3959
  </div>
@@ -878,24 +878,32 @@ class TestMcp:
878
878
  assert configuration._mcp_tool("nonexistent_tool", {}) == (None, False)
879
879
 
880
880
  def test_tool_descriptions_are_intent_framed(self, sandbox):
881
- # the descriptions must tell an agent WHEN to reach for boost (before
882
- # reinventing), not just what each tool does — the discoverability fix.
881
+ # The descriptions must tell an agent WHEN to reach for boost, not just
882
+ # what each tool does. On Gemini CLI these carry the whole load: it
883
+ # appends server `instructions` to the GEMINI.md memory tier, so the
884
+ # function declarations are the only boost text in context at the
885
+ # moment the tool-call decision is actually made.
883
886
  from boost_cli.commands import configuration
884
887
  specs = {s["name"]: s["description"].lower()
885
888
  for s in configuration.REGISTRY.specs()}
886
- # search carries BOTH triggers: starting a task, and authoring. The
887
- # second alone is why the tool sat unused for ordinary work.
888
- assert "starting non-trivial work" in specs["boost_search"]
889
- assert "first stop before writing" in specs["boost_search"]
890
- assert "reinvent" in specs["boost_search"]
891
- # list is the cheap half of the task-start check — leverage what is
892
- # already installed, not merely "avoid a duplicate install".
893
- assert "start" in specs["boost_list"]
894
- assert "leverage" in specs["boost_list"]
889
+ # search leads with the observable trigger and states its cost; a miss
890
+ # is named as a real outcome so it does not read as a wasted call.
891
+ assert "has a name" in specs["boost_search"]
892
+ assert "read-only" in specs["boost_search"]
893
+ assert "build it yourself" in specs["boost_search"]
894
+ # authoring survives ONLY here, as a clause — never as a co-equal
895
+ # trigger. Promoting it back cost boost its primary use once already.
896
+ assert "from scratch" in specs["boost_search"]
897
+ # list is the free half of the check — capability already on the box.
898
+ assert "installed" in specs["boost_list"]
899
+ assert "read-only" in specs["boost_list"]
900
+ assert "more than a few steps" in specs["boost_list"]
895
901
  # install points back at the search that should precede it
896
902
  assert "boost_search" in specs["boost_install"]
897
- # info is framed as the vet-before-install step
898
- assert "before" in specs["boost_info"] and "install" in specs["boost_info"]
903
+ # info is a name lookup, NOT a step between search and install. It has
904
+ # to say so, or an agent reinstates the hop the flow just dropped.
905
+ assert "by name" in specs["boost_info"]
906
+ assert "do not need this between a search and an install" in specs["boost_info"]
899
907
 
900
908
  def test_discover_github_missing_gh_degrades(self, sandbox, monkeypatch):
901
909
  from boost_cli.commands import configuration
@@ -110,30 +110,53 @@ class TestHandleRequest:
110
110
 
111
111
  def test_initialize_returns_server_instructions(self):
112
112
  # MCP hosts load `instructions` into the agent's context — this is where
113
- # boost earns the "search before reinventing" reflex.
113
+ # boost earns the "check for a skill before doing the work" reflex.
114
114
  resp = mcp.handle_request({"id": 1, "method": "initialize"},
115
115
  version="9.9.9", registry=_reg_with())
116
116
  instr = resp["result"]["instructions"]
117
117
  assert instr == mcp.INSTRUCTIONS
118
118
  low = instr.lower()
119
- # THREE triggers must survive here. Authoring alone was the original
120
- # framing and it under-fired: agents reached for boost only when about
121
- # to write a skill, never to check whether one already covered the work
122
- # in front of them. Dropping any trigger regresses that.
123
- assert "starting a task" in low # trigger 1: leverage first
124
- assert "boost_list" in instr # ...what is already installed
125
- assert "before you write a new skill" in low # trigger 2: authoring
126
- assert "boost_search" in instr # the concrete first action
127
- assert "already exists" in low # the "don't reinvent" frame
128
- # Trigger 3 closes the hole the other two leave open: both fire at a
129
- # recognized task boundary, so a turn that starts trivial and escalates
130
- # is never re-evaluated. Observed in practice — a one-line question grew
131
- # into hours of retrieval work and the check never fired, because the
132
- # proportionality carve-out below had already excused the opening turn.
133
- assert "scope growth" in low # trigger 3: escalation
134
- assert "grows into one" in low # ...wired into Proportion
119
+ # ONE trigger, and it must be observable rather than a judgement call.
120
+ # "Non-trivial work" was the old framing and it lost to its own escape
121
+ # hatch: deciding a task is non-trivial takes judgement, while "this
122
+ # turn looks small" is free — and every turn looks small when it opens.
123
+ # A task having a NAME is something an agent can pattern-match without
124
+ # deciding anything.
125
+ assert "has a name" in low
126
+ assert "boost_list" in instr and "boost_search" in instr
127
+ # The cost has to be stated. An unknown-cost call with an unknown hit
128
+ # rate gets skipped, however good the pitch above it.
129
+ assert "read-only" in low
130
+ # ...as does the miss protocol. Without it a zero-result search reads as
131
+ # a wasted turn, so the next task skips the check to avoid repeating it.
132
+ assert "finding nothing" in low
133
+ # Non-capturing, and load-bearing rather than merely polite: an agent
134
+ # that expects a hit to seize the task is safer not looking.
135
+ assert "the task stays yours" in low
136
+ # Escalation still has to be caught — both other moments fire at a task
137
+ # boundary, so a turn that starts small and grows is never re-checked.
138
+ assert "turns out to be a large one" in low
135
139
  # ...and it must stay bounded, or an agent learns to ignore all of it.
136
- assert "skip the check for trivial" in low
140
+ assert "skip it for a question" in low
141
+
142
+ def test_instructions_lead_with_using_a_skill_not_authoring_one(self):
143
+ # Authoring used to be a co-equal numbered trigger, which cost the
144
+ # instructions their point: boost's primary benefit is finding a skill
145
+ # for the task in front of you, and "am I about to write a skill?" is
146
+ # both rarer and a different question. It survives only as a clause on
147
+ # boost_search's own description, never as a trigger here.
148
+ low = mcp.INSTRUCTIONS.lower()
149
+ assert "before you write a new skill" not in low
150
+ assert "authoring" not in low
151
+
152
+ def test_instructions_route_search_straight_to_install(self):
153
+ # boost_info sat between search and install in the advertised flow, but
154
+ # search already returns each hit's description — the only field that
155
+ # changes an install decision — so the hop bought a round-trip and a
156
+ # decision point and nothing else. It stays a registered tool for
157
+ # looking up a name from elsewhere; it is not a step.
158
+ assert "boost_search -> boost_install" in mcp.INSTRUCTIONS
159
+ assert "boost_info" not in mcp.INSTRUCTIONS
137
160
 
138
161
  def test_protocol_version_constant(self):
139
162
  assert mcp.PROTOCOL_VERSION == "2024-11-05"