boost-skill-cli 1.0.309__tar.gz → 1.0.311__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.311}/PKG-INFO +12 -4
  2. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/README.md +11 -3
  3. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/configuration.py +24 -15
  5. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/mcp.py +39 -41
  6. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311/boost_skill_cli.egg-info}/PKG-INFO +12 -4
  7. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  8. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +21 -0
  9. boost_skill_cli-1.0.311/docs/roadmap/items/mcp-one-benefit-nameable-task.md +44 -0
  10. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap.html +62 -1
  11. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_configuration.py +21 -13
  12. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mcp.py +41 -18
  13. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.gitattributes +0 -0
  14. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.gitignore +0 -0
  15. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.gitleaks.toml +0 -0
  16. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.htmlvalidate.json +0 -0
  17. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.lighthouserc.json +0 -0
  18. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.lycheeignore +0 -0
  19. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.markdownlint-cli2.jsonc +0 -0
  20. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.pre-commit-config.yaml +0 -0
  21. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.stylelintrc.json +0 -0
  22. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.vale/styles/boost/Terminology.yml +0 -0
  23. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  24. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/.vale.ini +0 -0
  25. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/CLAUDE.md +0 -0
  26. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/CODE_OF_CONDUCT.md +0 -0
  27. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/CONTRIBUTING.md +0 -0
  28. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/LICENSE +0 -0
  29. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/MANIFEST.in +0 -0
  30. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/Makefile +0 -0
  31. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/SECURITY.md +0 -0
  32. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost +0 -0
  33. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/__init__.py +0 -0
  34. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/__main__.py +0 -0
  35. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/cli.py +0 -0
  36. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/cliparse.py +0 -0
  37. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/__init__.py +0 -0
  38. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/_common.py +0 -0
  39. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/bmad.py +0 -0
  40. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/discovery.py +0 -0
  41. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/hooks.py +0 -0
  42. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/info.py +0 -0
  43. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/intelligence.py +0 -0
  44. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/pkg.py +0 -0
  45. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/quality.py +0 -0
  46. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/run.py +0 -0
  47. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/safety.py +0 -0
  48. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/taps.py +0 -0
  49. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/commands/team.py +0 -0
  50. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/__init__.py +0 -0
  51. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/adapters.py +0 -0
  52. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/agents.py +0 -0
  53. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/ai.py +0 -0
  54. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/capabilities.py +0 -0
  55. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/catalog.py +0 -0
  56. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/claude_settings.py +0 -0
  57. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/config.py +0 -0
  58. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/dense.py +0 -0
  59. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/ed25519.py +0 -0
  60. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/embed.py +0 -0
  61. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/faithfulness.py +0 -0
  62. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/frontmatter.py +0 -0
  63. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/gitutil.py +0 -0
  64. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/imperative.py +0 -0
  65. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/injectscan.py +0 -0
  66. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/installscan.py +0 -0
  67. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/integrity.py +0 -0
  68. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/journal.py +0 -0
  69. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/localembed.py +0 -0
  70. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/lockfile.py +0 -0
  71. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/logs.py +0 -0
  72. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/mcpdecl.py +0 -0
  73. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/mcphost.py +0 -0
  74. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/minisign.py +0 -0
  75. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/nethttp.py +0 -0
  76. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/output.py +0 -0
  77. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/paths.py +0 -0
  78. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/policy.py +0 -0
  79. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/projectlock.py +0 -0
  80. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/provenance.py +0 -0
  81. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/rag.py +0 -0
  82. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/registry.py +0 -0
  83. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/resolve.py +0 -0
  84. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/rules.py +0 -0
  85. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/scopes.py +0 -0
  86. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/secretscan.py +0 -0
  87. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/selfupdate.py +0 -0
  88. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/serve.py +0 -0
  89. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/stackprobe.py +0 -0
  90. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/staleness.py +0 -0
  91. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/store.py +0 -0
  92. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/trustaudit.py +0 -0
  93. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/typosquat.py +0 -0
  94. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/updatediff.py +0 -0
  95. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/util.py +0 -0
  96. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/core/workflows.py +0 -0
  97. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/data/registries.json +0 -0
  98. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/errors.py +0 -0
  99. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_cli/spin.py +0 -0
  100. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  101. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  102. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_skill_cli.egg-info/requires.txt +0 -0
  103. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/boost_skill_cli.egg-info/top_level.txt +0 -0
  104. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/codecov.yml +0 -0
  105. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/.claude/settings.local.json +0 -0
  106. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/DEBUGGING.md +0 -0
  107. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/adapters.html +0 -0
  108. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/architecture/README.md +0 -0
  109. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/architecture/c4-components-core.md +0 -0
  110. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/architecture/c4-containers.md +0 -0
  111. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/architecture/c4-context.md +0 -0
  112. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/architecture/c4-dynamic-install.md +0 -0
  113. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/distill.gif +0 -0
  114. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/doctor.gif +0 -0
  115. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/explain.gif +0 -0
  116. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/hooks.gif +0 -0
  117. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/install.gif +0 -0
  118. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/pulse.gif +0 -0
  119. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/search.gif +0 -0
  120. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/gifs/tap.gif +0 -0
  121. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/distill.tape +0 -0
  122. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/doctor.tape +0 -0
  123. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/explain.tape +0 -0
  124. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/hooks.tape +0 -0
  125. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/install.tape +0 -0
  126. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/pulse.tape +0 -0
  127. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/search.tape +0 -0
  128. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel/tapes/tap.tape +0 -0
  129. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/carousel.html +0 -0
  130. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/commands.html +0 -0
  131. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/demo.gif +0 -0
  132. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/demo.tape +0 -0
  133. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/design-roadmap.html +0 -0
  134. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/eval.html +0 -0
  135. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/index.html +0 -0
  136. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/mcp-hub.html +0 -0
  137. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/rag-architecture.md +0 -0
  138. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D01.md +0 -0
  139. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D02.md +0 -0
  140. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D03.md +0 -0
  141. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D04.md +0 -0
  142. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D05.md +0 -0
  143. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D06.md +0 -0
  144. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D07.md +0 -0
  145. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D08.md +0 -0
  146. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D09.md +0 -0
  147. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D10.md +0 -0
  148. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D11.md +0 -0
  149. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D12.md +0 -0
  150. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D13.md +0 -0
  151. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D14.md +0 -0
  152. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D15.md +0 -0
  153. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D16.md +0 -0
  154. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D17.md +0 -0
  155. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D18.md +0 -0
  156. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D19.md +0 -0
  157. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D20.md +0 -0
  158. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D21.md +0 -0
  159. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D22.md +0 -0
  160. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D23.md +0 -0
  161. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D24.md +0 -0
  162. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D25.md +0 -0
  163. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/BOOST-D26.md +0 -0
  164. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  165. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  166. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  167. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  168. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  169. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  170. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  171. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  172. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  173. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  174. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  175. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  176. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  177. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  178. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  179. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  180. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  181. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  182. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  183. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  184. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  185. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  186. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/command-carousel-page.md +0 -0
  187. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  188. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  189. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  190. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  191. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  192. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  193. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  194. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  195. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  196. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  197. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  198. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  199. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  200. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  201. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  202. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  203. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  204. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  205. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  206. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  207. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  208. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  209. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  210. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  211. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  212. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  213. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  214. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  215. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  216. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/github-community-health-files.md +0 -0
  217. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  218. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  219. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  220. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  221. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  222. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  223. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  224. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  225. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  226. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  227. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  228. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  229. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  230. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  231. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  232. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  233. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  234. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  235. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  236. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  237. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  238. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  239. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  240. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  242. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  244. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  245. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  246. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  247. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  248. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  250. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  251. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  252. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  253. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  254. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  255. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  256. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  257. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  259. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  260. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  262. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  263. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  264. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  265. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  266. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  268. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  269. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  270. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  271. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  272. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  273. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  274. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  275. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  276. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  277. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  279. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  281. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  282. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  283. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  285. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  287. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/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.311}/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.311}/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.311}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  292. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  293. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  294. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  295. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  297. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  299. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  300. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  301. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  303. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  305. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  306. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  307. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  308. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  309. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  310. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  311. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  312. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  313. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  314. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  315. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  317. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/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.311}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  320. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  322. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  323. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  324. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/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.311}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  327. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  328. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  330. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  332. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  333. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  334. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  335. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  337. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  338. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  339. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  340. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  341. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  342. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  344. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  345. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  346. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  347. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  348. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/workspace-scope-install.md +0 -0
  349. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  350. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/eslint.config.mjs +0 -0
  351. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/README.md +0 -0
  352. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/__init__.py +0 -0
  353. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/baseline.json +0 -0
  354. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/faithfulness.py +0 -0
  355. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/golden_set.json +0 -0
  356. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/make_corpus.py +0 -0
  357. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/make_golden.py +0 -0
  358. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/metrics.py +0 -0
  359. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/evals/run_evals.py +0 -0
  360. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/examples/README.md +0 -0
  361. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/examples/adapt-demo.sh +0 -0
  362. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/examples/boost-run-prototype.sh +0 -0
  363. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/index.html +0 -0
  364. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/noxfile.py +0 -0
  365. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/pyproject.toml +0 -0
  366. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/coverage-tools.in +0 -0
  367. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/coverage-tools.txt +0 -0
  368. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/lint-tools.in +0 -0
  369. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/lint-tools.txt +0 -0
  370. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/mutation-tools.in +0 -0
  371. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/mutation-tools.txt +0 -0
  372. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/platform-pins.lock +0 -0
  373. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/release-tools.in +0 -0
  374. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/release-tools.txt +0 -0
  375. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/test-tools.in +0 -0
  376. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/requirements/test-tools.txt +0 -0
  377. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/a11y_check.py +0 -0
  378. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/bench_cli.sh +0 -0
  379. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/build_command_reference.py +0 -0
  380. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/build_registries.py +0 -0
  381. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/build_roadmap.py +0 -0
  382. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/check_anchors.py +0 -0
  383. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/check_licenses.py +0 -0
  384. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/check_required_checks.py +0 -0
  385. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/ensure_eval_corpus.sh +0 -0
  386. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/eval_explain.py +0 -0
  387. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/eval_gate.py +0 -0
  388. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/eval_recommend.py +0 -0
  389. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/eval_retrieval.py +0 -0
  390. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/eval_stats_summary.py +0 -0
  391. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/import_budget.py +0 -0
  392. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/lock_toolchain.py +0 -0
  393. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/mutation_gate.py +0 -0
  394. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/mutation_shards.py +0 -0
  395. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/mutation_weights.json +0 -0
  396. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/perf_gate.py +0 -0
  397. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/post_deploy_smoke.py +0 -0
  398. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/release_guard.py +0 -0
  399. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/scripts/release_preflight.py +0 -0
  400. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/setup.cfg +0 -0
  401. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/sonar-project.properties +0 -0
  402. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/style/README.md +0 -0
  403. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/style/boost.css +0 -0
  404. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/style/boost.js +0 -0
  405. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/style/demo.html +0 -0
  406. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/adapt.feature +0 -0
  407. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/browse.feature +0 -0
  408. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/count.feature +0 -0
  409. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/discover.feature +0 -0
  410. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/doctor.feature +0 -0
  411. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/environment.py +0 -0
  412. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/explain.feature +0 -0
  413. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/index.feature +0 -0
  414. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/install.feature +0 -0
  415. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/list.feature +0 -0
  416. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/mcp.feature +0 -0
  417. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/search.feature +0 -0
  418. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/steps/cli_steps.py +0 -0
  419. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/steps/discovery_steps.py +0 -0
  420. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/steps/mcp_steps.py +0 -0
  421. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/bdd/features/steps/quality_steps.py +0 -0
  422. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/conftest.py +0 -0
  423. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/eval/baseline.json +0 -0
  424. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/eval/explain.jsonl +0 -0
  425. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/eval/golden.jsonl +0 -0
  426. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/eval/recommend.jsonl +0 -0
  427. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/eval/taps.txt +0 -0
  428. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_capabilities_policy.py +0 -0
  429. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_adapt.py +0 -0
  430. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_bmad.py +0 -0
  431. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_discovery.py +0 -0
  432. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_hooks.py +0 -0
  433. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_info.py +0 -0
  434. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_intelligence.py +0 -0
  435. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_pkg.py +0 -0
  436. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_quality.py +0 -0
  437. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_taps.py +0 -0
  438. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_cli_team.py +0 -0
  439. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_everyday_loop.py +0 -0
  440. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_integrity_enforce.py +0 -0
  441. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_property_parsers.py +0 -0
  442. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_run.py +0 -0
  443. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_tap_signing.py +0 -0
  444. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/functional/test_workspace_scope.py +0 -0
  445. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/README.md +0 -0
  446. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  447. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  448. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  449. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  450. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  451. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  452. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  453. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  454. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  455. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  456. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  457. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  458. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  459. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  460. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  461. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  462. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  463. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  464. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  465. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  466. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/fuzz_frontmatter.py +0 -0
  467. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/fuzz/fuzz_registry.py +0 -0
  468. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/make_fixture.py +0 -0
  469. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/perf/test_benchmarks.py +0 -0
  470. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/smoke.sh +0 -0
  471. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_a11y_check.py +0 -0
  472. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_adapters.py +0 -0
  473. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_adapters_multi.py +0 -0
  474. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_adapters_runner.py +0 -0
  475. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_agents.py +0 -0
  476. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_ai.py +0 -0
  477. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_capabilities.py +0 -0
  478. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_catalog.py +0 -0
  479. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_check_anchors.py +0 -0
  480. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_check_licenses.py +0 -0
  481. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_claude_settings.py +0 -0
  482. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_cliparse.py +0 -0
  483. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_codeql_analysis_key.py +0 -0
  484. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_command_reference_fresh.py +0 -0
  485. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_community_health_files.py +0 -0
  486. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_config.py +0 -0
  487. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_dense.py +0 -0
  488. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_dense_fallback.py +0 -0
  489. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_dense_status.py +0 -0
  490. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_dependabot_config.py +0 -0
  491. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_docs_pages_linked.py +0 -0
  492. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_docsite_chrome.py +0 -0
  493. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_ed25519.py +0 -0
  494. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_embed.py +0 -0
  495. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_embed_local.py +0 -0
  496. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_errors_and_cli_table.py +0 -0
  497. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_eval_faithfulness.py +0 -0
  498. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_eval_gate.py +0 -0
  499. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_eval_metrics.py +0 -0
  500. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_eval_stats_summary.py +0 -0
  501. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_faithfulness.py +0 -0
  502. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_frontmatter.py +0 -0
  503. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_fuzz_targets.py +0 -0
  504. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_gitleaks_config.py +0 -0
  505. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_gitutil.py +0 -0
  506. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_imperative.py +0 -0
  507. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_import_budget.py +0 -0
  508. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_injectscan.py +0 -0
  509. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_installscan.py +0 -0
  510. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_integrity.py +0 -0
  511. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_journal.py +0 -0
  512. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_localembed.py +0 -0
  513. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_lockfile.py +0 -0
  514. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_logs.py +0 -0
  515. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_marketing_counts.py +0 -0
  516. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mcp_install_scan.py +0 -0
  517. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mcpdecl.py +0 -0
  518. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mcphost.py +0 -0
  519. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_minisign.py +0 -0
  520. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mutation_hardening.py +0 -0
  521. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mutation_shards.py +0 -0
  522. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mutation_subfile_shards.py +0 -0
  523. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_mutmut_source_paths.py +0 -0
  524. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_nethttp.py +0 -0
  525. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_output.py +0 -0
  526. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_paths.py +0 -0
  527. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_perf_gate.py +0 -0
  528. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_pkg_confusions.py +0 -0
  529. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_pkg_injection.py +0 -0
  530. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_pkg_secrets.py +0 -0
  531. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_platform_pins.py +0 -0
  532. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_policy.py +0 -0
  533. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_post_deploy_smoke.py +0 -0
  534. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_project_mcp_sidecar.py +0 -0
  535. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_projectlock.py +0 -0
  536. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_provenance.py +0 -0
  537. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_rag.py +0 -0
  538. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_registries_fresh.py +0 -0
  539. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_registry.py +0 -0
  540. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_registry_categories.py +0 -0
  541. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_release_guard.py +0 -0
  542. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_release_preflight.py +0 -0
  543. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_required_checks.py +0 -0
  544. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_resolve.py +0 -0
  545. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_roadmap_fresh.py +0 -0
  546. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_rules.py +0 -0
  547. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_scopes.py +0 -0
  548. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_secretscan.py +0 -0
  549. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_selfupdate.py +0 -0
  550. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_serve.py +0 -0
  551. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_spin.py +0 -0
  552. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_stackprobe.py +0 -0
  553. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_staleness.py +0 -0
  554. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_store.py +0 -0
  555. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_token_parity.py +0 -0
  556. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_toolchain_lock.py +0 -0
  557. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_trustaudit.py +0 -0
  558. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_typosquat.py +0 -0
  559. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_updatediff.py +0 -0
  560. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_util.py +0 -0
  561. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_version.py +0 -0
  562. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_workflow_concurrency.py +0 -0
  563. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_workflow_timeouts.py +0 -0
  564. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/unit/test_workflows.py +0 -0
  565. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/visual/a11y_check.mjs +0 -0
  566. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/visual/console_check.mjs +0 -0
  567. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/visual/package-lock.json +0 -0
  568. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/tests/visual/package.json +0 -0
  569. {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.311}/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.311
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.311'
22
+ __version_tuple__ = version_tuple = (1, 0, 311)
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.311
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
@@ -130,6 +130,27 @@ not reproduce here, though import cost is genuinely machine- and version-depende
130
130
  may be real on theirs. 233&nbsp;ms is also very likely <i>faster</i> than the Voyage round trip it
131
131
  sits beside, and it is paid only by users who installed the extra.
132
132
 
133
+ <b>If step 6 is the tie-break, it needs a method and not just a number.</b> The sibling item already
134
+ produced one cautionary result worth inheriting rather than repeating: its own headline, <b>+11.0
135
+ recall / +15.9 hit@1</b>, did not survive verification. Three failures, none specific to a static
136
+ model, all reachable from here. Its baseline used a kind oracle the live search path does not have,
137
+ so the comparison was never against what a user experiences. The blend weight
138
+ (<code>w_dense=0.7</code>) <em>and</em> the rerank pool depth were both tuned by argmax on the same
139
+ 82 queries they were then reported on &mdash; fitting and reporting on one set. And at n=82 on a
140
+ binary metric, the smallest net win reaching <em>p</em>&lt;0.05 is <b>6 queries</b>: its
141
+ <code>hit@1</code> (+13 net) clears that bar, while recall (+9) sits at the resolution floor and
142
+ should not have led.
143
+
144
+ So four constraints on step 6, whichever backend wins. Report <b>McNemar</b> on paired per-query
145
+ outcomes rather than two independent-looking averages, since the engines are scored on the same
146
+ queries. Hold the blend weight and pool depth <b>out</b> of the query set they are scored on. Lead
147
+ with <code>hit@1</code> &mdash; on a golden set this size, recall moves inside its own noise. And
148
+ measure each engine <b>alone</b> before any fusion, so a hybrid win cannot be quietly credited to
149
+ the embedder that did not earn it. One structural caveat also transfers: a skill's name is only
150
+ ~10.5% of a mean-pooled surface vector while 106 description clusters are shared across 270 distinct
151
+ names, so a lift measured on today's corpus may <em>shrink</em> rather than hold as the index grows
152
+ toward 50k items &mdash; an argument for re-measuring at scale before believing any of this.
153
+
133
154
  The static approach still wins on cost and would win outright if the quality gap is small &mdash;
134
155
  which is exactly what the eval should decide. Its own card is right that neither should ship a
135
156
  retrieval <i>claim</i> before that eval exists.
@@ -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>
@@ -718,6 +718,27 @@ not reproduce here, though import cost is genuinely machine- and version-depende
718
718
  may be real on theirs. 233&nbsp;ms is also very likely <i>faster</i> than the Voyage round trip it
719
719
  sits beside, and it is paid only by users who installed the extra.
720
720
 
721
+ <b>If step 6 is the tie-break, it needs a method and not just a number.</b> The sibling item already
722
+ produced one cautionary result worth inheriting rather than repeating: its own headline, <b>+11.0
723
+ recall / +15.9 hit@1</b>, did not survive verification. Three failures, none specific to a static
724
+ model, all reachable from here. Its baseline used a kind oracle the live search path does not have,
725
+ so the comparison was never against what a user experiences. The blend weight
726
+ (<code>w_dense=0.7</code>) <em>and</em> the rerank pool depth were both tuned by argmax on the same
727
+ 82 queries they were then reported on &mdash; fitting and reporting on one set. And at n=82 on a
728
+ binary metric, the smallest net win reaching <em>p</em>&lt;0.05 is <b>6 queries</b>: its
729
+ <code>hit@1</code> (+13 net) clears that bar, while recall (+9) sits at the resolution floor and
730
+ should not have led.
731
+
732
+ So four constraints on step 6, whichever backend wins. Report <b>McNemar</b> on paired per-query
733
+ outcomes rather than two independent-looking averages, since the engines are scored on the same
734
+ queries. Hold the blend weight and pool depth <b>out</b> of the query set they are scored on. Lead
735
+ with <code>hit@1</code> &mdash; on a golden set this size, recall moves inside its own noise. And
736
+ measure each engine <b>alone</b> before any fusion, so a hybrid win cannot be quietly credited to
737
+ the embedder that did not earn it. One structural caveat also transfers: a skill's name is only
738
+ ~10.5% of a mean-pooled surface vector while 106 description clusters are shared across 270 distinct
739
+ names, so a lift measured on today's corpus may <em>shrink</em> rather than hold as the index grows
740
+ toward 50k items &mdash; an argument for re-measuring at scale before believing any of this.
741
+
721
742
  The static approach still wins on cost and would win outright if the quality gap is small &mdash;
722
743
  which is exactly what the eval should decide. Its own card is right that neither should ship a
723
744
  retrieval <i>claim</i> before that eval exists.</p>
@@ -3914,6 +3935,46 @@ open: <code>zizmor</code> and <code>gitleaks</code> run only in CI and have no M
3914
3935
  <span class="m">fixed — shellcheck is pinned in lint-tools and both gates now assert it is there</span>
3915
3936
  </div>
3916
3937
  </article>
3938
+
3939
+ <article class="cap rcard" id="mcp-one-benefit-nameable-task">
3940
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">Interop · Adoption</span></div>
3941
+ <h3>MCP — one benefit, one observable trigger (and stop routing through boost_info)</h3>
3942
+ <p>Gemini CLI used the boost MCP server only when asked by hand, never on its own.
3943
+ Two causes, and neither was fixed by writing more instructions.
3944
+ <strong>Placement:</strong> Gemini appends a server's <code>initialize</code>
3945
+ <code>instructions</code> to the <em>GEMINI.md memory tier</em>
3946
+ (<code>getMcpInstructions</code> → <code>categorizeMemoryContents</code>), gated on
3947
+ folder trust — so the block reads as background documentation, sits far from the
3948
+ tool-call decision, and is dropped entirely in an untrusted folder. Claude Code puts
3949
+ the same text in the system prompt, which is why the gap only showed on Gemini. The
3950
+ tool descriptions are the only boost text reliably in context at the decision point,
3951
+ so each now repeats the trigger, the cost and the miss protocol instead of deferring
3952
+ upward. <strong>Wording:</strong> <a href="#mcp-check-skills-before-starting-a-task">the
3953
+ previous pass</a> declared three triggers bounded by a proportionality note, and the
3954
+ bound beat the triggers every time — judging work "non-trivial" takes judgement, while
3955
+ "this turn looks small" is free, and every turn looks small when it opens. Collapse to
3956
+ <strong>one</strong> benefit (find a skill for the task in front of you) and
3957
+ <strong>one observable</strong> trigger (<em>does the task have a name?</em>), which an
3958
+ agent can pattern-match without deciding anything. Authoring drops from co-equal
3959
+ trigger to a clause on <code>boost_search</code> — it is the rarer moment and it was
3960
+ crowding out the common one. Three additions are load-bearing, not padding: the stated
3961
+ <em>cost</em> (read-only, ~1s, installs nothing) kills the unknown-price hesitation; the
3962
+ <em>miss protocol</em> ("finding nothing is a good outcome") stops one empty search
3963
+ teaching an agent to quit checking; and "the task stays yours" is what makes an agent
3964
+ willing to look, since one that expects a hit to seize the work is safer not looking.
3965
+ Finally, drop <code>boost_info</code> from the advertised flow — <code>boost_search</code>
3966
+ already returns each hit's description, the only field that changes an install decision,
3967
+ so the hop bought a round-trip and a decision point and nothing else. It stays registered
3968
+ for looking up a name from elsewhere, and its description now says so. All of it is
3969
+ pinned by tests, including negative assertions so authoring and the info hop cannot
3970
+ creep back.</p>
3971
+ <div class="meta">
3972
+ <span class="m">Complexity <b>S</b></span>
3973
+ <span class="m hi">Impact <b>High</b></span>
3974
+ <span class="m">Wow <b class="wow">★★★</b></span>
3975
+ <span class="m">agent reflex</span>
3976
+ </div>
3977
+ </article>
3917
3978
  <!-- /ROADMAP:cards -->
3918
3979
 
3919
3980
  </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"