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