boost-skill-cli 1.2.112__tar.gz → 1.2.114__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 (1046) hide show
  1. {boost_skill_cli-1.2.112/boost_skill_cli.egg-info → boost_skill_cli-1.2.114}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/bmad.py +60 -4
  4. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  5. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/SOURCES.txt +7 -0
  6. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/bmad.md +5 -1
  7. boost_skill_cli-1.2.114/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +75 -0
  8. boost_skill_cli-1.2.114/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +70 -0
  9. boost_skill_cli-1.2.114/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +81 -0
  10. boost_skill_cli-1.2.114/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +72 -0
  11. boost_skill_cli-1.2.114/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +76 -0
  12. boost_skill_cli-1.2.114/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +74 -0
  13. boost_skill_cli-1.2.114/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +77 -0
  14. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap.html +440 -1
  15. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_bmad_core.py +87 -0
  16. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.gitattributes +0 -0
  17. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.gitignore +0 -0
  18. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.gitleaks.toml +0 -0
  19. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.htmlvalidate.json +0 -0
  20. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.lighthouserc.json +0 -0
  21. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.lycheeignore +0 -0
  22. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.markdownlint-cli2.jsonc +0 -0
  23. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.pre-commit-config.yaml +0 -0
  24. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.stylelintrc.json +0 -0
  25. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale/styles/boost/AIWriting.yml +0 -0
  26. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale/styles/boost/Terminology.yml +0 -0
  27. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  28. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale.ini +0 -0
  29. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/CLAUDE.md +0 -0
  30. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/CODE_OF_CONDUCT.md +0 -0
  31. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/CONTRIBUTING.md +0 -0
  32. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/DCO +0 -0
  33. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/GOVERNANCE.md +0 -0
  34. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/LICENSE +0 -0
  35. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/MAINTAINERS.md +0 -0
  36. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/MANIFEST.in +0 -0
  37. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/Makefile +0 -0
  38. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/README.md +0 -0
  39. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/SECURITY.md +0 -0
  40. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/SUPPORT.md +0 -0
  41. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost +0 -0
  42. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/__init__.py +0 -0
  43. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/__main__.py +0 -0
  44. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/cli.py +0 -0
  45. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/cliparse.py +0 -0
  46. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/__init__.py +0 -0
  47. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/_common.py +0 -0
  48. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/bmad.py +0 -0
  49. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/configuration.py +0 -0
  50. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/discovery.py +0 -0
  51. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/hooks.py +0 -0
  52. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/info.py +0 -0
  53. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/intelligence.py +0 -0
  54. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/pkg.py +0 -0
  55. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/quality.py +0 -0
  56. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/quickstart.py +0 -0
  57. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/run.py +0 -0
  58. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/safety.py +0 -0
  59. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/taps.py +0 -0
  60. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/team.py +0 -0
  61. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/__init__.py +0 -0
  62. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/adapters.py +0 -0
  63. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/agents.py +0 -0
  64. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/ai.py +0 -0
  65. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/aihost.py +0 -0
  66. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/archive.py +0 -0
  67. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/bootstrap.py +0 -0
  68. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/browse.py +0 -0
  69. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/builtin.py +0 -0
  70. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/capabilities.py +0 -0
  71. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/catalog.py +0 -0
  72. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/catalogbundle.py +0 -0
  73. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/chat.py +0 -0
  74. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/claude_settings.py +0 -0
  75. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/cohort.py +0 -0
  76. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/complete.py +0 -0
  77. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/config.py +0 -0
  78. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/dense.py +0 -0
  79. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/deps.py +0 -0
  80. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/discovery.py +0 -0
  81. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/ed25519.py +0 -0
  82. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/embed.py +0 -0
  83. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/faithfulness.py +0 -0
  84. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/frontmatter.py +0 -0
  85. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/gitutil.py +0 -0
  86. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/hookhost.py +0 -0
  87. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/imperative.py +0 -0
  88. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/injectscan.py +0 -0
  89. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/installscan.py +0 -0
  90. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/integrity.py +0 -0
  91. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/journal.py +0 -0
  92. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/jsonstate.py +0 -0
  93. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/localembed.py +0 -0
  94. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/lockfile.py +0 -0
  95. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/logs.py +0 -0
  96. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/mcp.py +0 -0
  97. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/mcpdecl.py +0 -0
  98. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/mcphost.py +0 -0
  99. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/minisign.py +0 -0
  100. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/nethttp.py +0 -0
  101. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/output.py +0 -0
  102. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/paths.py +0 -0
  103. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/policy.py +0 -0
  104. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/projectlock.py +0 -0
  105. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/provenance.py +0 -0
  106. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/rag.py +0 -0
  107. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/registry.py +0 -0
  108. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/report.py +0 -0
  109. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/resolve.py +0 -0
  110. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/rules.py +0 -0
  111. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/scopes.py +0 -0
  112. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/secretscan.py +0 -0
  113. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/selfupdate.py +0 -0
  114. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/serve.py +0 -0
  115. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/shards.py +0 -0
  116. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/stackprobe.py +0 -0
  117. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/staleness.py +0 -0
  118. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/store.py +0 -0
  119. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/trustaudit.py +0 -0
  120. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/typedvalue.py +0 -0
  121. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/typosquat.py +0 -0
  122. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/updatediff.py +0 -0
  123. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/util.py +0 -0
  124. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/workflows.py +0 -0
  125. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/data/registries.json +0 -0
  126. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/data/rules/boost-first.mdc +0 -0
  127. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/errors.py +0 -0
  128. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/spin.py +0 -0
  129. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/__init__.py +0 -0
  130. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/_compat.py +0 -0
  131. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/graph.py +0 -0
  132. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/loader.py +0 -0
  133. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/py.typed +0 -0
  134. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/retriever.py +0 -0
  135. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  136. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  137. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/requires.txt +0 -0
  138. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/top_level.txt +0 -0
  139. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/codecov.yml +0 -0
  140. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/.claude/settings.local.json +0 -0
  141. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/DEBUGGING.md +0 -0
  142. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/adapters.html +0 -0
  143. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/README.md +0 -0
  144. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-components-core.md +0 -0
  145. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-containers.md +0 -0
  146. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-context.md +0 -0
  147. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-dynamic-install.md +0 -0
  148. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/distill.gif +0 -0
  149. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/doctor.gif +0 -0
  150. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/explain.gif +0 -0
  151. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/hooks.gif +0 -0
  152. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/install.gif +0 -0
  153. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/pulse.gif +0 -0
  154. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/search.gif +0 -0
  155. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/tap.gif +0 -0
  156. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/distill.tape +0 -0
  157. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/doctor.tape +0 -0
  158. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/explain.tape +0 -0
  159. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/hooks.tape +0 -0
  160. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/install.tape +0 -0
  161. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/pulse.tape +0 -0
  162. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/search.tape +0 -0
  163. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/tap.tape +0 -0
  164. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel.html +0 -0
  165. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/chat.html +0 -0
  166. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/code-review.md +0 -0
  167. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/commands.html +0 -0
  168. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/commit-audit.md +0 -0
  169. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo-index.json +0 -0
  170. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo.gif +0 -0
  171. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo.html +0 -0
  172. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo.tape +0 -0
  173. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/dependencies.md +0 -0
  174. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/design-roadmap.html +0 -0
  175. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/eval-latest.json +0 -0
  176. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/eval.html +0 -0
  177. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/index.html +0 -0
  178. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/langchain.html +0 -0
  179. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/mcp-hub.html +0 -0
  180. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/openssf-badge.md +0 -0
  181. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/openssf-playbook.md +0 -0
  182. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/rag-architecture.md +0 -0
  183. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D01.md +0 -0
  184. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D02.md +0 -0
  185. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D03.md +0 -0
  186. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D04.md +0 -0
  187. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D05.md +0 -0
  188. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D06.md +0 -0
  189. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D07.md +0 -0
  190. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D08.md +0 -0
  191. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D09.md +0 -0
  192. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D10.md +0 -0
  193. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D11.md +0 -0
  194. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D12.md +0 -0
  195. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D13.md +0 -0
  196. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D14.md +0 -0
  197. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D15.md +0 -0
  198. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D16.md +0 -0
  199. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D17.md +0 -0
  200. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D18.md +0 -0
  201. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D19.md +0 -0
  202. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D20.md +0 -0
  203. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D21.md +0 -0
  204. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D22.md +0 -0
  205. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D23.md +0 -0
  206. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D24.md +0 -0
  207. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D25.md +0 -0
  208. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D26.md +0 -0
  209. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D27.md +0 -0
  210. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
  211. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  212. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  213. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  214. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  215. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  216. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  217. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  218. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  219. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  220. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  221. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  222. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  223. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  224. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  225. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  226. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-attest-findings.md +0 -0
  227. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-audit-findings.md +0 -0
  228. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  229. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-browse-findings.md +0 -0
  230. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  231. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  232. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  233. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  234. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-chat-findings.md +0 -0
  235. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  236. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  237. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  238. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-completions-findings.md +0 -0
  239. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-config-findings.md +0 -0
  240. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  241. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-context-findings.md +0 -0
  242. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  243. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  244. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-create-findings.md +0 -0
  245. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  246. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-deps-findings.md +0 -0
  247. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-discover-findings.md +0 -0
  248. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  249. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  250. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-drift-findings.md +0 -0
  251. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  252. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-edit-findings.md +0 -0
  253. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  254. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-explain-findings.md +0 -0
  255. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-export-findings.md +0 -0
  256. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  257. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  258. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  259. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  260. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  261. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-health-findings.md +0 -0
  262. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  263. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  264. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-import-findings.md +0 -0
  265. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-index-findings.md +0 -0
  266. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  267. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  268. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-install-findings.md +0 -0
  269. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  270. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  271. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-lint-findings.md +0 -0
  272. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-log-findings.md +0 -0
  273. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  274. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  275. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  276. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  277. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  278. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  279. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  280. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  281. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  282. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  283. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  284. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-policy-findings.md +0 -0
  285. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-preview-findings.md +0 -0
  286. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-profile-findings.md +0 -0
  287. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  288. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  289. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  290. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  291. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  292. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  293. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  294. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  295. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  296. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-replay-findings.md +0 -0
  297. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-root-findings.md +0 -0
  298. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  299. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-run-findings.md +0 -0
  300. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  301. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-search-findings.md +0 -0
  302. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  303. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  304. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  305. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  306. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  307. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  308. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  309. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  310. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-sync-findings.md +0 -0
  311. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-tag-findings.md +0 -0
  312. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  313. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-tap-findings.md +0 -0
  314. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-taps-findings.md +0 -0
  315. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  316. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-test-findings.md +0 -0
  317. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-trust-findings.md +0 -0
  318. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  319. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  320. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-untap-findings.md +0 -0
  321. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-update-findings.md +0 -0
  322. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  323. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-verify-findings.md +0 -0
  324. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-who-findings.md +0 -0
  325. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  326. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
  327. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
  328. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
  329. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  330. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  331. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  332. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  333. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  334. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-first-rule.md +0 -0
  335. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  336. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  337. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/branch-current-gate.md +0 -0
  338. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  339. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  340. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  341. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  342. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  343. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  344. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  345. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  346. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  347. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  348. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  349. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  350. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  351. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  352. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  353. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  354. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  355. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cli-command-audit.md +0 -0
  356. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  357. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  358. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  359. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  360. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/command-carousel-page.md +0 -0
  361. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  362. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
  363. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  364. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  365. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  366. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  367. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  368. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
  369. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
  370. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
  371. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  372. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  373. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  374. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  375. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  376. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  377. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  378. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  379. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  380. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
  381. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
  382. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
  383. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  384. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  385. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  386. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  387. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  388. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  389. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  390. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  391. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  392. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  393. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  394. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  395. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  396. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  397. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
  398. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  399. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  400. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  401. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
  402. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  403. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  404. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
  405. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
  406. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  407. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  408. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  409. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  410. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  411. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
  412. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
  413. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  414. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
  415. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  416. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
  417. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  418. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  419. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  420. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  421. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  422. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  423. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  424. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  425. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  426. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
  427. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
  428. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  429. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  430. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  431. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  432. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  433. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/github-community-health-files.md +0 -0
  434. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  435. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  436. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  437. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  438. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  439. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  440. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  441. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
  442. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  443. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  444. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  445. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  446. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  447. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  448. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  449. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  450. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  451. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  452. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  453. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  454. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  455. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  456. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  457. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  458. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  459. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  460. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  461. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  462. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
  463. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  464. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  465. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  466. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  467. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  468. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
  469. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  470. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  471. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  472. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  473. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  474. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  475. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  476. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  477. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  478. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  479. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  480. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  481. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  482. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  483. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  484. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  485. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
  486. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  487. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  488. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  489. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  490. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  491. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
  492. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  493. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  494. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  495. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
  496. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  497. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  498. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  499. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  500. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  501. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  502. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  503. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  504. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  505. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  506. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  507. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  508. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  509. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  510. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  511. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  512. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  513. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  514. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  515. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  516. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  517. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  518. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  519. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-playbook.md +0 -0
  520. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-silver.md +0 -0
  521. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  522. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  523. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
  524. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  525. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  526. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  527. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  528. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  529. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  530. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  531. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  532. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  533. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  534. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  535. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  536. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  537. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  538. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  539. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  540. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  541. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  542. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  543. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  544. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  545. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  546. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  547. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  548. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
  549. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
  550. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
  551. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
  552. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  553. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  554. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
  555. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
  556. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  557. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
  558. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
  559. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  560. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
  561. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  562. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
  563. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  564. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  565. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/relicence-apache-2.md +0 -0
  566. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  567. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  568. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  569. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
  570. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  571. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  572. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  573. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
  574. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  575. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  576. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  577. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  578. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  579. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  580. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  581. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  582. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  583. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  584. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  585. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  586. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  587. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  588. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  589. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  590. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  591. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  592. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
  593. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
  594. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
  595. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
  596. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  597. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
  598. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
  599. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  600. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  601. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  602. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  603. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  604. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  605. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  606. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  607. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  608. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  609. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  610. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  611. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  612. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  613. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  614. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  615. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  616. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  617. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  618. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
  619. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
  620. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  621. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  622. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  623. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  624. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
  625. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  626. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
  627. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  628. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  629. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  630. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  631. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  632. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
  633. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  634. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  635. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
  636. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  637. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  638. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  639. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  640. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
  641. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  642. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  643. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  644. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  645. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
  646. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  647. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  648. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  649. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
  650. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  651. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  652. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
  653. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  654. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  655. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  656. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  657. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  658. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  659. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  660. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  661. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  662. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  663. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  664. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  665. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  666. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  667. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workspace-scope-install.md +0 -0
  668. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/zip-strict-audit.md +0 -0
  669. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  670. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  671. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/security-design.md +0 -0
  672. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/semantic-search.md +0 -0
  673. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  674. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/verifying-releases.md +0 -0
  675. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/meta.md +0 -0
  676. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/openvex.json +0 -0
  677. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  678. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  679. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  680. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  681. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/eslint.config.mjs +0 -0
  682. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/README.md +0 -0
  683. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/__init__.py +0 -0
  684. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/baseline.json +0 -0
  685. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/faithfulness.py +0 -0
  686. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/golden_set.json +0 -0
  687. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/make_corpus.py +0 -0
  688. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/make_golden.py +0 -0
  689. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/metrics.py +0 -0
  690. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/publish_golden_dataset.py +0 -0
  691. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/run_evals.py +0 -0
  692. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/examples/README.md +0 -0
  693. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/examples/adapt-demo.sh +0 -0
  694. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/examples/boost-run-prototype.sh +0 -0
  695. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/index.html +0 -0
  696. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/noxfile.py +0 -0
  697. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/pyproject.toml +0 -0
  698. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/coverage-tools.in +0 -0
  699. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/coverage-tools.txt +0 -0
  700. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/lint-tools.in +0 -0
  701. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/lint-tools.txt +0 -0
  702. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/mutation-tools.in +0 -0
  703. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/mutation-tools.txt +0 -0
  704. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/platform-pins.lock +0 -0
  705. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/release-tools.in +0 -0
  706. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/release-tools.txt +0 -0
  707. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/test-tools.in +0 -0
  708. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/test-tools.txt +0 -0
  709. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/a11y_check.py +0 -0
  710. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/add_spdx_headers.py +0 -0
  711. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/bench_cli.sh +0 -0
  712. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_command_reference.py +0 -0
  713. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_demo_index.py +0 -0
  714. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_registries.py +0 -0
  715. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_roadmap.py +0 -0
  716. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_scale_corpus.py +0 -0
  717. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_vex.py +0 -0
  718. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_anchors.py +0 -0
  719. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_branch_current.py +0 -0
  720. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_dco.py +0 -0
  721. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_licenses.py +0 -0
  722. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_reproducible.py +0 -0
  723. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_required_checks.py +0 -0
  724. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/ensure_eval_corpus.sh +0 -0
  725. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_corpus.py +0 -0
  726. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_explain.py +0 -0
  727. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_gate.py +0 -0
  728. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_recommend.py +0 -0
  729. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_retrieval.py +0 -0
  730. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_stats_summary.py +0 -0
  731. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_tools.py +0 -0
  732. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/import_budget.py +0 -0
  733. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/lock_toolchain.py +0 -0
  734. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/measure_near_duplicate_bound.py +0 -0
  735. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/measure_registry.py +0 -0
  736. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/mutation_gate.py +0 -0
  737. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/mutation_shards.py +0 -0
  738. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/mutation_weights.json +0 -0
  739. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/normalize_sdist.py +0 -0
  740. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/page_budget.py +0 -0
  741. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/perf_gate.py +0 -0
  742. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/post_deploy_smoke.py +0 -0
  743. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/publish_eval_json.py +0 -0
  744. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/publish_shards.py +0 -0
  745. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/release_guard.py +0 -0
  746. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/release_preflight.py +0 -0
  747. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/serve_docs.py +0 -0
  748. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/shard_plan.py +0 -0
  749. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/setup.cfg +0 -0
  750. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/sonar-project.properties +0 -0
  751. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/README.md +0 -0
  752. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/boost.css +0 -0
  753. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/boost.js +0 -0
  754. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/demo.html +0 -0
  755. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/adapt.feature +0 -0
  756. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/browse.feature +0 -0
  757. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/count.feature +0 -0
  758. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/discover.feature +0 -0
  759. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/doctor.feature +0 -0
  760. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/environment.py +0 -0
  761. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/explain.feature +0 -0
  762. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/index.feature +0 -0
  763. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/install.feature +0 -0
  764. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/list.feature +0 -0
  765. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/mcp.feature +0 -0
  766. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/search.feature +0 -0
  767. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/cli_steps.py +0 -0
  768. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/discovery_steps.py +0 -0
  769. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/mcp_steps.py +0 -0
  770. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/quality_steps.py +0 -0
  771. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/conftest.py +0 -0
  772. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/baseline.json +0 -0
  773. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/explain.jsonl +0 -0
  774. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  775. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/golden-natural.jsonl +0 -0
  776. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/golden.jsonl +0 -0
  777. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/recommend.jsonl +0 -0
  778. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/taps-scale.txt +0 -0
  779. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/taps.txt +0 -0
  780. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/tool_calls.jsonl +0 -0
  781. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
  782. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_bmad_all_hosts.py +0 -0
  783. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_bmad_personas_scope.py +0 -0
  784. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_capabilities_policy.py +0 -0
  785. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_adapt.py +0 -0
  786. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_bmad.py +0 -0
  787. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_catalog.py +0 -0
  788. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_chat.py +0 -0
  789. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_configuration.py +0 -0
  790. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_discovery.py +0 -0
  791. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_hooks.py +0 -0
  792. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_hooks_gemini.py +0 -0
  793. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_info.py +0 -0
  794. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_intelligence.py +0 -0
  795. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_json_reports.py +0 -0
  796. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_pane_width.py +0 -0
  797. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_pkg.py +0 -0
  798. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_quality.py +0 -0
  799. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_quickstart.py +0 -0
  800. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_tap_pins.py +0 -0
  801. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_taps.py +0 -0
  802. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_team.py +0 -0
  803. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
  804. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
  805. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_everyday_loop.py +0 -0
  806. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_integrity_enforce.py +0 -0
  807. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_kind_conformance.py +0 -0
  808. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_property_parsers.py +0 -0
  809. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_recommend_because_is_true.py +0 -0
  810. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_reports_match_reality.py +0 -0
  811. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_run.py +0 -0
  812. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_tap_signing.py +0 -0
  813. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_workspace_scope.py +0 -0
  814. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/README.md +0 -0
  815. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  816. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  817. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  818. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  819. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  820. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  821. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  822. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  823. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  824. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  825. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  826. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  827. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  828. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  829. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  830. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  831. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  832. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  833. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  834. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  835. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  836. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  837. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  838. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/fuzz_frontmatter.py +0 -0
  839. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/fuzz_registry.py +0 -0
  840. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/conftest.py +0 -0
  841. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/test_graph.py +0 -0
  842. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/test_loader.py +0 -0
  843. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/test_retriever.py +0 -0
  844. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/make_fixture.py +0 -0
  845. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/perf/test_benchmarks.py +0 -0
  846. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/smoke.sh +0 -0
  847. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_a11y_check.py +0 -0
  848. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_action_pin_lockstep.py +0 -0
  849. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_adapters.py +0 -0
  850. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_adapters_multi.py +0 -0
  851. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_adapters_runner.py +0 -0
  852. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_agents.py +0 -0
  853. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_ai.py +0 -0
  854. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_aihost.py +0 -0
  855. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_archive.py +0 -0
  856. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_boost_first_offer.py +0 -0
  857. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_bootstrap.py +0 -0
  858. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_bot_pr_dco.py +0 -0
  859. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_branch_current.py +0 -0
  860. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_browse.py +0 -0
  861. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_builtin.py +0 -0
  862. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_capabilities.py +0 -0
  863. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_catalog.py +0 -0
  864. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_catalog_keyword_words.py +0 -0
  865. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_catalogbundle.py +0 -0
  866. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_chat.py +0 -0
  867. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_anchors.py +0 -0
  868. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_dco.py +0 -0
  869. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_licenses.py +0 -0
  870. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_reproducible.py +0 -0
  871. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_claude_settings.py +0 -0
  872. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_clean_internal_cache.py +0 -0
  873. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_cli_update_shards.py +0 -0
  874. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_cliparse.py +0 -0
  875. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_codeql_analysis_key.py +0 -0
  876. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_cohort.py +0 -0
  877. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_command_reference_fresh.py +0 -0
  878. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_community_health_files.py +0 -0
  879. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_compact.py +0 -0
  880. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_complete.py +0 -0
  881. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_complete_rc_block.py +0 -0
  882. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_config.py +0 -0
  883. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_content_dedupe.py +0 -0
  884. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_content_identity.py +0 -0
  885. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_count_flags_use_positive_int.py +0 -0
  886. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_crash_redaction.py +0 -0
  887. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dedup_trust.py +0 -0
  888. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_demo_index.py +0 -0
  889. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense.py +0 -0
  890. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  891. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_embed_dedupe.py +0 -0
  892. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_entry_reuse.py +0 -0
  893. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_entry_vectors.py +0 -0
  894. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_fallback.py +0 -0
  895. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_fix_hint.py +0 -0
  896. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_progress.py +0 -0
  897. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_quantized.py +0 -0
  898. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_ready_order.py +0 -0
  899. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_shard_real_schema.py +0 -0
  900. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  901. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_shards.py +0 -0
  902. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_status.py +0 -0
  903. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_status_cheap.py +0 -0
  904. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_vector_dedupe.py +0 -0
  905. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dependabot_config.py +0 -0
  906. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_deps.py +0 -0
  907. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_discovery.py +0 -0
  908. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_distill_merge.py +0 -0
  909. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_docs_pages_linked.py +0 -0
  910. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_docsite_chrome.py +0 -0
  911. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_doctor_output_polish.py +0 -0
  912. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_drift_hint.py +0 -0
  913. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_ed25519.py +0 -0
  914. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_embed.py +0 -0
  915. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_embed_local.py +0 -0
  916. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_embed_truncated_response.py +0 -0
  917. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_entry_key.py +0 -0
  918. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_errors_and_cli_table.py +0 -0
  919. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_baseline.py +0 -0
  920. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_corpus.py +0 -0
  921. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_faithfulness.py +0 -0
  922. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_gate.py +0 -0
  923. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_grading.py +0 -0
  924. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_metrics.py +0 -0
  925. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_stats_summary.py +0 -0
  926. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_tools.py +0 -0
  927. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_tools_probe.py +0 -0
  928. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  929. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_faithfulness.py +0 -0
  930. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_frontmatter.py +0 -0
  931. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_fuzz_targets.py +0 -0
  932. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  933. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitleaks_config.py +0 -0
  934. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitutil.py +0 -0
  935. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitutil_lfs.py +0 -0
  936. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitutil_sparse.py +0 -0
  937. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gstack_coexistence.py +0 -0
  938. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_hook_settings_hosts.py +0 -0
  939. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_hookhost.py +0 -0
  940. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_imperative.py +0 -0
  941. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_import_budget.py +0 -0
  942. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_injectscan.py +0 -0
  943. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_install_permission_error.py +0 -0
  944. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_installscan.py +0 -0
  945. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_integrity.py +0 -0
  946. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_journal.py +0 -0
  947. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_jsonstate.py +0 -0
  948. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_langchain_packaging.py +0 -0
  949. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_launcher_python_floor.py +0 -0
  950. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_link_ownership.py +0 -0
  951. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_localembed.py +0 -0
  952. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_localembed_e2e.py +0 -0
  953. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_lockfile.py +0 -0
  954. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_logs.py +0 -0
  955. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_marketing_counts.py +0 -0
  956. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcp.py +0 -0
  957. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcp_install_scan.py +0 -0
  958. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcp_read.py +0 -0
  959. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcpdecl.py +0 -0
  960. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcphost.py +0 -0
  961. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_measure_registry.py +0 -0
  962. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_minisign.py +0 -0
  963. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutation_hardening.py +0 -0
  964. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutation_shards.py +0 -0
  965. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutation_subfile_shards.py +0 -0
  966. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutmut_source_paths.py +0 -0
  967. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_near_duplicate_collapse.py +0 -0
  968. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_nethttp.py +0 -0
  969. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_normalize_sdist.py +0 -0
  970. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_output.py +0 -0
  971. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_page_budget.py +0 -0
  972. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_paths.py +0 -0
  973. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_perf_gate.py +0 -0
  974. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_pkg_confusions.py +0 -0
  975. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_pkg_injection.py +0 -0
  976. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_pkg_secrets.py +0 -0
  977. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_platform_pins.py +0 -0
  978. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_policy.py +0 -0
  979. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_post_deploy_smoke.py +0 -0
  980. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_project_mcp_sidecar.py +0 -0
  981. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_projectlock.py +0 -0
  982. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_provenance.py +0 -0
  983. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_publish_golden_dataset.py +0 -0
  984. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag.py +0 -0
  985. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag_completeness.py +0 -0
  986. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag_fastpath.py +0 -0
  987. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag_fusion.py +0 -0
  988. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registries_fresh.py +0 -0
  989. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry.py +0 -0
  990. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry_categories.py +0 -0
  991. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry_control_chars.py +0 -0
  992. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry_parallel.py +0 -0
  993. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_release_guard.py +0 -0
  994. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_release_preflight.py +0 -0
  995. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_report.py +0 -0
  996. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_required_checks.py +0 -0
  997. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rerank_cache.py +0 -0
  998. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_resolve.py +0 -0
  999. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  1000. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_roadmap_fresh.py +0 -0
  1001. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rules.py +0 -0
  1002. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_scale_corpus.py +0 -0
  1003. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_schedule_plist.py +0 -0
  1004. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_scopes.py +0 -0
  1005. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_secretscan.py +0 -0
  1006. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_selfupdate.py +0 -0
  1007. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_serve.py +0 -0
  1008. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_serve_docs.py +0 -0
  1009. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shard_plan.py +0 -0
  1010. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards.py +0 -0
  1011. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards_incremental.py +0 -0
  1012. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards_ingest.py +0 -0
  1013. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards_matrix.py +0 -0
  1014. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_smoke_covers_every_command.py +0 -0
  1015. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_spdx_headers.py +0 -0
  1016. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_spin.py +0 -0
  1017. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_stackprobe.py +0 -0
  1018. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_staleness.py +0 -0
  1019. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_store.py +0 -0
  1020. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_store_materialize.py +0 -0
  1021. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_sync_blocked_links.py +0 -0
  1022. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  1023. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_tap_pins.py +0 -0
  1024. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_token_parity.py +0 -0
  1025. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_toolchain_lock.py +0 -0
  1026. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_trustaudit.py +0 -0
  1027. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_typedvalue.py +0 -0
  1028. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_typosquat.py +0 -0
  1029. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_updatediff.py +0 -0
  1030. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_util.py +0 -0
  1031. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_version.py +0 -0
  1032. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_version_tags.py +0 -0
  1033. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_vex.py +0 -0
  1034. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_visual_harness_capture.py +0 -0
  1035. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_visual_harness_flags.py +0 -0
  1036. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_concurrency.py +0 -0
  1037. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  1038. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  1039. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_timeouts.py +0 -0
  1040. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflows.py +0 -0
  1041. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  1042. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/a11y_check.mjs +0 -0
  1043. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/console_check.mjs +0 -0
  1044. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/package-lock.json +0 -0
  1045. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/package.json +0 -0
  1046. {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/visual_check.mjs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.112
3
+ Version: 1.2.114
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.112'
22
- __version_tuple__ = version_tuple = (1, 2, 112)
21
+ __version__ = version = '1.2.114'
22
+ __version_tuple__ = version_tuple = (1, 2, 114)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -389,7 +389,54 @@ under-route than talk over someone.
389
389
  """
390
390
 
391
391
 
392
- def classify(prompt: str) -> str:
392
+ _NOT_INTENT = re.compile(
393
+ r"```.*?```" # fenced code
394
+ r"|`[^`\n]*`" # inline code
395
+ r"|\b(?:https?|ftp)://\S+|\bwww\.\S+" # URLs
396
+ r"|(?<!\S)--?[a-z]\S*" # --flag, -f, --flag=value
397
+ r"|\b(?:story|ticket|issue|epic|task|bug|card|pr)\s+"
398
+ r"(?:[a-z][a-z0-9]*-\d+|#\d+)\b", # story ABC-123, issue #42
399
+ re.IGNORECASE | re.DOTALL)
400
+ """Text that names something rather than asking for anything.
401
+
402
+ A prompt of up to :data:`LONG_PROMPT_WORDS` routes on one keyword, so one match
403
+ anywhere decided the track — including words nobody meant as intent. "rerun the
404
+ installer with --scope global" went to product on `\\bscope\\b`, a link to
405
+ `https://example.com/docs/...` went to docs, "move story ABC-123 to in progress"
406
+ went to product. These spans are removed before any table is scored.
407
+ """
408
+
409
+ _PATH_TOKEN = re.compile(r"\S*/\S*")
410
+ """A token with a `/` in it: a path, which `build` does not score.
411
+
412
+ "tail logs/build/server.log" is not a build. The rule is build-only because a
413
+ path is often the object of the ask — "update docs/README.md" must stay docs —
414
+ and build is the catch-all whose single hits are the cheapest.
415
+ """
416
+
417
+ _ADDRESSEE = re.compile(r"\b\w+\s+(?:me|us)\b", re.IGNORECASE)
418
+ """A verb aimed at the user, not the code: "update me when the CI run finishes".
419
+
420
+ Build-only for the same reason as :data:`_PATH_TOKEN` — every build keyword is
421
+ a verb that also reads as a request to *tell* someone something.
422
+ """
423
+
424
+
425
+ def _intent_text(text: str, root: Path | str | None) -> str:
426
+ """`text` with everything that is not intent blanked out, for scoring.
427
+
428
+ The repo's own directory name goes too, whole-word: in a checkout called
429
+ `migrations`, "list the last three commits in migrations" is a `git log`,
430
+ not a migration. The hook already knows the root; this is where it counts.
431
+ """
432
+ text = _NOT_INTENT.sub(" ", text)
433
+ if root is not None and Path(root).name:
434
+ text = re.sub(r"(?<!\w)%s(?!\w)" % re.escape(Path(root).name), " ",
435
+ text, flags=re.IGNORECASE)
436
+ return text
437
+
438
+
439
+ def classify(prompt: str, root: Path | str | None = None) -> str:
393
440
  """Name the track a prompt belongs to, or ``"trivial"`` to stay silent.
394
441
 
395
442
  Silence is the default for anything that is not recognisably a unit of
@@ -397,6 +444,11 @@ def classify(prompt: str) -> str:
397
444
  own instructions), a short informational question, an explicit opt-out
398
445
  ("no bmad"), a prompt that matches no track at all, or — past
399
446
  :data:`LONG_PROMPT_WORDS` — one that matches only a single keyword.
447
+
448
+ Only intent is scored (:func:`_intent_text`): code spans, URLs, flags,
449
+ tracker IDs and the name of ``root`` — the repo the prompt was typed in —
450
+ never count, and ``build`` additionally ignores paths and verbs addressed
451
+ to the user. The threshold stays where it is; the evidence got cleaner.
400
452
  """
401
453
  text = prompt.strip()
402
454
  if not text or _SLASH.match(text) or _OPT_OUT.search(text):
@@ -407,9 +459,12 @@ def classify(prompt: str) -> str:
407
459
  if (_INFO_QUESTION.match(text) and len(words) <= QUESTION_MAX_WORDS
408
460
  and not _SECOND_SENTENCE.search(text)):
409
461
  return TRIVIAL
462
+ intent = _intent_text(text, root)
463
+ build_intent = _ADDRESSEE.sub(" ", _PATH_TOKEN.sub(" ", intent))
410
464
  # Distinct patterns matched, not occurrences: saying "update" twenty times
411
465
  # is one piece of evidence, which is what keeps a repetitive log quiet.
412
- scores = {t: sum(1 for rx in pats if rx.search(text))
466
+ scores = {t: sum(1 for rx in pats
467
+ if rx.search(build_intent if t == "build" else intent))
413
468
  for t, pats in _COMPILED.items()}
414
469
  best = max(scores.values())
415
470
  if best == 0 or (best < 2 and len(words) > LONG_PROMPT_WORDS):
@@ -526,12 +581,13 @@ def route_lines(prompt: str, root: Path | None = None) -> list[str]:
526
581
  Kept to a handful of lines on purpose — this is prepended to *every*
527
582
  substantive prompt, so its cost is paid on each turn of every session.
528
583
  """
529
- track_name = classify(prompt)
584
+ root = Path(root) if root is not None else Path.cwd()
585
+ track_name = classify(prompt, root)
530
586
  if track_name == TRIVIAL:
531
587
  return []
532
588
  track = TRACKS[track_name]
533
589
  lead = PERSONA_BY_SLUG[track.lead]
534
- signals = project_signals(Path(root) if root is not None else Path.cwd())
590
+ signals = project_signals(root)
535
591
 
536
592
  lines = [
537
593
  "[BMAD autopilot] track: %s" % track_name,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.112
3
+ Version: 1.2.114
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -329,7 +329,14 @@ docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md
329
329
  docs/roadmap/items/bm25-has-no-stemming.md
330
330
  docs/roadmap/items/bm25-index-is-one-json-blob.md
331
331
  docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md
332
+ docs/roadmap/items/bmad-done-contract-ignores-the-track.md
333
+ docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md
332
334
  docs/roadmap/items/bmad-hooks-all-hosts.md
335
+ docs/roadmap/items/bmad-personas-delegate-outside-the-router.md
336
+ docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md
337
+ docs/roadmap/items/bmad-route-ignores-autopilot-state.md
338
+ docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md
339
+ docs/roadmap/items/bmad-router-reads-each-prompt-alone.md
333
340
  docs/roadmap/items/boost-first-carried-the-losing-trigger.md
334
341
  docs/roadmap/items/boost-first-rule.md
335
342
  docs/roadmap/items/boost-langchain-publishing.md
@@ -75,7 +75,11 @@ instead of being remembered afterwards.
75
75
 
76
76
  The router costs a question nothing. Acknowledgements, slash commands, short
77
77
  informational questions ("what does `scan_dir` do?") and anything containing
78
- `no bmad` produce no banner at all. Because a `UserPromptSubmit` hook that exits
78
+ `no bmad` produce no banner at all. A short prompt routes on a single keyword, so
79
+ only intent is scored: code spans, URLs, `--flags`, tracker IDs such as
80
+ `story ABC-123` and the name of the repo you are in never count, and the `build`
81
+ track also ignores paths and verbs aimed at you ("update me when CI finishes").
82
+ Because a `UserPromptSubmit` hook that exits
79
83
  non-zero would erase your prompt, it degrades every failure to silence and
80
84
  always exits 0.
81
85
 
@@ -0,0 +1,75 @@
1
+ ---
2
+ id: bmad-done-contract-ignores-the-track
3
+ board: code
4
+ section: dx
5
+ status: next
6
+ category: "Agents · BMAD"
7
+ complexity: M
8
+ impact: High
9
+ wow: 2
10
+ note: a review or research ask is told to add tests and finish a change
11
+ order: 321
12
+ owner:
13
+ pr:
14
+ title: "<code>boost bmad</code> gives every track the build contract, so a review is told to finish a change"
15
+ ---
16
+ <code>route_lines</code> (<code>core/bmad.py:523</code>) takes the first four banner lines from the track
17
+ and the last two ignore it: <code>done_checklist(signals)</code> (<code>:483</code>) has no
18
+ track parameter, and the autonomy sentence (<code>:551</code>) is a literal. One prompt per track against
19
+ one fixture repo gave <b>one distinct pair of closing lines across all 9 tracks</b>:<br>
20
+ <code>Done means: tests: add or update coverage under `tests/`, and run them · docs: update `README.md` / `docs/` wherever the change shows · gate: `make check` green, with real output · `CLAUDE.md` is binding</code><br>
21
+ <code>Work autonomously through to a finished, verified change; stop to ask only when a choice would change what gets delivered.</code>
22
+
23
+ <b>Repro</b> (throwaway repo with <code>tests/</code>, <code>docs/</code>, <code>README.md</code>,
24
+ <code>CLAUDE.md</code>, and a <code>Makefile</code> with <code>check:</code>).
25
+ <code>boost bmad route "review the changes on this branch and tell me what could break" --plain</code>
26
+ names Murat (<code>bmad-tea</code>) as lead with <code>bmad-code-review</code>, then defines done as new
27
+ coverage, updated docs and a finished, verified change. <code>"compare the two caching options and recommend one"</code>,
28
+ <code>"write the PRD for the policy engine"</code> and <code>"prioritize the backlog for next sprint"</code>
29
+ get the same two lines. In an empty repo the comparison is told <code>tests: cover the change … docs: write down what changed</code>, but nothing changed.
30
+ The shared lines are 48% of the fixture's review banner (326 of 673 chars) and 41% in the empty repo.
31
+
32
+ <b>Against real prompts the clause seldom fits.</b> Replaying the origin/main classifier over one
33
+ profile's history (417 ordinary prompts over 6 active days, roughly half from tooling repos): 147 (35%)
34
+ would get a banner, or 109 if pasted text is not in the hook's <code>prompt</code> field (not yet
35
+ checked). A <em>single judge</em> (an agent) labelled 41 routed banners, sampled by track: <code>Done means</code>
36
+ fit <b>5 of 41</b> (11 counting partial fits).
37
+
38
+ <b>The same contract appears in three places, and one was a deliberate choice.</b> The autopilot item
39
+ made tests and docs unconditional (&ldquo;no doc change needed&rdquo; is a conclusion to reach), and
40
+ <code>tests/unit/test_bmad_core.py:331</code> enforces that. It is right for a change and wrong for an
41
+ answer. Every persona file repeats the contract (<code>_persona_text</code>,
42
+ <code>core/bmad.py:663&ndash;667</code>: &ldquo;tests updated and actually run, documentation left true …&rdquo;),
43
+ so the <code>bmad-analyst</code> a discovery banner hands off to brings it back. The SessionStart
44
+ briefing says to follow the banner (<code>:576</code>) and ends on a tests-docs-item house rule
45
+ (<code>:586</code>).
46
+
47
+ <b>The autonomy line competes with approval gates users add on purpose</b>, such as the
48
+ <code>HARD-GATE</code> in superpowers' <code>brainstorming</code> skill (no implementation until the user
49
+ approves) or a team rule requiring confirmation before a change that affects production. The banner is
50
+ <code>UserPromptSubmit</code> <code>additionalContext</code> (<code>commands/bmad.py:354</code>), added
51
+ again on every routed prompt. <b>Untested:</b> which instruction a model follows when they
52
+ conflict. Softening the line to defer to the repo guide would not cover this: the <code>is binding</code>
53
+ clause only appears when a guide file exists (<code>core/bmad.py:514&ndash;516</code>), and a plugin skill is not a guide file.
54
+
55
+ <b>Fix: store the kind of done on <code>Track</code></b> (<code>core/bmad.py:75</code>) and pass it to
56
+ <code>done_checklist(signals, done)</code>. <i>change</i> (build, quality, docs, ux): today's clauses,
57
+ unchanged. <i>findings</i> (review, discovery): &ldquo;findings with evidence, no edits unless
58
+ asked&rdquo;. The &ldquo;unless asked&rdquo; matters because the tie-break sends <code>"fix the lint
59
+ errors in the scanner"</code> to review and <code>"investigate why the export crashes and fix it"</code>
60
+ to discovery. <i>artifact</i> (product, planning, architecture): &ldquo;a written artifact, no
61
+ code&rdquo;, keeping the roadmap and guide clauses. Drop the autonomy line from
62
+ findings and artifact tracks. On change tracks, replace it with wording that does not depend on a
63
+ guide file: finish and verify, and still honour any approval step that the guide or a loaded skill
64
+ requires. <code>_persona_text</code> should state the contract for each kind, since
65
+ <code>bmad-tea</code> leads both quality and review. The house rule should name all three kinds.
66
+
67
+ <b>Tests go in <code>tests/unit/test_bmad_core.py</code>.</b> Assert every <code>TRACKS</code> entry
68
+ declares a kind, and that no findings or artifact banner has a <code>tests:</code> clause.
69
+ Add verbatim review and discovery banners next to <code>test_the_whole_banner_is_exactly_this</code>
70
+ (<code>:396</code>), whose build pin keeps its <code>Done means</code> line and takes the new closing line.
71
+ Limit <code>:331</code> to change tracks. <code>:376</code> pins <code>autonom</code> on one build banner:
72
+ move it to the new wording and assert the line is absent from findings and artifact banners.
73
+ <code>:688</code> only checks that each persona file mentions tests and docs, so pin the per-kind persona
74
+ contract directly. Out of scope: router accuracy (same single judge: track or lead clearly wrong on
75
+ 21 of 41) is a separate defect.
@@ -0,0 +1,70 @@
1
+ ---
2
+ id: bmad-gemini-gets-claude-hook-output
3
+ board: code
4
+ section: dx
5
+ status: next
6
+ category: "Agents · BMAD"
7
+ complexity: M
8
+ impact: Med
9
+ wow: 2
10
+ note: gemini takes the banner but shows the briefing to the user
11
+ order: 324
12
+ owner:
13
+ pr:
14
+ title: On Gemini, the <code>bmad on</code> briefing reaches the user and never the model
15
+ ---
16
+ <code>boost bmad on</code> installs both autopilot hooks on Claude always, and on Gemini whenever
17
+ <code>gemini</code> is on <code>PATH</code> <em>or</em> <code>~/.gemini/</code> exists
18
+ (<code>commands/bmad.py:177</code>). It has no <code>--host</code>
19
+ (<code>:98</code>–<code>112</code>), so Claude-only means hand-editing Gemini's settings, and the
20
+ next <code>bmad on</code> re-adds what was deleted. The <a href="#bmad-hooks-all-hosts">fan-out</a> translated event names and timeout
21
+ units, but left stdout in Claude's format. Checked against <b>Gemini CLI 0.57.0</b>: its bundled
22
+ hook runner was read, then imported and driven against main's hooks in a throwaway
23
+ <code>HOME</code> with only an empty <code>.gemini/</code>.
24
+
25
+ <b>The router works, so this is narrower than hooks that do nothing.</b> Gemini's
26
+ <code>BeforeAgent</code> input has <code>prompt</code> and <code>cwd</code> under the names
27
+ <code>_route</code> reads (<code>:341</code>–<code>342</code>), and <code>hookEventName</code> is
28
+ never validated, so the hardcoded <code>"UserPromptSubmit"</code> (<code>:353</code>) is harmless.
29
+ Measured: <b><code>outputFormat: json</code>, 643 chars of <code>additionalContext</code></b> for a
30
+ build-track banner.
31
+
32
+ <b>The briefing never reaches the model.</b> <code>_orient</code> prints plain text
33
+ (<code>:530</code>), which Claude Code adds to context. Gemini turns non-JSON stdout into
34
+ <code>{decision: "allow", systemMessage: text}</code> and adds only <code>additionalContext</code>
35
+ to history. Measured: <b><code>systemMessage</code> 1,297 chars, <code>additionalContext</code>
36
+ 0</b>. The 26-line briefing is shown to the user as an info message instead, on
37
+ <code>startup</code>, <code>resume</code> and <code>/clear</code>.
38
+
39
+ <b>What does reach the model is framed as data, and names tools Gemini lacks.</b> Gemini wraps
40
+ <code>additionalContext</code> in <code>&lt;hook_context&gt;</code>, and its default system prompt
41
+ says to treat that as "<b>read-only data</b> or <b>informational context</b>". The banner is all
42
+ instructions. It names a <code>bmad-dev</code> subagent and spawning support personas with the Agent
43
+ tool (<code>core/bmad.py:538</code>, <code>:543</code>), and the briefing puts the personas in
44
+ <code>~/.claude/agents</code> (<code>:570</code>). Gemini's subagent tool is
45
+ <code>invoke_agent</code>, and boost writes no personas for it. <em>Not measured:</em> whether a
46
+ Gemini model follows the banner anyway, since no live model call was made. <em>Also seen:</em>
47
+ Gemini parses stderr when stdout is empty, so a launcher that rejects the action shows its argparse
48
+ error as a <code>systemMessage</code> despite <code>|| true</code> (simulated once, 330 chars).
49
+
50
+ <b>Proposed fix.</b> <i>(1)</i> <code>bmad on</code> and <code>startup on</code> take <code>--host
51
+ claude|gemini|auto</code>, the choices <code>boost hooks --host</code> has
52
+ (<code>commands/hooks.py:45</code>), with <code>auto</code> as today's evidence rule. <i>(2)</i>
53
+ Gemini's hooks run <code>bmad route --host gemini</code> and <code>bmad orient … --host
54
+ gemini</code>. Claude's commands stay byte-identical. <i>(3)</i> A pure
55
+ <code>hookhost.context_output(host, event, text)</code> formats stdout: Claude's is unchanged, and
56
+ Gemini always gets JSON, with <code>hookEventName</code> from <code>translate()</code> and the text in
57
+ <code>additionalContext</code>. That reaches the model on startup and resume, not after
58
+ <code>/clear</code>, whose Gemini path reads only <code>systemMessage</code>. <i>(4)</i>
59
+ <code>route_lines</code> and <code>orientation</code> take the host. On Gemini the lead is a role
60
+ to adopt, with no subagent, Agent tool or <code>~/.claude</code> wording.
61
+
62
+ <b>Tests.</b> <code>tests/unit/test_hookhost.py</code>: for each host and both events, Gemini output
63
+ passes <code>json.loads</code> with the text in <code>additionalContext</code> (plain text is the
64
+ regression), and Claude output matches today's bytes. <code>tests/unit/test_bmad_core.py</code>: the
65
+ Gemini banner and briefing name no subagent, Agent tool or <code>~/.claude</code>. Parametrize
66
+ <code>test_emits_the_hook_json_contract</code> by host
67
+ (<code>tests/functional/test_cli_bmad.py:480</code>, which pins <code>"UserPromptSubmit"</code> at
68
+ <code>:492</code>). In <code>tests/functional/test_bmad_all_hosts.py</code>, assert that Gemini's
69
+ commands carry <code>--host gemini</code> and that <code>--host claude</code> never writes
70
+ <code>~/.gemini/settings.json</code>.
@@ -0,0 +1,81 @@
1
+ ---
2
+ id: bmad-personas-delegate-outside-the-router
3
+ board: code
4
+ section: dx
5
+ status: next
6
+ category: "Agents · BMAD"
7
+ complexity: S
8
+ impact: Med
9
+ wow: 3
10
+ note: router silence is banner-only, and nobody has counted
11
+ order: 325
12
+ owner:
13
+ pr:
14
+ title: "Persona descriptions say <code>Use PROACTIVELY</code>, so the router's silence governs only the banner"
15
+ ---
16
+ <code>boost bmad on</code> gives Claude Code two routes to a persona, and only one goes through the router.
17
+ The banner is gated: <code>classify</code> returns <code>trivial</code> for slash commands and
18
+ <code>no bmad</code> (<code>boost_cli/core/bmad.py:402</code>), short informational questions (<code>:407</code>)
19
+ and thin keyword evidence (<code>:415</code>). The other route is the <code>description:</code> line of the
20
+ seven persona files written into <code>~/.claude/agents/</code> (<code>boost_cli/commands/bmad.py:258</code>),
21
+ which <code>persona_description</code> renders as <code>&lt;Name&gt;, &lt;Title&gt; (BMAD &lt;module&gt;). Use
22
+ PROACTIVELY for &lt;triggers&gt;.</code> (<code>boost_cli/core/bmad.py:594</code>). Neither that line nor the
23
+ persona body (<code>:642</code>) ties spawning to the router; the body's one mention has Amelia read the gate
24
+ command off its banner (<code>:91</code>).
25
+
26
+ <b>Claude Code reads that line as a delegation rule.</b> The sub-agents docs define <code>description</code>
27
+ as &ldquo;When Claude should delegate to this subagent&rdquo;, name it alongside the request and current
28
+ context as what automatic delegation is based on, and advise: &ldquo;To encourage proactive delegation,
29
+ include phrases like &lsquo;use proactively&rsquo; in your subagent's description field.&rdquo; So the
30
+ router's tuned silence and the <code>no bmad</code> opt-out decide whether a banner is added, not whether a
31
+ persona gets spawned.
32
+
33
+ <b>The repo's own silent-prompt fixtures read like the triggers.</b> <code>what does scan_dir do?</code>,
34
+ <code>fix the flaky test in test_catalog, no bmad</code> and <code>/code-review fix the failing tests in the
35
+ catalog scanner</code> (<code>tests/unit/test_bmad_core.py:48</code>, <code>:68</code>, <code>:86</code>) all
36
+ classify <code>trivial</code> with a 0-char banner on origin/main, yet Paige covers &ldquo;explaining a system
37
+ to the next person who touches it&rdquo;, Murat &ldquo;flaky suites&rdquo; and Amelia &ldquo;fixing a bug
38
+ &hellip; or any change that ends in edited source files&rdquo; (<code>boost_cli/core/bmad.py:183</code>&ndash;<code>218</code>).
39
+ Replayed over one real Claude Code profile's history (318 unique non-slash prompts up to 2,000 chars, 6 active
40
+ days), <b>60.7%</b> classify trivial and <b>55.7%</b> match no keyword. Little pushes back. The
41
+ <code>SessionStart</code> briefing says &ldquo;Trivial asks get no banner &mdash; answer those directly&rdquo;
42
+ (<code>:576</code>), but also that personas &ldquo;are delegated to with the Agent tool&rdquo; (<code>:570</code>),
43
+ and its hook does not fire on compaction (matcher <code>startup|resume|clear</code>,
44
+ <code>boost_cli/commands/bmad.py:84</code>). A <code>no bmad</code> prompt carries its own words, but nothing
45
+ says they cover the personas.
46
+
47
+ <b>Unmeasured, and the measurement could close this item.</b> Nobody has counted delegations on silent
48
+ prompts. Banner cost is countable (mean ~650 chars, ~163 tokens on that profile), while a description-triggered
49
+ spawn would be a whole subagent run that no banner count sees. That is inference, but it limits the claim that
50
+ the router &ldquo;costs a question nothing&rdquo; (<code>docs/bmad.md:76</code>,
51
+ <code>boost_cli/commands/bmad.py:14</code>) to the banner. Measure from a HOME with no persona files or boost
52
+ hooks: run each router-trivial prompt (the fixtures plus the trivial slice of a real history) as
53
+ <code>claude -p &lt;prompt&gt; --output-format stream-json --verbose</code> with the briefing via
54
+ <code>--append-system-prompt</code>, in three arms that differ only in the session-only <code>--agents</code>
55
+ flag (no personas, shipped descriptions, fixed descriptions). Count <code>Agent</code> <code>tool_use</code>
56
+ blocks whose <code>subagent_type</code> starts with <code>bmad-</code>, in messages with a null
57
+ <code>parent_tool_use_id</code>. Cost is on the stream's last line. A fourth arm runs routed prompts with the
58
+ real hook via <code>--settings</code>, to check that the fix still delegates when the slug arrives in hook-added
59
+ context rather than typed by the user. If the shipped arm spawns no more <code>bmad-*</code> subagents than the
60
+ no-persona arm, record that here and close the item.
61
+
62
+ <b>Proposed fix: make the banner the trigger.</b> Drop <code>Use PROACTIVELY</code> and have
63
+ <code>persona_description</code> say when the persona applies, e.g. <code>Amelia, Senior Software Engineer
64
+ (BMAD bmm). Use when a [BMAD autopilot] routing banner names bmad-dev, or the user asks for it by name.
65
+ Covers implementing a feature, fixing a bug, &hellip;</code>. The banner already names lead and support by
66
+ slug, and the docs say that when you name a subagent in your prompt &ldquo;Claude typically delegates&rdquo;.
67
+ Silent prompts would then leave only the briefing's roster pointing at a persona. If the conditional wording
68
+ fails the measurement, fall back to plain scope descriptions with no imperative. Until the fix lands,
69
+ <code>permissions.deny</code> on <code>Agent(bmad-dev)</code> and the rest stops the spawns but blocks
70
+ banner-led delegation too. <code>docs/bmad.md:76</code>&ndash;<code>78</code> should say that the opt-out and
71
+ the silence apply only to the banner. That doc change needs no measurement and can land now.
72
+
73
+ <b>Tests.</b> Extend <code>tests/unit/test_bmad_core.py</code>.
74
+ <code>TestPersonaFiles.test_the_frontmatter_block_is_exactly_this</code> (<code>:485</code>) pins Sally's
75
+ description byte for byte and must take the new text. <code>test_persona_descriptions_are_delegation_triggers</code>
76
+ (<code>:694</code>) checks only length and that there is no newline. It should also assert that every
77
+ description lacks <code>proactively</code> in any case and contains its persona's slug.
78
+ <code>test_explicit_opt_out_is_honored</code> (<code>:71</code>) proves only that the classifier stays silent,
79
+ and no unit test can observe delegation, so the headless run is the acceptance check. Only re-running
80
+ <code>boost bmad on</code> rewrites unedited persona files (<code>boost_cli/core/bmad.py:672</code>), so the
81
+ release note must tell users to re-run it.
@@ -0,0 +1,72 @@
1
+ ---
2
+ id: bmad-roster-drifted-from-bmad-6-12
3
+ board: code
4
+ section: dx
5
+ status: next
6
+ category: "Agents · BMAD"
7
+ complexity: M
8
+ impact: Med
9
+ wow: 2
10
+ note: docs routes at a skill no default 6.12 install contains
11
+ order: 323
12
+ owner:
13
+ pr:
14
+ title: The autopilot routes docs at a skill BMAD 6.12 no longer installs, and no test would notice
15
+ ---
16
+ <code>core/bmad.py</code> hard-codes upstream skill names in persona <code>skills</code> and track
17
+ <code>skill</code>, while <code>boost bmad install</code> fetches <code>bmad-method@latest</code>
18
+ (<code>commands/bmad.py:410</code>). The tests check the two tables only against <em>each other</em>
19
+ (<code>tests/unit/test_bmad_core.py:207</code>) and <code>orientation()</code> against a three-name
20
+ denylist (<code>:431</code>), so a name that goes stale in both tables passes.
21
+
22
+ <b>Against a real install, one name is gone.</b> A pinned <code>bmad-method@6.12.0</code> install
23
+ (<code>--tools claude-code --modules bmm</code>) wrote <b>29</b> skills, matching its
24
+ <code>skill-manifest.csv</code> <code>canonicalId</code> column exactly. <b>12 of the 13</b> names in
25
+ <code>PERSONAS</code>/<code>TRACKS</code> are present, as are all 11 in <code>orientation()</code>. The missing
26
+ one is <code>bmad-document-project</code>, the docs track's skill (<code>core/bmad.py:263</code>) and Paige's
27
+ only one (<code>:229</code>). v6.11.0 turned it into a <code>v6-shims/</code> forwarder for
28
+ <code>bmad-project-context</code> (#2674), and v6.12.0 made shims opt-in on fresh installs. boost passes
29
+ no <code>--shims</code>, so the install records <code>installShims: false</code>. Every docs banner still
30
+ says <code>invoke it if it is installed</code> (<code>:548</code>). Paige also supports the catch-all
31
+ <code>build</code> track (<code>:256</code>), so build banners also ask for a subagent whose file names that skill.
32
+
33
+ <b>The shipped item's account of Paige is half right.</b> &ldquo;On hiatus&rdquo; matches 6.12.0's
34
+ <code>removals.txt</code>, but it also says <code>bmad-agent-tech-writer</code> &ldquo;never existed to
35
+ invoke&rdquo;. <code>removals.txt</code> lists it under removed bmm agents as <em>&ldquo;retired —
36
+ capabilities were generic LLM defaults&rdquo;</em> (v6.11.0, #2658). That is the same release that shimmed
37
+ the one skill boost gave her.
38
+
39
+ <b><code>install --scope global</code> leaves the build skill broken.</b> Run from origin/main against a
40
+ throwaway HOME, it printed <code>installed 29 BMAD skill(s) globally</code>. <code>bmad-build</code> and
41
+ <code>bmad-build-auto</code>, the only 2 of the 29 that do this, start by running
42
+ <code>{project-root}/_bmad/scripts/render_skill.py</code> and HALT if it fails. In a repo without
43
+ <code>_bmad/</code> that is <code>uv</code> exit 2, <code>Failed to spawn … No such file or directory</code>.
44
+ The install prints one dim line about <code>boost bmad init</code> (<code>commands/bmad.py:448</code>)
45
+ that does not name those skills.
46
+
47
+ <b>The global path also hides drift.</b> On either scope, installer output is captured
48
+ (<code>commands/bmad.py:415</code>), and only a failure's last line is shown (<code>:422</code>). Global
49
+ state records no version (<code>:444</code>, unlike <code>:472</code>), and the staged
50
+ <code>manifest.yaml</code> that has one is deleted (<code>:496</code>). The copy replaces only directories
51
+ the new stage has (<code>:486</code>). Upstream's own cleanup removes what the previous manifest listed plus
52
+ <code>removals.txt</code> entries, but it runs inside the empty stage, never against
53
+ <code>~/.claude/skills</code>. With the installer stubbed to emit the real 6.12.0 output, a pre-existing
54
+ <code>bmad-document-project</code> survived (30 directories on disk).
55
+
56
+ <b>Fix.</b> <i>(1)</i> Add <code>BMAD_VERSION = "6.12.0"</code> in <code>core/bmad.py</code> and install that,
57
+ not <code>@latest</code>. <i>(2)</i> Check in that install's <code>canonicalId</code> column as a versioned
58
+ snapshot. Add a test in <code>tests/unit/test_bmad_core.py</code> that every persona, track and
59
+ <code>orientation()</code> skill is in it and that its version equals <code>BMAD_VERSION</code>. A pin bump
60
+ without a regenerated snapshot then fails CI, and the denylist at <code>test_bmad_core.py:431</code> is
61
+ redundant. <i>(3)</i> Make <code>Track.skill</code> optional, drop it for <code>docs</code> (so the banner
62
+ omits that line and <code>:207</code> skips the row), and give Paige <code>bmad-project-context</code> for
63
+ agent-instruction files only. <i>(4)</i> Have <code>install --scope global</code> name the build skills
64
+ that need <code>boost bmad init</code> per repo, and record the staged version and skill list. On reinstall,
65
+ it should remove recorded skills the new stage lacks, not every <code>bmad-*</code> directory, since some may
66
+ be the user's own. Extend <code>tests/functional/test_cli_bmad.py</code>, which asserts <code>@latest</code>
67
+ (<code>:74</code>) and reinstalls the same three skills twice (<code>:264</code>).
68
+
69
+ <b>Declined: routing <code>docs</code> at <code>bmad-project-context</code>.</b> Upstream names it as the
70
+ replacement, but it manages a block in <code>AGENTS.md</code> (&ldquo;Use when invoked by name&rdquo;), and
71
+ the shim says deeper docs material is &ldquo;not part of that block&rdquo;. Sending every README edit there
72
+ would trade a dead pointer for a misroute.
@@ -0,0 +1,76 @@
1
+ ---
2
+ id: bmad-route-ignores-autopilot-state
3
+ board: code
4
+ section: dx
5
+ status: next
6
+ category: Agents · BMAD
7
+ complexity: S
8
+ impact: Med
9
+ wow: 2
10
+ note: the briefing hook checks state, the router never does
11
+ order: 322
12
+ owner:
13
+ pr:
14
+ title: <code>bmad route</code> never checks autopilot state, so any hook <code>off</code> missed keeps routing
15
+ ---
16
+ The two autopilot hooks disagree about what decides whether they speak. <code>_orient</code>
17
+ (<code>boost_cli/commands/bmad.py:525-531</code>) prints only when its scope's state says so, and its hook names the
18
+ scope (<code>:266-268</code>). <code>_route</code> (<code>:331-356</code>) reads the prompt and the payload
19
+ <code>cwd</code> and nothing else, and its hook is a bare <code>&lt;launcher&gt; bmad route || true</code>
20
+ (<code>:269-270</code>). Only <code>status</code> reads the <code>autopilot</code> flag, and it already applies the
21
+ right rule: on means state <em>and</em> hook (<code>:625</code>, pinned by
22
+ <code>test_autopilot_reads_as_off_when_the_hook_is_gone</code>). <code>off</code> works only because it deletes the
23
+ hook, so any copy it misses keeps routing. Replayed once over one real prompt history, the router bannered <b>147 of
24
+ 417</b> regular prompts (35%; 109 if pasted text is not part of the hook's <code>prompt</code> field, which was not
25
+ checked), averaging ~163 tokens.
26
+
27
+ <b>Copies it misses are ordinary. Two were reproduced in a throwaway HOME.</b> <i>(1) A worktree or second
28
+ checkout.</i> <code>on --scope project</code> writes the hook into <code>.claude/settings.json</code>, which Claude
29
+ Code's docs tell teams to commit, but keys state by the absolute checkout path (<code>:692-693</code>). In a copy of
30
+ the checkout, <code>status</code> reads <code>project autopilot=off 7 personas router=on briefing=on</code>,
31
+ <code>orient</code> prints <b>0 bytes</b> and <code>route</code> prints <b>711 bytes</b> of hook JSON.
32
+ <i>(2) The restore net.</i> Every hook write that changes the file snapshots the prior version into
33
+ <code>claude-settings-history/</code> (<code>boost_cli/core/claude_settings.py:19-21, 88-124</code>). <code>off</code>
34
+ removes the two hooks in two saves, so the last snapshot it writes holds <em>only</em> the router. Copy it back and
35
+ state says <code>autopilot:false</code>, no personas are on disk, the hook still sends a <b>594-char</b> banner, and
36
+ <code>status</code> suggests turning the autopilot on (<code>commands/bmad.py:632-633</code>).
37
+
38
+ <b>The first <code>on</code> reaches running sessions before its personas can.</b> The hooks docs say edits to hooks
39
+ in settings files &ldquo;are normally picked up automatically by the file watcher&rdquo;. The sub-agents docs say
40
+ the agents-directory watcher &ldquo;covers only directories that existed when the session started&rdquo;, and
41
+ <code>write_personas</code> creates <code>~/.claude/agents</code> when it is absent (<code>core/bmad.py:680</code>).
42
+ Read together (inferred from the docs, not observed in a live session), a first install that creates the directory
43
+ can start banners in open sessions before any restart, naming a lead subagent and support personas those sessions
44
+ cannot load. The command only says &ldquo;restart your agent session to pick up the new subagents&rdquo;
45
+ (<code>commands/bmad.py:289-291</code>), not that the banners are already live.
46
+
47
+ <b>Fix.</b> <i>(1)</i> Install <code>&lt;launcher&gt; bmad route --scope &lt;scope&gt; || true</code> and pass
48
+ <code>args.scope</code> through (<code>commands/bmad.py:120</code>). When <code>_route</code> runs as a hook (no
49
+ positional prompt, no <code>--plain</code>), it returns 0 silently inside its existing <code>try</code> unless that
50
+ scope's state has <code>autopilot</code>. Project scope looks up the payload <code>cwd</code> with the same exact
51
+ key <code>_orient</code> uses (<code>:692-693</code>). A nearest-parent lookup would route in a worktree nested under
52
+ the repo while the briefing stays silent, which is this defect again. A hook with no <code>--scope</code>, as on
53
+ every current install, accepts either scope until the next <code>on</code> replaces it. A corrupt state file reads as
54
+ empty, so the router stays silent. <i>(2)</i> For a live autopilot whose persona files are gone, drop the Lead and Support lines when the
55
+ lead's <code>.md</code> is in neither <code>~/.claude/agents</code> nor the project's. Check with
56
+ <code>persona_state()</code> (<code>core/bmad.py:707-720</code>), not <code>installed_personas()</code>
57
+ (<code>:693-704</code>), which requires an unedited digest and would drop the lead for anyone who hand-edited
58
+ <code>bmad-dev.md</code>. <i>(3)</i>
59
+ <code>on</code> checks <code>agents.is_dir()</code> before writing. If the directory is new, say that banners can
60
+ start in open sessions immediately and a restart is needed to use the personas. If it already existed, drop the
61
+ restart line.
62
+
63
+ <b>Checked and left alone.</b> <code>off</code> leaves an empty agents directory. Keep it, because it lets the
64
+ <em>next</em> <code>on</code> reach running sessions without a restart.
65
+
66
+ <b>Tests.</b> In <code>tests/functional/test_cli_bmad.py</code>,
67
+ <code>TestRoute.test_emits_the_hook_json_contract</code> and
68
+ <code>test_uses_the_cwd_the_hook_reports_not_its_own</code> assert a banner where <code>on</code> never ran. They
69
+ pin the defect, so they should run <code>on</code> first. So should
70
+ <code>test_trivial_prompts_produce_no_output_at_all</code> and <code>test_a_project_signal_failure_still_exits_zero</code>,
71
+ which would otherwise pass vacuously once state gates the router. Add <code>TestRoute</code> cases for state off
72
+ (empty stdout, exit 0), the second-checkout repro, a corrupt state file (as in
73
+ <code>TestOrient.test_a_broken_state_file_never_breaks_the_session</code>), and positional or <code>--plain</code>
74
+ input still printing. <code>TestAutopilotOn</code> should check <code>--scope global</code> on the route hook and
75
+ split its <code>"restart"</code> assertion by whether the directory existed. Also add a personas-absent case to
76
+ <code>TestRouteContext</code> in <code>tests/unit/test_bmad_core.py</code>.
@@ -0,0 +1,74 @@
1
+ ---
2
+ id: bmad-router-one-keyword-decides-the-track
3
+ board: code
4
+ section: dx
5
+ status: shipped
6
+ category: Agents · BMAD
7
+ complexity: S
8
+ impact: High
9
+ wow: 3
10
+ note: 89 of 143 routed prompts rode on a single keyword
11
+ order: 319
12
+ owner: loop/bmad-incidental-keywords
13
+ pr: 861
14
+ title: One incidental keyword decides the <code>boost bmad</code> track
15
+ ---
16
+ <code>classify</code> counts distinct keyword patterns per track over the raw prompt and routes on
17
+ the best score (<code>core/bmad.py:412</code>&ndash;<code>417</code>). Two hits are required only
18
+ past <code>LONG_PROMPT_WORDS</code> (60, #630; <code>:415</code>), so any prompt of up to 60 words
19
+ that clears the question and slash gates <b>routes on one match anywhere</b> &mdash; including
20
+ words nobody meant as intent: a URL, a path, a flag, a ticket reference, the repo's own name.
21
+ Replaying the origin/main classifier over one real prompt history (417 prompts, 348 unique, 6
22
+ active days): <b>89 of 143 routed unique prompts were decided by exactly one keyword</b>. A single
23
+ judge labelling 41 routed banners found the track or lead clearly wrong in <b>21 of 41</b>.
24
+
25
+ <b>A wrong route costs more than silence.</b> The banner names a lead, asks for support subagents,
26
+ sets a done-contract (tests, docs, and the gate when there is one) and says to work autonomously
27
+ (<code>:536</code>&ndash;<code>553</code>). In a repo directory named <code>migrations</code>,
28
+ &ldquo;list the last three commits in migrations&rdquo; gets a 643-char build banner &mdash; Amelia
29
+ leads, Murat and Paige to be spawned, <code>make check</code> green &mdash; for a
30
+ <code>git log</code>. The module already chose: it &ldquo;would rather under-route than talk over
31
+ someone&rdquo; (<code>:387</code>&ndash;<code>388</code>).
32
+
33
+ <b>Five collision classes, all single hits, reproduced on origin/main with synthetic prompts</b>
34
+ (three spot-checked on the installed v1.2.112): <i>repo name</i> &mdash; &ldquo;list the last three
35
+ commits in migrations&rdquo; in <code>migrations/</code> &rarr; build, &ldquo;list the new notebooks
36
+ in benchmarks&rdquo; in <code>benchmarks/</code> &rarr; discovery; <i>flags</i> &mdash; &ldquo;rerun
37
+ the installer with <code>--scope</code> global&hellip;&rdquo; &rarr; product; <i>URLs, paths,
38
+ code</i> &mdash; <code>https://example.com/docs/&hellip;</code> &rarr; docs, <code>tail
39
+ logs/build/server.log</code> &rarr; build, <code>`npm run build`</code> &rarr; build; <i>tracker
40
+ words</i> &mdash; &ldquo;move story ABC-123 to in progress&rdquo; &rarr; product; <i>generic
41
+ verbs</i> &mdash; &ldquo;update me when the CI run finishes&rdquo; &rarr; build. The hook already
42
+ has the repo &mdash; <code>cwd</code> becomes <code>root</code>
43
+ (<code>commands/bmad.py:342</code>&ndash;<code>344</code>) &mdash; but <code>route_lines</code>
44
+ calls <code>classify(prompt)</code> bare (<code>core/bmad.py:529</code>).
45
+
46
+ <b>Fix: stop scoring text that is not intent; do not raise the threshold.</b> Before scoring,
47
+ <i>(1)</i> drop URLs, backtick spans, <code>--flag</code>/<code>-f</code> tokens and tracker-noun +
48
+ ID pairs (<code>story ABC-123</code>); <i>(2)</i> a token containing <code>/</code> stops scoring
49
+ for <code>build</code> but still counts for every other table, so <code>docs/README.md</code>
50
+ stays docs; <i>(3)</i> <code>classify(prompt, root=None)</code>, fed by <code>route_lines</code>,
51
+ drops whole-word matches of <code>Path(root).name</code>; <i>(4)</i> a build verb followed by
52
+ <em>me</em>/<em>us</em> does not score. On a stdlib prototype: all <b>46</b> distinct prompts
53
+ <code>test_bmad_core.py</code> sends through <code>classify</code> keep their verdict; <b>16 of
54
+ 18</b> synthetic misroutes go silent; build asks still route &mdash; 12/12 verb-first, 8/8 not
55
+ (&ldquo;we need to fix the crash&hellip;&rdquo;), 4/4 late-verb &mdash; and 5/5 path-object asks
56
+ keep their track. Small hand-written sets: they show which rule does the work, not a rate.
57
+
58
+ <b>Threshold rules measured and declined.</b> Layered on <i>(1)</i>&ndash;<i>(4)</i>: two build hits
59
+ or a head verb silences neither of the 2 left but routes <b>2 of 8</b> non-head and <b>0 of 4</b>
60
+ late-verb asks; a verb in a clause's first six words routes <b>0 of 4</b> late-verb asks; making
61
+ <code>add</code>/<code>update</code>/<code>create</code>-class verbs need a second hit silences one
62
+ more but keeps only <b>6 of 12</b> short build asks and breaks <code>"update the flag"</code>
63
+ (<code>test_bmad_core.py:142</code>). Stripping paths outright flips 3 of 5 path-object asks.
64
+ <b>Residue:</b> &ldquo;add the meeting notes to my summary&rdquo; stays build; &ldquo;pull the
65
+ comments on story ABC-123&hellip;&rdquo; goes docs on <code>\bcomments?\b</code>; a sibling repo's
66
+ name still routes; and a cwd named after a keyword loses that word &mdash; in <code>tests/</code>,
67
+ &ldquo;add tests for catalog.scan_dir&rdquo; flips quality &rarr; build.
68
+
69
+ <b>Tests:</b> add <code>TestIncidentalKeywords</code> beside <code>TestClassifyTracks</code>
70
+ (<code>tests/unit/test_bmad_core.py:173</code>): one <code>(prompt, repo_dirname, expected)</code>
71
+ table with every repro as <code>trivial</code> except the two residues (pinned at today's track,
72
+ so a later fix shows as a diff), the non-head, late-verb and path-object asks at their tracks,
73
+ plus a <code>route_lines</code> case rooted at <code>tmp_path / "migrations"</code> so the name
74
+ must reach <code>classify</code>.