boost-skill-cli 1.2.143__tar.gz → 1.2.145__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 (1105) hide show
  1. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.vale/styles/config/vocabularies/boost/accept.txt +3 -0
  2. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/CLAUDE.md +107 -12
  3. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/CONTRIBUTING.md +1 -1
  4. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/PKG-INFO +15 -11
  5. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/README.md +14 -10
  6. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/_version.py +2 -2
  7. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/cli.py +2 -2
  8. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/bmad.py +95 -28
  9. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/configuration.py +4 -2
  10. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/hooks.py +67 -19
  11. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/pkg.py +3 -2
  12. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/claude_settings.py +151 -24
  13. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/hookhost.py +199 -18
  14. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/mcpdecl.py +2 -1
  15. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/mcphost.py +141 -30
  16. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/PKG-INFO +15 -11
  17. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
  18. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/commands.html +16 -14
  19. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/index.html +2 -2
  20. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/openssf-badge.md +1 -1
  21. boost_skill_cli-1.2.145/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +49 -0
  22. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/codex-is-not-an-mcp-host.md +15 -4
  23. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap.html +16 -50
  24. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/mcp.feature +12 -4
  25. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/conftest.py +4 -2
  26. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_bmad_all_hosts.py +191 -5
  27. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_configuration.py +84 -13
  28. boost_skill_cli-1.2.145/tests/functional/test_cli_hooks_codex.py +159 -0
  29. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_pkg.py +12 -7
  30. boost_skill_cli-1.2.145/tests/unit/test_claude_settings_codex.py +376 -0
  31. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_hookhost.py +6 -2
  32. boost_skill_cli-1.2.145/tests/unit/test_hookhost_codex.py +305 -0
  33. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp_install_sandbox_home.py +51 -4
  34. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcphost.py +297 -21
  35. boost_skill_cli-1.2.143/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -32
  36. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.gitattributes +0 -0
  37. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.gitignore +0 -0
  38. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.gitleaks.toml +0 -0
  39. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.htmlvalidate.json +0 -0
  40. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.lighthouserc.json +0 -0
  41. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.lycheeignore +0 -0
  42. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.markdownlint-cli2.jsonc +0 -0
  43. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.pre-commit-config.yaml +0 -0
  44. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.stylelintrc.json +0 -0
  45. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.vale/styles/boost/AIWriting.yml +0 -0
  46. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.vale/styles/boost/Terminology.yml +0 -0
  47. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.vale.ini +0 -0
  48. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/CODE_OF_CONDUCT.md +0 -0
  49. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/DCO +0 -0
  50. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/GOVERNANCE.md +0 -0
  51. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/LICENSE +0 -0
  52. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/MAINTAINERS.md +0 -0
  53. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/MANIFEST.in +0 -0
  54. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/Makefile +0 -0
  55. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/SECURITY.md +0 -0
  56. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/SUPPORT.md +0 -0
  57. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost +0 -0
  58. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/__init__.py +0 -0
  59. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/__main__.py +0 -0
  60. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/cliparse.py +0 -0
  61. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/__init__.py +0 -0
  62. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/_common.py +0 -0
  63. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/discovery.py +0 -0
  64. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/info.py +0 -0
  65. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/intelligence.py +0 -0
  66. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/quality.py +0 -0
  67. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/quickstart.py +0 -0
  68. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/run.py +0 -0
  69. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/safety.py +0 -0
  70. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/taps.py +0 -0
  71. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/team.py +0 -0
  72. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/__init__.py +0 -0
  73. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/adapters.py +0 -0
  74. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/agents.py +0 -0
  75. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/ai.py +0 -0
  76. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/aihost.py +0 -0
  77. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/archive.py +0 -0
  78. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/bmad.py +0 -0
  79. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/bootstrap.py +0 -0
  80. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/browse.py +0 -0
  81. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/builtin.py +0 -0
  82. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/capabilities.py +0 -0
  83. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/catalog.py +0 -0
  84. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/catalogbundle.py +0 -0
  85. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/chat.py +0 -0
  86. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/cohort.py +0 -0
  87. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/compact.py +0 -0
  88. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/complete.py +0 -0
  89. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/config.py +0 -0
  90. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/dense.py +0 -0
  91. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/deps.py +0 -0
  92. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/discovery.py +0 -0
  93. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/ed25519.py +0 -0
  94. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/embed.py +0 -0
  95. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/faithfulness.py +0 -0
  96. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/frontmatter.py +0 -0
  97. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/gitutil.py +0 -0
  98. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/imperative.py +0 -0
  99. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/injectscan.py +0 -0
  100. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/installscan.py +0 -0
  101. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/integrity.py +0 -0
  102. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/journal.py +0 -0
  103. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/jsonstate.py +0 -0
  104. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/localembed.py +0 -0
  105. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/lockfile.py +0 -0
  106. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/logs.py +0 -0
  107. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/mcp.py +0 -0
  108. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/minisign.py +0 -0
  109. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/nethttp.py +0 -0
  110. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/output.py +0 -0
  111. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/paths.py +0 -0
  112. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/policy.py +0 -0
  113. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/projectlock.py +0 -0
  114. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/provenance.py +0 -0
  115. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/rag.py +0 -0
  116. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/registry.py +0 -0
  117. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/report.py +0 -0
  118. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/resolve.py +0 -0
  119. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/rules.py +0 -0
  120. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/scopes.py +0 -0
  121. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/secretscan.py +0 -0
  122. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/selfupdate.py +0 -0
  123. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/serve.py +0 -0
  124. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/shards.py +0 -0
  125. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/stackprobe.py +0 -0
  126. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/staleness.py +0 -0
  127. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/store.py +0 -0
  128. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/trustaudit.py +0 -0
  129. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/typedvalue.py +0 -0
  130. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/typosquat.py +0 -0
  131. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/updatediff.py +0 -0
  132. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/util.py +0 -0
  133. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/workflows.py +0 -0
  134. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/data/registries.json +0 -0
  135. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/data/rules/boost-first.mdc +0 -0
  136. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/errors.py +0 -0
  137. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/spin.py +0 -0
  138. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/__init__.py +0 -0
  139. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/_compat.py +0 -0
  140. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/graph.py +0 -0
  141. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/loader.py +0 -0
  142. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/py.typed +0 -0
  143. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/retriever.py +0 -0
  144. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  145. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  146. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/requires.txt +0 -0
  147. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/top_level.txt +0 -0
  148. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/codecov.yml +0 -0
  149. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/DEBUGGING.md +0 -0
  150. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/adapters.html +0 -0
  151. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/README.md +0 -0
  152. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-components-core.md +0 -0
  153. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-containers.md +0 -0
  154. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-context.md +0 -0
  155. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-dynamic-install.md +0 -0
  156. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/bmad.md +0 -0
  157. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/distill.gif +0 -0
  158. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/doctor.gif +0 -0
  159. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/explain.gif +0 -0
  160. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/hooks.gif +0 -0
  161. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/install.gif +0 -0
  162. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/pulse.gif +0 -0
  163. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/search.gif +0 -0
  164. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/tap.gif +0 -0
  165. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/distill.tape +0 -0
  166. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/doctor.tape +0 -0
  167. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/explain.tape +0 -0
  168. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/hooks.tape +0 -0
  169. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/install.tape +0 -0
  170. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/pulse.tape +0 -0
  171. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/search.tape +0 -0
  172. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/tap.tape +0 -0
  173. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel.html +0 -0
  174. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/chat.html +0 -0
  175. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/code-review.md +0 -0
  176. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/commit-audit.md +0 -0
  177. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo-index.json +0 -0
  178. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo.gif +0 -0
  179. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo.html +0 -0
  180. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo.tape +0 -0
  181. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/dependencies.md +0 -0
  182. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/design-roadmap.html +0 -0
  183. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/eval-latest.json +0 -0
  184. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/eval.html +0 -0
  185. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/langchain.html +0 -0
  186. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/mcp-hub.html +0 -0
  187. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/openssf-playbook.md +0 -0
  188. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/rag-architecture.md +0 -0
  189. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D01.md +0 -0
  190. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D02.md +0 -0
  191. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D03.md +0 -0
  192. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D04.md +0 -0
  193. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D05.md +0 -0
  194. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D06.md +0 -0
  195. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D07.md +0 -0
  196. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D08.md +0 -0
  197. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D09.md +0 -0
  198. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D10.md +0 -0
  199. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D11.md +0 -0
  200. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D12.md +0 -0
  201. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D13.md +0 -0
  202. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D14.md +0 -0
  203. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D15.md +0 -0
  204. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D16.md +0 -0
  205. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D17.md +0 -0
  206. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D18.md +0 -0
  207. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D19.md +0 -0
  208. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D20.md +0 -0
  209. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D21.md +0 -0
  210. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D22.md +0 -0
  211. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D23.md +0 -0
  212. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D24.md +0 -0
  213. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D25.md +0 -0
  214. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D26.md +0 -0
  215. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D27.md +0 -0
  216. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
  217. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  218. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
  219. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  220. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  221. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  222. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  223. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
  224. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  225. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  226. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  227. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  228. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  229. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  230. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  231. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  232. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  233. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  234. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  235. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-attest-findings.md +0 -0
  236. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-audit-findings.md +0 -0
  237. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  238. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-browse-findings.md +0 -0
  239. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  240. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  241. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  242. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  243. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-chat-findings.md +0 -0
  244. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  245. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  246. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  247. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-completions-findings.md +0 -0
  248. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-config-findings.md +0 -0
  249. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  250. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-context-findings.md +0 -0
  251. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  252. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  253. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-create-findings.md +0 -0
  254. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  255. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-deps-findings.md +0 -0
  256. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-discover-findings.md +0 -0
  257. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  258. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  259. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-drift-findings.md +0 -0
  260. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  261. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-edit-findings.md +0 -0
  262. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  263. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-explain-findings.md +0 -0
  264. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-export-findings.md +0 -0
  265. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  266. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  267. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  268. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  269. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  270. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-health-findings.md +0 -0
  271. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  272. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  273. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-import-findings.md +0 -0
  274. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-index-findings.md +0 -0
  275. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  276. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  277. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-install-findings.md +0 -0
  278. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  279. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  280. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-lint-findings.md +0 -0
  281. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-log-findings.md +0 -0
  282. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  283. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  284. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  285. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  286. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  287. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  288. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  289. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  290. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  291. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  292. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  293. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-policy-findings.md +0 -0
  294. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-preview-findings.md +0 -0
  295. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-profile-findings.md +0 -0
  296. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  297. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  298. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  299. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  300. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  301. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  302. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  303. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  304. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  305. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-replay-findings.md +0 -0
  306. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-root-findings.md +0 -0
  307. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  308. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-run-findings.md +0 -0
  309. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  310. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-search-findings.md +0 -0
  311. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  312. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  313. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  314. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  315. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  316. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  317. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  318. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  319. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-sync-findings.md +0 -0
  320. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-tag-findings.md +0 -0
  321. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  322. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-tap-findings.md +0 -0
  323. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-taps-findings.md +0 -0
  324. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  325. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-test-findings.md +0 -0
  326. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-trust-findings.md +0 -0
  327. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  328. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  329. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-untap-findings.md +0 -0
  330. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-update-findings.md +0 -0
  331. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  332. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-verify-findings.md +0 -0
  333. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-who-findings.md +0 -0
  334. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  335. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  336. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  337. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  338. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  339. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  340. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  341. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
  342. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
  343. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  344. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
  345. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
  346. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
  347. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
  348. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
  349. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  350. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-first-rule.md +0 -0
  351. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  352. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  353. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/branch-current-gate.md +0 -0
  354. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  355. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  356. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  357. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  358. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  359. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  360. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
  361. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  362. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  363. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  364. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  365. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  366. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  367. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  368. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
  369. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  370. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  371. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
  372. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  373. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  374. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cli-command-audit.md +0 -0
  375. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  376. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  377. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  378. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  379. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/command-carousel-page.md +0 -0
  380. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  381. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  382. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  383. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  384. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  385. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  386. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
  387. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  388. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  389. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  390. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  391. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  392. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  393. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  394. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  395. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  396. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  397. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  398. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  399. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  400. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  401. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  402. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  403. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  404. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  405. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  406. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  407. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  408. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  409. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  410. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  411. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  412. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  413. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  414. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  415. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  416. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  417. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  418. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  419. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  420. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  421. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
  422. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  423. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  424. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  425. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  426. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  427. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  428. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  429. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  430. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  431. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  432. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  433. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  434. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  435. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  436. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  437. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  438. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  439. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  440. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  441. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  442. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  443. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  444. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  445. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  446. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
  447. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  448. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  449. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  450. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  451. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  452. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  453. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  454. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  455. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/github-community-health-files.md +0 -0
  456. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  457. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  458. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  459. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  460. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  461. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  462. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
  463. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  464. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
  465. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
  466. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  467. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  468. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
  469. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  470. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  471. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  472. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
  473. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  474. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  475. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  476. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  477. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  478. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  479. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  480. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
  481. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  482. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  483. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  484. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  485. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  486. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  487. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  488. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  489. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  490. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  491. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  492. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
  493. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  494. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  495. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  496. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  497. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  498. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  499. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  500. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  501. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  502. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  503. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  504. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  505. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  506. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
  507. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  508. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  509. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  510. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  511. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  512. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  513. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  514. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
  515. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  516. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  517. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  518. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  519. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
  520. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  521. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  522. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
  523. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  524. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  525. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  526. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  527. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
  528. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  529. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
  530. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  531. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  532. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  533. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  534. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  535. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  536. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  537. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  538. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  539. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  540. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  541. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  542. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  543. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  544. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  545. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  546. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  547. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  548. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
  549. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  550. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  551. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  552. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
  553. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  554. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  555. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  556. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-playbook.md +0 -0
  557. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-silver.md +0 -0
  558. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  559. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  560. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  561. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  562. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  563. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  564. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  565. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  566. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  567. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  568. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  569. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  570. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  571. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  572. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  573. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  574. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  575. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  576. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  577. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  578. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  579. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  580. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  581. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  582. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  583. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  584. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  585. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  586. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  587. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
  588. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  589. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  590. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  591. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  592. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
  593. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  594. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  595. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  596. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  597. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  598. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  599. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  600. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  601. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  602. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  603. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
  604. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  605. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/relicence-apache-2.md +0 -0
  606. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  607. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  608. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  609. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  610. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  611. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  612. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  613. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  614. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  615. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  616. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  617. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  618. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  619. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  620. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  621. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  622. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  623. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
  624. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  625. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  626. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  627. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  628. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  629. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  630. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  631. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  632. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  633. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  634. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  635. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  636. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  637. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  638. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  639. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  640. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  641. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  642. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  643. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  644. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  645. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  646. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  647. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  648. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  649. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  650. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  651. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  652. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  653. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  654. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  655. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  656. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  657. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  658. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  659. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  660. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  661. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  662. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  663. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  664. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  665. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  666. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  667. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  668. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  669. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  670. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  671. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  672. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
  673. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  674. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  675. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  676. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  677. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  678. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  679. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
  680. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
  681. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  682. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  683. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  684. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  685. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  686. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  687. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  688. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  689. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  690. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  691. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  692. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  693. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  694. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  695. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  696. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  697. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
  698. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  699. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  700. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  701. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  702. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  703. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  704. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  705. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  706. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  707. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  708. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  709. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  710. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  711. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  712. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workspace-scope-install.md +0 -0
  713. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/zip-strict-audit.md +0 -0
  714. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  715. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  716. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/security-design.md +0 -0
  717. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/semantic-search.md +0 -0
  718. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  719. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/verifying-releases.md +0 -0
  720. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/meta.md +0 -0
  721. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/openvex.json +0 -0
  722. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  723. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  724. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  725. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  726. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/eslint.config.mjs +0 -0
  727. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/README.md +0 -0
  728. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/__init__.py +0 -0
  729. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/baseline.json +0 -0
  730. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/faithfulness.py +0 -0
  731. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/golden_set.json +0 -0
  732. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/make_corpus.py +0 -0
  733. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/make_golden.py +0 -0
  734. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/metrics.py +0 -0
  735. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/publish_golden_dataset.py +0 -0
  736. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/run_evals.py +0 -0
  737. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/examples/README.md +0 -0
  738. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/examples/adapt-demo.sh +0 -0
  739. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/examples/boost-run-prototype.sh +0 -0
  740. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/index.html +0 -0
  741. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/noxfile.py +0 -0
  742. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/pyproject.toml +0 -0
  743. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/coverage-tools.in +0 -0
  744. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/coverage-tools.txt +0 -0
  745. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/lint-tools.in +0 -0
  746. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/lint-tools.txt +0 -0
  747. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/mutation-tools.in +0 -0
  748. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/mutation-tools.txt +0 -0
  749. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/platform-pins.lock +0 -0
  750. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/release-tools.in +0 -0
  751. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/release-tools.txt +0 -0
  752. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/test-tools.in +0 -0
  753. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/test-tools.txt +0 -0
  754. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/a11y_check.py +0 -0
  755. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/add_spdx_headers.py +0 -0
  756. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/bench_cli.sh +0 -0
  757. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_command_reference.py +0 -0
  758. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_demo_index.py +0 -0
  759. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_registries.py +0 -0
  760. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_roadmap.py +0 -0
  761. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_scale_corpus.py +0 -0
  762. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_vex.py +0 -0
  763. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_anchors.py +0 -0
  764. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_branch_current.py +0 -0
  765. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_dco.py +0 -0
  766. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_licenses.py +0 -0
  767. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_reproducible.py +0 -0
  768. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_required_checks.py +0 -0
  769. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/ensure_eval_corpus.sh +0 -0
  770. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_corpus.py +0 -0
  771. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_explain.py +0 -0
  772. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_gate.py +0 -0
  773. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_recommend.py +0 -0
  774. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_retrieval.py +0 -0
  775. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_stats_summary.py +0 -0
  776. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_tools.py +0 -0
  777. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/import_budget.py +0 -0
  778. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/lock_toolchain.py +0 -0
  779. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/measure_near_duplicate_bound.py +0 -0
  780. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/measure_registry.py +0 -0
  781. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/mutation_gate.py +0 -0
  782. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/mutation_shards.py +0 -0
  783. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/mutation_weights.json +0 -0
  784. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/normalize_sdist.py +0 -0
  785. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/page_budget.py +0 -0
  786. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/perf_gate.py +0 -0
  787. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/post_deploy_smoke.py +0 -0
  788. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/publish_eval_json.py +0 -0
  789. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/publish_shards.py +0 -0
  790. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/release_guard.py +0 -0
  791. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/release_preflight.py +0 -0
  792. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/serve_docs.py +0 -0
  793. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/shard_plan.py +0 -0
  794. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/setup.cfg +0 -0
  795. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/sonar-project.properties +0 -0
  796. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/README.md +0 -0
  797. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/boost.css +0 -0
  798. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/boost.js +0 -0
  799. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/demo.html +0 -0
  800. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/adapt.feature +0 -0
  801. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/browse.feature +0 -0
  802. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/count.feature +0 -0
  803. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/discover.feature +0 -0
  804. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/doctor.feature +0 -0
  805. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/environment.py +0 -0
  806. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/explain.feature +0 -0
  807. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/index.feature +0 -0
  808. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/install.feature +0 -0
  809. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/list.feature +0 -0
  810. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/search.feature +0 -0
  811. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/cli_steps.py +0 -0
  812. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/discovery_steps.py +0 -0
  813. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/mcp_steps.py +0 -0
  814. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/quality_steps.py +0 -0
  815. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/baseline.json +0 -0
  816. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/explain.jsonl +0 -0
  817. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  818. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/golden-natural.jsonl +0 -0
  819. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/golden.jsonl +0 -0
  820. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/recommend.jsonl +0 -0
  821. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/taps-scale.txt +0 -0
  822. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/taps.txt +0 -0
  823. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/tool_calls.jsonl +0 -0
  824. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  825. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_bmad_personas_scope.py +0 -0
  826. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_capabilities_policy.py +0 -0
  827. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_adapt.py +0 -0
  828. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_bmad.py +0 -0
  829. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_catalog.py +0 -0
  830. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_chat.py +0 -0
  831. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_discovery.py +0 -0
  832. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_hooks.py +0 -0
  833. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_hooks_gemini.py +0 -0
  834. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_identifier_columns.py +0 -0
  835. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_info.py +0 -0
  836. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_intelligence.py +0 -0
  837. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_json_reports.py +0 -0
  838. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_pane_width.py +0 -0
  839. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_quality.py +0 -0
  840. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_quickstart.py +0 -0
  841. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_tap_pins.py +0 -0
  842. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_taps.py +0 -0
  843. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_team.py +0 -0
  844. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  845. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  846. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_everyday_loop.py +0 -0
  847. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_integrity_enforce.py +0 -0
  848. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_keyed_no_store_hint.py +0 -0
  849. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_kind_conformance.py +0 -0
  850. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_property_parsers.py +0 -0
  851. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_recommend_because_is_true.py +0 -0
  852. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_reports_match_reality.py +0 -0
  853. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_run.py +0 -0
  854. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_tap_signing.py +0 -0
  855. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_workspace_scope.py +0 -0
  856. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/README.md +0 -0
  857. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  858. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  859. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  860. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  861. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  862. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  863. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  864. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  865. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  866. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  867. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  868. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  869. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  870. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  871. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  872. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  873. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  874. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  875. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  876. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  877. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  878. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  879. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  880. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/fuzz_frontmatter.py +0 -0
  881. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/fuzz_registry.py +0 -0
  882. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/conftest.py +0 -0
  883. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/test_graph.py +0 -0
  884. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/test_loader.py +0 -0
  885. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/test_retriever.py +0 -0
  886. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/make_fixture.py +0 -0
  887. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/perf/test_benchmarks.py +0 -0
  888. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/smoke.sh +0 -0
  889. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
  890. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_a11y_check.py +0 -0
  891. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_action_pin_lockstep.py +0 -0
  892. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_adapters.py +0 -0
  893. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_adapters_multi.py +0 -0
  894. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_adapters_runner.py +0 -0
  895. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_agents.py +0 -0
  896. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_ai.py +0 -0
  897. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_aihost.py +0 -0
  898. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_archive.py +0 -0
  899. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_bmad_core.py +0 -0
  900. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_boost_first_offer.py +0 -0
  901. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_bootstrap.py +0 -0
  902. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_bot_pr_dco.py +0 -0
  903. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_branch_current.py +0 -0
  904. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_browse.py +0 -0
  905. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_builtin.py +0 -0
  906. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_canary_deps.py +0 -0
  907. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_capabilities.py +0 -0
  908. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_catalog.py +0 -0
  909. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_catalog_keyword_words.py +0 -0
  910. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_catalogbundle.py +0 -0
  911. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_chat.py +0 -0
  912. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_anchors.py +0 -0
  913. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_dco.py +0 -0
  914. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_licenses.py +0 -0
  915. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_reproducible.py +0 -0
  916. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_claude_settings.py +0 -0
  917. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_clean_internal_cache.py +0 -0
  918. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_cli_update_shards.py +0 -0
  919. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_cliparse.py +0 -0
  920. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_codeql_analysis_key.py +0 -0
  921. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_cohort.py +0 -0
  922. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_command_reference_fresh.py +0 -0
  923. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_community_health_files.py +0 -0
  924. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_compact.py +0 -0
  925. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_complete.py +0 -0
  926. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_complete_rc_block.py +0 -0
  927. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_config.py +0 -0
  928. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_content_dedupe.py +0 -0
  929. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_content_identity.py +0 -0
  930. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_corpus_prose.py +0 -0
  931. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  932. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_coverage_gate_prose.py +0 -0
  933. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_crash_redaction.py +0 -0
  934. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dedup_trust.py +0 -0
  935. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_demo_index.py +0 -0
  936. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense.py +0 -0
  937. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  938. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_embed_dedupe.py +0 -0
  939. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_entry_reuse.py +0 -0
  940. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_entry_vectors.py +0 -0
  941. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_fallback.py +0 -0
  942. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_fix_hint.py +0 -0
  943. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_model_unavailable.py +0 -0
  944. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_progress.py +0 -0
  945. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_quantized.py +0 -0
  946. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_ready_order.py +0 -0
  947. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_shard_real_schema.py +0 -0
  948. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  949. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_shards.py +0 -0
  950. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_status.py +0 -0
  951. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_status_cheap.py +0 -0
  952. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_vector_dedupe.py +0 -0
  953. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dependabot_config.py +0 -0
  954. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_deps.py +0 -0
  955. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_discovery.py +0 -0
  956. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_distill_merge.py +0 -0
  957. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_docs_pages_linked.py +0 -0
  958. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_docsite_chrome.py +0 -0
  959. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_doctor_output_polish.py +0 -0
  960. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_drift_hint.py +0 -0
  961. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dry_run_parity.py +0 -0
  962. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_ed25519.py +0 -0
  963. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_embed.py +0 -0
  964. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_embed_local.py +0 -0
  965. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_embed_truncated_response.py +0 -0
  966. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_entry_key.py +0 -0
  967. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_errors_and_cli_table.py +0 -0
  968. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_baseline.py +0 -0
  969. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_corpus.py +0 -0
  970. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_corpus_bodies.py +0 -0
  971. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_faithfulness.py +0 -0
  972. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_gate.py +0 -0
  973. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_grading.py +0 -0
  974. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_metrics.py +0 -0
  975. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_query_sets.py +0 -0
  976. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_stats_summary.py +0 -0
  977. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_tools.py +0 -0
  978. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_tools_probe.py +0 -0
  979. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  980. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_faithfulness.py +0 -0
  981. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_first_run_pointer.py +0 -0
  982. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_frontmatter.py +0 -0
  983. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_fuzz_targets.py +0 -0
  984. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  985. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitleaks_config.py +0 -0
  986. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitutil.py +0 -0
  987. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitutil_lfs.py +0 -0
  988. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitutil_sparse.py +0 -0
  989. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gstack_coexistence.py +0 -0
  990. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_help_contracts.py +0 -0
  991. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_hook_settings_hosts.py +0 -0
  992. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_imperative.py +0 -0
  993. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_import_budget.py +0 -0
  994. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_injectscan.py +0 -0
  995. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_install_permission_error.py +0 -0
  996. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_installscan.py +0 -0
  997. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_integrity.py +0 -0
  998. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_journal.py +0 -0
  999. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_jsonstate.py +0 -0
  1000. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_langchain_packaging.py +0 -0
  1001. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_launcher_python_floor.py +0 -0
  1002. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_lighthouse_budgets.py +0 -0
  1003. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_link_ownership.py +0 -0
  1004. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_localembed.py +0 -0
  1005. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_localembed_e2e.py +0 -0
  1006. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_lockfile.py +0 -0
  1007. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_logs.py +0 -0
  1008. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_marketing_counts.py +0 -0
  1009. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp.py +0 -0
  1010. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp_install_scan.py +0 -0
  1011. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp_read.py +0 -0
  1012. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcpdecl.py +0 -0
  1013. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_measure_registry.py +0 -0
  1014. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_minisign.py +0 -0
  1015. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutation_hardening.py +0 -0
  1016. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutation_shards.py +0 -0
  1017. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutation_subfile_shards.py +0 -0
  1018. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutmut_source_paths.py +0 -0
  1019. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_near_duplicate_collapse.py +0 -0
  1020. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_nethttp.py +0 -0
  1021. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_normalize_sdist.py +0 -0
  1022. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_output.py +0 -0
  1023. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_output_table_drop.py +0 -0
  1024. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_output_table_whole.py +0 -0
  1025. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_page_budget.py +0 -0
  1026. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_paths.py +0 -0
  1027. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_perf_gate.py +0 -0
  1028. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_pkg_confusions.py +0 -0
  1029. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_pkg_injection.py +0 -0
  1030. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_pkg_secrets.py +0 -0
  1031. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_platform_pins.py +0 -0
  1032. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_policy.py +0 -0
  1033. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_post_deploy_smoke.py +0 -0
  1034. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_project_mcp_sidecar.py +0 -0
  1035. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_projectlock.py +0 -0
  1036. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_provenance.py +0 -0
  1037. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_publish_golden_dataset.py +0 -0
  1038. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_quickstart_readiness.py +0 -0
  1039. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag.py +0 -0
  1040. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_completeness.py +0 -0
  1041. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_extra_hint.py +0 -0
  1042. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_fastpath.py +0 -0
  1043. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_fusion.py +0 -0
  1044. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_read_text_arg.py +0 -0
  1045. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registries_fresh.py +0 -0
  1046. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry.py +0 -0
  1047. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry_categories.py +0 -0
  1048. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry_control_chars.py +0 -0
  1049. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry_parallel.py +0 -0
  1050. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_release_guard.py +0 -0
  1051. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_release_preflight.py +0 -0
  1052. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_report.py +0 -0
  1053. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_required_checks.py +0 -0
  1054. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rerank_cache.py +0 -0
  1055. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_resolve.py +0 -0
  1056. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1057. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_roadmap_fresh.py +0 -0
  1058. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rules.py +0 -0
  1059. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_scale_corpus.py +0 -0
  1060. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_schedule_plist.py +0 -0
  1061. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_scopes.py +0 -0
  1062. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sdist_contents.py +0 -0
  1063. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_secretscan.py +0 -0
  1064. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_selfupdate.py +0 -0
  1065. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_serve.py +0 -0
  1066. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_serve_docs.py +0 -0
  1067. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shard_plan.py +0 -0
  1068. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards.py +0 -0
  1069. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_carry_forward.py +0 -0
  1070. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_incremental.py +0 -0
  1071. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_ingest.py +0 -0
  1072. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_matrix.py +0 -0
  1073. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1074. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_spdx_headers.py +0 -0
  1075. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_spin.py +0 -0
  1076. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_stackprobe.py +0 -0
  1077. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_staleness.py +0 -0
  1078. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_store.py +0 -0
  1079. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_store_materialize.py +0 -0
  1080. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sync_blocked_links.py +0 -0
  1081. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sync_lost_lock.py +0 -0
  1082. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1083. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_tap_pins.py +0 -0
  1084. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_token_parity.py +0 -0
  1085. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_toolchain_lock.py +0 -0
  1086. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_trustaudit.py +0 -0
  1087. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_typedvalue.py +0 -0
  1088. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_typosquat.py +0 -0
  1089. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_updatediff.py +0 -0
  1090. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_upstream_path.py +0 -0
  1091. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_util.py +0 -0
  1092. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_version.py +0 -0
  1093. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_version_tags.py +0 -0
  1094. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_vex.py +0 -0
  1095. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_visual_harness_capture.py +0 -0
  1096. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_visual_harness_flags.py +0 -0
  1097. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_concurrency.py +0 -0
  1098. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1099. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1100. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_timeouts.py +0 -0
  1101. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflows.py +0 -0
  1102. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1103. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/visual/a11y_check.mjs +0 -0
  1104. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/visual/console_check.mjs +0 -0
  1105. {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/visual/visual_check.mjs +0 -0
@@ -70,6 +70,7 @@ GTM
70
70
  gzip
71
71
  gzipped
72
72
  hardcode
73
+ hardcoded
73
74
  Helm
74
75
  hotspots
75
76
  Huashu
@@ -148,9 +149,11 @@ setuptools
148
149
  SHAs
149
150
  Shopify
150
151
  Sigstore
152
+ snake_case
151
153
  Snyk
152
154
  SonarCloud
153
155
  stderr
156
+ stdin
154
157
  Stdlib
155
158
  stdlib
156
159
  stdout
@@ -541,10 +541,10 @@ nothing. Consequences for code you write:
541
541
  finer than `skills_only` can express (which would drop rules too), so the
542
542
  `workflows` flag exists and `agents.workflow_agents()` is the set that
543
543
  honours it. `~/.codex/rules/*.rules` is the `execpolicy` command-approval
544
- DSL, not an instructions dir — don't write there. Its MCP and hooks hosts
545
- are not wired up: the MCP grammar is verified but unimplemented, and the
546
- hook `timeout` units are unestablished, so this file records neither as
547
- done.
544
+ DSL, not an instructions dir — don't write there. Its **MCP host is wired
545
+ up** (`core/mcphost.py`, fourth row — see below) and so is its **hooks**
546
+ host (`core/hookhost.py`, third row — the `timeout` units this file used
547
+ to record as unestablished are **seconds**, measured; see below).
548
548
  - **Its dir is the one agent path that is not fixed**, hence the
549
549
  `${CODEX_HOME:-~/.codex}/skills` default and `paths.expand`'s leading
550
550
  `${VAR:-fallback}` syntax. Only a *leading* reference expands and nesting
@@ -599,7 +599,8 @@ nothing. Consequences for code you write:
599
599
  `agents/` slot stays verbatim Markdown. Getting that backwards produces a file
600
600
  the agent silently never loads.
601
601
  - `core/mcphost.py` holds the per-host `mcp add`/`remove` grammar.
602
- **Antigravity CLI (`agy`) is the third host**, and one argv rule of its own
602
+ **Antigravity CLI (`agy`) is the third host and Codex CLI is the fourth**,
603
+ and one argv rule of agy's own
603
604
  bites: flags must come *before* `<name>` (a flag after it is rejected). The
604
605
  `--` boost also emits is agy's documented separator and, measured on 1.1.22,
605
606
  inert — agy never consumes an argument that *follows* the command, and
@@ -609,7 +610,34 @@ nothing. Consequences for code you write:
609
610
  `has_scope()` exists and the success line drops "(scope: user)" for it. Its
610
611
  `add` **upserts** where Claude's errors on a duplicate name; that asymmetry
611
612
  is what made `--host auto` abort on a machine already registered with
612
- Claude. Claude and
613
+ Claude.
614
+
615
+ **Codex agrees with none of the other three outright, and the difference
616
+ with teeth is the flag spelling**: `--env` is long-form only — `codex mcp
617
+ add x -e A=1 -- cmd` exits 2 with "unexpected argument `-e` found", and its
618
+ own tip ("to pass `-e` as a value, use `-- -e`") is about the command, not
619
+ the option. So the env flag is a per-host spelling (`mcphost.ENV_FLAG`, an
620
+ override table whose absent rows mean `-e`) rather than one constant. It
621
+ takes flags on *either* side of the name (agy rejects one after it), puts
622
+ `--` on Claude's side, and there it is load-bearing rather than decorative:
623
+ with it a dash-leading command is stored verbatim, where agy rejects the
624
+ same input. Like agy it has **no scope** (one global
625
+ `$CODEX_HOME/config.toml`) and its `add` upserts. Two things about *where*
626
+ it writes are its own, and both are in `config_home`: the default home is
627
+ **`$HOME/.codex`, a subdirectory** where the other three are rooted at
628
+ `$HOME` itself (`CONFIG_HOME_DEFAULT_REL`), and a **relative `CODEX_HOME`
629
+ is honoured against the current directory** (`RELATIVE_CONFIG_HOME_CWD`) —
630
+ the exact opposite of Claude Code, which refuses a relative
631
+ `CLAUDE_CONFIG_DIR` outright. That last one is why they cannot share a
632
+ branch: Claude's "relative → fall back to `$HOME`" would have reported a
633
+ write contained when it lands wherever the user happened to be standing.
634
+ One more asymmetry is on the removal side: `codex mcp remove <missing>`
635
+ prints `No MCP server named 'boost' found.` and exits **0**, which contains
636
+ "found" but never "not found", so `_NOT_REGISTERED` carries a second marker
637
+ or `classify_result` reports a removal that never happened. All measured
638
+ against codex-cli 0.156.1 on 2026-09-27.
639
+
640
+ Claude and
613
641
  Gemini disagree on name position, the `--` separator, and whether unregister
614
642
  needs an explicit scope — all three verified against the real CLIs and pinned
615
643
  by `tests/unit/test_mcphost.py`. **boost emits the separator for all three,
@@ -626,7 +654,7 @@ nothing. Consequences for code you write:
626
654
  in a spec's args rewrites the entry as `{"url": "npx", "type": "http"}`. Emit
627
655
  the separator unconditionally: `add x npx --` is accepted and stores
628
656
  `args: []`. Don't "simplify" them into one shape —
629
- **one function, three branches**, which is what `mcphost.add_argv` is. It is
657
+ **one function, four branches**, which is what `mcphost.add_argv` is. It is
630
658
  the only copy of the `mcp add` grammar, and it is the only copy because
631
659
  `mcpdecl.register_argv` (the install path, registering a server a *skill*
632
660
  declares) used to be a second one: it had a Gemini branch and a Claude
@@ -639,14 +667,14 @@ nothing. Consequences for code you write:
639
667
  no-op against a user-scope entry, and Claude, which needs none, is handed one
640
668
  so the argv cannot reach `<cwd>/.mcp.json`, the one scope outside every
641
669
  `$HOME` and so the one `mcphost.escapes_home` cannot judge.
642
- - **`core/hookhost.py` is the same idea for hooks, and two hosts have them.**
670
+ - **`core/hookhost.py` is the same idea for hooks, and three hosts have them.**
643
671
  `boost hooks` writes Claude Code's `~/.claude/settings.json` (the default,
644
- unchanged) or, behind `--host gemini`, the `~/.gemini/settings.json` that
645
- Gemini CLI reads;
672
+ unchanged), or behind `--host` the `~/.gemini/settings.json` that Gemini CLI
673
+ reads or the `$CODEX_HOME/hooks.json` that Codex CLI reads;
646
674
  `core/claude_settings.py` takes `host=` throughout and asks the table for the
647
675
  differences. The `hooks` key and the `{matcher, hooks: [{type, command,
648
- timeout}]}` block shape are *identical* between them, which is exactly what
649
- makes the three real differences easy to ship wrong:
676
+ timeout}]}` block shape are *identical* across all three, which is exactly
677
+ what makes the real differences easy to ship wrong. Gemini's three:
650
678
  - **`timeout` units.** Claude's is **seconds**; Gemini's is **milliseconds**
651
679
  (`DEFAULT_HOOK_TIMEOUT = 6e4`, fed straight to `setTimeout`). Callers pass
652
680
  seconds and `hookhost.hook_entry` converts, so boost's `--timeout 10` is ten
@@ -673,6 +701,73 @@ nothing. Consequences for code you write:
673
701
  sources are named at the top of `hookhost.py` so the next person can re-check
674
702
  them against a newer release.
675
703
 
704
+ **Codex's four are different differences, and two of them are not about the
705
+ block at all.** Measured against Codex CLI 0.156.1 on 2026-09-27, from four
706
+ sources named at the top of `hookhost.py` (`codex app-server
707
+ generate-json-schema`; `strings` over the binary the ChatGPT app ships;
708
+ observed `codex app-server` `hooks/list` runs; the 23 embedded draft-07
709
+ schemas its `schema_loader.rs` reads):
710
+ - **The filename is `hooks.json`**, not `settings.json` — the only host
711
+ where it is not, hence `hookhost.settings_file`. A `hooks` key in a
712
+ `settings.json` is a file Codex never opens, and nothing says so.
713
+ - **The user root moves.** `$CODEX_HOME` relocates it and a *relative* value
714
+ is honoured against the current directory — the measured grammar lives
715
+ once, in `mcphost.config_home`. The **project** root does not move: it is
716
+ the literal `<project>/.codex` whatever `CODEX_HOME` says. Because the
717
+ variable is ambient, `claude_settings.escaping_path` refuses a user-scope
718
+ write that lands outside this `$HOME` unless `--force` comes with it —
719
+ the same hole `test_mcp_install_sandbox_home.py` closes for `mcp add`,
720
+ where a sandboxed `HOME` does not move `CODEX_HOME` and a test run wrote
721
+ into the developer's live `~/.codex`. The sweeps in `commands/bmad.py`
722
+ **skip** such a host with a warning rather than inheriting the refusal:
723
+ an aborted `bmad on` would leave Claude without its hooks either. So
724
+ `boost bmad` carries its own `--force`, and needs to: `bmad doctor` reads
725
+ the relocated file and reports the hook that will actually run, and
726
+ without the flag no `bmad` command could act on what `doctor` had just
727
+ reported. `_autopilot_on` resolves its host list **before** writing the
728
+ personas, because that resolution is the only step that can refuse and
729
+ refusing after `write_personas` left files on disk that
730
+ `_set_scope_state` never recorded.
731
+ - **`timeout` is in seconds**, agreeing with Claude and not Gemini. (Also
732
+ measured: `timeoutSec` is the *wire* spelling only — as a config key it is
733
+ ignored and the hook silently falls back to Codex's 600-second default.)
734
+ - **Event names are matched exactly, and an unknown one is dropped in
735
+ silence.** Twelve PascalCase events; `NotARealEvent` and `sessionstart`
736
+ each produced no hook, no warning and no error. So Codex is
737
+ `strict_events` in the table and `translate` returns `None` rather than
738
+ taking Gemini's warn-but-add fallthrough — the "looks installed and never
739
+ fires" failure this module exists to prevent. `CLAUDE_TO_CODEX` maps all
740
+ ten Claude events explicitly; only `Notification` has no counterpart
741
+ (Codex *has* both sub-agent events, which is why the refusal's "has no
742
+ sub-agents" clause is now a per-host `no_counterpart_note` rather than one
743
+ hardcoded sentence).
744
+
745
+ Two more Codex facts shape the writer rather than the block. A hook's trust
746
+ key is positional — `<sourcePath>:<event>:<group_index>:<handler_index>` —
747
+ so a re-add that drops a group and appends a new one re-keys every group
748
+ after it and voids the user's trust grant on each (measured: an untouched
749
+ neighbour moved `:0:0` -> `:1:0`). `add_hook` therefore **replaces in
750
+ place**, for every host: shuffling a file boost does not own was never a
751
+ feature, only never load-bearing. And a new hook does not run until the user
752
+ trusts it at startup, with project scope also needing `trust_level =
753
+ "trusted"` — `commands/hooks.py` says so after a Codex add, because "added"
754
+ alone is true and useless.
755
+
756
+ **Hook stdin and stdout are schema-validated, and both schemas were read
757
+ rather than assumed.** Every event has an embedded pair,
758
+ `<event>.command.{input,output}`, each `"additionalProperties": false`. The
759
+ output side carries `hookSpecificOutput` -> `<Event>HookSpecificOutputWire`
760
+ with `additionalContext` and a required `hookEventName` pinned to that
761
+ event's PascalCase `const`, so `hookhost.context_output`'s Gemini-shaped
762
+ JSON is what Codex wants too — Claude's plain-text `SessionStart` shortcut
763
+ is the one thing that does not carry over. The input side uses Claude's
764
+ snake_case keys (`prompt`, `session_id`, `cwd`, `hook_event_name`) plus
765
+ Codex's own `model`/`permission_mode`/`turn_id`, so `bmad._read_hook_stdin`
766
+ needs no per-host branch. Both were worth measuring rather than inferring:
767
+ `_host_command` ends every non-Claude hook in `2>/dev/null || true`, so a
768
+ key spelled wrong on either side is a router that prints nothing, on every
769
+ prompt, with no error anywhere.
770
+
676
771
  `core/catalog.scan_dir` walks a tap's clone and classifies each file into one
677
772
  of the three item kinds (see Non-obvious rules above); `core/store.py` owns
678
773
  install, uninstall and sync — copying into the canonical store, symlinking into
@@ -121,7 +121,7 @@ list, and neither should be added to it.
121
121
  | `make test` | unit + functional suites, **≥90% coverage** (statements + branches) |
122
122
  | `make patch-coverage` | changed-line coverage vs `main`, **≥80% of the diff** (PRs) |
123
123
  | `bash tests/smoke.sh` | 183 end-to-end checks through the real `./boost` shim |
124
- | `make bdd` | the Gherkin suite — 11 features, 56 scenarios (needs the `[bdd]` extra) |
124
+ | `make bdd` | the Gherkin suite — 11 features, 57 scenarios (needs the `[bdd]` extra) |
125
125
  | `make mutation` | mutmut over `boost_cli/core`, **≥80% mutants killed** |
126
126
  | `ruff check boost_cli tests` | lint, zero findings |
127
127
  | `mypy` | type check, zero errors |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.143
3
+ Version: 1.2.145
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -63,7 +63,8 @@ Antigravity CLI (`agy`) is wired up the same way: skills link into
63
63
  Codex — the `codex` CLI and the ChatGPT desktop app, which is the same binary —
64
64
  needs no symlink at all: `~/.agents/skills` is one of its own skill roots, so a
65
65
  skill boost copies into the canonical store is already there. Rules materialize
66
- into `~/.codex/AGENTS.md`.
66
+ into `~/.codex/AGENTS.md`, and `boost mcp register` reaches it through
67
+ `codex mcp add`.
67
68
 
68
69
  ```bash
69
70
  pipx install boost-skill-cli
@@ -512,6 +513,7 @@ purely local operation, for CI images and air-gapped machines.
512
513
  | Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
513
514
  | Gemini CLI | `gemini` | `gemini mcp add -s user` → `~/.gemini/settings.json` |
514
515
  | Antigravity CLI | `agy` | `agy mcp add` → `~/.gemini/config/mcp_config.json` |
516
+ | Codex CLI | `codex` | `codex mcp add` → `${CODEX_HOME:-~/.codex}/config.toml` |
515
517
 
516
518
  Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
517
519
  `boost_read`, `boost_install`, `boost_doctor` and
@@ -519,25 +521,27 @@ Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
519
521
  actual text — without it, installing was the only way to read a skill.
520
522
 
521
523
  The server also returns MCP `instructions`, telling the agent when boost is
522
- relevant. The two hosts place those differently, and it matters. Claude Code
523
- loads them into the system prompt. Gemini CLI appends them to its memory tier
524
- alongside `GEMINI.md`, and only in a trusted folder, so outside one they are
525
- dropped silently. Each tool's own description therefore repeats its trigger,
526
- because a tool description is the only part always in context at the moment the
527
- agent chooses a tool.
524
+ relevant. Claude Code and Gemini CLI place those differently, and it matters.
525
+ Claude Code loads them into the system prompt. Gemini CLI appends them to its
526
+ memory tier alongside `GEMINI.md`, and only in a trusted folder, so outside one
527
+ they are dropped silently. Each tool's own description therefore repeats its
528
+ trigger, because a tool description is the only part always in context at the
529
+ moment the agent chooses a tool.
528
530
 
529
- Verify with `claude mcp list` or `gemini mcp list`; boost should show as
530
- Connected.
531
+ Verify with `claude mcp list`, `gemini mcp list` or `codex mcp list`; boost
532
+ should show as Connected.
531
533
 
532
534
  ## Agent hooks and BMAD
533
535
 
534
- `boost hooks` manages hooks in `settings.json` for Claude Code and Gemini CLI,
536
+ `boost hooks` manages hooks for Claude Code, Gemini CLI and Codex CLI —
537
+ `settings.json` for the first two, `$CODEX_HOME/hooks.json` for Codex —
535
538
  translating between their event vocabularies and timeout units. `boost bmad on`
536
539
  uses them to put the BMAD Method's personas in charge of every task, in one
537
540
  command with no Node and no network.
538
541
 
539
542
  ```bash
540
543
  boost hooks add SessionStart -c 'echo hello' -n greet --scope project
544
+ boost hooks add SessionStart --host codex -c 'echo hello' -n greet
541
545
  boost bmad on
542
546
  ```
543
547
 
@@ -21,7 +21,8 @@ Antigravity CLI (`agy`) is wired up the same way: skills link into
21
21
  Codex — the `codex` CLI and the ChatGPT desktop app, which is the same binary —
22
22
  needs no symlink at all: `~/.agents/skills` is one of its own skill roots, so a
23
23
  skill boost copies into the canonical store is already there. Rules materialize
24
- into `~/.codex/AGENTS.md`.
24
+ into `~/.codex/AGENTS.md`, and `boost mcp register` reaches it through
25
+ `codex mcp add`.
25
26
 
26
27
  ```bash
27
28
  pipx install boost-skill-cli
@@ -470,6 +471,7 @@ purely local operation, for CI images and air-gapped machines.
470
471
  | Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
471
472
  | Gemini CLI | `gemini` | `gemini mcp add -s user` → `~/.gemini/settings.json` |
472
473
  | Antigravity CLI | `agy` | `agy mcp add` → `~/.gemini/config/mcp_config.json` |
474
+ | Codex CLI | `codex` | `codex mcp add` → `${CODEX_HOME:-~/.codex}/config.toml` |
473
475
 
474
476
  Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
475
477
  `boost_read`, `boost_install`, `boost_doctor` and
@@ -477,25 +479,27 @@ Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
477
479
  actual text — without it, installing was the only way to read a skill.
478
480
 
479
481
  The server also returns MCP `instructions`, telling the agent when boost is
480
- relevant. The two hosts place those differently, and it matters. Claude Code
481
- loads them into the system prompt. Gemini CLI appends them to its memory tier
482
- alongside `GEMINI.md`, and only in a trusted folder, so outside one they are
483
- dropped silently. Each tool's own description therefore repeats its trigger,
484
- because a tool description is the only part always in context at the moment the
485
- agent chooses a tool.
482
+ relevant. Claude Code and Gemini CLI place those differently, and it matters.
483
+ Claude Code loads them into the system prompt. Gemini CLI appends them to its
484
+ memory tier alongside `GEMINI.md`, and only in a trusted folder, so outside one
485
+ they are dropped silently. Each tool's own description therefore repeats its
486
+ trigger, because a tool description is the only part always in context at the
487
+ moment the agent chooses a tool.
486
488
 
487
- Verify with `claude mcp list` or `gemini mcp list`; boost should show as
488
- Connected.
489
+ Verify with `claude mcp list`, `gemini mcp list` or `codex mcp list`; boost
490
+ should show as Connected.
489
491
 
490
492
  ## Agent hooks and BMAD
491
493
 
492
- `boost hooks` manages hooks in `settings.json` for Claude Code and Gemini CLI,
494
+ `boost hooks` manages hooks for Claude Code, Gemini CLI and Codex CLI —
495
+ `settings.json` for the first two, `$CODEX_HOME/hooks.json` for Codex —
493
496
  translating between their event vocabularies and timeout units. `boost bmad on`
494
497
  uses them to put the BMAD Method's personas in charge of every task, in one
495
498
  command with no Node and no network.
496
499
 
497
500
  ```bash
498
501
  boost hooks add SessionStart -c 'echo hello' -n greet --scope project
502
+ boost hooks add SessionStart --host codex -c 'echo hello' -n greet
499
503
  boost bmad on
500
504
  ```
501
505
 
@@ -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.143'
22
- __version_tuple__ = version_tuple = (1, 2, 143)
21
+ __version__ = version = '1.2.145'
22
+ __version_tuple__ = version_tuple = (1, 2, 145)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -128,8 +128,8 @@ COMMANDS = [
128
128
  ("completions", "cfg", "configuration", "Generate shell tab-completion scripts"),
129
129
  ("schedule", "cfg", "configuration", "Manage automatic skill-sync scheduling"),
130
130
  ("serve", "cfg", "configuration", "Browse the catalogue in a browser: search, facets and a tap graph"),
131
- ("mcp", "cfg", "configuration", "Register boost as an MCP server (Claude Code, Gemini CLI, Antigravity CLI)"),
132
- ("hooks", "cfg", "hooks", "Manage agent hooks (Claude Code, Gemini CLI) in settings.json"),
131
+ ("mcp", "cfg", "configuration", "Register boost as an MCP server (Claude Code, Gemini CLI, Antigravity CLI, Codex CLI)"),
132
+ ("hooks", "cfg", "hooks", "Manage agent hooks (Claude Code, Gemini CLI, Codex CLI)"),
133
133
  ("bmad", "cfg", "bmad", "BMAD Method autopilot — `bmad on` routes every task to a persona"),
134
134
  ("self-update", "cfg", "configuration", "Update boost itself to the latest version"),
135
135
  # Team & Collaboration (6)
@@ -113,6 +113,10 @@ def cmd_bmad(argv) -> int:
113
113
  help="enable the startup toggle right after install")
114
114
  p.add_argument("--plain", action="store_true",
115
115
  help="route: print the banner as text, not as hook JSON")
116
+ p.add_argument("--force", action="store_true",
117
+ help="reach hosts whose settings file lies outside this "
118
+ "$HOME (a relocated $CODEX_HOME), which on/off/"
119
+ "startup/uninstall/disable otherwise skip")
116
120
  p.add_argument("--host", metavar="H", default=None,
117
121
  choices=(*hookhost.hosts(), "auto"),
118
122
  help="on/startup: hosts to hook (%s; default auto: "
@@ -121,9 +125,9 @@ def cmd_bmad(argv) -> int:
121
125
  args = p.parse_args(argv)
122
126
 
123
127
  if args.action == "on":
124
- return _autopilot_on(args.scope, args.host)
128
+ return _autopilot_on(args.scope, args.host, args.force)
125
129
  if args.action == "off":
126
- return _autopilot_off(args.scope)
130
+ return _autopilot_off(args.scope, args.force)
127
131
  if args.action == "route":
128
132
  return _route(args.value, args.plain, args.scope, _one_host(args.host))
129
133
  if args.action == "personas":
@@ -133,13 +137,14 @@ def cmd_bmad(argv) -> int:
133
137
  if args.action == "init":
134
138
  return _init(args.modules, args.startup)
135
139
  if args.action == "startup":
136
- return _startup(args.value or "status", args.scope, args.host)
140
+ return _startup(args.value or "status", args.scope, args.host,
141
+ args.force)
137
142
  if args.action == "orient":
138
143
  return _orient(args.scope, _one_host(args.host))
139
144
  if args.action == "uninstall":
140
- return _uninstall(args.scope, args.yes)
145
+ return _uninstall(args.scope, args.yes, args.force)
141
146
  if args.action == "disable":
142
- return _disable(args.scope)
147
+ return _disable(args.scope, args.force)
143
148
  if args.action == "enable":
144
149
  return _enable(args.scope)
145
150
  return _doctor() # doctor | status
@@ -187,7 +192,7 @@ def _one_host(host) -> str:
187
192
  return hookhost.CLAUDE if host in (None, "auto") else host
188
193
 
189
194
 
190
- def _hook_hosts(scope: str, requested=None) -> list[str]:
195
+ def _hook_hosts(scope: str, requested=None, force: bool = False) -> list[str]:
191
196
  """Hosts to write hooks into: Claude always, others on evidence of use.
192
197
 
193
198
  Claude is unconditional. It is boost's primary host and the behaviour every
@@ -205,20 +210,55 @@ def _hook_hosts(scope: str, requested=None) -> list[str]:
205
210
 
206
211
  ``requested`` (`--host`) overrides the rule: naming one host writes that
207
212
  host only, so Claude-only no longer means hand-editing Gemini's settings
208
- after every `on`.
213
+ after every `on`. It does **not** override the escape guard — naming a
214
+ host whose file lies outside this `$HOME` raises here, before the caller
215
+ has written anything, rather than from `add_hook` half a command later.
216
+ `--force` is what gets past it, on either path.
217
+
218
+ Resolved once per command and passed around, not recomputed per hook:
219
+ `on` installs two hooks, and a host list that decided itself twice said
220
+ "skipping Codex CLI" twice for one decision.
209
221
  """
210
222
  if requested not in (None, "auto"):
211
- return [requested]
223
+ cs.refuse_escape(scope, str(requested), force=force)
224
+ return [str(requested)]
212
225
  chosen = [hookhost.CLAUDE]
213
226
  for host in hookhost.hosts():
214
227
  if host == hookhost.CLAUDE:
215
228
  continue
216
229
  dotdir = cs.settings_path(scope, host=host).parent
217
- if shutil.which(hookhost.cli(host)) or dotdir.is_dir():
218
- chosen.append(host)
230
+ if not (shutil.which(hookhost.cli(host)) or dotdir.is_dir()):
231
+ continue
232
+ # After the evidence check: warning about a host that was never a
233
+ # candidate is noise, and it is the only thing this warning is for.
234
+ if _skip_escaping(scope, host, force):
235
+ continue
236
+ chosen.append(host)
219
237
  return chosen
220
238
 
221
239
 
240
+ def _skip_escaping(scope: str, host: str, force: bool = False) -> bool:
241
+ """True — and says so — when `host`'s file lies outside this `$HOME`.
242
+
243
+ `bmad on`/`off` sweep every host they find, so one host boost must not
244
+ write is a reason to leave that host alone, not to abort the sweep: an
245
+ unguarded `add_hook` raises and Claude's hook never gets installed either.
246
+
247
+ The deliberate case is `--force`, on `bmad` itself and not only on `boost
248
+ hooks`. Without it here, `bmad doctor` could report a hook in a relocated
249
+ `$CODEX_HOME` — it reads what will actually run — that `bmad off` then
250
+ refused to remove, with nothing in the command able to reconcile the two.
251
+ """
252
+ if force:
253
+ return False
254
+ target = cs.escaping_path(scope, host)
255
+ if target is None:
256
+ return False
257
+ out.warn("skipping %s — %s is outside this $HOME"
258
+ % (hookhost.label(host), target), wrap=True)
259
+ return True
260
+
261
+
222
262
  #: (Claude event, hook name, matcher). The matcher is Claude's own
223
263
  #: `SessionStart` source vocabulary, and `hookhost` deliberately does not
224
264
  #: translate matchers — they pass through host-native — so it is applied only
@@ -243,11 +283,16 @@ def _host_command(host: str, command: str) -> str:
243
283
 
244
284
 
245
285
  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."""
286
+ hosts: list[str], force: bool = False) -> list[str]:
287
+ """Install one hook on each of `hosts`. Returns the ones written.
288
+
289
+ Takes the list rather than resolving it, because resolving it is where
290
+ the escape guard and its warning live and a caller installing two hooks
291
+ must make that decision once.
292
+ """
248
293
  event, name, matcher = spec
249
294
  written = []
250
- for host in _hook_hosts(scope, requested):
295
+ for host in hosts:
251
296
  target = hookhost.translate(host, event)
252
297
  if target is None:
253
298
  # Refused out loud rather than dropped: a hook the user asked for
@@ -257,12 +302,13 @@ def _add_hook_everywhere(scope: str, spec: tuple, command: str,
257
302
  continue
258
303
  cs.add_hook(scope, target, name, _host_command(host, command),
259
304
  matcher=matcher if host == hookhost.CLAUDE else None,
260
- host=host)
305
+ host=host, force=force)
261
306
  written.append(host)
262
307
  return written
263
308
 
264
309
 
265
- def _remove_hook_everywhere(scope: str, *specs: tuple) -> int:
310
+ def _remove_hook_everywhere(scope: str, *specs: tuple,
311
+ force: bool = False) -> int:
266
312
  """Remove hooks from every host, installed or not. Returns how many were.
267
313
 
268
314
  Unlike install this does not filter on `shutil.which`: someone who removed
@@ -273,21 +319,30 @@ def _remove_hook_everywhere(scope: str, *specs: tuple) -> int:
273
319
  """
274
320
  removed = 0
275
321
  for host in hookhost.hosts():
322
+ if _skip_escaping(scope, host, force):
323
+ continue
276
324
  for event, name, _matcher in specs:
277
325
  target = hookhost.translate(host, event)
278
326
  if target is not None:
279
- removed += cs.remove_hook(scope, target, name, host=host)
327
+ removed += cs.remove_hook(scope, target, name, host=host,
328
+ force=force)
280
329
  return removed
281
330
 
282
331
 
283
- def _autopilot_on(scope, requested_host=None) -> int:
332
+ def _autopilot_on(scope, requested_host=None, force: bool = False) -> int:
284
333
  """The one command. Personas + orientation + router, in one idempotent pass.
285
334
 
286
335
  Global by default: the point of the autopilot is that a task arriving in
287
336
  *any* repo already knows which persona owns it, and per-project setup would
288
337
  make that a per-repo chore.
338
+
339
+ The host list is resolved **first**, before anything is written. It is the
340
+ only step that can refuse — a `--host` whose settings file lies outside
341
+ this `$HOME` — and refusing after `write_personas` left persona files on
342
+ disk that `_set_scope_state` never got to record.
289
343
  """
290
344
  scope = scope or "global"
345
+ chosen = _hook_hosts(scope, requested_host, force)
291
346
  agents = _agents_dir(scope)
292
347
  # Asked before writing: whether this run *creates* the directory decides
293
348
  # what running sessions can see (see the restart line below).
@@ -302,10 +357,10 @@ def _autopilot_on(scope, requested_host=None) -> int:
302
357
  launcher = shlex.quote(str(paths.launcher()))
303
358
  hosts = _add_hook_everywhere(
304
359
  scope, _ORIENT_HOOK, "%s bmad orient --scope %s" % (launcher, scope),
305
- requested_host)
360
+ chosen, force)
306
361
  _add_hook_everywhere(scope, _ROUTE_HOOK,
307
362
  "%s bmad route --scope %s" % (launcher, scope),
308
- requested_host)
363
+ chosen, force)
309
364
  _set_scope_state(scope, autopilot=True, startup=True, personas=present,
310
365
  enabled_at=util.now_iso())
311
366
  journal.log("bmad-autopilot", "on", scope=scope, personas=present)
@@ -335,9 +390,10 @@ def _autopilot_on(scope, requested_host=None) -> int:
335
390
  return 0
336
391
 
337
392
 
338
- def _autopilot_off(scope) -> int:
393
+ def _autopilot_off(scope, force: bool = False) -> int:
339
394
  scope = scope or "global"
340
- hooks_removed = _remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK)
395
+ hooks_removed = _remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK,
396
+ force=force)
341
397
  removed = core.remove_personas(_agents_dir(scope))
342
398
  _set_scope_state(scope, autopilot=False, startup=False, personas=0)
343
399
  journal.log("bmad-autopilot", "off", scope=scope, personas=len(removed))
@@ -350,6 +406,15 @@ def _autopilot_off(scope) -> int:
350
406
  def _read_hook_stdin() -> dict:
351
407
  """Claude Code's UserPromptSubmit payload, or {} for anything unreadable.
352
408
 
409
+ One reader for every host, because the payload keys are the same on all
410
+ three. Measured for Codex, not assumed: its
411
+ ``user-prompt-submit.command.input`` schema requires ``prompt``,
412
+ ``session_id``, ``cwd`` and ``hook_event_name`` under exactly Claude's
413
+ snake_case spellings (plus ``model``/``permission_mode``/``turn_id`` of
414
+ its own). A different spelling would have reached ``_route`` as an empty
415
+ prompt, classified TRIVIAL, and printed nothing — silently, because
416
+ ``_host_command`` ends the hook in ``2>/dev/null || true``.
417
+
353
418
  Accepts plain text too, so `echo "add tests for the scanner" | boost bmad
354
419
  route` works for a human debugging the routing table. (Give it a real
355
420
  prompt: anything under `core.MIN_WORDS` words classifies as trivial and
@@ -632,12 +697,14 @@ def _drop_retired_skills(before: dict, installed: list[str],
632
697
 
633
698
  # ----------------------------------------------------------------------- toggle
634
699
 
635
- def _startup(value, scope, requested_host=None) -> int:
700
+ def _startup(value, scope, requested_host=None, force: bool = False) -> int:
636
701
  scope = scope or "project"
637
702
  if value == "on":
638
703
  cmd = "%s bmad orient --scope %s" % (
639
704
  shlex.quote(str(paths.launcher())), scope)
640
- started = _add_hook_everywhere(scope, _ORIENT_HOOK, cmd, requested_host)
705
+ started = _add_hook_everywhere(
706
+ scope, _ORIENT_HOOK, cmd,
707
+ _hook_hosts(scope, requested_host, force), force)
641
708
  _set_scope_state(scope, startup=True)
642
709
  journal.log("bmad-startup", "on", scope=scope)
643
710
  out.ok("BMAD startup ON (%s) — new sessions get orientation" % scope)
@@ -645,7 +712,7 @@ def _startup(value, scope, requested_host=None) -> int:
645
712
  out.dim(" hook → %s" % cs.settings_path(scope, host=host))
646
713
  return 0
647
714
  if value == "off":
648
- _remove_hook_everywhere(scope, _ORIENT_HOOK)
715
+ _remove_hook_everywhere(scope, _ORIENT_HOOK, force=force)
649
716
  _set_scope_state(scope, startup=False)
650
717
  journal.log("bmad-startup", "off", scope=scope)
651
718
  out.ok("BMAD startup OFF (%s) — skills stay installed" % scope)
@@ -692,14 +759,14 @@ def _status(scope) -> int:
692
759
 
693
760
  # ------------------------------------------------------------------- teardown
694
761
 
695
- def _uninstall(scope, yes) -> int:
762
+ def _uninstall(scope, yes, force: bool = False) -> int:
696
763
  scope = scope or "project"
697
764
  if not (yes or out.confirm(
698
765
  "Remove BMAD (%s)? deletes bmad-* skills%s" % (
699
766
  scope, " + _bmad/, _bmad-output/" if scope == "project" else ""))):
700
767
  out.info("aborted")
701
768
  return 1
702
- _remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK)
769
+ _remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK, force=force)
703
770
  removed = _rm_skills(_skills_dir(scope))
704
771
  removed += len(core.remove_personas(_agents_dir(scope)))
705
772
  if scope == "project":
@@ -714,10 +781,10 @@ def _uninstall(scope, yes) -> int:
714
781
  return 0
715
782
 
716
783
 
717
- def _disable(scope) -> int:
784
+ def _disable(scope, force: bool = False) -> int:
718
785
  """Quarantine: turn startup off and move skills aside (recoverable)."""
719
786
  scope = scope or "project"
720
- _remove_hook_everywhere(scope, _ORIENT_HOOK)
787
+ _remove_hook_everywhere(scope, _ORIENT_HOOK, force=force)
721
788
  qdir = _quarantine_dir(scope)
722
789
  qdir.mkdir(parents=True, exist_ok=True)
723
790
  moved = 0
@@ -2237,8 +2237,10 @@ def cmd_mcp(argv) -> int:
2237
2237
  out.info(" ".join(cmd))
2238
2238
 
2239
2239
  for host in done:
2240
- # agy has no scopes — one global file — so claiming "(scope: user)"
2241
- # would describe a distinction its CLI does not have.
2240
+ # agy and Codex have no scopes — one global file each — so claiming
2241
+ # "(scope: user)" for either would describe a distinction their CLIs
2242
+ # do not have, and send anyone looking for a project-scoped entry
2243
+ # after something that cannot exist.
2242
2244
  scope_note = " (scope: user)" if mcphost.has_scope(host) else ""
2243
2245
  out.ok("%sed boost as an MCP server for %s%s"
2244
2246
  % (verb, mcphost.label(host), scope_note))