boost-skill-cli 1.0.419__tar.gz → 1.0.421__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 (658) hide show
  1. {boost_skill_cli-1.0.419/boost_skill_cli.egg-info → boost_skill_cli-1.0.421}/PKG-INFO +65 -15
  2. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/README.md +64 -14
  3. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/cli.py +1 -1
  5. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/bmad.py +220 -47
  6. boost_skill_cli-1.0.421/boost_cli/core/bmad.py +692 -0
  7. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421/boost_skill_cli.egg-info}/PKG-INFO +65 -15
  8. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_skill_cli.egg-info/SOURCES.txt +4 -0
  9. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/commands.html +9 -7
  10. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/index.html +1 -1
  11. boost_skill_cli-1.0.421/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +96 -0
  12. boost_skill_cli-1.0.421/docs/roadmap/items/tool-call-eval-tier.md +65 -0
  13. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap.html +158 -2
  14. boost_skill_cli-1.0.421/tests/functional/test_cli_bmad.py +519 -0
  15. boost_skill_cli-1.0.421/tests/unit/test_bmad_core.py +594 -0
  16. boost_skill_cli-1.0.419/tests/functional/test_cli_bmad.py +0 -225
  17. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.gitattributes +0 -0
  18. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.gitignore +0 -0
  19. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.gitleaks.toml +0 -0
  20. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.htmlvalidate.json +0 -0
  21. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.lighthouserc.json +0 -0
  22. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.lycheeignore +0 -0
  23. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.markdownlint-cli2.jsonc +0 -0
  24. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.pre-commit-config.yaml +0 -0
  25. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.stylelintrc.json +0 -0
  26. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.vale/styles/boost/Terminology.yml +0 -0
  27. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  28. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/.vale.ini +0 -0
  29. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/CLAUDE.md +0 -0
  30. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/CODE_OF_CONDUCT.md +0 -0
  31. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/CONTRIBUTING.md +0 -0
  32. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/LICENSE +0 -0
  33. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/MANIFEST.in +0 -0
  34. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/Makefile +0 -0
  35. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/SECURITY.md +0 -0
  36. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost +0 -0
  37. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/__init__.py +0 -0
  38. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/__main__.py +0 -0
  39. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/cliparse.py +0 -0
  40. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/__init__.py +0 -0
  41. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/_common.py +0 -0
  42. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/configuration.py +0 -0
  43. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/discovery.py +0 -0
  44. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/hooks.py +0 -0
  45. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/info.py +0 -0
  46. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/intelligence.py +0 -0
  47. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/pkg.py +0 -0
  48. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/quality.py +0 -0
  49. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/run.py +0 -0
  50. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/safety.py +0 -0
  51. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/taps.py +0 -0
  52. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/commands/team.py +0 -0
  53. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/__init__.py +0 -0
  54. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/adapters.py +0 -0
  55. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/agents.py +0 -0
  56. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/ai.py +0 -0
  57. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/bootstrap.py +0 -0
  58. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/capabilities.py +0 -0
  59. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/catalog.py +0 -0
  60. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/chat.py +0 -0
  61. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/claude_settings.py +0 -0
  62. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/complete.py +0 -0
  63. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/config.py +0 -0
  64. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/dense.py +0 -0
  65. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/ed25519.py +0 -0
  66. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/embed.py +0 -0
  67. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/faithfulness.py +0 -0
  68. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/frontmatter.py +0 -0
  69. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/gitutil.py +0 -0
  70. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/imperative.py +0 -0
  71. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/injectscan.py +0 -0
  72. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/installscan.py +0 -0
  73. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/integrity.py +0 -0
  74. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/journal.py +0 -0
  75. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/localembed.py +0 -0
  76. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/lockfile.py +0 -0
  77. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/logs.py +0 -0
  78. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/mcp.py +0 -0
  79. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/mcpdecl.py +0 -0
  80. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/mcphost.py +0 -0
  81. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/minisign.py +0 -0
  82. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/nethttp.py +0 -0
  83. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/output.py +0 -0
  84. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/paths.py +0 -0
  85. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/policy.py +0 -0
  86. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/projectlock.py +0 -0
  87. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/provenance.py +0 -0
  88. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/rag.py +0 -0
  89. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/registry.py +0 -0
  90. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/resolve.py +0 -0
  91. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/rules.py +0 -0
  92. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/scopes.py +0 -0
  93. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/secretscan.py +0 -0
  94. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/selfupdate.py +0 -0
  95. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/serve.py +0 -0
  96. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/stackprobe.py +0 -0
  97. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/staleness.py +0 -0
  98. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/store.py +0 -0
  99. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/trustaudit.py +0 -0
  100. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/typosquat.py +0 -0
  101. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/updatediff.py +0 -0
  102. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/util.py +0 -0
  103. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/core/workflows.py +0 -0
  104. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/data/registries.json +0 -0
  105. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/errors.py +0 -0
  106. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_cli/spin.py +0 -0
  107. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_langchain/__init__.py +0 -0
  108. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_langchain/_compat.py +0 -0
  109. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_langchain/graph.py +0 -0
  110. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_langchain/loader.py +0 -0
  111. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_langchain/py.typed +0 -0
  112. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_langchain/retriever.py +0 -0
  113. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  114. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  115. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_skill_cli.egg-info/requires.txt +0 -0
  116. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/boost_skill_cli.egg-info/top_level.txt +0 -0
  117. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/codecov.yml +0 -0
  118. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/.claude/settings.local.json +0 -0
  119. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/DEBUGGING.md +0 -0
  120. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/adapters.html +0 -0
  121. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/architecture/README.md +0 -0
  122. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/architecture/c4-components-core.md +0 -0
  123. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/architecture/c4-containers.md +0 -0
  124. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/architecture/c4-context.md +0 -0
  125. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/architecture/c4-dynamic-install.md +0 -0
  126. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/distill.gif +0 -0
  127. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/doctor.gif +0 -0
  128. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/explain.gif +0 -0
  129. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/hooks.gif +0 -0
  130. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/install.gif +0 -0
  131. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/pulse.gif +0 -0
  132. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/search.gif +0 -0
  133. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/gifs/tap.gif +0 -0
  134. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/distill.tape +0 -0
  135. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/doctor.tape +0 -0
  136. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/explain.tape +0 -0
  137. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/hooks.tape +0 -0
  138. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/install.tape +0 -0
  139. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/pulse.tape +0 -0
  140. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/search.tape +0 -0
  141. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel/tapes/tap.tape +0 -0
  142. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/carousel.html +0 -0
  143. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/chat.html +0 -0
  144. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/demo-index.json +0 -0
  145. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/demo.gif +0 -0
  146. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/demo.html +0 -0
  147. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/demo.tape +0 -0
  148. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/design-roadmap.html +0 -0
  149. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/eval-latest.json +0 -0
  150. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/eval.html +0 -0
  151. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/langchain.html +0 -0
  152. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/mcp-hub.html +0 -0
  153. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/rag-architecture.md +0 -0
  154. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D01.md +0 -0
  155. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D02.md +0 -0
  156. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D03.md +0 -0
  157. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D04.md +0 -0
  158. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D05.md +0 -0
  159. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D06.md +0 -0
  160. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D07.md +0 -0
  161. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D08.md +0 -0
  162. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D09.md +0 -0
  163. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D10.md +0 -0
  164. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D11.md +0 -0
  165. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D12.md +0 -0
  166. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D13.md +0 -0
  167. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D14.md +0 -0
  168. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D15.md +0 -0
  169. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D16.md +0 -0
  170. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D17.md +0 -0
  171. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D18.md +0 -0
  172. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D19.md +0 -0
  173. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D20.md +0 -0
  174. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D21.md +0 -0
  175. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D22.md +0 -0
  176. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D23.md +0 -0
  177. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D24.md +0 -0
  178. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D25.md +0 -0
  179. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/BOOST-D26.md +0 -0
  180. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  181. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  182. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  183. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  184. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  185. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  186. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  187. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  188. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  189. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  190. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  191. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  192. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  193. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  194. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  195. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  196. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  197. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  198. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  199. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  200. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  201. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  202. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  203. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  204. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  205. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  206. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  207. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/command-carousel-page.md +0 -0
  208. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  209. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  210. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  211. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  212. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  213. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  214. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  215. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  216. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  217. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  218. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  219. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  220. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  221. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  222. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  223. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  224. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  225. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  226. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  227. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  228. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  229. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  230. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  231. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  232. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  233. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  234. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  235. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  236. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  237. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  238. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  239. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  240. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  241. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  242. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  243. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  244. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  245. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/github-community-health-files.md +0 -0
  246. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  247. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  248. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  249. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  250. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  251. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  252. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  253. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  254. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  255. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  256. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  257. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  258. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  259. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  260. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  261. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  262. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  263. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  264. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  265. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  266. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  267. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  268. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  269. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  270. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  271. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  272. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  273. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  274. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  275. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  276. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  277. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  278. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  279. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  280. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  281. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  282. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  283. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  284. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  285. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  286. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  287. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  288. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  289. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  290. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  291. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  292. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  293. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  294. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  295. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  296. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  297. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  298. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  299. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  300. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  301. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  302. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  303. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  304. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  305. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  306. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  307. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  308. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  309. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  310. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  311. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  312. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  313. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  314. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  315. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  316. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  317. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  318. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  319. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  320. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  321. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  322. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  323. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  324. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  325. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  326. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  327. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  328. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  329. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  330. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  331. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  332. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  333. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  334. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  335. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  336. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  337. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  338. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  339. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  340. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  341. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  342. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  343. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  344. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  345. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  346. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  347. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  348. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  349. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  350. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  351. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  352. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  353. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  354. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  355. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  356. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  357. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  358. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  359. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  360. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  361. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  362. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  363. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  364. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  365. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  366. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  367. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  368. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  369. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  370. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  371. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  372. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  373. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  374. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  375. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  376. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  377. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  378. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  379. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  380. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  381. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  382. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  383. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  384. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  385. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  386. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  387. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  388. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  389. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  390. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  391. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  392. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  393. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  394. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  395. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  396. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  397. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  398. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  399. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  400. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  401. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/workspace-scope-install.md +0 -0
  402. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/zip-strict-audit.md +0 -0
  403. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  404. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/eslint.config.mjs +0 -0
  405. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/README.md +0 -0
  406. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/__init__.py +0 -0
  407. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/baseline.json +0 -0
  408. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/faithfulness.py +0 -0
  409. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/golden_set.json +0 -0
  410. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/make_corpus.py +0 -0
  411. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/make_golden.py +0 -0
  412. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/metrics.py +0 -0
  413. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/publish_golden_dataset.py +0 -0
  414. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/evals/run_evals.py +0 -0
  415. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/examples/README.md +0 -0
  416. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/examples/adapt-demo.sh +0 -0
  417. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/examples/boost-run-prototype.sh +0 -0
  418. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/index.html +0 -0
  419. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/noxfile.py +0 -0
  420. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/pyproject.toml +0 -0
  421. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/coverage-tools.in +0 -0
  422. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/coverage-tools.txt +0 -0
  423. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/lint-tools.in +0 -0
  424. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/lint-tools.txt +0 -0
  425. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/mutation-tools.in +0 -0
  426. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/mutation-tools.txt +0 -0
  427. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/platform-pins.lock +0 -0
  428. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/release-tools.in +0 -0
  429. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/release-tools.txt +0 -0
  430. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/test-tools.in +0 -0
  431. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/requirements/test-tools.txt +0 -0
  432. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/a11y_check.py +0 -0
  433. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/bench_cli.sh +0 -0
  434. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/build_command_reference.py +0 -0
  435. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/build_demo_index.py +0 -0
  436. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/build_registries.py +0 -0
  437. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/build_roadmap.py +0 -0
  438. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/build_scale_corpus.py +0 -0
  439. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/check_anchors.py +0 -0
  440. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/check_licenses.py +0 -0
  441. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/check_required_checks.py +0 -0
  442. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/ensure_eval_corpus.sh +0 -0
  443. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/eval_corpus.py +0 -0
  444. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/eval_explain.py +0 -0
  445. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/eval_gate.py +0 -0
  446. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/eval_recommend.py +0 -0
  447. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/eval_retrieval.py +0 -0
  448. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/eval_stats_summary.py +0 -0
  449. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/import_budget.py +0 -0
  450. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/lock_toolchain.py +0 -0
  451. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/mutation_gate.py +0 -0
  452. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/mutation_shards.py +0 -0
  453. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/mutation_weights.json +0 -0
  454. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/page_budget.py +0 -0
  455. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/perf_gate.py +0 -0
  456. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/post_deploy_smoke.py +0 -0
  457. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/publish_eval_json.py +0 -0
  458. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/release_guard.py +0 -0
  459. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/release_preflight.py +0 -0
  460. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/scripts/serve_docs.py +0 -0
  461. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/setup.cfg +0 -0
  462. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/sonar-project.properties +0 -0
  463. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/style/README.md +0 -0
  464. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/style/boost.css +0 -0
  465. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/style/boost.js +0 -0
  466. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/style/demo.html +0 -0
  467. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/adapt.feature +0 -0
  468. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/browse.feature +0 -0
  469. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/count.feature +0 -0
  470. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/discover.feature +0 -0
  471. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/doctor.feature +0 -0
  472. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/environment.py +0 -0
  473. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/explain.feature +0 -0
  474. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/index.feature +0 -0
  475. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/install.feature +0 -0
  476. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/list.feature +0 -0
  477. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/mcp.feature +0 -0
  478. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/search.feature +0 -0
  479. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/steps/cli_steps.py +0 -0
  480. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/steps/discovery_steps.py +0 -0
  481. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/steps/mcp_steps.py +0 -0
  482. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/bdd/features/steps/quality_steps.py +0 -0
  483. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/conftest.py +0 -0
  484. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/eval/baseline.json +0 -0
  485. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/eval/explain.jsonl +0 -0
  486. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/eval/golden-natural.jsonl +0 -0
  487. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/eval/golden.jsonl +0 -0
  488. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/eval/recommend.jsonl +0 -0
  489. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/eval/taps-scale.txt +0 -0
  490. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/eval/taps.txt +0 -0
  491. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_capabilities_policy.py +0 -0
  492. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_adapt.py +0 -0
  493. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_chat.py +0 -0
  494. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_configuration.py +0 -0
  495. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_discovery.py +0 -0
  496. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_hooks.py +0 -0
  497. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_info.py +0 -0
  498. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_intelligence.py +0 -0
  499. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_pkg.py +0 -0
  500. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_quality.py +0 -0
  501. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_taps.py +0 -0
  502. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_cli_team.py +0 -0
  503. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_everyday_loop.py +0 -0
  504. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_integrity_enforce.py +0 -0
  505. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_kind_conformance.py +0 -0
  506. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_property_parsers.py +0 -0
  507. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_run.py +0 -0
  508. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_tap_signing.py +0 -0
  509. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/functional/test_workspace_scope.py +0 -0
  510. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/README.md +0 -0
  511. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  512. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  513. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  514. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  515. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  516. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  517. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  518. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  519. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  520. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  521. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  522. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  523. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  524. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  525. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  526. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  527. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  528. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  529. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  530. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  531. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/fuzz_frontmatter.py +0 -0
  532. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/fuzz/fuzz_registry.py +0 -0
  533. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/langchain/conftest.py +0 -0
  534. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/langchain/test_graph.py +0 -0
  535. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/langchain/test_loader.py +0 -0
  536. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/langchain/test_retriever.py +0 -0
  537. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/make_fixture.py +0 -0
  538. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/perf/test_benchmarks.py +0 -0
  539. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/smoke.sh +0 -0
  540. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_a11y_check.py +0 -0
  541. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_adapters.py +0 -0
  542. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_adapters_multi.py +0 -0
  543. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_adapters_runner.py +0 -0
  544. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_agents.py +0 -0
  545. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_ai.py +0 -0
  546. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_bootstrap.py +0 -0
  547. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_capabilities.py +0 -0
  548. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_catalog.py +0 -0
  549. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_chat.py +0 -0
  550. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_check_anchors.py +0 -0
  551. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_check_licenses.py +0 -0
  552. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_claude_settings.py +0 -0
  553. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_cliparse.py +0 -0
  554. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_codeql_analysis_key.py +0 -0
  555. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_command_reference_fresh.py +0 -0
  556. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_community_health_files.py +0 -0
  557. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_complete.py +0 -0
  558. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_config.py +0 -0
  559. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_content_dedupe.py +0 -0
  560. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_dedup_trust.py +0 -0
  561. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_demo_index.py +0 -0
  562. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_dense.py +0 -0
  563. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_dense_fallback.py +0 -0
  564. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_dense_fix_hint.py +0 -0
  565. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_dense_shards.py +0 -0
  566. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_dense_status.py +0 -0
  567. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_dependabot_config.py +0 -0
  568. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_docs_pages_linked.py +0 -0
  569. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_docsite_chrome.py +0 -0
  570. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_ed25519.py +0 -0
  571. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_embed.py +0 -0
  572. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_embed_local.py +0 -0
  573. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_entry_key.py +0 -0
  574. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_errors_and_cli_table.py +0 -0
  575. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_eval_baseline.py +0 -0
  576. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_eval_corpus.py +0 -0
  577. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_eval_faithfulness.py +0 -0
  578. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_eval_gate.py +0 -0
  579. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_eval_grading.py +0 -0
  580. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_eval_metrics.py +0 -0
  581. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_eval_stats_summary.py +0 -0
  582. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_faithfulness.py +0 -0
  583. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_frontmatter.py +0 -0
  584. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_fuzz_targets.py +0 -0
  585. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_gitleaks_config.py +0 -0
  586. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_gitutil.py +0 -0
  587. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_imperative.py +0 -0
  588. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_import_budget.py +0 -0
  589. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_injectscan.py +0 -0
  590. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_installscan.py +0 -0
  591. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_integrity.py +0 -0
  592. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_journal.py +0 -0
  593. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_langchain_packaging.py +0 -0
  594. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_link_ownership.py +0 -0
  595. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_localembed.py +0 -0
  596. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_localembed_e2e.py +0 -0
  597. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_lockfile.py +0 -0
  598. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_logs.py +0 -0
  599. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_marketing_counts.py +0 -0
  600. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mcp.py +0 -0
  601. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mcp_install_scan.py +0 -0
  602. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mcpdecl.py +0 -0
  603. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mcphost.py +0 -0
  604. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_minisign.py +0 -0
  605. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mutation_hardening.py +0 -0
  606. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mutation_shards.py +0 -0
  607. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mutation_subfile_shards.py +0 -0
  608. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_mutmut_source_paths.py +0 -0
  609. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_nethttp.py +0 -0
  610. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_output.py +0 -0
  611. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_page_budget.py +0 -0
  612. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_paths.py +0 -0
  613. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_perf_gate.py +0 -0
  614. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_pkg_confusions.py +0 -0
  615. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_pkg_injection.py +0 -0
  616. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_pkg_secrets.py +0 -0
  617. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_platform_pins.py +0 -0
  618. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_policy.py +0 -0
  619. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_post_deploy_smoke.py +0 -0
  620. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_project_mcp_sidecar.py +0 -0
  621. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_projectlock.py +0 -0
  622. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_provenance.py +0 -0
  623. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_rag.py +0 -0
  624. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_rag_fusion.py +0 -0
  625. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_registries_fresh.py +0 -0
  626. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_registry.py +0 -0
  627. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_registry_categories.py +0 -0
  628. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_release_guard.py +0 -0
  629. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_release_preflight.py +0 -0
  630. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_required_checks.py +0 -0
  631. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_resolve.py +0 -0
  632. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_roadmap_fresh.py +0 -0
  633. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_rules.py +0 -0
  634. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_scale_corpus.py +0 -0
  635. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_scopes.py +0 -0
  636. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_secretscan.py +0 -0
  637. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_selfupdate.py +0 -0
  638. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_serve.py +0 -0
  639. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_serve_docs.py +0 -0
  640. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_spin.py +0 -0
  641. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_stackprobe.py +0 -0
  642. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_staleness.py +0 -0
  643. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_store.py +0 -0
  644. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_token_parity.py +0 -0
  645. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_toolchain_lock.py +0 -0
  646. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_trustaudit.py +0 -0
  647. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_typosquat.py +0 -0
  648. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_updatediff.py +0 -0
  649. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_util.py +0 -0
  650. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_version.py +0 -0
  651. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_workflow_concurrency.py +0 -0
  652. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_workflow_timeouts.py +0 -0
  653. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/unit/test_workflows.py +0 -0
  654. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/visual/a11y_check.mjs +0 -0
  655. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/visual/console_check.mjs +0 -0
  656. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/visual/package-lock.json +0 -0
  657. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/visual/package.json +0 -0
  658. {boost_skill_cli-1.0.419 → boost_skill_cli-1.0.421}/tests/visual/visual_check.mjs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.419
3
+ Version: 1.0.421
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1016,29 +1016,79 @@ boost hooks list
1016
1016
  boost hooks remove -n greet --scope project
1017
1017
  ```
1018
1018
 
1019
- `boost bmad` installs and manages the [BMAD Method](https://bmadcode.com/)
1020
- (agentic Analyst / PM / Architect / Dev / QA personas + workflows) as a
1021
- scope-aware, toggleable startup experience. Provisioning is delegated to the
1022
- canonical `npx bmad-method install` (needs Node.js 20.12+); boost owns scope,
1023
- the startup toggle, and teardown.
1019
+ ### BMAD autopilot
1020
+
1021
+ `boost bmad on` is a one-time, global switch that puts the
1022
+ [BMAD Method](https://bmadcode.com/)'s personas in charge of every task that
1023
+ arrives, without you having to invoke anything. No Node, no network, one
1024
+ command:
1025
+
1026
+ ```bash
1027
+ boost bmad on # ← that's it
1028
+ ```
1029
+
1030
+ It writes seven BMAD persona subagents into `~/.claude/agents/` and installs two
1031
+ hooks. A `SessionStart` hook briefs the session on the roster; a
1032
+ `UserPromptSubmit` hook classifies each incoming prompt and prefixes it with a
1033
+ short routing banner:
1034
+
1035
+ ```text
1036
+ [BMAD autopilot] track: build
1037
+ Lead: `bmad-dev` subagent — Amelia, Senior Software Engineer. Ship it complete and verified.
1038
+ Support: `bmad-tea` (Murat), `bmad-scribe` (Paige) — spawn them with the Agent tool…
1039
+ BMAD skill: `bmad-build` — invoke it if it is installed; otherwise the persona's own playbook stands.
1040
+ Done means: tests: add or update coverage under `tests/`, and run them · docs: update
1041
+ `README.md` / `docs/` wherever the change shows · roadmap: create or claim the item under
1042
+ `docs/roadmap/items/` · gate: `make check` green, with real output · `CLAUDE.md` is binding
1043
+ Work autonomously through to a finished, verified change; stop to ask only when a choice
1044
+ would change what gets delivered.
1045
+ ```
1046
+
1047
+ Nine tracks (`build`, `quality`, `docs`, `planning`, `product`, `architecture`,
1048
+ `ux`, `discovery`, `review`) each name a lead persona, the support personas to
1049
+ spawn alongside it, and the canonical BMAD v6 skill for that kind of work.
1050
+ **That last line is the point**: the definition of done is read off the repo in
1051
+ front of you — your test directory, your docs, your roadmap items, your gate
1052
+ command — so documentation, testing and roadmap bookkeeping travel with the task
1053
+ instead of being remembered afterwards.
1054
+
1055
+ The router costs a question nothing. Acknowledgements, slash commands, short
1056
+ informational questions ("what does `scan_dir` do?") and anything containing
1057
+ `no bmad` produce **no banner at all** — and because a `UserPromptSubmit` hook
1058
+ that exits non-zero would erase your prompt, it degrades every failure to
1059
+ silence and always exits 0.
1060
+
1061
+ ```bash
1062
+ boost bmad personas # the roster, and whether it's installed
1063
+ boost bmad route "add tests for the scanner" --plain # what would this route to?
1064
+ boost bmad doctor # autopilot + workflow state, both scopes
1065
+ boost bmad off # remove the hooks and the personas
1066
+ boost bmad on --scope project # or keep it to one repo
1067
+ ```
1068
+
1069
+ Every persona file carries an ownership stamp containing a digest of its own
1070
+ contents, so **the moment you edit one it stops being boost's**: `boost bmad on`
1071
+ reports it as kept rather than overwriting it, and `boost bmad off` leaves it
1072
+ alone. Delete the file if you want the stock version back.
1073
+
1074
+ **The full method** is still a separate, heavier install. `boost bmad install`
1075
+ delegates to the canonical `npx bmad-method install` (needs Node.js 20.12+) for
1076
+ the `bmad-*` workflow skills and the per-project `_bmad/` runtime they read on
1077
+ activation:
1024
1078
 
1025
1079
  ```bash
1026
1080
  boost bmad install --scope project # skills + per-project _bmad/ runtime
1027
1081
  boost bmad install --scope global # skills into ~/.claude/skills for every session
1028
1082
  boost bmad init # add the _bmad/ runtime to the current repo
1029
- boost bmad startup on # inject light BMAD orientation on session start
1030
- boost bmad startup off # stop injecting it (skills stay installed)
1083
+ boost bmad startup on|off # just the SessionStart briefing
1031
1084
  boost bmad disable / enable # quarantine / restore skills (recoverable)
1032
1085
  boost bmad uninstall # delete skills + _bmad/ for a scope
1033
- boost bmad doctor # what's installed where
1034
1086
  ```
1035
1087
 
1036
- When startup is on, a `SessionStart` hook runs `boost bmad orient`, which prints
1037
- a short orientation into the session only while the toggle is enabled. That
1038
- orientation sets a **default bias**: build/fix/change/refactor requests go
1039
- straight to the `bmad-quick-dev` skill (clarify → plan → implement → review),
1040
- skipping the full brief → PRD → architecture ceremony unless you ask for full
1041
- planning. Global installs stage the installer in a temp dir and copy only the
1088
+ The two compose. The autopilot routes at `bmad-build`, `bmad-prd` and friends
1089
+ whether or not they are installed and says which case you're in — with the
1090
+ skills present you get BMAD's full workflow, without them the persona's own
1091
+ playbook. Global installs stage the installer in a temp dir and copy only the
1042
1092
  `bmad-*` skills, so `$HOME` never gets a stray `_bmad/` — the workflow runtime
1043
1093
  stays per-project.
1044
1094
 
@@ -298,29 +298,79 @@ boost hooks list
298
298
  boost hooks remove -n greet --scope project
299
299
  ```
300
300
 
301
- `boost bmad` installs and manages the [BMAD Method](https://bmadcode.com/)
302
- (agentic Analyst / PM / Architect / Dev / QA personas + workflows) as a
303
- scope-aware, toggleable startup experience. Provisioning is delegated to the
304
- canonical `npx bmad-method install` (needs Node.js 20.12+); boost owns scope,
305
- the startup toggle, and teardown.
301
+ ### BMAD autopilot
302
+
303
+ `boost bmad on` is a one-time, global switch that puts the
304
+ [BMAD Method](https://bmadcode.com/)'s personas in charge of every task that
305
+ arrives, without you having to invoke anything. No Node, no network, one
306
+ command:
307
+
308
+ ```bash
309
+ boost bmad on # ← that's it
310
+ ```
311
+
312
+ It writes seven BMAD persona subagents into `~/.claude/agents/` and installs two
313
+ hooks. A `SessionStart` hook briefs the session on the roster; a
314
+ `UserPromptSubmit` hook classifies each incoming prompt and prefixes it with a
315
+ short routing banner:
316
+
317
+ ```text
318
+ [BMAD autopilot] track: build
319
+ Lead: `bmad-dev` subagent — Amelia, Senior Software Engineer. Ship it complete and verified.
320
+ Support: `bmad-tea` (Murat), `bmad-scribe` (Paige) — spawn them with the Agent tool…
321
+ BMAD skill: `bmad-build` — invoke it if it is installed; otherwise the persona's own playbook stands.
322
+ Done means: tests: add or update coverage under `tests/`, and run them · docs: update
323
+ `README.md` / `docs/` wherever the change shows · roadmap: create or claim the item under
324
+ `docs/roadmap/items/` · gate: `make check` green, with real output · `CLAUDE.md` is binding
325
+ Work autonomously through to a finished, verified change; stop to ask only when a choice
326
+ would change what gets delivered.
327
+ ```
328
+
329
+ Nine tracks (`build`, `quality`, `docs`, `planning`, `product`, `architecture`,
330
+ `ux`, `discovery`, `review`) each name a lead persona, the support personas to
331
+ spawn alongside it, and the canonical BMAD v6 skill for that kind of work.
332
+ **That last line is the point**: the definition of done is read off the repo in
333
+ front of you — your test directory, your docs, your roadmap items, your gate
334
+ command — so documentation, testing and roadmap bookkeeping travel with the task
335
+ instead of being remembered afterwards.
336
+
337
+ The router costs a question nothing. Acknowledgements, slash commands, short
338
+ informational questions ("what does `scan_dir` do?") and anything containing
339
+ `no bmad` produce **no banner at all** — and because a `UserPromptSubmit` hook
340
+ that exits non-zero would erase your prompt, it degrades every failure to
341
+ silence and always exits 0.
342
+
343
+ ```bash
344
+ boost bmad personas # the roster, and whether it's installed
345
+ boost bmad route "add tests for the scanner" --plain # what would this route to?
346
+ boost bmad doctor # autopilot + workflow state, both scopes
347
+ boost bmad off # remove the hooks and the personas
348
+ boost bmad on --scope project # or keep it to one repo
349
+ ```
350
+
351
+ Every persona file carries an ownership stamp containing a digest of its own
352
+ contents, so **the moment you edit one it stops being boost's**: `boost bmad on`
353
+ reports it as kept rather than overwriting it, and `boost bmad off` leaves it
354
+ alone. Delete the file if you want the stock version back.
355
+
356
+ **The full method** is still a separate, heavier install. `boost bmad install`
357
+ delegates to the canonical `npx bmad-method install` (needs Node.js 20.12+) for
358
+ the `bmad-*` workflow skills and the per-project `_bmad/` runtime they read on
359
+ activation:
306
360
 
307
361
  ```bash
308
362
  boost bmad install --scope project # skills + per-project _bmad/ runtime
309
363
  boost bmad install --scope global # skills into ~/.claude/skills for every session
310
364
  boost bmad init # add the _bmad/ runtime to the current repo
311
- boost bmad startup on # inject light BMAD orientation on session start
312
- boost bmad startup off # stop injecting it (skills stay installed)
365
+ boost bmad startup on|off # just the SessionStart briefing
313
366
  boost bmad disable / enable # quarantine / restore skills (recoverable)
314
367
  boost bmad uninstall # delete skills + _bmad/ for a scope
315
- boost bmad doctor # what's installed where
316
368
  ```
317
369
 
318
- When startup is on, a `SessionStart` hook runs `boost bmad orient`, which prints
319
- a short orientation into the session only while the toggle is enabled. That
320
- orientation sets a **default bias**: build/fix/change/refactor requests go
321
- straight to the `bmad-quick-dev` skill (clarify → plan → implement → review),
322
- skipping the full brief → PRD → architecture ceremony unless you ask for full
323
- planning. Global installs stage the installer in a temp dir and copy only the
370
+ The two compose. The autopilot routes at `bmad-build`, `bmad-prd` and friends
371
+ whether or not they are installed and says which case you're in — with the
372
+ skills present you get BMAD's full workflow, without them the persona's own
373
+ playbook. Global installs stage the installer in a temp dir and copy only the
324
374
  `bmad-*` skills, so `$HOME` never gets a stray `_bmad/` — the workflow runtime
325
375
  stays per-project.
326
376
 
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.0.419'
22
- __version_tuple__ = version_tuple = (1, 0, 419)
21
+ __version__ = version = '1.0.421'
22
+ __version_tuple__ = version_tuple = (1, 0, 421)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -124,7 +124,7 @@ COMMANDS = [
124
124
  ("serve", "cfg", "configuration", "Serve the skill catalog over HTTP (port 8787)"),
125
125
  ("mcp", "cfg", "configuration", "Register boost as an MCP server (Claude Code, Gemini CLI)"),
126
126
  ("hooks", "cfg", "hooks", "Manage Claude Code hooks (scope-aware) in settings.json"),
127
- ("bmad", "cfg", "bmad", "Install & manage the BMAD Method (scope-aware, toggleable)"),
127
+ ("bmad", "cfg", "bmad", "BMAD Method autopilot — `bmad on` routes every task to a persona"),
128
128
  ("self-update", "cfg", "configuration", "Update boost itself to the latest version"),
129
129
  # Team & Collaboration (6)
130
130
  ("cohort", "team", "team", "Controlled skill rollouts & team A/B testing"),
@@ -1,21 +1,46 @@
1
- """boost bmad — install & manage the BMAD Method, scope-aware and toggleable.
1
+ """boost bmad — the BMAD Method as a one-command, global autopilot.
2
2
 
3
- BMAD ships as Claude Code skills PLUS a per-project `_bmad/` config/runtime that
4
- the skills read on activation. boost owns scope, the startup toggle, and teardown;
5
- full provisioning is delegated to the canonical `npx bmad-method install`.
3
+ There are two surfaces here, and the split is the whole design.
4
+
5
+ **The autopilot** is `boost bmad on`. One command, global by default, no Node
6
+ and no network: it writes the seven BMAD persona subagents into
7
+ `~/.claude/agents/`, and installs two hooks — a `SessionStart` briefing and a
8
+ `UserPromptSubmit` router. After that, every substantive prompt arrives already
9
+ carrying the persona that should lead it, the support personas to spawn
10
+ alongside, the BMAD skill for that track, and a definition of done read off the
11
+ repo in front of it (its test dir, its docs, its roadmap items, its gate
12
+ command). Trivial asks get nothing, so the router costs a question nothing. All
13
+ of the thinking lives in :mod:`boost_cli.core.bmad`; this module is glue.
14
+
15
+ boost bmad on # <- the one command. global.
16
+ boost bmad off # remove hooks + boost-written personas
17
+ boost bmad personas # the roster, and whether it is installed
18
+ boost bmad route [PROMPT] [--plain] # hook target; pipeable for debugging
19
+
20
+ **The full method** is `boost bmad install`, unchanged: it delegates to the
21
+ canonical `npx bmad-method install` (Node.js 20.12+) for the `bmad-*` workflow
22
+ skills and the per-project `_bmad/` runtime they read on activation.
6
23
 
7
24
  boost bmad install --scope project # skills + _bmad/ runtime in this repo
8
- boost bmad install --scope global # skills into ~/.claude/skills (+ toggle)
25
+ boost bmad install --scope global # skills into ~/.claude/skills
9
26
  boost bmad init # add _bmad/ runtime to the current repo
10
- boost bmad startup on|off|status # toggle the SessionStart orientation
11
- # (biases build/fix/change work to bmad-quick-dev)
27
+ boost bmad startup on|off|status # just the SessionStart briefing
12
28
  boost bmad disable / enable # quarantine / restore skills (recoverable)
13
29
  boost bmad uninstall # delete skills + _bmad/ for a scope
14
30
  boost bmad doctor # what's installed where
15
31
 
16
- Global installs stage the installer in a temp dir and copy only the `bmad-*`
17
- skills into ~/.claude/skills, so $HOME never gets a stray `_bmad/`. The `_bmad/`
18
- runtime is per-project (`boost bmad init`).
32
+ The two compose: the autopilot routes at `bmad-build` and friends whether or
33
+ not they are installed, and says so — with the skills present you get BMAD's
34
+ full workflow, without them you get the persona's own playbook. Global installs
35
+ stage the installer in a temp dir and copy only the `bmad-*` skills into
36
+ ~/.claude/skills, so $HOME never gets a stray `_bmad/`; the runtime is
37
+ per-project by design.
38
+
39
+ Both surfaces are **Claude Code only**, and deliberately so: subagent
40
+ definitions and `SessionStart`/`UserPromptSubmit` hooks are Claude Code
41
+ contracts with no equivalent in the other three agents boost targets, and BMAD's
42
+ own installer likewise takes `--tools claude-code`. This is the one part of
43
+ boost that does not fan out over `agents.enabled_agents()`.
19
44
  """
20
45
  from __future__ import annotations
21
46
 
@@ -26,11 +51,13 @@ import re
26
51
  import shlex
27
52
  import shutil
28
53
  import subprocess
54
+ import sys
29
55
  import tempfile
30
56
  from contextlib import suppress
31
57
  from pathlib import Path
32
58
 
33
59
  from .. import cliparse
60
+ from ..core import bmad as core
34
61
  from ..core import claude_settings as cs
35
62
  from ..core import journal, paths, util
36
63
  from ..core import output as out
@@ -39,51 +66,39 @@ from ..errors import BoostError
39
66
  DEFAULT_MODULES = "bmm"
40
67
  HOOK_NAME = "bmad"
41
68
  HOOK_MATCHER = "startup|resume|clear"
69
+ ROUTE_HOOK_NAME = "bmad-route"
42
70
 
43
- ORIENT = """[BMAD MODE ACTIVE — light orientation]
44
- This environment has the BMAD Method installed as Claude Code skills. Be
45
- BMAD-aware without hijacking simple requests: use the workflow when the user is
46
- planning or building a feature; answer trivial one-off asks directly.
47
-
48
- Entry point: invoke the `bmad-help` skill to assess state and recommend a step.
49
-
50
- Persona agents (skills): bmad-agent-analyst (Mary, research/brief),
51
- bmad-agent-pm (John, PRD), bmad-agent-architect (Winston, architecture),
52
- bmad-agent-ux-designer (Sally), bmad-agent-dev (Amelia, implementation),
53
- bmad-agent-tech-writer (Paige).
54
-
55
- Phases: Analysis (bmad-brainstorming -> bmad-product-brief -> research) ->
56
- Planning (bmad-prd -> bmad-architecture -> bmad-create-epics-and-stories) ->
57
- Build (bmad-sprint-planning -> bmad-create-story -> bmad-dev-story ->
58
- bmad-code-review -> bmad-qa-generate-e2e-tests -> bmad-retrospective).
59
-
60
- Default bias: for a build, fix, change, or refactor request, go straight to the
61
- `bmad-quick-dev` skill (clarify -> plan -> implement -> review) — skip the full
62
- brief -> PRD -> architecture ceremony unless the user asks for full planning.
63
-
64
- Full workflows need a per-project `_bmad/` runtime — run `boost bmad init` in a
65
- repo if it isn't there yet. Turn this orientation off with `boost bmad startup off`."""
66
-
67
- _ACTIONS = ("install", "init", "startup", "orient", "uninstall",
68
- "disable", "enable", "doctor", "status")
71
+ _ACTIONS = ("on", "off", "route", "personas", "install", "init", "startup",
72
+ "orient", "uninstall", "disable", "enable", "doctor", "status")
69
73
 
70
74
 
71
75
  def cmd_bmad(argv) -> int:
72
76
  p = cliparse.parser(
73
77
  prog="boost bmad",
74
- description="Install & manage the BMAD Method (scope-aware, toggleable)")
78
+ description="BMAD Method autopilot: personas, prompt routing, workflows")
75
79
  p.add_argument("action", choices=_ACTIONS, help=" | ".join(_ACTIONS))
76
- p.add_argument("value", nargs="?", help="for startup: on | off | status")
80
+ p.add_argument("value", nargs="?",
81
+ help="startup: on | off | status · route: the prompt to classify")
77
82
  p.add_argument("-s", "--scope", choices=("project", "global"), default=None,
78
- help="target scope (default: project)")
83
+ help="target scope (on/off default: global; others: project)")
79
84
  p.add_argument("--modules", default=DEFAULT_MODULES,
80
85
  help="BMAD modules to install (default: %s)" % DEFAULT_MODULES)
81
86
  p.add_argument("-y", "--yes", action="store_true",
82
87
  help="skip confirmation prompts")
83
88
  p.add_argument("--startup", action="store_true",
84
89
  help="enable the startup toggle right after install")
90
+ p.add_argument("--plain", action="store_true",
91
+ help="route: print the banner as text, not as hook JSON")
85
92
  args = p.parse_args(argv)
86
93
 
94
+ if args.action == "on":
95
+ return _autopilot_on(args.scope)
96
+ if args.action == "off":
97
+ return _autopilot_off(args.scope)
98
+ if args.action == "route":
99
+ return _route(args.value, args.plain)
100
+ if args.action == "personas":
101
+ return _personas(args.scope)
87
102
  if args.action == "install":
88
103
  return _install(args.scope, args.modules, args.startup)
89
104
  if args.action == "init":
@@ -101,6 +116,152 @@ def cmd_bmad(argv) -> int:
101
116
  return _doctor() # doctor | status
102
117
 
103
118
 
119
+ # ------------------------------------------------------------------- autopilot
120
+
121
+ def _agents_dir(scope) -> Path:
122
+ """Where Claude Code reads subagent definitions for a scope."""
123
+ base = paths.home() if scope == "global" else Path.cwd()
124
+ return base / ".claude" / "agents"
125
+
126
+
127
+ def _never_fails(command: str) -> str:
128
+ """Make a hook command structurally incapable of reporting failure.
129
+
130
+ `_route` is careful to always exit 0 — but argparse never gets that far. The
131
+ hook is installed against :func:`paths.launcher`, i.e. whatever `boost` is on
132
+ PATH, which is not necessarily the build that wrote the hook: a stale pipx
133
+ install, or a later downgrade, reaches `bmad route`, does not recognise the
134
+ action, and exits **2**. On UserPromptSubmit exit 2 does not merely log — it
135
+ blocks the prompt and erases it from the transcript, so every message the
136
+ user typed would vanish until they found the hook.
137
+
138
+ `|| true` closes that at the shell, outside any version of boost. The
139
+ `# boost:<name>` ownership marker `claude_settings` appends still parses as a
140
+ trailing comment.
141
+ """
142
+ return command + " || true"
143
+
144
+
145
+ def _autopilot_on(scope) -> int:
146
+ """The one command. Personas + orientation + router, in one idempotent pass.
147
+
148
+ Global by default: the point of the autopilot is that a task arriving in
149
+ *any* repo already knows which persona owns it, and per-project setup would
150
+ make that a per-repo chore.
151
+ """
152
+ scope = scope or "global"
153
+ agents = _agents_dir(scope)
154
+ slugs, skipped = core.write_personas(agents)
155
+
156
+ launcher = shlex.quote(str(paths.launcher()))
157
+ cs.add_hook(scope, "SessionStart", HOOK_NAME,
158
+ _never_fails("%s bmad orient --scope %s" % (launcher, scope)),
159
+ matcher=HOOK_MATCHER)
160
+ cs.add_hook(scope, "UserPromptSubmit", ROUTE_HOOK_NAME,
161
+ _never_fails("%s bmad route" % launcher))
162
+ _set_scope_state(scope, autopilot=True, startup=True, personas=len(slugs),
163
+ enabled_at=util.now_iso())
164
+ journal.log("bmad-autopilot", "on", scope=scope, personas=len(slugs))
165
+
166
+ out.ok("BMAD autopilot ON (%s) — %d persona subagent(s) + prompt router"
167
+ % (scope, len(slugs)))
168
+ if skipped:
169
+ out.warn("kept your edits to %d persona(s): %s"
170
+ % (len(skipped), ", ".join(skipped)))
171
+ out.dim(" delete the file to let `boost bmad on` restore the stock version")
172
+ out.dim(" personas → %s" % paths.tilde(agents))
173
+ out.dim(" hooks → %s (SessionStart + UserPromptSubmit)"
174
+ % paths.tilde(cs.settings_path(scope)))
175
+ out.dim(" every substantive prompt now names its lead persona and its "
176
+ "definition of done; trivial asks are left alone")
177
+ # Claude Code only watches an agents dir that existed when the session
178
+ # started, so a first-ever install is invisible until the next launch.
179
+ out.info("restart your agent session to pick up the new subagents")
180
+ out.dim(" full BMAD workflow skills (needs Node): boost bmad install")
181
+ return 0
182
+
183
+
184
+ def _autopilot_off(scope) -> int:
185
+ scope = scope or "global"
186
+ cs.remove_hook(scope, "SessionStart", HOOK_NAME)
187
+ cs.remove_hook(scope, "UserPromptSubmit", ROUTE_HOOK_NAME)
188
+ removed = core.remove_personas(_agents_dir(scope))
189
+ _set_scope_state(scope, autopilot=False, startup=False, personas=0)
190
+ journal.log("bmad-autopilot", "off", scope=scope, personas=len(removed))
191
+ out.ok("BMAD autopilot OFF (%s) — removed %d persona(s) and both hooks"
192
+ % (scope, len(removed)))
193
+ out.dim(" hand-edited personas were left in place")
194
+ return 0
195
+
196
+
197
+ def _read_hook_stdin() -> dict:
198
+ """Claude Code's UserPromptSubmit payload, or {} for anything unreadable.
199
+
200
+ Accepts plain text too, so `echo "add tests for the scanner" | boost bmad
201
+ route` works for a human debugging the routing table. (Give it a real
202
+ prompt: anything under `core.MIN_WORDS` words classifies as trivial and
203
+ prints nothing, which reads like a broken install.)
204
+ """
205
+ try:
206
+ if sys.stdin.isatty():
207
+ return {} # interactive: don't block waiting for an EOF
208
+ raw = sys.stdin.read().strip()
209
+ except (OSError, ValueError, UnicodeDecodeError):
210
+ return {}
211
+ if not raw:
212
+ return {}
213
+ try:
214
+ data = json.loads(raw)
215
+ except ValueError:
216
+ return {"prompt": raw}
217
+ return data if isinstance(data, dict) else {"prompt": raw}
218
+
219
+
220
+ def _route(prompt, plain) -> int:
221
+ """UserPromptSubmit hook target: classify, then emit the routing banner.
222
+
223
+ This runs on every single prompt, so it has exactly one hard rule: **always
224
+ exit 0**. On UserPromptSubmit an exit code of 2 blocks the prompt and erases
225
+ it from the transcript — a crash here would eat the user's message. Every
226
+ failure mode therefore degrades to silence.
227
+ """
228
+ try:
229
+ payload = {} if prompt else _read_hook_stdin()
230
+ text = prompt or str(payload.get("prompt") or "")
231
+ cwd = payload.get("cwd")
232
+ root = Path(cwd) if cwd else Path.cwd()
233
+ banner = core.route_context(text, root)
234
+ except Exception: # a hook must never break the session
235
+ return 0
236
+ if not banner:
237
+ return 0
238
+ if plain:
239
+ print(banner)
240
+ return 0
241
+ print(json.dumps({"hookSpecificOutput": {
242
+ "hookEventName": "UserPromptSubmit",
243
+ "additionalContext": banner,
244
+ }}))
245
+ return 0
246
+
247
+
248
+ def _personas(scope) -> int:
249
+ scope = scope or "global"
250
+ agents = _agents_dir(scope)
251
+ live = set(core.installed_personas(agents))
252
+ out.heading("BMAD personas — %s" % scope)
253
+ for p in core.PERSONAS:
254
+ mark = "installed" if p.slug in live else "not installed"
255
+ # width 16: `bmad-architect` is exactly the default 14, which leaves no
256
+ # gap between the key and the value.
257
+ out.kv(p.slug, "%s, %s (%s) — %s"
258
+ % (p.character, p.title, p.module, mark), width=16)
259
+ out.dim(" → %s" % paths.tilde(agents))
260
+ if not live:
261
+ out.dim(" install them with `boost bmad on`")
262
+ return 0
263
+
264
+
104
265
  # ------------------------------------------------------------------- provisioning
105
266
 
106
267
  def _require_npx() -> None:
@@ -223,11 +384,11 @@ def _startup(value, scope) -> int:
223
384
 
224
385
 
225
386
  def _orient(scope) -> int:
226
- """SessionStart hook target: print orientation iff enabled (else silent)."""
387
+ """SessionStart hook target: print the briefing iff enabled (else silent)."""
227
388
  scope = scope or "project"
228
389
  with suppress(Exception): # a hook must never break the session
229
390
  if _get_scope_state(scope).get("startup"):
230
- print(ORIENT)
391
+ print(core.orientation())
231
392
  return 0
232
393
 
233
394
 
@@ -253,7 +414,9 @@ def _uninstall(scope, yes) -> int:
253
414
  out.info("aborted")
254
415
  return 0
255
416
  cs.remove_hook(scope, "SessionStart", HOOK_NAME)
417
+ cs.remove_hook(scope, "UserPromptSubmit", ROUTE_HOOK_NAME)
256
418
  removed = _rm_skills(_skills_dir(scope))
419
+ removed += len(core.remove_personas(_agents_dir(scope)))
257
420
  if scope == "project":
258
421
  for extra in ("_bmad", "_bmad-output"):
259
422
  pth = Path.cwd() / extra
@@ -310,15 +473,25 @@ def _enable(scope) -> int:
310
473
 
311
474
  def _doctor() -> int:
312
475
  out.heading("BMAD status")
313
- out.kv("npx", shutil.which("npx") or "MISSING")
314
- out.kv("node", shutil.which("node") or "MISSING")
476
+ # Node is only needed by `install`/`init`; the autopilot never shells out,
477
+ # so MISSING here is a limitation, not a fault.
478
+ out.kv("npx", shutil.which("npx") or "MISSING (only `install` needs it)")
479
+ out.kv("node", shutil.which("node") or "MISSING (only `install` needs it)")
315
480
  for scope in ("global", "project"):
316
481
  st = _get_scope_state(scope)
317
- n = _count_skills(_skills_dir(scope))
318
- hook = cs.has_hook(scope, "SessionStart", HOOK_NAME)
319
- out.kv(scope, "skills=%d startup=%s hook=%s installed=%s"
320
- % (n, bool(st.get("startup")), hook, bool(st.get("installed"))))
482
+ agents = _agents_dir(scope)
483
+ personas = len(core.installed_personas(agents))
484
+ router = cs.has_hook(scope, "UserPromptSubmit", ROUTE_HOOK_NAME)
485
+ live = bool(st.get("autopilot")) and router
486
+ out.kv(scope, "autopilot=%s %d personas router=%s briefing=%s"
487
+ % ("on" if live else "off", personas,
488
+ "on" if router else "off",
489
+ "on" if cs.has_hook(scope, "SessionStart", HOOK_NAME) else "off"))
490
+ out.kv(" workflows", "skills=%d installed=%s"
491
+ % (_count_skills(_skills_dir(scope)), bool(st.get("installed"))))
321
492
  out.dim(" project = %s" % Path.cwd())
493
+ if not any(_get_scope_state(s).get("autopilot") for s in ("global", "project")):
494
+ out.dim(" turn it on with `boost bmad on`")
322
495
  return 0
323
496
 
324
497