boost-skill-cli 1.2.65__tar.gz → 1.2.67__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 (835) hide show
  1. {boost_skill_cli-1.2.65/boost_skill_cli.egg-info → boost_skill_cli-1.2.67}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/bmad.py +22 -2
  4. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  5. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +12 -0
  6. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/tool-call-eval-tier.md +24 -3
  7. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap.html +35 -2
  8. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_tools.py +61 -9
  9. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_bmad_core.py +55 -0
  10. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_tools.py +62 -0
  11. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.gitattributes +0 -0
  12. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.gitignore +0 -0
  13. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.gitleaks.toml +0 -0
  14. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.htmlvalidate.json +0 -0
  15. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.lighthouserc.json +0 -0
  16. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.lycheeignore +0 -0
  17. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.markdownlint-cli2.jsonc +0 -0
  18. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.pre-commit-config.yaml +0 -0
  19. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.stylelintrc.json +0 -0
  20. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale/styles/boost/AIWriting.yml +0 -0
  21. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale/styles/boost/Terminology.yml +0 -0
  22. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  23. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale.ini +0 -0
  24. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/CLAUDE.md +0 -0
  25. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/CODE_OF_CONDUCT.md +0 -0
  26. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/CONTRIBUTING.md +0 -0
  27. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/DCO +0 -0
  28. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/GOVERNANCE.md +0 -0
  29. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/LICENSE +0 -0
  30. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/MAINTAINERS.md +0 -0
  31. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/MANIFEST.in +0 -0
  32. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/Makefile +0 -0
  33. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/README.md +0 -0
  34. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/SECURITY.md +0 -0
  35. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/SUPPORT.md +0 -0
  36. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost +0 -0
  37. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/__init__.py +0 -0
  38. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/__main__.py +0 -0
  39. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/cli.py +0 -0
  40. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/cliparse.py +0 -0
  41. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/__init__.py +0 -0
  42. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/_common.py +0 -0
  43. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/bmad.py +0 -0
  44. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/configuration.py +0 -0
  45. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/discovery.py +0 -0
  46. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/hooks.py +0 -0
  47. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/info.py +0 -0
  48. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/intelligence.py +0 -0
  49. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/pkg.py +0 -0
  50. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/quality.py +0 -0
  51. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/quickstart.py +0 -0
  52. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/run.py +0 -0
  53. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/safety.py +0 -0
  54. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/taps.py +0 -0
  55. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/team.py +0 -0
  56. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/__init__.py +0 -0
  57. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/adapters.py +0 -0
  58. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/agents.py +0 -0
  59. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/ai.py +0 -0
  60. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/aihost.py +0 -0
  61. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/bootstrap.py +0 -0
  62. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/browse.py +0 -0
  63. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/builtin.py +0 -0
  64. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/capabilities.py +0 -0
  65. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/catalog.py +0 -0
  66. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/catalogbundle.py +0 -0
  67. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/chat.py +0 -0
  68. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/claude_settings.py +0 -0
  69. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/complete.py +0 -0
  70. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/config.py +0 -0
  71. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/dense.py +0 -0
  72. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/ed25519.py +0 -0
  73. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/embed.py +0 -0
  74. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/faithfulness.py +0 -0
  75. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/frontmatter.py +0 -0
  76. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/gitutil.py +0 -0
  77. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/hookhost.py +0 -0
  78. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/imperative.py +0 -0
  79. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/injectscan.py +0 -0
  80. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/installscan.py +0 -0
  81. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/integrity.py +0 -0
  82. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/journal.py +0 -0
  83. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/localembed.py +0 -0
  84. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/lockfile.py +0 -0
  85. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/logs.py +0 -0
  86. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/mcp.py +0 -0
  87. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/mcpdecl.py +0 -0
  88. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/mcphost.py +0 -0
  89. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/minisign.py +0 -0
  90. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/nethttp.py +0 -0
  91. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/output.py +0 -0
  92. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/paths.py +0 -0
  93. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/policy.py +0 -0
  94. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/projectlock.py +0 -0
  95. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/provenance.py +0 -0
  96. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/rag.py +0 -0
  97. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/registry.py +0 -0
  98. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/resolve.py +0 -0
  99. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/rules.py +0 -0
  100. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/scopes.py +0 -0
  101. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/secretscan.py +0 -0
  102. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/selfupdate.py +0 -0
  103. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/serve.py +0 -0
  104. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/shards.py +0 -0
  105. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/stackprobe.py +0 -0
  106. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/staleness.py +0 -0
  107. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/store.py +0 -0
  108. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/trustaudit.py +0 -0
  109. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/typosquat.py +0 -0
  110. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/updatediff.py +0 -0
  111. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/util.py +0 -0
  112. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/workflows.py +0 -0
  113. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/data/registries.json +0 -0
  114. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/data/rules/boost-first.mdc +0 -0
  115. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/errors.py +0 -0
  116. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/spin.py +0 -0
  117. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/__init__.py +0 -0
  118. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/_compat.py +0 -0
  119. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/graph.py +0 -0
  120. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/loader.py +0 -0
  121. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/py.typed +0 -0
  122. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/retriever.py +0 -0
  123. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  124. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  125. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  126. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/requires.txt +0 -0
  127. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/top_level.txt +0 -0
  128. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/codecov.yml +0 -0
  129. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/.claude/settings.local.json +0 -0
  130. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/DEBUGGING.md +0 -0
  131. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/adapters.html +0 -0
  132. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/README.md +0 -0
  133. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-components-core.md +0 -0
  134. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-containers.md +0 -0
  135. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-context.md +0 -0
  136. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-dynamic-install.md +0 -0
  137. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/bmad.md +0 -0
  138. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/distill.gif +0 -0
  139. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/doctor.gif +0 -0
  140. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/explain.gif +0 -0
  141. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/hooks.gif +0 -0
  142. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/install.gif +0 -0
  143. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/pulse.gif +0 -0
  144. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/search.gif +0 -0
  145. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/tap.gif +0 -0
  146. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/distill.tape +0 -0
  147. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/doctor.tape +0 -0
  148. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/explain.tape +0 -0
  149. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/hooks.tape +0 -0
  150. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/install.tape +0 -0
  151. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/pulse.tape +0 -0
  152. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/search.tape +0 -0
  153. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/tap.tape +0 -0
  154. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel.html +0 -0
  155. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/chat.html +0 -0
  156. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/code-review.md +0 -0
  157. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/commands.html +0 -0
  158. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/commit-audit.md +0 -0
  159. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo-index.json +0 -0
  160. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo.gif +0 -0
  161. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo.html +0 -0
  162. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo.tape +0 -0
  163. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/dependencies.md +0 -0
  164. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/design-roadmap.html +0 -0
  165. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/eval-latest.json +0 -0
  166. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/eval.html +0 -0
  167. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/index.html +0 -0
  168. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/langchain.html +0 -0
  169. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/mcp-hub.html +0 -0
  170. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/openssf-badge.md +0 -0
  171. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/openssf-playbook.md +0 -0
  172. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/rag-architecture.md +0 -0
  173. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D01.md +0 -0
  174. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D02.md +0 -0
  175. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D03.md +0 -0
  176. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D04.md +0 -0
  177. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D05.md +0 -0
  178. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D06.md +0 -0
  179. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D07.md +0 -0
  180. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D08.md +0 -0
  181. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D09.md +0 -0
  182. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D10.md +0 -0
  183. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D11.md +0 -0
  184. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D12.md +0 -0
  185. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D13.md +0 -0
  186. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D14.md +0 -0
  187. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D15.md +0 -0
  188. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D16.md +0 -0
  189. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D17.md +0 -0
  190. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D18.md +0 -0
  191. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D19.md +0 -0
  192. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D20.md +0 -0
  193. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D21.md +0 -0
  194. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D22.md +0 -0
  195. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D23.md +0 -0
  196. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D24.md +0 -0
  197. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D25.md +0 -0
  198. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D26.md +0 -0
  199. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D27.md +0 -0
  200. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  201. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  202. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  203. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  204. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  205. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  206. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  207. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  208. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  209. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  210. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  211. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  212. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  213. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  214. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  215. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-first-rule.md +0 -0
  216. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  217. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  218. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/branch-current-gate.md +0 -0
  219. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  220. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  221. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  222. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  223. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  224. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  225. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  226. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  227. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  228. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  229. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  230. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  231. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  232. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  233. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cli-command-audit.md +0 -0
  234. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  235. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  236. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  237. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  238. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/command-carousel-page.md +0 -0
  239. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  240. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  241. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  242. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  243. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  244. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  245. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  246. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  247. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  248. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  249. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  250. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  251. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  252. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  253. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  254. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  255. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  256. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  257. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  258. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  259. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  260. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  261. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  262. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  263. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  264. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  265. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  266. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  267. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  268. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  269. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  270. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  271. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  272. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  273. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  274. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  275. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  276. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  277. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  278. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  279. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  280. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  281. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  282. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  283. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  284. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  285. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  286. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  287. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  288. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  289. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  290. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  291. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  292. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/github-community-health-files.md +0 -0
  293. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  294. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  295. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  296. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  297. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  298. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  299. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  300. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  301. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  302. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  303. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  304. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  305. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  306. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  307. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  308. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  309. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  310. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  311. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  312. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  313. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  314. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  315. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  316. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  317. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  318. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  319. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  320. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  321. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  322. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  323. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  324. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  325. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  326. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  327. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  328. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  329. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  330. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  331. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  332. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  333. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  334. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  335. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  336. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  337. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  338. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  339. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  340. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  341. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  342. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  343. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  344. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  345. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  346. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  347. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  348. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  349. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  350. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  351. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  352. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  353. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  354. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  355. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  356. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  357. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  358. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  359. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  360. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  361. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  362. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  363. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  364. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  365. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  366. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  367. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  368. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  369. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  370. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-playbook.md +0 -0
  371. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-silver.md +0 -0
  372. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  373. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  374. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  375. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  376. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  377. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  378. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  379. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  380. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  381. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  382. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  383. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  384. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  385. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  386. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  387. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  388. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  389. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  390. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  391. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  392. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  393. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  394. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  395. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  396. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  397. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  398. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  399. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  400. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  401. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  402. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  403. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  404. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/relicence-apache-2.md +0 -0
  405. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  406. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  407. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  408. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  409. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  410. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  411. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  412. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  413. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  414. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  415. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  416. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  417. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  418. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  419. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  420. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  421. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  422. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  423. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  424. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  425. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  426. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  427. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  428. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  429. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  430. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  431. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  432. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  433. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  434. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  435. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  436. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  437. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  438. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  439. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  440. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  441. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  442. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  443. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  444. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  445. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  446. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  447. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  448. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  449. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  450. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  451. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  452. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  453. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  454. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  455. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  456. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  457. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  458. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  459. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  460. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  461. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  462. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  463. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  464. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  465. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  466. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  467. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  468. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  469. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  470. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  471. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  472. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  473. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  474. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  475. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  476. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  477. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  478. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  479. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  480. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  481. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  482. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  483. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  484. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  485. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workspace-scope-install.md +0 -0
  486. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/zip-strict-audit.md +0 -0
  487. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  488. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  489. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/security-design.md +0 -0
  490. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/semantic-search.md +0 -0
  491. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  492. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/verifying-releases.md +0 -0
  493. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/meta.md +0 -0
  494. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/openvex.json +0 -0
  495. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  496. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  497. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  498. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  499. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/eslint.config.mjs +0 -0
  500. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/README.md +0 -0
  501. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/__init__.py +0 -0
  502. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/baseline.json +0 -0
  503. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/faithfulness.py +0 -0
  504. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/golden_set.json +0 -0
  505. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/make_corpus.py +0 -0
  506. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/make_golden.py +0 -0
  507. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/metrics.py +0 -0
  508. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/publish_golden_dataset.py +0 -0
  509. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/run_evals.py +0 -0
  510. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/examples/README.md +0 -0
  511. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/examples/adapt-demo.sh +0 -0
  512. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/examples/boost-run-prototype.sh +0 -0
  513. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/index.html +0 -0
  514. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/noxfile.py +0 -0
  515. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/pyproject.toml +0 -0
  516. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/coverage-tools.in +0 -0
  517. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/coverage-tools.txt +0 -0
  518. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/lint-tools.in +0 -0
  519. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/lint-tools.txt +0 -0
  520. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/mutation-tools.in +0 -0
  521. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/mutation-tools.txt +0 -0
  522. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/platform-pins.lock +0 -0
  523. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/release-tools.in +0 -0
  524. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/release-tools.txt +0 -0
  525. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/test-tools.in +0 -0
  526. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/test-tools.txt +0 -0
  527. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/a11y_check.py +0 -0
  528. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/add_spdx_headers.py +0 -0
  529. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/bench_cli.sh +0 -0
  530. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_command_reference.py +0 -0
  531. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_demo_index.py +0 -0
  532. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_registries.py +0 -0
  533. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_roadmap.py +0 -0
  534. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_scale_corpus.py +0 -0
  535. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_vex.py +0 -0
  536. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_anchors.py +0 -0
  537. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_branch_current.py +0 -0
  538. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_dco.py +0 -0
  539. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_licenses.py +0 -0
  540. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_reproducible.py +0 -0
  541. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_required_checks.py +0 -0
  542. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/ensure_eval_corpus.sh +0 -0
  543. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_corpus.py +0 -0
  544. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_explain.py +0 -0
  545. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_gate.py +0 -0
  546. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_recommend.py +0 -0
  547. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_retrieval.py +0 -0
  548. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_stats_summary.py +0 -0
  549. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/import_budget.py +0 -0
  550. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/lock_toolchain.py +0 -0
  551. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/measure_registry.py +0 -0
  552. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/mutation_gate.py +0 -0
  553. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/mutation_shards.py +0 -0
  554. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/mutation_weights.json +0 -0
  555. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/normalize_sdist.py +0 -0
  556. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/page_budget.py +0 -0
  557. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/perf_gate.py +0 -0
  558. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/post_deploy_smoke.py +0 -0
  559. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/publish_eval_json.py +0 -0
  560. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/publish_shards.py +0 -0
  561. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/release_guard.py +0 -0
  562. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/release_preflight.py +0 -0
  563. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/serve_docs.py +0 -0
  564. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/shard_plan.py +0 -0
  565. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/setup.cfg +0 -0
  566. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/sonar-project.properties +0 -0
  567. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/README.md +0 -0
  568. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/boost.css +0 -0
  569. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/boost.js +0 -0
  570. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/demo.html +0 -0
  571. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/adapt.feature +0 -0
  572. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/browse.feature +0 -0
  573. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/count.feature +0 -0
  574. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/discover.feature +0 -0
  575. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/doctor.feature +0 -0
  576. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/environment.py +0 -0
  577. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/explain.feature +0 -0
  578. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/index.feature +0 -0
  579. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/install.feature +0 -0
  580. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/list.feature +0 -0
  581. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/mcp.feature +0 -0
  582. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/search.feature +0 -0
  583. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/cli_steps.py +0 -0
  584. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/discovery_steps.py +0 -0
  585. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/mcp_steps.py +0 -0
  586. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/quality_steps.py +0 -0
  587. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/conftest.py +0 -0
  588. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/baseline.json +0 -0
  589. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/explain.jsonl +0 -0
  590. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  591. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/golden-natural.jsonl +0 -0
  592. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/golden.jsonl +0 -0
  593. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/recommend.jsonl +0 -0
  594. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/taps-scale.txt +0 -0
  595. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/taps.txt +0 -0
  596. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/tool_calls.jsonl +0 -0
  597. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_bmad_all_hosts.py +0 -0
  598. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_capabilities_policy.py +0 -0
  599. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_adapt.py +0 -0
  600. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_bmad.py +0 -0
  601. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_catalog.py +0 -0
  602. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_chat.py +0 -0
  603. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_configuration.py +0 -0
  604. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_discovery.py +0 -0
  605. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_hooks.py +0 -0
  606. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_hooks_gemini.py +0 -0
  607. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_info.py +0 -0
  608. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_intelligence.py +0 -0
  609. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_pane_width.py +0 -0
  610. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_pkg.py +0 -0
  611. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_quality.py +0 -0
  612. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_quickstart.py +0 -0
  613. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_tap_pins.py +0 -0
  614. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_taps.py +0 -0
  615. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_team.py +0 -0
  616. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_everyday_loop.py +0 -0
  617. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_integrity_enforce.py +0 -0
  618. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_kind_conformance.py +0 -0
  619. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_property_parsers.py +0 -0
  620. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_run.py +0 -0
  621. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_tap_signing.py +0 -0
  622. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_workspace_scope.py +0 -0
  623. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/README.md +0 -0
  624. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  625. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  626. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  627. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  628. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  629. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  630. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  631. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  632. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  633. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  634. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  635. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  636. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  637. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  638. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  639. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  640. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  641. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  642. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  643. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  644. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  645. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  646. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  647. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/fuzz_frontmatter.py +0 -0
  648. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/fuzz_registry.py +0 -0
  649. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/conftest.py +0 -0
  650. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/test_graph.py +0 -0
  651. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/test_loader.py +0 -0
  652. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/test_retriever.py +0 -0
  653. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/make_fixture.py +0 -0
  654. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/perf/test_benchmarks.py +0 -0
  655. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/smoke.sh +0 -0
  656. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_a11y_check.py +0 -0
  657. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_action_pin_lockstep.py +0 -0
  658. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_adapters.py +0 -0
  659. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_adapters_multi.py +0 -0
  660. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_adapters_runner.py +0 -0
  661. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_agents.py +0 -0
  662. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_ai.py +0 -0
  663. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_aihost.py +0 -0
  664. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_boost_first_offer.py +0 -0
  665. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_bootstrap.py +0 -0
  666. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_bot_pr_dco.py +0 -0
  667. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_branch_current.py +0 -0
  668. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_browse.py +0 -0
  669. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_builtin.py +0 -0
  670. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_capabilities.py +0 -0
  671. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_catalog.py +0 -0
  672. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_catalogbundle.py +0 -0
  673. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_chat.py +0 -0
  674. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_anchors.py +0 -0
  675. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_dco.py +0 -0
  676. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_licenses.py +0 -0
  677. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_reproducible.py +0 -0
  678. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_claude_settings.py +0 -0
  679. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_clean_internal_cache.py +0 -0
  680. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_cli_update_shards.py +0 -0
  681. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_cliparse.py +0 -0
  682. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_codeql_analysis_key.py +0 -0
  683. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_command_reference_fresh.py +0 -0
  684. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_community_health_files.py +0 -0
  685. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_compact.py +0 -0
  686. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_complete.py +0 -0
  687. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_complete_rc_block.py +0 -0
  688. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_config.py +0 -0
  689. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_content_dedupe.py +0 -0
  690. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_content_identity.py +0 -0
  691. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_crash_redaction.py +0 -0
  692. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dedup_trust.py +0 -0
  693. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_demo_index.py +0 -0
  694. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense.py +0 -0
  695. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  696. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_embed_dedupe.py +0 -0
  697. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_entry_reuse.py +0 -0
  698. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_fallback.py +0 -0
  699. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_fix_hint.py +0 -0
  700. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_progress.py +0 -0
  701. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_quantized.py +0 -0
  702. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_ready_order.py +0 -0
  703. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_shard_real_schema.py +0 -0
  704. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  705. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_shards.py +0 -0
  706. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_status.py +0 -0
  707. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_status_cheap.py +0 -0
  708. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_vector_dedupe.py +0 -0
  709. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dependabot_config.py +0 -0
  710. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_docs_pages_linked.py +0 -0
  711. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_docsite_chrome.py +0 -0
  712. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_ed25519.py +0 -0
  713. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_embed.py +0 -0
  714. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_embed_local.py +0 -0
  715. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_embed_truncated_response.py +0 -0
  716. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_entry_key.py +0 -0
  717. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_errors_and_cli_table.py +0 -0
  718. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_baseline.py +0 -0
  719. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_corpus.py +0 -0
  720. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_faithfulness.py +0 -0
  721. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_gate.py +0 -0
  722. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_grading.py +0 -0
  723. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_metrics.py +0 -0
  724. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_stats_summary.py +0 -0
  725. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_tools_probe.py +0 -0
  726. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  727. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_faithfulness.py +0 -0
  728. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_frontmatter.py +0 -0
  729. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_fuzz_targets.py +0 -0
  730. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  731. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitleaks_config.py +0 -0
  732. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitutil.py +0 -0
  733. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitutil_lfs.py +0 -0
  734. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitutil_sparse.py +0 -0
  735. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gstack_coexistence.py +0 -0
  736. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_hook_settings_hosts.py +0 -0
  737. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_hookhost.py +0 -0
  738. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_imperative.py +0 -0
  739. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_import_budget.py +0 -0
  740. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_injectscan.py +0 -0
  741. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_install_permission_error.py +0 -0
  742. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_installscan.py +0 -0
  743. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_integrity.py +0 -0
  744. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_journal.py +0 -0
  745. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_langchain_packaging.py +0 -0
  746. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_link_ownership.py +0 -0
  747. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_localembed.py +0 -0
  748. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_localembed_e2e.py +0 -0
  749. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_lockfile.py +0 -0
  750. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_logs.py +0 -0
  751. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_marketing_counts.py +0 -0
  752. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcp.py +0 -0
  753. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcp_install_scan.py +0 -0
  754. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcp_read.py +0 -0
  755. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcpdecl.py +0 -0
  756. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcphost.py +0 -0
  757. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_measure_registry.py +0 -0
  758. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_minisign.py +0 -0
  759. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutation_hardening.py +0 -0
  760. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutation_shards.py +0 -0
  761. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutation_subfile_shards.py +0 -0
  762. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutmut_source_paths.py +0 -0
  763. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_nethttp.py +0 -0
  764. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_normalize_sdist.py +0 -0
  765. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_output.py +0 -0
  766. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_page_budget.py +0 -0
  767. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_paths.py +0 -0
  768. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_perf_gate.py +0 -0
  769. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_pkg_confusions.py +0 -0
  770. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_pkg_injection.py +0 -0
  771. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_pkg_secrets.py +0 -0
  772. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_platform_pins.py +0 -0
  773. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_policy.py +0 -0
  774. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_post_deploy_smoke.py +0 -0
  775. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_project_mcp_sidecar.py +0 -0
  776. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_projectlock.py +0 -0
  777. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_provenance.py +0 -0
  778. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_publish_golden_dataset.py +0 -0
  779. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rag.py +0 -0
  780. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rag_fastpath.py +0 -0
  781. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rag_fusion.py +0 -0
  782. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registries_fresh.py +0 -0
  783. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry.py +0 -0
  784. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry_categories.py +0 -0
  785. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry_control_chars.py +0 -0
  786. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry_parallel.py +0 -0
  787. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_release_guard.py +0 -0
  788. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_release_preflight.py +0 -0
  789. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_required_checks.py +0 -0
  790. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rerank_cache.py +0 -0
  791. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_resolve.py +0 -0
  792. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_roadmap_fresh.py +0 -0
  793. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rules.py +0 -0
  794. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_scale_corpus.py +0 -0
  795. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_scopes.py +0 -0
  796. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_secretscan.py +0 -0
  797. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_selfupdate.py +0 -0
  798. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_serve.py +0 -0
  799. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_serve_docs.py +0 -0
  800. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shard_plan.py +0 -0
  801. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards.py +0 -0
  802. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards_incremental.py +0 -0
  803. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards_ingest.py +0 -0
  804. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards_matrix.py +0 -0
  805. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_smoke_covers_every_command.py +0 -0
  806. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_spdx_headers.py +0 -0
  807. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_spin.py +0 -0
  808. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_stackprobe.py +0 -0
  809. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_staleness.py +0 -0
  810. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_store.py +0 -0
  811. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_store_materialize.py +0 -0
  812. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_sync_blocked_links.py +0 -0
  813. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  814. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_tap_pins.py +0 -0
  815. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_token_parity.py +0 -0
  816. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_toolchain_lock.py +0 -0
  817. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_trustaudit.py +0 -0
  818. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_typosquat.py +0 -0
  819. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_updatediff.py +0 -0
  820. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_util.py +0 -0
  821. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_version.py +0 -0
  822. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_version_tags.py +0 -0
  823. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_vex.py +0 -0
  824. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_visual_harness_flags.py +0 -0
  825. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_concurrency.py +0 -0
  826. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  827. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  828. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_timeouts.py +0 -0
  829. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflows.py +0 -0
  830. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  831. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/a11y_check.mjs +0 -0
  832. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/console_check.mjs +0 -0
  833. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/package-lock.json +0 -0
  834. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/package.json +0 -0
  835. {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/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.2.65
3
+ Version: 1.2.67
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.65'
22
- __version_tuple__ = version_tuple = (1, 2, 65)
21
+ __version__ = version = '1.2.67'
22
+ __version_tuple__ = version_tuple = (1, 2, 67)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -371,6 +371,23 @@ is pure noise. A 45-word paragraph that happens to begin "how should we…" is a
371
371
  design brief, so length is what separates them.
372
372
  """
373
373
 
374
+ LONG_PROMPT_WORDS = 60
375
+ """Past this, one keyword is not enough evidence to route on.
376
+
377
+ The other trivial gates all key on *shape* — a question, a slash command, too
378
+ few words — and a pasted terminal session is none of those. The day the
379
+ autopilot shipped, a user pasted ~90 words of their own shell output back into
380
+ the chat and got a full delegation banner because `\\bupdate\\b` matched inside
381
+ "boost self-update": one weak hit in a wall of text.
382
+
383
+ Density is the missing signal. In a short prompt every word is deliberate, so a
384
+ single keyword is strong evidence; in a long one it is easily incidental, while
385
+ a genuine long request names its work more than once ("refactor … and update
386
+ …"). Requiring two distinct hits above this length costs real requests nothing
387
+ and silences pastes, which is the right way round: this module would rather
388
+ under-route than talk over someone.
389
+ """
390
+
374
391
 
375
392
  def classify(prompt: str) -> str:
376
393
  """Name the track a prompt belongs to, or ``"trivial"`` to stay silent.
@@ -378,7 +395,8 @@ def classify(prompt: str) -> str:
378
395
  Silence is the default for anything that is not recognisably a unit of
379
396
  work: empty input, an acknowledgement, a slash command (which carries its
380
397
  own instructions), a short informational question, an explicit opt-out
381
- ("no bmad"), or a prompt that matches no track at all.
398
+ ("no bmad"), a prompt that matches no track at all, or — past
399
+ :data:`LONG_PROMPT_WORDS` — one that matches only a single keyword.
382
400
  """
383
401
  text = prompt.strip()
384
402
  if not text or _SLASH.match(text) or _OPT_OUT.search(text):
@@ -389,10 +407,12 @@ def classify(prompt: str) -> str:
389
407
  if (_INFO_QUESTION.match(text) and len(words) <= QUESTION_MAX_WORDS
390
408
  and not _SECOND_SENTENCE.search(text)):
391
409
  return TRIVIAL
410
+ # Distinct patterns matched, not occurrences: saying "update" twenty times
411
+ # is one piece of evidence, which is what keeps a repetitive log quiet.
392
412
  scores = {t: sum(1 for rx in pats if rx.search(text))
393
413
  for t, pats in _COMPILED.items()}
394
414
  best = max(scores.values())
395
- if best == 0:
415
+ if best == 0 or (best < 2 and len(words) > LONG_PROMPT_WORDS):
396
416
  return TRIVIAL
397
417
  return next(t for t in TRACK_ORDER if scores[t] == best)
398
418
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.65
3
+ Version: 1.2.67
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -84,6 +84,18 @@ from the transcript, so every message the user typed would vanish until they fou
84
84
  The guard has to sit outside any version of boost, so the installed command ends
85
85
  <code>|| true</code>.
86
86
 
87
+ <b>First production tuning: evidence has to scale with prompt length.</b> Within an hour of
88
+ release, the first real-world false positive arrived — a user pasted their own terminal session
89
+ back into the chat (~90 words of <code>boost self-update</code> output) and got a full delegation
90
+ banner, because <code>\bupdate\b</code> matches inside &ldquo;self-<b>update</b>&rdquo;. One weak
91
+ hit in a wall of text. Every existing trivial gate keys on <em>shape</em> &mdash; a question, a
92
+ slash command, too few words &mdash; and a pasted log is none of those, so none of them could
93
+ fire. The missing signal was density: in a short prompt every word is deliberate, so one keyword
94
+ is strong evidence; in a long one it is easily incidental, while a genuine long request names its
95
+ work more than once (&ldquo;refactor &hellip; and update &hellip;&rdquo;). Past
96
+ <code>LONG_PROMPT_WORDS</code> (60) the router now needs two distinct keyword hits. Verified
97
+ against the real paste and against 80- and 69-word genuine requests, which still route.
98
+
87
99
  <b>Two keyword-table defects, found by routing real prompts rather than by reading.</b>
88
100
  <code>\bfix\w*\b</code> matches &ldquo;fixture&rdquo; and <code>\bchange\w*\b</code> matches
89
101
  &ldquo;changelog&rdquo; — the exact words the quality and docs tables claim — so &ldquo;add
@@ -2,13 +2,13 @@
2
2
  id: tool-call-eval-tier
3
3
  board: code
4
4
  section: planned
5
- status: planned
5
+ status: inflight
6
6
  category: Quality · Eval
7
7
  complexity: L
8
8
  impact: High
9
9
  wow: 4
10
- note: the Claude Code probe was broken and its finding was an artifact; fixed, second host still unwritten
11
- owner:
10
+ note: probe fixed; --strict-mcp-config shipped for the surface confound; second host (Gemini CLI) still unwritten
11
+ owner: loop/eval-tools-strict-mcp
12
12
  order: 96
13
13
  title: a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions
14
14
  ---
@@ -100,6 +100,27 @@ one this card argues about.
100
100
  <code>--strict-mcp-config</code> with a boost-only config cuts that sharply and controls the
101
101
  surface confound in the same move.
102
102
 
103
+ <b>2026-08-31: <code>--strict-mcp-config</code> shipped.</b> <code>eval_tools.py</code> now takes
104
+ a <code>--strict-mcp-config</code> flag: it writes a boost-only <code>mcpServers</code> config
105
+ (the same <code>&lt;launcher&gt; mcp --stdio</code> invocation and fork-safety <code>env</code>
106
+ <code>core.mcphost.register_argv</code> uses for a real registration — confirmed against an actual
107
+ <code>claude mcp add-json</code> write, not guessed at the schema) to a temp file and passes
108
+ <code>--strict-mcp-config --mcp-config &lt;path&gt;</code> to every <code>claude -p</code> call,
109
+ cleaning the file up afterward. This session's sandbox had no network path to PyPI, so the pinned
110
+ toolchain (<code>pytest</code>, <code>ruff</code>, <code>mypy</code>, …) could not be installed and
111
+ <code>make check</code> could not be run here; the change was verified by hand instead — direct
112
+ <code>python3.12</code> import of the module, the new unit tests executed by eye against the
113
+ interpreter, <code>py_compile</code>, a manual line-length check against ruff's 88-column default,
114
+ and an end-to-end dry run with <code>subprocess.run</code> mocked that confirms the flags land on
115
+ the argv and the temp file is created and removed. CI runs the real gate on the PR.
116
+
117
+ <b>Still unwritten: the second host arm (Gemini CLI).</b> No <code>gemini</code> CLI was reachable
118
+ in this sandbox to capture a real stream from, and building that arm on an invented model of
119
+ Gemini's non-interactive output format is the exact mistake this card's own probe fix (2026-08-30)
120
+ already paid for once — "a fixture the author invented cannot catch the author's wrong model of the
121
+ input." That arm stays a placeholder until it can be built against a captured real stream, on a
122
+ machine with the <code>gemini</code> CLI installed.
123
+
103
124
  <b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
104
125
  next surface change can regress against, and a way to retire claims that survive only because
105
126
  nobody can check them.
@@ -814,7 +814,7 @@ an oversight.</p></details>
814
814
  </article>
815
815
 
816
816
  <article class="cap rcard" id="tool-call-eval-tier">
817
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Eval</span></div>
817
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">Quality · Eval</span></div>
818
818
  <h3>a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions</h3>
819
819
  <p>boost's required gate floors <b>four</b> retrieval metrics — recall@k &ge; 0.78, hit@1 &ge; 0.40,
820
820
  MRR &ge; 0.52, nDCG@k &ge; 0.58 — over a 91-query golden set and a 10,152-entry corpus, every
@@ -904,6 +904,27 @@ one this card argues about.
904
904
  <code>--strict-mcp-config</code> with a boost-only config cuts that sharply and controls the
905
905
  surface confound in the same move.
906
906
 
907
+ <b>2026-08-31: <code>--strict-mcp-config</code> shipped.</b> <code>eval_tools.py</code> now takes
908
+ a <code>--strict-mcp-config</code> flag: it writes a boost-only <code>mcpServers</code> config
909
+ (the same <code>&lt;launcher&gt; mcp --stdio</code> invocation and fork-safety <code>env</code>
910
+ <code>core.mcphost.register_argv</code> uses for a real registration — confirmed against an actual
911
+ <code>claude mcp add-json</code> write, not guessed at the schema) to a temp file and passes
912
+ <code>--strict-mcp-config --mcp-config &lt;path&gt;</code> to every <code>claude -p</code> call,
913
+ cleaning the file up afterward. This session's sandbox had no network path to PyPI, so the pinned
914
+ toolchain (<code>pytest</code>, <code>ruff</code>, <code>mypy</code>, …) could not be installed and
915
+ <code>make check</code> could not be run here; the change was verified by hand instead — direct
916
+ <code>python3.12</code> import of the module, the new unit tests executed by eye against the
917
+ interpreter, <code>py_compile</code>, a manual line-length check against ruff's 88-column default,
918
+ and an end-to-end dry run with <code>subprocess.run</code> mocked that confirms the flags land on
919
+ the argv and the temp file is created and removed. CI runs the real gate on the PR.
920
+
921
+ <b>Still unwritten: the second host arm (Gemini CLI).</b> No <code>gemini</code> CLI was reachable
922
+ in this sandbox to capture a real stream from, and building that arm on an invented model of
923
+ Gemini's non-interactive output format is the exact mistake this card's own probe fix (2026-08-30)
924
+ already paid for once — "a fixture the author invented cannot catch the author's wrong model of the
925
+ input." That arm stays a placeholder until it can be built against a captured real stream, on a
926
+ machine with the <code>gemini</code> CLI installed.
927
+
907
928
  <b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
908
929
  next surface change can regress against, and a way to retire claims that survive only because
909
930
  nobody can check them.</p>
@@ -911,7 +932,7 @@ nobody can check them.</p>
911
932
  <span class="m">Complexity <b>L</b></span>
912
933
  <span class="m hi">Impact <b>High</b></span>
913
934
  <span class="m">Wow <b class="wow">★★★★</b></span>
914
- <span class="m">the Claude Code probe was broken and its finding was an artifact; fixed, second host still unwritten</span>
935
+ <span class="m">probe fixed; --strict-mcp-config shipped for the surface confound; second host (Gemini CLI) still unwritten</span>
915
936
  </div>
916
937
  </article>
917
938
 
@@ -8665,6 +8686,18 @@ from the transcript, so every message the user typed would vanish until they fou
8665
8686
  The guard has to sit outside any version of boost, so the installed command ends
8666
8687
  <code>|| true</code>.
8667
8688
 
8689
+ <b>First production tuning: evidence has to scale with prompt length.</b> Within an hour of
8690
+ release, the first real-world false positive arrived — a user pasted their own terminal session
8691
+ back into the chat (~90 words of <code>boost self-update</code> output) and got a full delegation
8692
+ banner, because <code>\bupdate\b</code> matches inside &ldquo;self-<b>update</b>&rdquo;. One weak
8693
+ hit in a wall of text. Every existing trivial gate keys on <em>shape</em> &mdash; a question, a
8694
+ slash command, too few words &mdash; and a pasted log is none of those, so none of them could
8695
+ fire. The missing signal was density: in a short prompt every word is deliberate, so one keyword
8696
+ is strong evidence; in a long one it is easily incidental, while a genuine long request names its
8697
+ work more than once (&ldquo;refactor &hellip; and update &hellip;&rdquo;). Past
8698
+ <code>LONG_PROMPT_WORDS</code> (60) the router now needs two distinct keyword hits. Verified
8699
+ against the real paste and against 80- and 69-word genuine requests, which still route.
8700
+
8668
8701
  <b>Two keyword-table defects, found by routing real prompts rather than by reading.</b>
8669
8702
  <code>\bfix\w*\b</code> matches &ldquo;fixture&rdquo; and <code>\bchange\w*\b</code> matches
8670
8703
  &ldquo;changelog&rdquo; — the exact words the quality and docs tables claim — so &ldquo;add
@@ -51,6 +51,7 @@ Usage:
51
51
  python3 scripts/eval_tools.py --dry-run # show the plan, call nothing
52
52
  python3 scripts/eval_tools.py --runs 3 # 3 runs per prompt
53
53
  python3 scripts/eval_tools.py --floor-call 0.60 --ceiling-false-call 0.20
54
+ python3 scripts/eval_tools.py --strict-mcp-config # only boost on the MCP surface
54
55
  """
55
56
  from __future__ import annotations
56
57
 
@@ -61,11 +62,15 @@ import os
61
62
  import shutil
62
63
  import subprocess
63
64
  import sys
65
+ import tempfile
64
66
  from pathlib import Path
65
67
 
66
68
  ROOT = Path(__file__).resolve().parent.parent
67
69
  DEFAULT_SET = ROOT / "tests" / "eval" / "tool_calls.jsonl"
68
70
 
71
+ sys.path.insert(0, str(ROOT))
72
+ from boost_cli.core import mcphost # noqa: E402
73
+
69
74
  #: Tool names that count as "the agent asked boost". Prefixed forms are matched
70
75
  #: too — hosts namespace MCP tools differently (`mcp__boost__boost_search`,
71
76
  #: `mcp_boost_boost_search`), and matching the bare suffix keeps one list
@@ -267,15 +272,43 @@ def claude_available() -> bool:
267
272
  return shutil.which("claude") is not None
268
273
 
269
274
 
270
- def run_claude(prompt: str, timeout: int) -> str | None:
275
+ def strict_mcp_config(launcher: str) -> dict:
276
+ """The boost-only `--mcp-config` payload for a `claude -p` run.
277
+
278
+ Claude Code's own `mcpServers` shape (`{"mcpServers": {name: {"command",
279
+ "args", "env"}}}` — confirmed against a real `claude mcp add-json` write,
280
+ not guessed) with exactly one entry: boost, launched the same way
281
+ `core.mcphost.register_argv` registers it (`<launcher> mcp --stdio`, plus
282
+ `LAUNCH_ENV` — the fork-safety env a real registration always carries, and
283
+ whose absence is a macOS SIGABRT, not a cosmetic gap). Kept a plain
284
+ function, not a file write, so a test can assert the shape without
285
+ touching disk.
286
+ """
287
+ return {"mcpServers": {mcphost.SERVER_NAME: {
288
+ "command": launcher, "args": ["mcp", "--stdio"],
289
+ "env": dict(mcphost.LAUNCH_ENV)}}}
290
+
291
+
292
+ def run_claude(prompt: str, timeout: int,
293
+ mcp_config: Path | None = None) -> str | None:
271
294
  """One `claude -p` run, returning its raw event stream (or None).
272
295
 
273
296
  `--output-format stream-json` is what makes the probe honest: it emits a
274
297
  `tool_use` block per call, so the observation is the host's record of what
275
298
  happened rather than the model's account of it.
299
+
300
+ `mcp_config`, when given, adds `--strict-mcp-config --mcp-config <path>` —
301
+ the card's own fix for the confound `_report_surface` can only report, not
302
+ prevent: a machine with several MCP servers registered offers every one of
303
+ their tools to every prompt, which moves the call rate far more than any
304
+ wording edit and costs real tokens describing tools this eval never asked
305
+ about. `--strict-mcp-config` replaces the host's merged configuration with
306
+ only what this file names, so the run sees boost and nothing else.
276
307
  """
277
308
  cmd = ["claude", "-p", prompt, "--output-format", "stream-json",
278
309
  "--verbose", "--max-turns", "2"]
310
+ if mcp_config is not None:
311
+ cmd += ["--strict-mcp-config", "--mcp-config", str(mcp_config)]
279
312
  try:
280
313
  proc = subprocess.run(cmd, capture_output=True, text=True,
281
314
  timeout=timeout)
@@ -365,6 +398,10 @@ def main(argv: list[str] | None = None) -> int:
365
398
  p.add_argument("--report-context", action="store_true", default=True,
366
399
  help="name the installed rules in scope (default on); a "
367
400
  "rate read without them is not attributable to wording")
401
+ p.add_argument("--strict-mcp-config", action="store_true",
402
+ help="run with only boost on the MCP surface (--strict-mcp-config "
403
+ "--mcp-config), so a crowded machine's other servers don't "
404
+ "move the call rate or the token bill")
368
405
  args = p.parse_args(argv)
369
406
 
370
407
  rows = load_set(args.set)
@@ -392,16 +429,31 @@ def main(argv: list[str] | None = None) -> int:
392
429
  if args.report_context:
393
430
  _print_context()
394
431
 
432
+ mcp_config_path = None
433
+ if args.strict_mcp_config:
434
+ from boost_cli.core import paths
435
+ config = strict_mcp_config(str(paths.launcher()))
436
+ fd, name = tempfile.mkstemp(suffix=".json", prefix="boost-eval-mcp-")
437
+ with os.fdopen(fd, "w", encoding="utf-8") as fh:
438
+ json.dump(config, fh)
439
+ mcp_config_path = Path(name)
440
+ print("context: --strict-mcp-config on — this run sees only boost's "
441
+ "own MCP server, not whatever else is registered on this machine.")
442
+
395
443
  observed: dict[str, list[bool]] = {}
396
444
  surface = (0, 0)
397
- for r in rows:
398
- for _ in range(max(1, args.runs)):
399
- events = run_claude(r["prompt"], args.timeout)
400
- if events is None:
401
- continue
402
- if surface == (0, 0):
403
- surface = session_surface(events)
404
- observed.setdefault(r["id"], []).append(called_boost(events))
445
+ try:
446
+ for r in rows:
447
+ for _ in range(max(1, args.runs)):
448
+ events = run_claude(r["prompt"], args.timeout, mcp_config_path)
449
+ if events is None:
450
+ continue
451
+ if surface == (0, 0):
452
+ surface = session_surface(events)
453
+ observed.setdefault(r["id"], []).append(called_boost(events))
454
+ finally:
455
+ if mcp_config_path is not None:
456
+ mcp_config_path.unlink(missing_ok=True)
405
457
  if args.report_context:
406
458
  _report_surface(*surface)
407
459
 
@@ -106,6 +106,61 @@ class TestClassifyTrivial:
106
106
  """`SKILL.md` and `store.install` must not read as end-of-sentence."""
107
107
  assert bmad.classify("what does store.install do with SKILL.md?") == "trivial"
108
108
 
109
+
110
+ class TestEvidenceScalesWithLength:
111
+ """One keyword is strong signal in a short prompt and noise in a long one.
112
+
113
+ Found in production on the day the autopilot shipped: a user pasted their
114
+ terminal session back into the chat and got a full delegation banner, on the
115
+ strength of `\\bupdate\\b` matching inside "boost self-update". ~90 words,
116
+ one weak hit. The shape gates could not catch it — it is not a question, not
117
+ a slash command, and far past the word floor — so the missing rule is about
118
+ evidence density, not shape.
119
+ """
120
+
121
+ # the actual paste, trimmed of ANSI and the shell prompt lines
122
+ PASTE = """boost self-update
123
+ updating via pipx: /opt/homebrew/bin/pipx upgrade boost-skill-cli
124
+ boost v1.0.419 -> v1.0.420
125
+ boost bmad on
126
+ BMAD autopilot ON (global) - 7 persona subagent(s) + prompt router
127
+ personas -> ~/.claude/agents
128
+ hooks -> ~/.claude/settings.json (SessionStart + UserPromptSubmit)
129
+ every substantive prompt now names its lead persona and its definition of
130
+ done; trivial asks are left alone
131
+ restart your agent session to pick up the new subagents
132
+ full BMAD workflow skills (needs Node): boost bmad install
133
+ boost bmad install
134
+ installed BMAD in /Users/cassandragaston/IdeaProjects/boost (46 skills)"""
135
+
136
+ def test_the_paste_that_prompted_this_rule_is_silent(self):
137
+ assert len(self.PASTE.split()) > bmad.LONG_PROMPT_WORDS
138
+ assert bmad.classify(self.PASTE) == "trivial"
139
+
140
+ def test_it_is_the_length_that_silences_it_not_the_words(self):
141
+ """The same weak evidence in a short prompt must still route."""
142
+ assert bmad.classify("update the flag") == "build"
143
+
144
+ def test_a_long_prompt_with_real_evidence_still_routes(self):
145
+ """Two hits is enough — genuine long asks name the work more than once."""
146
+ prompt = (
147
+ "I have been going back and forth on this for a while and I think "
148
+ "the cleanest thing is to refactor the retrieval layer so that the "
149
+ "dense engine and the BM25 engine share one index build path, "
150
+ "because right now they diverge in ways that are hard to reason "
151
+ "about and it keeps biting us whenever somebody touches either "
152
+ "one of them, so please update the module boundary as well while "
153
+ "you are in there and leave it tidy for the next person"
154
+ )
155
+ assert len(prompt.split()) > bmad.LONG_PROMPT_WORDS
156
+ assert bmad.classify(prompt) == "build"
157
+
158
+ def test_repeating_one_keyword_is_not_more_evidence(self):
159
+ """Scoring counts distinct patterns, not occurrences — so a long log
160
+ that says "update" twenty times still scores 1 and stays silent."""
161
+ wordy = ("please update it " * 20) + ("blah " * bmad.LONG_PROMPT_WORDS)
162
+ assert bmad.classify(wordy) == "trivial"
163
+
109
164
  def test_a_question_of_exactly_the_cutoff_length_is_trivial(self):
110
165
  """The boundary itself is inclusive — 30 words is still a question."""
111
166
  prompt = ("how should we handle the case where a tap has no SKILL.md at "
@@ -314,3 +314,65 @@ class TestTheRateIsNeverReadWithoutItsContext:
314
314
  monkeypatch.setattr(lockfile, "all_installed", boom)
315
315
  MOD._print_context()
316
316
  assert "could not read" in capsys.readouterr().out
317
+
318
+
319
+ class TestStrictMcpConfigControlsTheSurfaceConfound:
320
+ """`--strict-mcp-config` is the card's own fix for the confound
321
+ `_report_surface` can only report: a crowded machine's other MCP servers
322
+ move the call rate far more than any wording edit under test.
323
+ """
324
+
325
+ def test_the_config_names_only_boost(self):
326
+ from boost_cli.core import mcphost
327
+ cfg = MOD.strict_mcp_config("/usr/local/bin/boost")
328
+ assert set(cfg["mcpServers"]) == {mcphost.SERVER_NAME}
329
+
330
+ def test_the_entry_launches_boost_as_an_mcp_stdio_server(self):
331
+ # Mirrors core.mcphost.register_argv's own invocation of boost, so a
332
+ # config built here starts the exact same server a real registration
333
+ # would — confirmed against a real `claude mcp add-json` write, not
334
+ # guessed at.
335
+ cfg = MOD.strict_mcp_config("/usr/local/bin/boost")
336
+ entry = cfg["mcpServers"]["boost"]
337
+ assert entry["command"] == "/usr/local/bin/boost"
338
+ assert entry["args"] == ["mcp", "--stdio"]
339
+
340
+ def test_the_entry_carries_the_fork_safety_env(self):
341
+ # Without LAUNCH_ENV a real host can SIGABRT the boost subprocess
342
+ # post-fork on macOS — the same failure core.mcphost.LAUNCH_ENV exists
343
+ # to prevent for every other registration path.
344
+ from boost_cli.core import mcphost
345
+ cfg = MOD.strict_mcp_config("/usr/local/bin/boost")
346
+ assert cfg["mcpServers"]["boost"]["env"] == mcphost.LAUNCH_ENV
347
+
348
+ def test_run_claude_adds_no_flags_without_a_config(self, monkeypatch):
349
+ captured = {}
350
+
351
+ def fake_run(cmd, **kw):
352
+ captured["cmd"] = cmd
353
+ class P:
354
+ stdout = ""
355
+ return P()
356
+
357
+ monkeypatch.setattr(MOD.subprocess, "run", fake_run)
358
+ MOD.run_claude("hi", 5)
359
+ assert "--strict-mcp-config" not in captured["cmd"]
360
+ assert "--mcp-config" not in captured["cmd"]
361
+
362
+ def test_run_claude_adds_both_flags_with_a_config(self, monkeypatch, tmp_path):
363
+ captured = {}
364
+
365
+ def fake_run(cmd, **kw):
366
+ captured["cmd"] = cmd
367
+ class P:
368
+ stdout = ""
369
+ return P()
370
+
371
+ monkeypatch.setattr(MOD.subprocess, "run", fake_run)
372
+ cfg_path = tmp_path / "mcp.json"
373
+ cfg_path.write_text("{}", encoding="utf-8")
374
+ MOD.run_claude("hi", 5, cfg_path)
375
+ cmd = captured["cmd"]
376
+ assert "--strict-mcp-config" in cmd
377
+ i = cmd.index("--mcp-config")
378
+ assert cmd[i + 1] == str(cfg_path)
File without changes
File without changes