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