boost-skill-cli 1.2.118__tar.gz → 1.2.120__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 (1047) hide show
  1. {boost_skill_cli-1.2.118/boost_skill_cli.egg-info → boost_skill_cli-1.2.120}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/bmad.py +160 -49
  4. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/bmad.py +78 -26
  5. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/hookhost.py +26 -0
  6. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  7. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  8. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/bmad.md +25 -4
  9. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/commands.html +4 -3
  10. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +3 -3
  11. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +3 -3
  12. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap.html +4 -114
  13. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_bmad_all_hosts.py +88 -0
  14. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_bmad.py +166 -7
  15. boost_skill_cli-1.2.120/tests/unit/data/bmad-skills-6.12.0.json +36 -0
  16. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_bmad_core.py +100 -13
  17. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_hookhost.py +26 -0
  18. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.gitattributes +0 -0
  19. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.gitignore +0 -0
  20. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.gitleaks.toml +0 -0
  21. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.htmlvalidate.json +0 -0
  22. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.lighthouserc.json +0 -0
  23. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.lycheeignore +0 -0
  24. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.markdownlint-cli2.jsonc +0 -0
  25. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.pre-commit-config.yaml +0 -0
  26. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.stylelintrc.json +0 -0
  27. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.vale/styles/boost/AIWriting.yml +0 -0
  28. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.vale/styles/boost/Terminology.yml +0 -0
  29. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  30. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/.vale.ini +0 -0
  31. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/CLAUDE.md +0 -0
  32. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/CODE_OF_CONDUCT.md +0 -0
  33. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/CONTRIBUTING.md +0 -0
  34. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/DCO +0 -0
  35. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/GOVERNANCE.md +0 -0
  36. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/LICENSE +0 -0
  37. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/MAINTAINERS.md +0 -0
  38. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/MANIFEST.in +0 -0
  39. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/Makefile +0 -0
  40. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/README.md +0 -0
  41. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/SECURITY.md +0 -0
  42. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/SUPPORT.md +0 -0
  43. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost +0 -0
  44. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/__init__.py +0 -0
  45. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/__main__.py +0 -0
  46. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/cli.py +0 -0
  47. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/cliparse.py +0 -0
  48. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/__init__.py +0 -0
  49. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/_common.py +0 -0
  50. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/configuration.py +0 -0
  51. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/discovery.py +0 -0
  52. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/hooks.py +0 -0
  53. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/info.py +0 -0
  54. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/intelligence.py +0 -0
  55. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/pkg.py +0 -0
  56. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/quality.py +0 -0
  57. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/quickstart.py +0 -0
  58. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/run.py +0 -0
  59. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/safety.py +0 -0
  60. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/taps.py +0 -0
  61. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/commands/team.py +0 -0
  62. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/__init__.py +0 -0
  63. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/adapters.py +0 -0
  64. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/agents.py +0 -0
  65. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/ai.py +0 -0
  66. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/aihost.py +0 -0
  67. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/archive.py +0 -0
  68. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/bootstrap.py +0 -0
  69. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/browse.py +0 -0
  70. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/builtin.py +0 -0
  71. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/capabilities.py +0 -0
  72. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/catalog.py +0 -0
  73. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/catalogbundle.py +0 -0
  74. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/chat.py +0 -0
  75. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/claude_settings.py +0 -0
  76. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/cohort.py +0 -0
  77. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/complete.py +0 -0
  78. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/config.py +0 -0
  79. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/dense.py +0 -0
  80. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/deps.py +0 -0
  81. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/discovery.py +0 -0
  82. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/ed25519.py +0 -0
  83. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/embed.py +0 -0
  84. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/faithfulness.py +0 -0
  85. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/frontmatter.py +0 -0
  86. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/gitutil.py +0 -0
  87. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/imperative.py +0 -0
  88. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/injectscan.py +0 -0
  89. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/installscan.py +0 -0
  90. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/integrity.py +0 -0
  91. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/journal.py +0 -0
  92. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/jsonstate.py +0 -0
  93. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/localembed.py +0 -0
  94. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/lockfile.py +0 -0
  95. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/logs.py +0 -0
  96. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/mcp.py +0 -0
  97. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/mcpdecl.py +0 -0
  98. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/mcphost.py +0 -0
  99. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/minisign.py +0 -0
  100. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/nethttp.py +0 -0
  101. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/output.py +0 -0
  102. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/paths.py +0 -0
  103. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/policy.py +0 -0
  104. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/projectlock.py +0 -0
  105. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/provenance.py +0 -0
  106. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/rag.py +0 -0
  107. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/registry.py +0 -0
  108. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/report.py +0 -0
  109. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/resolve.py +0 -0
  110. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/rules.py +0 -0
  111. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/scopes.py +0 -0
  112. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/secretscan.py +0 -0
  113. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/selfupdate.py +0 -0
  114. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/serve.py +0 -0
  115. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/shards.py +0 -0
  116. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/stackprobe.py +0 -0
  117. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/staleness.py +0 -0
  118. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/store.py +0 -0
  119. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/trustaudit.py +0 -0
  120. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/typedvalue.py +0 -0
  121. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/typosquat.py +0 -0
  122. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/updatediff.py +0 -0
  123. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/util.py +0 -0
  124. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/core/workflows.py +0 -0
  125. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/data/registries.json +0 -0
  126. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/data/rules/boost-first.mdc +0 -0
  127. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/errors.py +0 -0
  128. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_cli/spin.py +0 -0
  129. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_langchain/__init__.py +0 -0
  130. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_langchain/_compat.py +0 -0
  131. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_langchain/graph.py +0 -0
  132. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_langchain/loader.py +0 -0
  133. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_langchain/py.typed +0 -0
  134. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_langchain/retriever.py +0 -0
  135. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  136. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  137. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_skill_cli.egg-info/requires.txt +0 -0
  138. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/boost_skill_cli.egg-info/top_level.txt +0 -0
  139. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/codecov.yml +0 -0
  140. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/.claude/settings.local.json +0 -0
  141. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/DEBUGGING.md +0 -0
  142. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/adapters.html +0 -0
  143. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/architecture/README.md +0 -0
  144. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/architecture/c4-components-core.md +0 -0
  145. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/architecture/c4-containers.md +0 -0
  146. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/architecture/c4-context.md +0 -0
  147. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/architecture/c4-dynamic-install.md +0 -0
  148. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/distill.gif +0 -0
  149. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/doctor.gif +0 -0
  150. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/explain.gif +0 -0
  151. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/hooks.gif +0 -0
  152. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/install.gif +0 -0
  153. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/pulse.gif +0 -0
  154. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/search.gif +0 -0
  155. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/gifs/tap.gif +0 -0
  156. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/distill.tape +0 -0
  157. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/doctor.tape +0 -0
  158. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/explain.tape +0 -0
  159. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/hooks.tape +0 -0
  160. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/install.tape +0 -0
  161. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/pulse.tape +0 -0
  162. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/search.tape +0 -0
  163. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel/tapes/tap.tape +0 -0
  164. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/carousel.html +0 -0
  165. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/chat.html +0 -0
  166. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/code-review.md +0 -0
  167. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/commit-audit.md +0 -0
  168. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/demo-index.json +0 -0
  169. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/demo.gif +0 -0
  170. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/demo.html +0 -0
  171. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/demo.tape +0 -0
  172. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/dependencies.md +0 -0
  173. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/design-roadmap.html +0 -0
  174. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/eval-latest.json +0 -0
  175. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/eval.html +0 -0
  176. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/index.html +0 -0
  177. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/langchain.html +0 -0
  178. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/mcp-hub.html +0 -0
  179. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/openssf-badge.md +0 -0
  180. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/openssf-playbook.md +0 -0
  181. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/rag-architecture.md +0 -0
  182. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D01.md +0 -0
  183. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D02.md +0 -0
  184. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D03.md +0 -0
  185. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D04.md +0 -0
  186. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D05.md +0 -0
  187. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D06.md +0 -0
  188. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D07.md +0 -0
  189. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D08.md +0 -0
  190. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D09.md +0 -0
  191. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D10.md +0 -0
  192. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D11.md +0 -0
  193. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D12.md +0 -0
  194. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D13.md +0 -0
  195. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D14.md +0 -0
  196. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D15.md +0 -0
  197. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D16.md +0 -0
  198. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D17.md +0 -0
  199. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D18.md +0 -0
  200. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D19.md +0 -0
  201. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D20.md +0 -0
  202. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D21.md +0 -0
  203. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D22.md +0 -0
  204. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D23.md +0 -0
  205. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D24.md +0 -0
  206. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D25.md +0 -0
  207. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D26.md +0 -0
  208. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/BOOST-D27.md +0 -0
  209. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  210. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  211. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  212. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  213. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  214. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  215. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  216. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  217. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  218. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  219. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  220. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  221. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  222. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  223. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  224. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  225. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-attest-findings.md +0 -0
  226. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-audit-findings.md +0 -0
  227. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  228. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-browse-findings.md +0 -0
  229. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  230. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  231. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  232. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  233. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-chat-findings.md +0 -0
  234. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  235. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  236. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  237. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-completions-findings.md +0 -0
  238. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-config-findings.md +0 -0
  239. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  240. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-context-findings.md +0 -0
  241. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  242. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  243. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-create-findings.md +0 -0
  244. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  245. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-deps-findings.md +0 -0
  246. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-discover-findings.md +0 -0
  247. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  248. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  249. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-drift-findings.md +0 -0
  250. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  251. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-edit-findings.md +0 -0
  252. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  253. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-explain-findings.md +0 -0
  254. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-export-findings.md +0 -0
  255. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  256. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  257. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  258. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  259. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  260. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-health-findings.md +0 -0
  261. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  262. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  263. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-import-findings.md +0 -0
  264. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-index-findings.md +0 -0
  265. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  266. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  267. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-install-findings.md +0 -0
  268. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  269. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  270. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-lint-findings.md +0 -0
  271. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-log-findings.md +0 -0
  272. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  273. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  274. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  275. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  276. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  277. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  278. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  279. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  280. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  281. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  282. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  283. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-policy-findings.md +0 -0
  284. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-preview-findings.md +0 -0
  285. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-profile-findings.md +0 -0
  286. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  287. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  288. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  289. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  290. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  291. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  292. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  293. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  294. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  295. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-replay-findings.md +0 -0
  296. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-root-findings.md +0 -0
  297. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  298. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-run-findings.md +0 -0
  299. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  300. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-search-findings.md +0 -0
  301. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  302. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  303. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  304. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  305. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  306. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  307. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  308. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  309. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-sync-findings.md +0 -0
  310. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-tag-findings.md +0 -0
  311. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  312. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-tap-findings.md +0 -0
  313. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-taps-findings.md +0 -0
  314. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  315. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-test-findings.md +0 -0
  316. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-trust-findings.md +0 -0
  317. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  318. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  319. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-untap-findings.md +0 -0
  320. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-update-findings.md +0 -0
  321. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  322. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-verify-findings.md +0 -0
  323. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/audit-who-findings.md +0 -0
  324. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  325. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  326. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  327. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  328. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  329. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  330. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  331. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  332. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  333. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  334. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  335. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  336. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  337. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  338. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/boost-first-rule.md +0 -0
  339. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  340. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  341. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/branch-current-gate.md +0 -0
  342. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  343. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  344. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  345. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  346. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  347. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  348. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  349. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  350. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  351. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  352. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  353. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  354. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  355. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  356. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  357. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  358. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  359. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/cli-command-audit.md +0 -0
  360. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  361. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  362. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  363. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  364. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/command-carousel-page.md +0 -0
  365. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  366. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  367. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  368. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  369. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  370. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  371. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  372. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  373. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  374. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  375. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  376. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  377. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  378. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  379. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  380. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  381. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  382. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  383. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  384. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  385. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  386. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  387. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  388. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  389. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  390. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  391. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  392. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  393. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  394. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  395. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  396. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  397. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  398. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  399. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  400. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  401. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  402. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  403. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  404. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  405. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  406. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  407. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  408. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  409. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  410. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  411. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  412. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  413. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  414. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  415. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  416. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  417. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  418. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  419. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  420. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  421. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  422. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  423. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  424. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  425. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  426. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  427. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  428. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  429. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  430. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  431. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  432. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  433. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  434. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  435. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  436. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  437. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/github-community-health-files.md +0 -0
  438. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  439. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  440. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  441. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  442. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  443. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  444. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  445. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  446. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  447. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  448. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  449. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  450. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  451. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  452. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  453. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  454. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  455. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  456. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  457. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  458. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  459. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  460. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  461. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  462. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  463. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  464. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  465. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  466. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  467. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  468. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  469. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  470. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  471. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  472. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  473. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  474. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  475. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  476. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  477. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  478. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  479. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  480. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  481. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  482. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  483. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  484. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  485. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  486. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  487. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  488. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  489. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  490. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  491. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  492. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  493. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  494. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  495. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  496. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  497. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  498. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  499. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  500. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  501. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  502. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  503. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  504. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  505. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  506. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  507. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  508. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  509. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  510. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  511. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  512. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  513. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  514. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  515. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  516. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  517. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  518. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  519. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  520. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  521. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  522. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  523. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/openssf-playbook.md +0 -0
  524. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/openssf-silver.md +0 -0
  525. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  526. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  527. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  528. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  529. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  530. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  531. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  532. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  533. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  534. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  535. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  536. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  537. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  538. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  539. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  540. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  541. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  542. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  543. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  544. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  545. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  546. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  547. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  548. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  549. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  550. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  551. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  552. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  553. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  554. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  555. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  556. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  557. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  558. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  559. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  560. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  561. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  562. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  563. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  564. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  565. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  566. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  567. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  568. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  569. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/relicence-apache-2.md +0 -0
  570. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  571. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  572. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  573. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  574. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  575. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  576. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  577. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  578. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  579. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  580. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  581. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  582. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  583. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  584. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  585. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  586. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  587. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  588. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  589. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  590. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  591. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  592. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  593. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  594. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  595. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  596. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  597. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  598. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  599. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  600. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  601. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  602. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  603. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  604. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  605. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  606. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  607. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  608. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  609. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  610. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  611. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  612. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  613. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  614. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  615. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  616. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  617. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  618. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  619. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  620. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  621. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  622. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  623. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  624. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  625. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  626. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  627. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  628. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  629. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  630. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  631. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  632. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  633. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  634. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  635. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  636. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  637. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  638. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  639. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  640. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  641. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  642. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  643. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  644. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  645. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  646. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  647. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  648. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  649. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  650. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  651. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  652. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  653. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  654. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  655. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  656. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  657. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  658. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  659. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  660. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  661. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  662. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  663. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  664. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  665. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  666. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  667. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  668. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  669. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  670. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  671. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/workspace-scope-install.md +0 -0
  672. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/zip-strict-audit.md +0 -0
  673. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  674. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  675. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/security-design.md +0 -0
  676. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/semantic-search.md +0 -0
  677. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  678. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/verifying-releases.md +0 -0
  679. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/vex/meta.md +0 -0
  680. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/vex/openvex.json +0 -0
  681. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  682. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  683. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  684. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  685. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/eslint.config.mjs +0 -0
  686. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/README.md +0 -0
  687. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/__init__.py +0 -0
  688. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/baseline.json +0 -0
  689. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/faithfulness.py +0 -0
  690. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/golden_set.json +0 -0
  691. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/make_corpus.py +0 -0
  692. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/make_golden.py +0 -0
  693. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/metrics.py +0 -0
  694. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/publish_golden_dataset.py +0 -0
  695. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/evals/run_evals.py +0 -0
  696. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/examples/README.md +0 -0
  697. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/examples/adapt-demo.sh +0 -0
  698. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/examples/boost-run-prototype.sh +0 -0
  699. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/index.html +0 -0
  700. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/noxfile.py +0 -0
  701. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/pyproject.toml +0 -0
  702. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/coverage-tools.in +0 -0
  703. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/coverage-tools.txt +0 -0
  704. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/lint-tools.in +0 -0
  705. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/lint-tools.txt +0 -0
  706. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/mutation-tools.in +0 -0
  707. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/mutation-tools.txt +0 -0
  708. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/platform-pins.lock +0 -0
  709. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/release-tools.in +0 -0
  710. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/release-tools.txt +0 -0
  711. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/test-tools.in +0 -0
  712. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/requirements/test-tools.txt +0 -0
  713. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/a11y_check.py +0 -0
  714. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/add_spdx_headers.py +0 -0
  715. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/bench_cli.sh +0 -0
  716. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/build_command_reference.py +0 -0
  717. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/build_demo_index.py +0 -0
  718. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/build_registries.py +0 -0
  719. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/build_roadmap.py +0 -0
  720. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/build_scale_corpus.py +0 -0
  721. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/build_vex.py +0 -0
  722. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/check_anchors.py +0 -0
  723. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/check_branch_current.py +0 -0
  724. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/check_dco.py +0 -0
  725. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/check_licenses.py +0 -0
  726. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/check_reproducible.py +0 -0
  727. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/check_required_checks.py +0 -0
  728. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/ensure_eval_corpus.sh +0 -0
  729. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/eval_corpus.py +0 -0
  730. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/eval_explain.py +0 -0
  731. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/eval_gate.py +0 -0
  732. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/eval_recommend.py +0 -0
  733. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/eval_retrieval.py +0 -0
  734. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/eval_stats_summary.py +0 -0
  735. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/eval_tools.py +0 -0
  736. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/import_budget.py +0 -0
  737. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/lock_toolchain.py +0 -0
  738. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/measure_near_duplicate_bound.py +0 -0
  739. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/measure_registry.py +0 -0
  740. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/mutation_gate.py +0 -0
  741. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/mutation_shards.py +0 -0
  742. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/mutation_weights.json +0 -0
  743. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/normalize_sdist.py +0 -0
  744. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/page_budget.py +0 -0
  745. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/perf_gate.py +0 -0
  746. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/post_deploy_smoke.py +0 -0
  747. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/publish_eval_json.py +0 -0
  748. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/publish_shards.py +0 -0
  749. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/release_guard.py +0 -0
  750. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/release_preflight.py +0 -0
  751. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/serve_docs.py +0 -0
  752. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/scripts/shard_plan.py +0 -0
  753. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/setup.cfg +0 -0
  754. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/sonar-project.properties +0 -0
  755. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/style/README.md +0 -0
  756. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/style/boost.css +0 -0
  757. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/style/boost.js +0 -0
  758. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/style/demo.html +0 -0
  759. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/adapt.feature +0 -0
  760. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/browse.feature +0 -0
  761. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/count.feature +0 -0
  762. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/discover.feature +0 -0
  763. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/doctor.feature +0 -0
  764. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/environment.py +0 -0
  765. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/explain.feature +0 -0
  766. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/index.feature +0 -0
  767. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/install.feature +0 -0
  768. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/list.feature +0 -0
  769. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/mcp.feature +0 -0
  770. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/search.feature +0 -0
  771. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/steps/cli_steps.py +0 -0
  772. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/steps/discovery_steps.py +0 -0
  773. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/steps/mcp_steps.py +0 -0
  774. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/bdd/features/steps/quality_steps.py +0 -0
  775. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/conftest.py +0 -0
  776. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/baseline.json +0 -0
  777. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/explain.jsonl +0 -0
  778. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  779. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/golden-natural.jsonl +0 -0
  780. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/golden.jsonl +0 -0
  781. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/recommend.jsonl +0 -0
  782. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/taps-scale.txt +0 -0
  783. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/taps.txt +0 -0
  784. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/eval/tool_calls.jsonl +0 -0
  785. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  786. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_bmad_personas_scope.py +0 -0
  787. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_capabilities_policy.py +0 -0
  788. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_adapt.py +0 -0
  789. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_catalog.py +0 -0
  790. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_chat.py +0 -0
  791. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_configuration.py +0 -0
  792. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_discovery.py +0 -0
  793. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_hooks.py +0 -0
  794. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_hooks_gemini.py +0 -0
  795. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_info.py +0 -0
  796. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_intelligence.py +0 -0
  797. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_json_reports.py +0 -0
  798. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_pane_width.py +0 -0
  799. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_pkg.py +0 -0
  800. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_quality.py +0 -0
  801. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_quickstart.py +0 -0
  802. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_tap_pins.py +0 -0
  803. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_taps.py +0 -0
  804. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_cli_team.py +0 -0
  805. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  806. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  807. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_everyday_loop.py +0 -0
  808. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_integrity_enforce.py +0 -0
  809. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_kind_conformance.py +0 -0
  810. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_property_parsers.py +0 -0
  811. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_recommend_because_is_true.py +0 -0
  812. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_reports_match_reality.py +0 -0
  813. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_run.py +0 -0
  814. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_tap_signing.py +0 -0
  815. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/functional/test_workspace_scope.py +0 -0
  816. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/README.md +0 -0
  817. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  818. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  819. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  820. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  821. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  822. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  823. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  824. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  825. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  826. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  827. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  828. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  829. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  830. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  831. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  832. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  833. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  834. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  835. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  836. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  837. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  838. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  839. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  840. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/fuzz_frontmatter.py +0 -0
  841. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/fuzz/fuzz_registry.py +0 -0
  842. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/langchain/conftest.py +0 -0
  843. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/langchain/test_graph.py +0 -0
  844. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/langchain/test_loader.py +0 -0
  845. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/langchain/test_retriever.py +0 -0
  846. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/make_fixture.py +0 -0
  847. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/perf/test_benchmarks.py +0 -0
  848. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/smoke.sh +0 -0
  849. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_a11y_check.py +0 -0
  850. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_action_pin_lockstep.py +0 -0
  851. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_adapters.py +0 -0
  852. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_adapters_multi.py +0 -0
  853. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_adapters_runner.py +0 -0
  854. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_agents.py +0 -0
  855. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_ai.py +0 -0
  856. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_aihost.py +0 -0
  857. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_archive.py +0 -0
  858. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_boost_first_offer.py +0 -0
  859. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_bootstrap.py +0 -0
  860. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_bot_pr_dco.py +0 -0
  861. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_branch_current.py +0 -0
  862. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_browse.py +0 -0
  863. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_builtin.py +0 -0
  864. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_capabilities.py +0 -0
  865. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_catalog.py +0 -0
  866. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_catalog_keyword_words.py +0 -0
  867. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_catalogbundle.py +0 -0
  868. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_chat.py +0 -0
  869. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_check_anchors.py +0 -0
  870. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_check_dco.py +0 -0
  871. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_check_licenses.py +0 -0
  872. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_check_reproducible.py +0 -0
  873. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_claude_settings.py +0 -0
  874. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_clean_internal_cache.py +0 -0
  875. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_cli_update_shards.py +0 -0
  876. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_cliparse.py +0 -0
  877. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_codeql_analysis_key.py +0 -0
  878. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_cohort.py +0 -0
  879. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_command_reference_fresh.py +0 -0
  880. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_community_health_files.py +0 -0
  881. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_compact.py +0 -0
  882. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_complete.py +0 -0
  883. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_complete_rc_block.py +0 -0
  884. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_config.py +0 -0
  885. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_content_dedupe.py +0 -0
  886. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_content_identity.py +0 -0
  887. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  888. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_crash_redaction.py +0 -0
  889. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dedup_trust.py +0 -0
  890. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_demo_index.py +0 -0
  891. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense.py +0 -0
  892. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  893. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_embed_dedupe.py +0 -0
  894. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_entry_reuse.py +0 -0
  895. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_entry_vectors.py +0 -0
  896. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_fallback.py +0 -0
  897. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_fix_hint.py +0 -0
  898. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_progress.py +0 -0
  899. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_quantized.py +0 -0
  900. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_ready_order.py +0 -0
  901. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_shard_real_schema.py +0 -0
  902. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  903. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_shards.py +0 -0
  904. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_status.py +0 -0
  905. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_status_cheap.py +0 -0
  906. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dense_vector_dedupe.py +0 -0
  907. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_dependabot_config.py +0 -0
  908. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_deps.py +0 -0
  909. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_discovery.py +0 -0
  910. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_distill_merge.py +0 -0
  911. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_docs_pages_linked.py +0 -0
  912. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_docsite_chrome.py +0 -0
  913. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_doctor_output_polish.py +0 -0
  914. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_drift_hint.py +0 -0
  915. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_ed25519.py +0 -0
  916. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_embed.py +0 -0
  917. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_embed_local.py +0 -0
  918. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_embed_truncated_response.py +0 -0
  919. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_entry_key.py +0 -0
  920. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_errors_and_cli_table.py +0 -0
  921. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_baseline.py +0 -0
  922. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_corpus.py +0 -0
  923. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_faithfulness.py +0 -0
  924. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_gate.py +0 -0
  925. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_grading.py +0 -0
  926. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_metrics.py +0 -0
  927. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_stats_summary.py +0 -0
  928. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_tools.py +0 -0
  929. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_eval_tools_probe.py +0 -0
  930. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  931. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_faithfulness.py +0 -0
  932. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_frontmatter.py +0 -0
  933. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_fuzz_targets.py +0 -0
  934. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  935. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_gitleaks_config.py +0 -0
  936. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_gitutil.py +0 -0
  937. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_gitutil_lfs.py +0 -0
  938. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_gitutil_sparse.py +0 -0
  939. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_gstack_coexistence.py +0 -0
  940. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_hook_settings_hosts.py +0 -0
  941. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_imperative.py +0 -0
  942. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_import_budget.py +0 -0
  943. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_injectscan.py +0 -0
  944. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_install_permission_error.py +0 -0
  945. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_installscan.py +0 -0
  946. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_integrity.py +0 -0
  947. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_journal.py +0 -0
  948. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_jsonstate.py +0 -0
  949. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_langchain_packaging.py +0 -0
  950. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_launcher_python_floor.py +0 -0
  951. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_link_ownership.py +0 -0
  952. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_localembed.py +0 -0
  953. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_localembed_e2e.py +0 -0
  954. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_lockfile.py +0 -0
  955. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_logs.py +0 -0
  956. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_marketing_counts.py +0 -0
  957. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mcp.py +0 -0
  958. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mcp_install_scan.py +0 -0
  959. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mcp_read.py +0 -0
  960. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mcpdecl.py +0 -0
  961. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mcphost.py +0 -0
  962. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_measure_registry.py +0 -0
  963. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_minisign.py +0 -0
  964. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mutation_hardening.py +0 -0
  965. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mutation_shards.py +0 -0
  966. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mutation_subfile_shards.py +0 -0
  967. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_mutmut_source_paths.py +0 -0
  968. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_near_duplicate_collapse.py +0 -0
  969. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_nethttp.py +0 -0
  970. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_normalize_sdist.py +0 -0
  971. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_output.py +0 -0
  972. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_page_budget.py +0 -0
  973. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_paths.py +0 -0
  974. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_perf_gate.py +0 -0
  975. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_pkg_confusions.py +0 -0
  976. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_pkg_injection.py +0 -0
  977. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_pkg_secrets.py +0 -0
  978. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_platform_pins.py +0 -0
  979. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_policy.py +0 -0
  980. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_post_deploy_smoke.py +0 -0
  981. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_project_mcp_sidecar.py +0 -0
  982. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_projectlock.py +0 -0
  983. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_provenance.py +0 -0
  984. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_publish_golden_dataset.py +0 -0
  985. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_rag.py +0 -0
  986. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_rag_completeness.py +0 -0
  987. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_rag_fastpath.py +0 -0
  988. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_rag_fusion.py +0 -0
  989. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_registries_fresh.py +0 -0
  990. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_registry.py +0 -0
  991. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_registry_categories.py +0 -0
  992. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_registry_control_chars.py +0 -0
  993. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_registry_parallel.py +0 -0
  994. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_release_guard.py +0 -0
  995. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_release_preflight.py +0 -0
  996. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_report.py +0 -0
  997. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_required_checks.py +0 -0
  998. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_rerank_cache.py +0 -0
  999. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_resolve.py +0 -0
  1000. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1001. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_roadmap_fresh.py +0 -0
  1002. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_rules.py +0 -0
  1003. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_scale_corpus.py +0 -0
  1004. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_schedule_plist.py +0 -0
  1005. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_scopes.py +0 -0
  1006. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_secretscan.py +0 -0
  1007. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_selfupdate.py +0 -0
  1008. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_serve.py +0 -0
  1009. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_serve_docs.py +0 -0
  1010. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_shard_plan.py +0 -0
  1011. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_shards.py +0 -0
  1012. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_shards_incremental.py +0 -0
  1013. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_shards_ingest.py +0 -0
  1014. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_shards_matrix.py +0 -0
  1015. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1016. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_spdx_headers.py +0 -0
  1017. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_spin.py +0 -0
  1018. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_stackprobe.py +0 -0
  1019. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_staleness.py +0 -0
  1020. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_store.py +0 -0
  1021. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_store_materialize.py +0 -0
  1022. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_sync_blocked_links.py +0 -0
  1023. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1024. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_tap_pins.py +0 -0
  1025. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_token_parity.py +0 -0
  1026. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_toolchain_lock.py +0 -0
  1027. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_trustaudit.py +0 -0
  1028. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_typedvalue.py +0 -0
  1029. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_typosquat.py +0 -0
  1030. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_updatediff.py +0 -0
  1031. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_util.py +0 -0
  1032. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_version.py +0 -0
  1033. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_version_tags.py +0 -0
  1034. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_vex.py +0 -0
  1035. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_visual_harness_capture.py +0 -0
  1036. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_visual_harness_flags.py +0 -0
  1037. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_workflow_concurrency.py +0 -0
  1038. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1039. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1040. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_workflow_timeouts.py +0 -0
  1041. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_workflows.py +0 -0
  1042. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1043. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/visual/a11y_check.mjs +0 -0
  1044. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/visual/console_check.mjs +0 -0
  1045. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/visual/package-lock.json +0 -0
  1046. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/tests/visual/package.json +0 -0
  1047. {boost_skill_cli-1.2.118 → boost_skill_cli-1.2.120}/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.118
3
+ Version: 1.2.120
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.118'
22
- __version_tuple__ = version_tuple = (1, 2, 118)
21
+ __version__ = version = '1.2.120'
22
+ __version_tuple__ = version_tuple = (1, 2, 120)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -18,6 +18,7 @@ of the thinking lives in :mod:`boost_cli.core.bmad`; this module is glue.
18
18
  boost bmad off # remove hooks + boost-written personas
19
19
  boost bmad personas # the roster + whether installed, both scopes
20
20
  boost bmad route [PROMPT] [--plain] # hook target; pipeable for debugging
21
+ boost bmad on --host claude # hooks for one host, not every one in use
21
22
 
22
23
  **The full method** is `boost bmad install`, unchanged: it delegates to the
23
24
  canonical `npx bmad-method install` (Node.js 20.12+) for the `bmad-*` workflow
@@ -55,8 +56,10 @@ way. Matchers are *not* translated — `hookhost` passes them through
55
56
  host-native — so Claude's `startup|resume|clear` source matcher is applied only
56
57
  on Claude.
57
58
 
58
- What that buys on a second host is prompt shaping, not full parity: the routing
59
- banner names personas Gemini cannot spawn.
59
+ What that buys on a second host is prompt shaping, not full parity. Gemini's
60
+ hooks pass `--host gemini`, so `route` and `orient` answer in the JSON Gemini
61
+ adds to the model's context and name the personas as roles rather than
62
+ subagents; `--host` on `on`/`startup` picks the hosts explicitly.
60
63
  """
61
64
  from __future__ import annotations
62
65
 
@@ -110,14 +113,19 @@ def cmd_bmad(argv) -> int:
110
113
  help="enable the startup toggle right after install")
111
114
  p.add_argument("--plain", action="store_true",
112
115
  help="route: print the banner as text, not as hook JSON")
116
+ p.add_argument("--host", metavar="H", default=None,
117
+ choices=(*hookhost.hosts(), "auto"),
118
+ help="on/startup: hosts to hook (%s; default auto: "
119
+ "claude + any in use) · route/orient: output format"
120
+ % " | ".join(hookhost.hosts()))
113
121
  args = p.parse_args(argv)
114
122
 
115
123
  if args.action == "on":
116
- return _autopilot_on(args.scope)
124
+ return _autopilot_on(args.scope, args.host)
117
125
  if args.action == "off":
118
126
  return _autopilot_off(args.scope)
119
127
  if args.action == "route":
120
- return _route(args.value, args.plain, args.scope)
128
+ return _route(args.value, args.plain, args.scope, _one_host(args.host))
121
129
  if args.action == "personas":
122
130
  return _personas(args.scope)
123
131
  if args.action == "install":
@@ -125,9 +133,9 @@ def cmd_bmad(argv) -> int:
125
133
  if args.action == "init":
126
134
  return _init(args.modules, args.startup)
127
135
  if args.action == "startup":
128
- return _startup(args.value or "status", args.scope)
136
+ return _startup(args.value or "status", args.scope, args.host)
129
137
  if args.action == "orient":
130
- return _orient(args.scope)
138
+ return _orient(args.scope, _one_host(args.host))
131
139
  if args.action == "uninstall":
132
140
  return _uninstall(args.scope, args.yes)
133
141
  if args.action == "disable":
@@ -174,7 +182,12 @@ def _never_fails(command: str) -> str:
174
182
  return command + " || true"
175
183
 
176
184
 
177
- def _hook_hosts(scope: str) -> list[str]:
185
+ def _one_host(host) -> str:
186
+ """The host a hook runs under. Hooks written before `--host` are Claude's."""
187
+ return hookhost.CLAUDE if host in (None, "auto") else host
188
+
189
+
190
+ def _hook_hosts(scope: str, requested=None) -> list[str]:
178
191
  """Hosts to write hooks into: Claude always, others on evidence of use.
179
192
 
180
193
  Claude is unconditional. It is boost's primary host and the behaviour every
@@ -189,7 +202,13 @@ def _hook_hosts(scope: str) -> list[str]:
189
202
  `~/.gemini/settings.json` for someone who has never run Gemini is litter in
190
203
  a file boost does not own. A host that appears later is picked up by the
191
204
  next `boost bmad on`, which is idempotent.
205
+
206
+ ``requested`` (`--host`) overrides the rule: naming one host writes that
207
+ host only, so Claude-only no longer means hand-editing Gemini's settings
208
+ after every `on`.
192
209
  """
210
+ if requested not in (None, "auto"):
211
+ return [requested]
193
212
  chosen = [hookhost.CLAUDE]
194
213
  for host in hookhost.hosts():
195
214
  if host == hookhost.CLAUDE:
@@ -209,11 +228,26 @@ _ORIENT_HOOK = ("SessionStart", HOOK_NAME, HOOK_MATCHER)
209
228
  _ROUTE_HOOK = ("UserPromptSubmit", ROUTE_HOOK_NAME, None)
210
229
 
211
230
 
212
- def _add_hook_everywhere(scope: str, spec: tuple, command: str) -> list[str]:
213
- """Install one hook on every installed host. Returns the hosts written."""
231
+ def _host_command(host: str, command: str) -> str:
232
+ """``command`` as ``host``'s hook runs it, made incapable of failing.
233
+
234
+ Claude's bytes are what every earlier release wrote. Another host's hook
235
+ names its host, so `route`/`orient` answer in the format that host reads,
236
+ and drops stderr: Gemini shows stderr to the user when stdout is empty, so
237
+ a launcher too old to know the action printed its usage error into the
238
+ session despite `|| true`.
239
+ """
240
+ if host == hookhost.CLAUDE:
241
+ return _never_fails(command)
242
+ return _never_fails("%s --host %s 2>/dev/null" % (command, host))
243
+
244
+
245
+ def _add_hook_everywhere(scope: str, spec: tuple, command: str,
246
+ requested=None) -> list[str]:
247
+ """Install one hook on every chosen host. Returns the hosts written."""
214
248
  event, name, matcher = spec
215
249
  written = []
216
- for host in _hook_hosts(scope):
250
+ for host in _hook_hosts(scope, requested):
217
251
  target = hookhost.translate(host, event)
218
252
  if target is None:
219
253
  # Refused out loud rather than dropped: a hook the user asked for
@@ -221,7 +255,7 @@ def _add_hook_everywhere(scope: str, spec: tuple, command: str) -> list[str]:
221
255
  out.warn("%s has no counterpart for %s — skipped"
222
256
  % (hookhost.label(host), event))
223
257
  continue
224
- cs.add_hook(scope, target, name, command,
258
+ cs.add_hook(scope, target, name, _host_command(host, command),
225
259
  matcher=matcher if host == hookhost.CLAUDE else None,
226
260
  host=host)
227
261
  written.append(host)
@@ -246,7 +280,7 @@ def _remove_hook_everywhere(scope: str, *specs: tuple) -> int:
246
280
  return removed
247
281
 
248
282
 
249
- def _autopilot_on(scope) -> int:
283
+ def _autopilot_on(scope, requested_host=None) -> int:
250
284
  """The one command. Personas + orientation + router, in one idempotent pass.
251
285
 
252
286
  Global by default: the point of the autopilot is that a task arriving in
@@ -267,10 +301,11 @@ def _autopilot_on(scope) -> int:
267
301
 
268
302
  launcher = shlex.quote(str(paths.launcher()))
269
303
  hosts = _add_hook_everywhere(
270
- scope, _ORIENT_HOOK,
271
- _never_fails("%s bmad orient --scope %s" % (launcher, scope)))
304
+ scope, _ORIENT_HOOK, "%s bmad orient --scope %s" % (launcher, scope),
305
+ requested_host)
272
306
  _add_hook_everywhere(scope, _ROUTE_HOOK,
273
- _never_fails("%s bmad route --scope %s" % (launcher, scope)))
307
+ "%s bmad route --scope %s" % (launcher, scope),
308
+ requested_host)
274
309
  _set_scope_state(scope, autopilot=True, startup=True, personas=present,
275
310
  enabled_at=util.now_iso())
276
311
  journal.log("bmad-autopilot", "on", scope=scope, personas=present)
@@ -335,7 +370,7 @@ def _read_hook_stdin() -> dict:
335
370
  return data if isinstance(data, dict) else {"prompt": raw}
336
371
 
337
372
 
338
- def _route(prompt, plain, scope=None) -> int:
373
+ def _route(prompt, plain, scope=None, host=hookhost.CLAUDE) -> int:
339
374
  """UserPromptSubmit hook target: classify, then emit the routing banner.
340
375
 
341
376
  This runs on every single prompt, so it has exactly one hard rule: **always
@@ -356,9 +391,9 @@ def _route(prompt, plain, scope=None) -> int:
356
391
  cwd = payload.get("cwd")
357
392
  root = Path(cwd) if cwd else Path.cwd()
358
393
  if prompt or plain:
359
- banner = core.route_context(text, root)
394
+ banner = core.route_context(text, root, None, host)
360
395
  elif _autopilot_live(scope, root):
361
- banner = _session_banner(payload, text, root)
396
+ banner = _session_banner(payload, text, root, host)
362
397
  else:
363
398
  return 0
364
399
  except Exception: # a hook must never break the session
@@ -368,14 +403,12 @@ def _route(prompt, plain, scope=None) -> int:
368
403
  if plain:
369
404
  print(banner)
370
405
  return 0
371
- print(json.dumps({"hookSpecificOutput": {
372
- "hookEventName": "UserPromptSubmit",
373
- "additionalContext": banner,
374
- }}))
406
+ print(hookhost.context_output(host, "UserPromptSubmit", banner))
375
407
  return 0
376
408
 
377
409
 
378
- def _session_banner(payload: dict, text: str, root: Path) -> str:
410
+ def _session_banner(payload: dict, text: str, root: Path,
411
+ host: str = hookhost.CLAUDE) -> str:
379
412
  """The hook's banner, or ``""`` when this session already holds it.
380
413
 
381
414
  Keyed by ``session_id``. Gemini's `BeforeAgent` carries one too, but its
@@ -383,7 +416,7 @@ def _session_banner(payload: dict, text: str, root: Path) -> str:
383
416
  skipped there would simply be missing; the check applies to Claude alone.
384
417
  """
385
418
  session = str(payload.get("session_id") or "")
386
- if payload.get("hook_event_name") == "BeforeAgent":
419
+ if host != hookhost.CLAUDE or payload.get("hook_event_name") == "BeforeAgent":
387
420
  session = ""
388
421
  track = core.classify(text, root)
389
422
  if track == core.TRIVIAL:
@@ -393,7 +426,7 @@ def _session_banner(payload: dict, text: str, root: Path) -> str:
393
426
  str(root)):
394
427
  return ""
395
428
  banner = core.route_context(
396
- text, root, (_agents_dir("global"), root / ".claude" / "agents"))
429
+ text, root, (_agents_dir("global"), root / ".claude" / "agents"), host)
397
430
  if session and banner:
398
431
  sessions[session] = {"track": track, "root": str(root),
399
432
  "at": util.now_iso()}
@@ -457,7 +490,7 @@ def _require_npx() -> None:
457
490
 
458
491
 
459
492
  def _run_installer(directory: Path, modules: str) -> subprocess.CompletedProcess:
460
- cmd = ["npx", "--yes", "bmad-method@latest", "install",
493
+ cmd = ["npx", "--yes", "bmad-method@%s" % core.BMAD_VERSION, "install",
461
494
  "--yes", "--directory", str(directory),
462
495
  "--tools", "claude-code", "--modules", modules,
463
496
  "--user-name", _whoami()]
@@ -490,12 +523,24 @@ def _install(scope, modules, do_startup) -> int:
490
523
  scope = scope or "project"
491
524
  _require_npx()
492
525
  if scope == "global":
493
- n = _copy_global_skills(modules)
494
- _set_scope_state("global", installed=True, skills=n,
526
+ before = _get_scope_state("global")
527
+ ver, names = _copy_global_skills(modules)
528
+ dropped = _drop_retired_skills(before, names, modules)
529
+ _set_scope_state("global", installed=True, skills=len(names),
530
+ skill_list=names, version=ver,
495
531
  modules=modules.split(","), installed_at=util.now_iso())
496
- out.ok("installed %d BMAD skill(s) globally → %s"
497
- % (n, _skills_dir("global")))
498
- out.dim(" run `boost bmad init` in a project for its _bmad/ workflow runtime")
532
+ out.ok("installed %d BMAD skill(s) globally → %s (v%s)"
533
+ % (len(names), _skills_dir("global"), ver))
534
+ if dropped:
535
+ out.info("removed %d skill(s) this BMAD release no longer installs: %s"
536
+ % (len(dropped), ", ".join(dropped)))
537
+ needs_runtime = [n for n in core.RUNTIME_SKILLS if n in names]
538
+ if needs_runtime:
539
+ out.warn("%s halt without a per-repo _bmad/ runtime — run "
540
+ "`boost bmad init` in each repo that uses them"
541
+ % " and ".join(needs_runtime))
542
+ else:
543
+ out.dim(" run `boost bmad init` in a project for its _bmad/ workflow runtime")
499
544
  else:
500
545
  ver, n = _install_project_runtime(modules)
501
546
  out.ok("installed BMAD in %s (%d skills, v%s)" % (Path.cwd(), n, ver))
@@ -524,15 +569,20 @@ def _install_project_runtime(modules):
524
569
  return ver, n
525
570
 
526
571
 
527
- def _copy_global_skills(modules) -> int:
528
- """Stage the installer in a temp dir; copy only bmad-* skills into ~/.claude."""
572
+ def _copy_global_skills(modules) -> tuple[str, list[str]]:
573
+ """Stage the installer in a temp dir; copy only bmad-* skills into ~/.claude.
574
+
575
+ Returns ``(version, skill names copied)``. The names are recorded so the
576
+ next global install knows which skills are boost's to retire.
577
+ """
529
578
  stage = Path(tempfile.mkdtemp(prefix="boost-bmad-"))
530
579
  try:
531
- _run_installer(stage, modules)
580
+ proc = _run_installer(stage, modules)
581
+ ver = _parse_version((proc.stdout or "") + (proc.stderr or ""))
532
582
  src = stage / ".claude" / "skills"
533
583
  dest = _skills_dir("global")
534
584
  dest.mkdir(parents=True, exist_ok=True)
535
- n = 0
585
+ names = []
536
586
  for d in sorted(src.glob("bmad-*")):
537
587
  if not d.is_dir():
538
588
  continue
@@ -540,20 +590,54 @@ def _copy_global_skills(modules) -> int:
540
590
  if t.exists():
541
591
  util.rmtree(t)
542
592
  shutil.copytree(d, t)
543
- n += 1
544
- return n
593
+ names.append(d.name)
594
+ return ver, names
545
595
  finally:
546
596
  shutil.rmtree(stage, ignore_errors=True)
547
597
 
548
598
 
599
+ def _drop_retired_skills(before: dict, installed: list[str],
600
+ modules: str) -> list[str]:
601
+ """Remove skills the last global install recorded and this one did not ship.
602
+
603
+ The copy only replaces directories the new stage has, and upstream's own
604
+ cleanup runs inside the empty stage, never against `~/.claude/skills` — so
605
+ a skill a release retired (`bmad-document-project` in 6.12.0) survived
606
+ every reinstall. Only *recorded* names go: another `bmad-*` directory may
607
+ be the user's own.
608
+
609
+ **A narrower module set retires nothing.** `--modules` defaults to `bmm` on
610
+ every run, so `boost bmad install --scope global` after an earlier
611
+ `--modules bmm,cis` stages only bmm — and every cis skill would read as
612
+ "retired by the release" and be deleted. A run can only retire within the
613
+ modules it actually installed.
614
+ """
615
+ previous = before.get("skill_list")
616
+ if not isinstance(previous, list):
617
+ return []
618
+ had = before.get("modules")
619
+ if isinstance(had, list) and set(had) - set(modules.split(",")):
620
+ return []
621
+ dest = _skills_dir("global")
622
+ dropped = []
623
+ for name in sorted({n for n in previous if isinstance(n, str)} - set(installed)):
624
+ # A hand-edited state file must not steer the delete out of the dir.
625
+ if not (name.startswith("bmad-") and Path(name).name == name):
626
+ continue
627
+ if (dest / name).is_dir():
628
+ util.rmtree(dest / name)
629
+ dropped.append(name)
630
+ return dropped
631
+
632
+
549
633
  # ----------------------------------------------------------------------- toggle
550
634
 
551
- def _startup(value, scope) -> int:
635
+ def _startup(value, scope, requested_host=None) -> int:
552
636
  scope = scope or "project"
553
637
  if value == "on":
554
- cmd = _never_fails("%s bmad orient --scope %s" % (
555
- shlex.quote(str(paths.launcher())), scope))
556
- started = _add_hook_everywhere(scope, _ORIENT_HOOK, cmd)
638
+ cmd = "%s bmad orient --scope %s" % (
639
+ shlex.quote(str(paths.launcher())), scope)
640
+ started = _add_hook_everywhere(scope, _ORIENT_HOOK, cmd, requested_host)
557
641
  _set_scope_state(scope, startup=True)
558
642
  journal.log("bmad-startup", "on", scope=scope)
559
643
  out.ok("BMAD startup ON (%s) — new sessions get orientation" % scope)
@@ -572,7 +656,7 @@ def _startup(value, scope) -> int:
572
656
  hint="use 'on', 'off' or 'status'")
573
657
 
574
658
 
575
- def _orient(scope) -> int:
659
+ def _orient(scope, host=hookhost.CLAUDE) -> int:
576
660
  """SessionStart hook target: print the briefing iff enabled (else silent).
577
661
 
578
662
  On `clear` and `compact` it also forgets the session's last routing banner:
@@ -589,17 +673,18 @@ def _orient(scope) -> int:
589
673
  _sessions_write(sessions)
590
674
  with suppress(Exception):
591
675
  if _get_scope_state(scope).get("startup"):
592
- print(core.orientation())
676
+ print(hookhost.context_output(host, "SessionStart",
677
+ core.orientation(host)))
593
678
  return 0
594
679
 
595
680
 
596
681
  def _status(scope) -> int:
597
682
  st = _get_scope_state(scope)
598
- hook = cs.has_hook(scope, "SessionStart", HOOK_NAME)
683
+ hosts = _hosts_with(scope, "SessionStart", HOOK_NAME)
599
684
  n = _count_skills(_skills_dir(scope))
600
685
  out.heading("BMAD startup — %s" % scope)
601
686
  out.kv("enabled", str(bool(st.get("startup"))))
602
- out.kv("hook", "present" if hook else "absent")
687
+ out.kv("hook", "present (%s)" % ", ".join(hosts) if hosts else "absent")
603
688
  out.kv("skills", str(n))
604
689
  out.kv("installed", str(bool(st.get("installed"))))
605
690
  return 0
@@ -683,16 +768,18 @@ def _doctor() -> int:
683
768
  # managed + edited: an edited persona file is still on disk and
684
769
  # Claude Code still loads it, same as core.present_personas().
685
770
  personas = len(core.present_personas(agents))
686
- router = cs.has_hook(scope, "UserPromptSubmit", ROUTE_HOOK_NAME)
771
+ router_hosts = _hosts_with(scope, "UserPromptSubmit", ROUTE_HOOK_NAME)
772
+ briefing_hosts = _hosts_with(scope, "SessionStart", HOOK_NAME)
773
+ router = bool(router_hosts)
687
774
  live = bool(st.get("autopilot")) and router
688
- briefing = _on_off(cs.has_hook(scope, "SessionStart", HOOK_NAME))
689
- if briefing == "on" and _stale_matcher(scope):
775
+ briefing = _where(briefing_hosts)
776
+ if briefing_hosts and _stale_matcher(scope):
690
777
  # The matcher lives in the user's settings.json from whenever they
691
778
  # last ran `on`, while the code that depends on it ships with the
692
779
  # binary — so an old install silently misses newer sources.
693
780
  briefing += " (stale matcher: re-run `boost bmad on`)"
694
781
  out.kv(scope, "autopilot=%s %d personas router=%s briefing=%s"
695
- % (_on_off(live), personas, _on_off(router), briefing))
782
+ % (_on_off(live), personas, _where(router_hosts), briefing))
696
783
  out.kv(" workflows", "skills=%d installed=%s"
697
784
  % (_count_skills(_skills_dir(scope)), _on_off(st.get("installed"))))
698
785
  out.dim(" project = %s" % Path.cwd())
@@ -714,6 +801,30 @@ def _stale_matcher(scope) -> bool:
714
801
  return any(r.get("matcher") != HOOK_MATCHER for r in rows)
715
802
 
716
803
 
804
+ def _hosts_with(scope, event: str, name: str) -> list[str]:
805
+ """Which hosts carry this boost hook, in report order.
806
+
807
+ `--host gemini` makes a Claude-less autopilot reachable for the first time,
808
+ and a report that asks only Claude called that install absent — `doctor`
809
+ said `autopilot=off router=off` about a router that was about to run.
810
+ """
811
+ found = []
812
+ for host in hookhost.hosts():
813
+ target = hookhost.translate(host, event)
814
+ if target is not None and cs.has_hook(scope, target, name, host=host):
815
+ found.append(host)
816
+ return found
817
+
818
+
819
+ def _where(hosts: list[str]) -> str:
820
+ """``off``, ``on`` (Claude only) or ``on (gemini)`` — who has the hook."""
821
+ if not hosts:
822
+ return "off"
823
+ if hosts == [hookhost.CLAUDE]:
824
+ return "on"
825
+ return "on (%s)" % ", ".join(hosts)
826
+
827
+
717
828
  def _skills_dir(scope) -> Path:
718
829
  base = paths.home() if scope == "global" else Path.cwd()
719
830
  return base / ".claude" / "skills"
@@ -24,7 +24,8 @@ first time it was assumed rather than checked:
24
24
  persona subagents below are boost's to author — they duplicate nothing.
25
25
  * **The bmm module ships five personas, not seven.** Mary, John, Sally, Winston
26
26
  and Amelia. Murat (test architect) is the separate `tea` module and Paige
27
- (technical writer) is a game-dev-studio agent, "on hiatus" in bmm. boost
27
+ (technical writer) is a game-dev-studio agent, "on hiatus" in bmm — bmm's own
28
+ `bmad-agent-tech-writer` was retired in v6.11.0 as "generic LLM defaults". boost
28
29
  authors all seven anyway, because a routing table with no owner for tests or
29
30
  docs cannot honour the done-contract; the two extras are labelled as such.
30
31
 
@@ -42,6 +43,8 @@ import re
42
43
  from pathlib import Path
43
44
  from typing import NamedTuple
44
45
 
46
+ from . import hookhost
47
+
45
48
  MARKER = "<!-- boost:bmad-persona"
46
49
  """Prefix of the ownership stamp boost writes into every persona file.
47
50
 
@@ -57,6 +60,25 @@ statements true: edit the file however you like and boost stops claiming it.
57
60
 
58
61
  _STAMP_RE = re.compile(r"<!-- boost:bmad-persona ([0-9a-f]{12}) -->")
59
62
 
63
+ BMAD_VERSION = "6.12.0"
64
+ """The bmad-method release `boost bmad install` installs, and the tables name.
65
+
66
+ It used to install `@latest` while the skill names below were hard-coded, and
67
+ the tests only checked the tables against each other — so when v6.11.0 turned
68
+ `bmad-document-project` into a shim and v6.12.0 stopped installing shims, the
69
+ docs track kept routing at a skill no default install contains, and nothing
70
+ noticed. `tests/unit/data/bmad-skills-<version>.json` is that release's skill
71
+ list; bumping this without regenerating it fails the build.
72
+ """
73
+
74
+ RUNTIME_SKILLS: tuple[str, ...] = ("bmad-build", "bmad-build-auto")
75
+ """Skills that halt without a per-repo `_bmad/` runtime.
76
+
77
+ They start by running `{project-root}/_bmad/scripts/render_skill.py`, so a
78
+ global install leaves them broken in every repo `boost bmad init` has not
79
+ touched — while reporting every skill installed.
80
+ """
81
+
60
82
 
61
83
  class Persona(NamedTuple):
62
84
  """A BMAD persona, rendered as one Claude Code subagent definition."""
@@ -77,7 +99,7 @@ class Track(NamedTuple):
77
99
 
78
100
  lead: str # persona slug
79
101
  support: tuple[str, ...] # persona slugs to run alongside the lead
80
- skill: str # canonical BMAD v6 skill for this track
102
+ skill: str | None # canonical BMAD v6 skill, if one fits
81
103
  note: str # how the lead should open
82
104
  done: str # what finished looks like: one of DONE_KINDS
83
105
 
@@ -241,8 +263,10 @@ PERSONAS: tuple[Persona, ...] = (
241
263
  "never by editing the output; a hand-edit fails the freshness gate.",
242
264
  "Write for the reader who arrives at 2am with a broken build: what "
243
265
  "it does, how to run it, what breaks it.",
266
+ "`bmad-project-context` is for the agent-instruction block in "
267
+ "`AGENTS.md` only; READMEs and guides need no BMAD skill.",
244
268
  ),
245
- skills=("bmad-document-project",),
269
+ skills=("bmad-project-context",),
246
270
  ),
247
271
  )
248
272
 
@@ -276,7 +300,11 @@ TRACKS: dict[str, Track] = {
276
300
  skill="bmad-qa-generate-e2e-tests",
277
301
  note="Assertions that a mutation would fail.", done="change"),
278
302
  "docs": Track(
279
- lead="bmad-scribe", support=("bmad-dev",), skill="bmad-document-project",
303
+ # No skill: `bmad-document-project` is a shim since v6.11.0 and not
304
+ # installed since v6.12.0, and its replacement `bmad-project-context`
305
+ # manages one block in AGENTS.md — routing every README edit there
306
+ # would trade a dead pointer for a misroute.
307
+ lead="bmad-scribe", support=("bmad-dev",), skill=None,
280
308
  note="Verify against the code, regenerate what is generated.", done="change"),
281
309
  "review": Track(
282
310
  lead="bmad-tea", support=("bmad-architect",), skill="bmad-code-review",
@@ -752,7 +780,8 @@ def done_checklist(signals: dict, done: str = "change") -> list[str]:
752
780
  # --------------------------------------------------------------------- routing
753
781
 
754
782
  def route_lines(prompt: str, root: Path | None = None,
755
- agents_dirs: tuple[Path, ...] | None = None) -> list[str]:
783
+ agents_dirs: tuple[Path, ...] | None = None,
784
+ host: str = hookhost.CLAUDE) -> list[str]:
756
785
  """The banner for one prompt: `[]` when the prompt is not a unit of work.
757
786
 
758
787
  Kept to a handful of lines on purpose — this is prepended to *every*
@@ -763,6 +792,11 @@ def route_lines(prompt: str, root: Path | None = None,
763
792
  are dropped: naming a subagent the session cannot spawn sends the model
764
793
  after something that does not exist. An edited file counts as present —
765
794
  it is still a subagent, just no longer boost's.
795
+
796
+ On a host other than Claude Code the personas are roles to adopt, not
797
+ subagents: Gemini's subagent tool is `invoke_agent` and boost writes no
798
+ personas for it, so its banner names no subagent, no Agent tool and no
799
+ ``~/.claude`` path.
766
800
  """
767
801
  root = Path(root) if root is not None else Path.cwd()
768
802
  track_name = classify(prompt, root)
@@ -775,20 +809,26 @@ def route_lines(prompt: str, root: Path | None = None,
775
809
  persona_state(d, lead) != "absent" for d in agents_dirs)
776
810
 
777
811
  lines = ["[BMAD autopilot] track: %s" % track_name]
778
- if delegate:
812
+ if host != hookhost.CLAUDE:
813
+ lines.append("Lead: take the role of %s, %s. %s"
814
+ % (lead.character, lead.title, track.note))
815
+ if track.support:
816
+ lines.append("Support: bring in the view of %s." % ", ".join(
817
+ "%s (%s)" % (PERSONA_BY_SLUG[s].character, PERSONA_BY_SLUG[s].title)
818
+ for s in track.support))
819
+ elif delegate:
779
820
  lines.append("Lead: `%s` subagent — %s, %s. %s"
780
821
  % (lead.slug, lead.character, lead.title, track.note))
781
- if delegate and track.support:
782
- lines.append(
783
- "Support: %s — spawn them with the Agent tool, in parallel where "
784
- "the work is independent."
785
- % ", ".join("`%s` (%s)" % (s, PERSONA_BY_SLUG[s].character)
786
- for s in track.support))
787
- lines.extend((
788
- "BMAD skill: `%s` — invoke it if it is installed; otherwise the "
789
- "persona's own playbook stands." % track.skill,
790
- "Done means: " + " · ".join(done_checklist(signals, track.done)),
791
- ))
822
+ if track.support:
823
+ lines.append(
824
+ "Support: %s — spawn them with the Agent tool, in parallel where "
825
+ "the work is independent."
826
+ % ", ".join("`%s` (%s)" % (s, PERSONA_BY_SLUG[s].character)
827
+ for s in track.support))
828
+ if track.skill:
829
+ lines.append("BMAD skill: `%s` — invoke it if it is installed; otherwise "
830
+ "the persona's own playbook stands." % track.skill)
831
+ lines.append("Done means: " + " · ".join(done_checklist(signals, track.done)))
792
832
  if track.done == "change":
793
833
  # Not "work autonomously": that competed with approval gates people add
794
834
  # on purpose, and the guide clause above only exists when a guide does.
@@ -803,26 +843,37 @@ CHANGE_CLOSE = ("Finish the change and verify it; stop only for a choice that "
803
843
 
804
844
 
805
845
  def route_context(prompt: str, root: Path | None = None,
806
- agents_dirs: tuple[Path, ...] | None = None) -> str:
846
+ agents_dirs: tuple[Path, ...] | None = None,
847
+ host: str = hookhost.CLAUDE) -> str:
807
848
  """:func:`route_lines` as one string (``""`` when there is nothing to say)."""
808
- return "\n".join(route_lines(prompt, root, agents_dirs))
849
+ return "\n".join(route_lines(prompt, root, agents_dirs, host))
809
850
 
810
851
 
811
852
  # ----------------------------------------------------------------- orientation
812
853
 
813
- def orientation() -> str:
814
- """The SessionStart briefing: the roster, the phases, and the house rule."""
854
+ _SUBAGENT_INTRO = ("This session routes work through BMAD personas. Persona "
855
+ "subagents live in\n~/.claude/agents and are delegated to "
856
+ "with the Agent tool:")
857
+ _ROLE_INTRO = ("This session routes work through BMAD personas. A routing banner "
858
+ "names the\npersona whose role to take on for that prompt:")
859
+
860
+
861
+ def orientation(host: str = hookhost.CLAUDE) -> str:
862
+ """The SessionStart briefing: the roster, the phases, and the house rule.
863
+
864
+ Only Claude Code gets persona subagents; elsewhere the roster is a list of
865
+ roles, for the same reason as :func:`route_lines`.
866
+ """
815
867
  roster = "\n".join(
816
868
  " %-15s %s, %s" % (p.slug, p.character, p.title) for p in PERSONAS)
817
869
  return """[BMAD autopilot active]
818
- This session routes work through BMAD personas. Persona subagents live in
819
- ~/.claude/agents and are delegated to with the Agent tool:
870
+ %s
820
871
 
821
872
  %s
822
873
 
823
874
  Every substantive prompt arrives with a one-line routing banner naming the lead
824
- persona, the support personas, the BMAD skill for that track, and the definition
825
- of done for this repo. Follow it. Trivial asks get no banner — answer those
875
+ persona, the support personas, the BMAD skill for that track when one fits, and
876
+ the definition of done for this repo. Follow it. Trivial asks get no banner — answer those
826
877
  directly and skip the ceremony.
827
878
 
828
879
  BMAD v6 workflow skills, if installed (`boost bmad install`): plan with
@@ -834,7 +885,8 @@ Full workflow skills need a per-project `_bmad/` runtime — `boost bmad init`.
834
885
 
835
886
  House rule: a change is done when its tests, its docs and its tracked item are;
836
887
  findings are done when each carries its evidence; an artifact is done when it is
837
- written down and tracked. Turn this off with `boost bmad off`.""" % roster
888
+ written down and tracked. Turn this off with `boost bmad off`.""" % (
889
+ _SUBAGENT_INTRO if host == hookhost.CLAUDE else _ROLE_INTRO, roster)
838
890
 
839
891
 
840
892
  # ------------------------------------------------------------ persona files
@@ -52,6 +52,8 @@ Gemini's tool names, and a lifecycle matcher is an exact string.
52
52
  """
53
53
  from __future__ import annotations
54
54
 
55
+ import json
56
+
55
57
  from ..errors import BoostError
56
58
 
57
59
  CLAUDE = "claude"
@@ -257,3 +259,27 @@ def resolve(requested: str | None) -> list[str]:
257
259
  return hosts()
258
260
  _spec(str(requested))
259
261
  return [str(requested)]
262
+
263
+
264
+ def context_output(host: str, event: str, text: str) -> str:
265
+ """What a hook prints to hand ``text`` to the model, for a Claude ``event``.
266
+
267
+ The two hosts read hook stdout differently, and the difference is silent.
268
+ Claude Code adds a `SessionStart` hook's plain stdout to the context, and
269
+ takes `UserPromptSubmit` context from ``hookSpecificOutput``. Gemini CLI
270
+ turns any non-JSON stdout into ``{decision: "allow", systemMessage: text}``
271
+ — shown to the *user* — and adds only ``additionalContext`` to the model's
272
+ history. So boost's session briefing, printed as text, reached Gemini users
273
+ as a 26-line info message and never reached the model at all (measured
274
+ against Gemini CLI 0.57.0's hook runner: ``systemMessage`` 1,297 chars,
275
+ ``additionalContext`` 0).
276
+
277
+ Claude's bytes are unchanged. Gemini always gets JSON, under its own name
278
+ for the event.
279
+ """
280
+ if host == CLAUDE and event == "SessionStart":
281
+ return text
282
+ return json.dumps({"hookSpecificOutput": {
283
+ "hookEventName": translate(host, event),
284
+ "additionalContext": text,
285
+ }})