boost-skill-cli 1.2.82__tar.gz → 1.2.84__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 (958) hide show
  1. {boost_skill_cli-1.2.82/boost_skill_cli.egg-info → boost_skill_cli-1.2.84}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/pkg.py +6 -2
  4. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/adapters.py +13 -9
  5. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/rag.py +65 -17
  6. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  7. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  8. boost_skill_cli-1.2.84/docs/demo.gif +0 -0
  9. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +3 -3
  10. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +1 -1
  11. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +1 -1
  12. boost_skill_cli-1.2.84/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +17 -0
  13. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shrink-the-published-index.md +16 -1
  14. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap.html +40 -9
  15. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_adapt.py +40 -0
  16. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_adapters_multi.py +29 -0
  17. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rag.py +191 -0
  18. boost_skill_cli-1.2.82/docs/demo.gif +0 -0
  19. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.gitattributes +0 -0
  20. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.gitignore +0 -0
  21. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.gitleaks.toml +0 -0
  22. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.htmlvalidate.json +0 -0
  23. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.lighthouserc.json +0 -0
  24. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.lycheeignore +0 -0
  25. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.markdownlint-cli2.jsonc +0 -0
  26. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.pre-commit-config.yaml +0 -0
  27. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.stylelintrc.json +0 -0
  28. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale/styles/boost/AIWriting.yml +0 -0
  29. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale/styles/boost/Terminology.yml +0 -0
  30. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  31. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale.ini +0 -0
  32. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/CLAUDE.md +0 -0
  33. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/CODE_OF_CONDUCT.md +0 -0
  34. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/CONTRIBUTING.md +0 -0
  35. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/DCO +0 -0
  36. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/GOVERNANCE.md +0 -0
  37. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/LICENSE +0 -0
  38. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/MAINTAINERS.md +0 -0
  39. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/MANIFEST.in +0 -0
  40. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/Makefile +0 -0
  41. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/README.md +0 -0
  42. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/SECURITY.md +0 -0
  43. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/SUPPORT.md +0 -0
  44. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost +0 -0
  45. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/__init__.py +0 -0
  46. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/__main__.py +0 -0
  47. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/cli.py +0 -0
  48. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/cliparse.py +0 -0
  49. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/__init__.py +0 -0
  50. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/_common.py +0 -0
  51. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/bmad.py +0 -0
  52. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/configuration.py +0 -0
  53. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/discovery.py +0 -0
  54. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/hooks.py +0 -0
  55. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/info.py +0 -0
  56. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/intelligence.py +0 -0
  57. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/quality.py +0 -0
  58. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/quickstart.py +0 -0
  59. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/run.py +0 -0
  60. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/safety.py +0 -0
  61. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/taps.py +0 -0
  62. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/team.py +0 -0
  63. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/__init__.py +0 -0
  64. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/agents.py +0 -0
  65. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/ai.py +0 -0
  66. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/aihost.py +0 -0
  67. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/bmad.py +0 -0
  68. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/bootstrap.py +0 -0
  69. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/browse.py +0 -0
  70. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/builtin.py +0 -0
  71. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/capabilities.py +0 -0
  72. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/catalog.py +0 -0
  73. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/catalogbundle.py +0 -0
  74. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/chat.py +0 -0
  75. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/claude_settings.py +0 -0
  76. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/complete.py +0 -0
  77. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/config.py +0 -0
  78. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/dense.py +0 -0
  79. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/ed25519.py +0 -0
  80. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/embed.py +0 -0
  81. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/faithfulness.py +0 -0
  82. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/frontmatter.py +0 -0
  83. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/gitutil.py +0 -0
  84. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/hookhost.py +0 -0
  85. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/imperative.py +0 -0
  86. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/injectscan.py +0 -0
  87. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/installscan.py +0 -0
  88. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/integrity.py +0 -0
  89. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/journal.py +0 -0
  90. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/localembed.py +0 -0
  91. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/lockfile.py +0 -0
  92. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/logs.py +0 -0
  93. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/mcp.py +0 -0
  94. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/mcpdecl.py +0 -0
  95. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/mcphost.py +0 -0
  96. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/minisign.py +0 -0
  97. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/nethttp.py +0 -0
  98. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/output.py +0 -0
  99. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/paths.py +0 -0
  100. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/policy.py +0 -0
  101. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/projectlock.py +0 -0
  102. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/provenance.py +0 -0
  103. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/registry.py +0 -0
  104. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/resolve.py +0 -0
  105. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/rules.py +0 -0
  106. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/scopes.py +0 -0
  107. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/secretscan.py +0 -0
  108. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/selfupdate.py +0 -0
  109. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/serve.py +0 -0
  110. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/shards.py +0 -0
  111. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/stackprobe.py +0 -0
  112. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/staleness.py +0 -0
  113. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/store.py +0 -0
  114. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/trustaudit.py +0 -0
  115. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/typedvalue.py +0 -0
  116. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/typosquat.py +0 -0
  117. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/updatediff.py +0 -0
  118. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/util.py +0 -0
  119. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/workflows.py +0 -0
  120. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/data/registries.json +0 -0
  121. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/data/rules/boost-first.mdc +0 -0
  122. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/errors.py +0 -0
  123. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/spin.py +0 -0
  124. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/__init__.py +0 -0
  125. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/_compat.py +0 -0
  126. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/graph.py +0 -0
  127. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/loader.py +0 -0
  128. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/py.typed +0 -0
  129. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/retriever.py +0 -0
  130. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  131. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  132. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/requires.txt +0 -0
  133. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/top_level.txt +0 -0
  134. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/codecov.yml +0 -0
  135. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/.claude/settings.local.json +0 -0
  136. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/DEBUGGING.md +0 -0
  137. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/adapters.html +0 -0
  138. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/README.md +0 -0
  139. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-components-core.md +0 -0
  140. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-containers.md +0 -0
  141. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-context.md +0 -0
  142. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-dynamic-install.md +0 -0
  143. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/bmad.md +0 -0
  144. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/distill.gif +0 -0
  145. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/doctor.gif +0 -0
  146. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/explain.gif +0 -0
  147. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/hooks.gif +0 -0
  148. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/install.gif +0 -0
  149. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/pulse.gif +0 -0
  150. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/search.gif +0 -0
  151. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/tap.gif +0 -0
  152. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/distill.tape +0 -0
  153. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/doctor.tape +0 -0
  154. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/explain.tape +0 -0
  155. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/hooks.tape +0 -0
  156. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/install.tape +0 -0
  157. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/pulse.tape +0 -0
  158. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/search.tape +0 -0
  159. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/tap.tape +0 -0
  160. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel.html +0 -0
  161. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/chat.html +0 -0
  162. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/code-review.md +0 -0
  163. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/commands.html +0 -0
  164. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/commit-audit.md +0 -0
  165. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/demo-index.json +0 -0
  166. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/demo.html +0 -0
  167. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/demo.tape +0 -0
  168. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/dependencies.md +0 -0
  169. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/design-roadmap.html +0 -0
  170. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/eval-latest.json +0 -0
  171. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/eval.html +0 -0
  172. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/index.html +0 -0
  173. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/langchain.html +0 -0
  174. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/mcp-hub.html +0 -0
  175. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/openssf-badge.md +0 -0
  176. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/openssf-playbook.md +0 -0
  177. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/rag-architecture.md +0 -0
  178. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D01.md +0 -0
  179. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D02.md +0 -0
  180. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D03.md +0 -0
  181. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D04.md +0 -0
  182. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D05.md +0 -0
  183. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D06.md +0 -0
  184. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D07.md +0 -0
  185. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D08.md +0 -0
  186. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D09.md +0 -0
  187. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D10.md +0 -0
  188. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D11.md +0 -0
  189. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D12.md +0 -0
  190. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D13.md +0 -0
  191. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D14.md +0 -0
  192. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D15.md +0 -0
  193. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D16.md +0 -0
  194. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D17.md +0 -0
  195. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D18.md +0 -0
  196. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D19.md +0 -0
  197. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D20.md +0 -0
  198. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D21.md +0 -0
  199. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D22.md +0 -0
  200. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D23.md +0 -0
  201. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D24.md +0 -0
  202. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D25.md +0 -0
  203. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D26.md +0 -0
  204. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D27.md +0 -0
  205. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  206. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  207. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  208. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  209. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  210. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  211. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  212. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  213. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  214. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  215. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  216. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  217. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  218. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  219. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-attest-findings.md +0 -0
  220. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-audit-findings.md +0 -0
  221. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  222. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-browse-findings.md +0 -0
  223. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  224. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  225. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  226. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  227. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-chat-findings.md +0 -0
  228. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  229. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  230. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  231. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-completions-findings.md +0 -0
  232. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-config-findings.md +0 -0
  233. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  234. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-context-findings.md +0 -0
  235. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  236. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  237. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-create-findings.md +0 -0
  238. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  239. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-deps-findings.md +0 -0
  240. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-discover-findings.md +0 -0
  241. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  242. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  243. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-drift-findings.md +0 -0
  244. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  245. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-edit-findings.md +0 -0
  246. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  247. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-explain-findings.md +0 -0
  248. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-export-findings.md +0 -0
  249. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  250. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  251. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  252. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  253. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  254. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-health-findings.md +0 -0
  255. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  256. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  257. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-import-findings.md +0 -0
  258. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-index-findings.md +0 -0
  259. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  260. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  261. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-install-findings.md +0 -0
  262. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  263. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-lint-findings.md +0 -0
  264. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-log-findings.md +0 -0
  265. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  266. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  267. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  268. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  269. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  270. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  271. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  272. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  273. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  274. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  275. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  276. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-policy-findings.md +0 -0
  277. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-preview-findings.md +0 -0
  278. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-profile-findings.md +0 -0
  279. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  280. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  281. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  282. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  283. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  284. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  285. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  286. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  287. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  288. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-replay-findings.md +0 -0
  289. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-root-findings.md +0 -0
  290. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  291. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-run-findings.md +0 -0
  292. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  293. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-search-findings.md +0 -0
  294. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  295. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  296. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  297. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  298. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  299. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  300. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  301. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  302. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-sync-findings.md +0 -0
  303. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-tag-findings.md +0 -0
  304. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-tap-findings.md +0 -0
  305. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-taps-findings.md +0 -0
  306. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  307. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-test-findings.md +0 -0
  308. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-trust-findings.md +0 -0
  309. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  310. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  311. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-untap-findings.md +0 -0
  312. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-update-findings.md +0 -0
  313. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  314. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-verify-findings.md +0 -0
  315. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-who-findings.md +0 -0
  316. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  317. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  318. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  319. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  320. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  321. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  322. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-first-rule.md +0 -0
  323. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  324. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  325. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/branch-current-gate.md +0 -0
  326. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  327. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  328. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  329. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  330. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  331. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  332. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  333. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  334. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  335. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  336. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  337. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  338. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  339. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  340. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  341. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  342. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  343. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cli-command-audit.md +0 -0
  344. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  345. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  346. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  347. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  348. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/command-carousel-page.md +0 -0
  349. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  350. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  351. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  352. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  353. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  354. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  355. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  356. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  357. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  358. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  359. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  360. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  361. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  362. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  363. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  364. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  365. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  366. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  367. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  368. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  369. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  370. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  371. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  372. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  373. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  374. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  375. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  376. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  377. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  378. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  379. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  380. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  381. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  382. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  383. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  384. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  385. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  386. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  387. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  388. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  389. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  390. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  391. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  392. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  393. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  394. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  395. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  396. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  397. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  398. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  399. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  400. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  401. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  402. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  403. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/github-community-health-files.md +0 -0
  404. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  405. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  406. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  407. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  408. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  409. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  410. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  411. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  412. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  413. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  414. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  415. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  416. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  417. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  418. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  419. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  420. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  421. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  422. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  423. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  424. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  425. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  426. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  427. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  428. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  429. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  430. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  431. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  432. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  433. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  434. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  435. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  436. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  437. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  438. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  439. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  440. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  441. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  442. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  443. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  444. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  445. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  446. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  447. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  448. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  449. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  450. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  451. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  452. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  453. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  454. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  455. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  456. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  457. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  458. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  459. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  460. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  461. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  462. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  463. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  464. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  465. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  466. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  467. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  468. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  469. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  470. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  471. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  472. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  473. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  474. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  475. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  476. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  477. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  478. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  479. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  480. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  481. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  482. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  483. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-playbook.md +0 -0
  484. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-silver.md +0 -0
  485. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  486. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  487. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  488. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  489. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  490. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  491. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  492. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  493. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  494. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  495. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  496. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  497. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  498. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  499. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  500. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  501. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  502. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  503. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  504. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  505. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  506. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  507. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  508. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  509. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  510. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  511. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  512. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  513. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  514. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  515. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  516. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  517. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  518. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/relicence-apache-2.md +0 -0
  519. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  520. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  521. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  522. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  523. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  524. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  525. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  526. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  527. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  528. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  529. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  530. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  531. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  532. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  533. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  534. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  535. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  536. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  537. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  538. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  539. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  540. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  541. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  542. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  543. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  544. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  545. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  546. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  547. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  548. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  549. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  550. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  551. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  552. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  553. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  554. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  555. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  556. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  557. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  558. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  559. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  560. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  561. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  562. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  563. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  564. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  565. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  566. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  567. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  568. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  569. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  570. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  571. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  572. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  573. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  574. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  575. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  576. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  577. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  578. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  579. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  580. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  581. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  582. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  583. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  584. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  585. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  586. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  587. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  588. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  589. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  590. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  591. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  592. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  593. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  594. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  595. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  596. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  597. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  598. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  599. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  600. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  601. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workspace-scope-install.md +0 -0
  602. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/zip-strict-audit.md +0 -0
  603. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  604. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  605. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/security-design.md +0 -0
  606. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/semantic-search.md +0 -0
  607. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  608. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/verifying-releases.md +0 -0
  609. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/meta.md +0 -0
  610. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/openvex.json +0 -0
  611. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  612. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  613. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  614. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  615. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/eslint.config.mjs +0 -0
  616. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/README.md +0 -0
  617. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/__init__.py +0 -0
  618. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/baseline.json +0 -0
  619. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/faithfulness.py +0 -0
  620. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/golden_set.json +0 -0
  621. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/make_corpus.py +0 -0
  622. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/make_golden.py +0 -0
  623. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/metrics.py +0 -0
  624. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/publish_golden_dataset.py +0 -0
  625. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/run_evals.py +0 -0
  626. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/examples/README.md +0 -0
  627. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/examples/adapt-demo.sh +0 -0
  628. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/examples/boost-run-prototype.sh +0 -0
  629. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/index.html +0 -0
  630. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/noxfile.py +0 -0
  631. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/pyproject.toml +0 -0
  632. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/coverage-tools.in +0 -0
  633. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/coverage-tools.txt +0 -0
  634. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/lint-tools.in +0 -0
  635. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/lint-tools.txt +0 -0
  636. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/mutation-tools.in +0 -0
  637. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/mutation-tools.txt +0 -0
  638. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/platform-pins.lock +0 -0
  639. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/release-tools.in +0 -0
  640. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/release-tools.txt +0 -0
  641. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/test-tools.in +0 -0
  642. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/test-tools.txt +0 -0
  643. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/a11y_check.py +0 -0
  644. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/add_spdx_headers.py +0 -0
  645. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/bench_cli.sh +0 -0
  646. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_command_reference.py +0 -0
  647. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_demo_index.py +0 -0
  648. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_registries.py +0 -0
  649. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_roadmap.py +0 -0
  650. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_scale_corpus.py +0 -0
  651. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_vex.py +0 -0
  652. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_anchors.py +0 -0
  653. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_branch_current.py +0 -0
  654. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_dco.py +0 -0
  655. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_licenses.py +0 -0
  656. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_reproducible.py +0 -0
  657. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_required_checks.py +0 -0
  658. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/ensure_eval_corpus.sh +0 -0
  659. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_corpus.py +0 -0
  660. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_explain.py +0 -0
  661. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_gate.py +0 -0
  662. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_recommend.py +0 -0
  663. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_retrieval.py +0 -0
  664. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_stats_summary.py +0 -0
  665. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_tools.py +0 -0
  666. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/import_budget.py +0 -0
  667. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/lock_toolchain.py +0 -0
  668. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/measure_near_duplicate_bound.py +0 -0
  669. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/measure_registry.py +0 -0
  670. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/mutation_gate.py +0 -0
  671. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/mutation_shards.py +0 -0
  672. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/mutation_weights.json +0 -0
  673. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/normalize_sdist.py +0 -0
  674. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/page_budget.py +0 -0
  675. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/perf_gate.py +0 -0
  676. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/post_deploy_smoke.py +0 -0
  677. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/publish_eval_json.py +0 -0
  678. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/publish_shards.py +0 -0
  679. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/release_guard.py +0 -0
  680. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/release_preflight.py +0 -0
  681. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/serve_docs.py +0 -0
  682. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/shard_plan.py +0 -0
  683. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/setup.cfg +0 -0
  684. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/sonar-project.properties +0 -0
  685. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/README.md +0 -0
  686. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/boost.css +0 -0
  687. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/boost.js +0 -0
  688. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/demo.html +0 -0
  689. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/adapt.feature +0 -0
  690. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/browse.feature +0 -0
  691. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/count.feature +0 -0
  692. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/discover.feature +0 -0
  693. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/doctor.feature +0 -0
  694. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/environment.py +0 -0
  695. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/explain.feature +0 -0
  696. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/index.feature +0 -0
  697. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/install.feature +0 -0
  698. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/list.feature +0 -0
  699. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/mcp.feature +0 -0
  700. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/search.feature +0 -0
  701. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/cli_steps.py +0 -0
  702. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/discovery_steps.py +0 -0
  703. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/mcp_steps.py +0 -0
  704. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/quality_steps.py +0 -0
  705. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/conftest.py +0 -0
  706. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/baseline.json +0 -0
  707. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/explain.jsonl +0 -0
  708. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  709. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/golden-natural.jsonl +0 -0
  710. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/golden.jsonl +0 -0
  711. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/recommend.jsonl +0 -0
  712. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/taps-scale.txt +0 -0
  713. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/taps.txt +0 -0
  714. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/tool_calls.jsonl +0 -0
  715. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_bmad_all_hosts.py +0 -0
  716. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_capabilities_policy.py +0 -0
  717. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_bmad.py +0 -0
  718. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_catalog.py +0 -0
  719. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_chat.py +0 -0
  720. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_configuration.py +0 -0
  721. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_discovery.py +0 -0
  722. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_hooks.py +0 -0
  723. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_hooks_gemini.py +0 -0
  724. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_info.py +0 -0
  725. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_intelligence.py +0 -0
  726. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_pane_width.py +0 -0
  727. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_pkg.py +0 -0
  728. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_quality.py +0 -0
  729. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_quickstart.py +0 -0
  730. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_tap_pins.py +0 -0
  731. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_taps.py +0 -0
  732. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_team.py +0 -0
  733. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_everyday_loop.py +0 -0
  734. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_integrity_enforce.py +0 -0
  735. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_kind_conformance.py +0 -0
  736. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_property_parsers.py +0 -0
  737. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_run.py +0 -0
  738. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_tap_signing.py +0 -0
  739. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_workspace_scope.py +0 -0
  740. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/README.md +0 -0
  741. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  742. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  743. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  744. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  745. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  746. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  747. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  748. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  749. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  750. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  751. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  752. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  753. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  754. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  755. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  756. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  757. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  758. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  759. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  760. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  761. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  762. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  763. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  764. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/fuzz_frontmatter.py +0 -0
  765. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/fuzz_registry.py +0 -0
  766. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/conftest.py +0 -0
  767. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/test_graph.py +0 -0
  768. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/test_loader.py +0 -0
  769. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/test_retriever.py +0 -0
  770. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/make_fixture.py +0 -0
  771. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/perf/test_benchmarks.py +0 -0
  772. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/smoke.sh +0 -0
  773. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_a11y_check.py +0 -0
  774. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_action_pin_lockstep.py +0 -0
  775. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_adapters.py +0 -0
  776. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_adapters_runner.py +0 -0
  777. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_agents.py +0 -0
  778. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_ai.py +0 -0
  779. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_aihost.py +0 -0
  780. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_bmad_core.py +0 -0
  781. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_boost_first_offer.py +0 -0
  782. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_bootstrap.py +0 -0
  783. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_bot_pr_dco.py +0 -0
  784. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_branch_current.py +0 -0
  785. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_browse.py +0 -0
  786. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_builtin.py +0 -0
  787. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_capabilities.py +0 -0
  788. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_catalog.py +0 -0
  789. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_catalogbundle.py +0 -0
  790. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_chat.py +0 -0
  791. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_anchors.py +0 -0
  792. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_dco.py +0 -0
  793. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_licenses.py +0 -0
  794. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_reproducible.py +0 -0
  795. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_claude_settings.py +0 -0
  796. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_clean_internal_cache.py +0 -0
  797. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_cli_update_shards.py +0 -0
  798. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_cliparse.py +0 -0
  799. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_codeql_analysis_key.py +0 -0
  800. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_command_reference_fresh.py +0 -0
  801. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_community_health_files.py +0 -0
  802. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_compact.py +0 -0
  803. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_complete.py +0 -0
  804. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_complete_rc_block.py +0 -0
  805. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_config.py +0 -0
  806. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_content_dedupe.py +0 -0
  807. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_content_identity.py +0 -0
  808. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_crash_redaction.py +0 -0
  809. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dedup_trust.py +0 -0
  810. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_demo_index.py +0 -0
  811. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense.py +0 -0
  812. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  813. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_embed_dedupe.py +0 -0
  814. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_entry_reuse.py +0 -0
  815. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_entry_vectors.py +0 -0
  816. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_fallback.py +0 -0
  817. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_fix_hint.py +0 -0
  818. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_progress.py +0 -0
  819. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_quantized.py +0 -0
  820. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_ready_order.py +0 -0
  821. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_shard_real_schema.py +0 -0
  822. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  823. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_shards.py +0 -0
  824. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_status.py +0 -0
  825. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_status_cheap.py +0 -0
  826. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_vector_dedupe.py +0 -0
  827. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dependabot_config.py +0 -0
  828. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_distill_merge.py +0 -0
  829. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_docs_pages_linked.py +0 -0
  830. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_docsite_chrome.py +0 -0
  831. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_doctor_output_polish.py +0 -0
  832. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_ed25519.py +0 -0
  833. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_embed.py +0 -0
  834. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_embed_local.py +0 -0
  835. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_embed_truncated_response.py +0 -0
  836. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_entry_key.py +0 -0
  837. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_errors_and_cli_table.py +0 -0
  838. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_baseline.py +0 -0
  839. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_corpus.py +0 -0
  840. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_faithfulness.py +0 -0
  841. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_gate.py +0 -0
  842. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_grading.py +0 -0
  843. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_metrics.py +0 -0
  844. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_stats_summary.py +0 -0
  845. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_tools.py +0 -0
  846. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_tools_probe.py +0 -0
  847. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  848. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_faithfulness.py +0 -0
  849. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_frontmatter.py +0 -0
  850. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_fuzz_targets.py +0 -0
  851. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  852. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitleaks_config.py +0 -0
  853. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitutil.py +0 -0
  854. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitutil_lfs.py +0 -0
  855. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitutil_sparse.py +0 -0
  856. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gstack_coexistence.py +0 -0
  857. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_hook_settings_hosts.py +0 -0
  858. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_hookhost.py +0 -0
  859. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_imperative.py +0 -0
  860. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_import_budget.py +0 -0
  861. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_injectscan.py +0 -0
  862. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_install_permission_error.py +0 -0
  863. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_installscan.py +0 -0
  864. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_integrity.py +0 -0
  865. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_journal.py +0 -0
  866. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_langchain_packaging.py +0 -0
  867. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_link_ownership.py +0 -0
  868. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_localembed.py +0 -0
  869. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_localembed_e2e.py +0 -0
  870. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_lockfile.py +0 -0
  871. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_logs.py +0 -0
  872. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_marketing_counts.py +0 -0
  873. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcp.py +0 -0
  874. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcp_install_scan.py +0 -0
  875. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcp_read.py +0 -0
  876. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcpdecl.py +0 -0
  877. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcphost.py +0 -0
  878. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_measure_registry.py +0 -0
  879. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_minisign.py +0 -0
  880. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutation_hardening.py +0 -0
  881. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutation_shards.py +0 -0
  882. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutation_subfile_shards.py +0 -0
  883. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutmut_source_paths.py +0 -0
  884. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_near_duplicate_collapse.py +0 -0
  885. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_nethttp.py +0 -0
  886. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_normalize_sdist.py +0 -0
  887. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_output.py +0 -0
  888. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_page_budget.py +0 -0
  889. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_paths.py +0 -0
  890. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_perf_gate.py +0 -0
  891. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_pkg_confusions.py +0 -0
  892. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_pkg_injection.py +0 -0
  893. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_pkg_secrets.py +0 -0
  894. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_platform_pins.py +0 -0
  895. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_policy.py +0 -0
  896. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_post_deploy_smoke.py +0 -0
  897. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_project_mcp_sidecar.py +0 -0
  898. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_projectlock.py +0 -0
  899. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_provenance.py +0 -0
  900. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_publish_golden_dataset.py +0 -0
  901. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rag_fastpath.py +0 -0
  902. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rag_fusion.py +0 -0
  903. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registries_fresh.py +0 -0
  904. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry.py +0 -0
  905. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry_categories.py +0 -0
  906. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry_control_chars.py +0 -0
  907. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry_parallel.py +0 -0
  908. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_release_guard.py +0 -0
  909. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_release_preflight.py +0 -0
  910. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_required_checks.py +0 -0
  911. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rerank_cache.py +0 -0
  912. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_resolve.py +0 -0
  913. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  914. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_roadmap_fresh.py +0 -0
  915. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rules.py +0 -0
  916. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_scale_corpus.py +0 -0
  917. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_scopes.py +0 -0
  918. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_secretscan.py +0 -0
  919. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_selfupdate.py +0 -0
  920. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_serve.py +0 -0
  921. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_serve_docs.py +0 -0
  922. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shard_plan.py +0 -0
  923. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards.py +0 -0
  924. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards_incremental.py +0 -0
  925. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards_ingest.py +0 -0
  926. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards_matrix.py +0 -0
  927. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_smoke_covers_every_command.py +0 -0
  928. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_spdx_headers.py +0 -0
  929. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_spin.py +0 -0
  930. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_stackprobe.py +0 -0
  931. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_staleness.py +0 -0
  932. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_store.py +0 -0
  933. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_store_materialize.py +0 -0
  934. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_sync_blocked_links.py +0 -0
  935. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  936. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_tap_pins.py +0 -0
  937. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_token_parity.py +0 -0
  938. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_toolchain_lock.py +0 -0
  939. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_trustaudit.py +0 -0
  940. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_typedvalue.py +0 -0
  941. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_typosquat.py +0 -0
  942. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_updatediff.py +0 -0
  943. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_util.py +0 -0
  944. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_version.py +0 -0
  945. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_version_tags.py +0 -0
  946. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_vex.py +0 -0
  947. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_visual_harness_flags.py +0 -0
  948. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_concurrency.py +0 -0
  949. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  950. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  951. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_timeouts.py +0 -0
  952. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflows.py +0 -0
  953. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  954. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/a11y_check.mjs +0 -0
  955. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/console_check.mjs +0 -0
  956. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/package-lock.json +0 -0
  957. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/package.json +0 -0
  958. {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/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.82
3
+ Version: 1.2.84
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.82'
22
- __version_tuple__ = version_tuple = (1, 2, 82)
21
+ __version__ = version = '1.2.84'
22
+ __version_tuple__ = version_tuple = (1, 2, 84)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1767,8 +1767,12 @@ def cmd_adapt(argv: list[str]) -> int:
1767
1767
  # A skill that declares subagents projects to a runnable multi-agent
1768
1768
  # workflow (a CrewAI Crew / LangGraph StateGraph) when the target supports
1769
1769
  # one; flat skills — and multi-agent targets without a crew path — keep the
1770
- # single-Agent render.
1771
- subagents = adapters.discover_subagents(skill_md.parent)
1770
+ # single-Agent render. Subagent discovery only applies to a SKILL.md-rooted
1771
+ # skill: a flat `agents/<name>.md` workflow's "directory" is the registry's
1772
+ # shared agents/ folder, and every sibling workflow living in it is not a
1773
+ # subagent of this one.
1774
+ subagents = (adapters.discover_subagents(skill_md.parent, own_file=skill_md)
1775
+ if skill_md.name == "SKILL.md" else [])
1772
1776
  crew_size = 0
1773
1777
  if subagents and adapters.supports_multi(args.to):
1774
1778
  primary = adapters.AgentSpec(display, description, body,
@@ -154,23 +154,27 @@ def parse_tools(meta: dict) -> list[str]:
154
154
  return seen
155
155
 
156
156
 
157
- def discover_subagents(skill_dir: Path) -> list[AgentSpec]:
157
+ def discover_subagents(skill_dir: Path, own_file: Path | None = None) -> list[AgentSpec]:
158
158
  """Discover a skill's subagents for multi-agent adaptation.
159
159
 
160
- A subagent is a Markdown file (other than ``SKILL.md``) that lives under an
161
- ``agents/`` or ``subagents/`` directory anywhere beneath ``skill_dir`` and
162
- carries both a frontmatter ``name`` and ``description``. Files are visited in
163
- sorted path order so the emitted crew/graph is deterministic. Returns the
164
- subagents as :class:`AgentSpec`s — an empty list for a flat single-agent
165
- skill or a missing directory.
160
+ A subagent is a Markdown file (other than ``SKILL.md`` or ``own_file``,
161
+ the entry being adapted) that lives under an ``agents/`` or ``subagents/``
162
+ directory strictly beneath ``skill_dir`` — not ``skill_dir`` itself, so a
163
+ flat item whose own directory happens to be shared (a registry-wide
164
+ ``agents/`` folder holding one Markdown file per workflow) never treats
165
+ its siblings as subagents — and carries both a frontmatter ``name`` and
166
+ ``description``. Files are visited in sorted path order so the emitted
167
+ crew/graph is deterministic. Returns the subagents as :class:`AgentSpec`s
168
+ — an empty list for a flat single-agent skill or a missing directory.
166
169
  """
167
170
  specs: list[AgentSpec] = []
168
171
  if not skill_dir or not skill_dir.is_dir():
169
172
  return specs
170
173
  for path in sorted(skill_dir.rglob("*.md")):
171
- if path.name == "SKILL.md":
174
+ if path.name == "SKILL.md" or path == own_file:
172
175
  continue
173
- if not (SUBAGENT_DIRS & {part.lower() for part in path.parent.parts}):
176
+ rel_dirs = {part.lower() for part in path.relative_to(skill_dir).parts[:-1]}
177
+ if not (SUBAGENT_DIRS & rel_dirs):
174
178
  continue
175
179
  try:
176
180
  meta, body = frontmatter.parse(
@@ -25,6 +25,7 @@ import math
25
25
  import os
26
26
  import re
27
27
  import sqlite3
28
+ import tempfile
28
29
  from collections import defaultdict
29
30
  from collections.abc import Sequence
30
31
  from functools import lru_cache
@@ -41,7 +42,10 @@ from . import ai, catalog, config, frontmatter, gitutil, paths, registry, util
41
42
  # v2: `snip` stores a larger head of the matched chunk (not just SNIP_WIDTH
42
43
  # chars) so `retrieve` can window it onto the query terms; bump forces a
43
44
  # one-time reindex.
44
- INDEX_VERSION = 6
45
+ # v7: postings interns term text into its own `terms` table instead of
46
+ # repeating it on every posting row — see `_write_postings`; bump forces a
47
+ # one-time reindex so every store gets the smaller layout.
48
+ INDEX_VERSION = 7
45
49
  ENGINE = "bm25"
46
50
 
47
51
  # Chunking defaults (documented in docs/rag-architecture.md §4).
@@ -331,27 +335,66 @@ def _write_postings(postings: dict[str, list[list[int]]]) -> None:
331
335
  SQLite is used purely as an indexed key-value store here, not as a search
332
336
  engine: BM25 scoring stays in `_bm25` byte for byte, so this changes cold
333
337
  start cost and nothing about which results come back.
338
+
339
+ Terms are interned into their own table rather than repeated on every
340
+ posting row. Measured on a real 458-tap store: 18,619,658 posting rows over
341
+ 210,422 distinct terms averaging 6.6 characters — the term string alone was
342
+ ~123 MB of the 653 MB file, stored on average 88 times over. `postings` now
343
+ carries an integer `term_id`, and `terms` also carries each term's document
344
+ frequency (`df`, the length of its posting list) so `stem_expansions` can
345
+ read it directly instead of re-deriving it with `GROUP BY` on every lookup.
334
346
  """
335
347
  paths.ensure_dirs()
336
348
  final = postings_path()
337
- tmp = final.with_suffix(".sqlite.tmp")
338
- with contextlib.suppress(OSError):
339
- tmp.unlink()
349
+ # A UNIQUE temp per build, not a fixed `.sqlite.tmp`, and this is a
350
+ # concurrency fix rather than tidiness. Every build used to write the same
351
+ # name and unlink it on entry, so a second build starting mid-flight
352
+ # deleted the first's *finished* file and the first died on the swap:
353
+ #
354
+ # FileNotFoundError: rag_postings.sqlite.tmp -> rag_postings.sqlite
355
+ #
356
+ # observed on a real 464-tap install. The loser threw away several minutes
357
+ # of work and returned a crash report instead of an index. Nothing here is
358
+ # exotic — `boost search` builds on a cold index, so two terminals is
359
+ # enough to hit it. Same mkstemp-then-replace shape as
360
+ # `util.atomic_write_text`, which every other file boost must not lose
361
+ # already goes through.
362
+ fd, tmp_name = tempfile.mkstemp(dir=str(final.parent),
363
+ prefix="." + final.name + ".",
364
+ suffix=".tmp")
365
+ os.close(fd) # SQLite opens the path itself
366
+ tmp = Path(tmp_name)
340
367
  con = sqlite3.connect(str(tmp))
341
368
  try:
342
369
  # No durability needed: this file is a derived cache, and a crash
343
370
  # mid-build leaves the .tmp behind rather than a torn index.
344
371
  con.execute("PRAGMA journal_mode=OFF")
345
372
  con.execute("PRAGMA synchronous=OFF")
346
- con.execute("CREATE TABLE postings (term TEXT, doc INTEGER, tf INTEGER)")
373
+ con.execute("CREATE TABLE terms (id INTEGER PRIMARY KEY, "
374
+ "term TEXT NOT NULL, df INTEGER NOT NULL)")
375
+ con.execute("CREATE TABLE postings (term_id INTEGER, doc INTEGER, "
376
+ "tf INTEGER)")
377
+ items = list(postings.items())
378
+ con.executemany(
379
+ "INSERT INTO terms (id, term, df) VALUES (?, ?, ?)",
380
+ ((term_id, term, len(plist))
381
+ for term_id, (term, plist) in enumerate(items)))
347
382
  con.executemany(
348
- "INSERT INTO postings (term, doc, tf) VALUES (?, ?, ?)",
349
- ((term, doc, tf) for term, plist in postings.items()
383
+ "INSERT INTO postings (term_id, doc, tf) VALUES (?, ?, ?)",
384
+ ((term_id, doc, tf) for term_id, (_term, plist) in enumerate(items)
350
385
  for doc, tf in plist))
351
386
  # Built after the insert: maintaining it per-row is far slower.
352
- con.execute("CREATE INDEX postings_term ON postings(term)")
387
+ con.execute("CREATE UNIQUE INDEX terms_term ON terms(term)")
388
+ con.execute("CREATE INDEX postings_term_id ON postings(term_id)")
353
389
  con.commit()
354
- finally:
390
+ except BaseException:
391
+ # Never leave a temp behind, and never mask the original error —
392
+ # `util.atomic_write_text`'s rule, for the same reason.
393
+ con.close()
394
+ with contextlib.suppress(OSError):
395
+ tmp.unlink()
396
+ raise
397
+ else:
355
398
  con.close()
356
399
  tmp.replace(final) # atomic swap, same as the JSON half
357
400
 
@@ -375,8 +418,9 @@ def read_postings(terms: Sequence[str]) -> dict[str, list[list[int]]]:
375
418
  # long query can exceed it.
376
419
  for i in range(0, len(uniq), 500):
377
420
  batch = uniq[i:i + 500]
378
- q = ("SELECT term, doc, tf FROM postings WHERE term IN (%s)" # noqa: S608 interpolates only `?` placeholders; terms are bound params
379
- % ",".join("?" * len(batch)))
421
+ q = ("SELECT t.term, p.doc, p.tf FROM postings p " # noqa: S608 interpolates only `?` placeholders; terms are bound params
422
+ "JOIN terms t ON p.term_id = t.id "
423
+ "WHERE t.term IN (%s)" % ",".join("?" * len(batch)))
380
424
  for term, doc, tf in con.execute(q, batch):
381
425
  out[term].append([doc, tf])
382
426
  except sqlite3.Error:
@@ -429,12 +473,14 @@ def stem_expansions(terms: Sequence[str]) -> dict[str, str]:
429
473
  for term in missing:
430
474
  # `tokenize` emits only [a-z0-9]+, and "~" sorts above every
431
475
  # character it can produce — so this half-open range is exactly the
432
- # terms beginning with `term`, and it rides the postings_term index
433
- # instead of scanning. Ties break on the term itself so the choice
434
- # is deterministic across machines.
476
+ # terms beginning with `term`, and it rides the terms_term index
477
+ # instead of scanning. `df` (document frequency) is stored per term
478
+ # at build time, so this needs no join and no GROUP BY. Ties break
479
+ # on the term itself so the choice is deterministic across
480
+ # machines.
435
481
  row = con.execute(
436
- "SELECT term FROM postings WHERE term > ? AND term < ? "
437
- "GROUP BY term ORDER BY COUNT(*) DESC, term LIMIT 1",
482
+ "SELECT term FROM terms WHERE term > ? AND term < ? "
483
+ "ORDER BY df DESC, term LIMIT 1",
438
484
  (term, term + "~")).fetchone()
439
485
  if row:
440
486
  out[term] = row[0]
@@ -453,7 +499,9 @@ def _all_postings() -> dict[str, list[list[int]]]:
453
499
  return {}
454
500
  out: dict[str, list[list[int]]] = defaultdict(list)
455
501
  try:
456
- for term, doc, tf in con.execute("SELECT term, doc, tf FROM postings"):
502
+ for term, doc, tf in con.execute(
503
+ "SELECT t.term, p.doc, p.tf FROM postings p "
504
+ "JOIN terms t ON p.term_id = t.id"):
457
505
  out[term].append([doc, tf])
458
506
  except sqlite3.Error:
459
507
  return {}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.82
3
+ Version: 1.2.84
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -352,6 +352,7 @@ docs/roadmap/items/command-reference-docs-site.md
352
352
  docs/roadmap/items/completions-complete-only-command-names.md
353
353
  docs/roadmap/items/completions-install-could-eat-your-rc-file.md
354
354
  docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md
355
+ docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md
355
356
  docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md
356
357
  docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md
357
358
  docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md
Binary file
@@ -2,15 +2,15 @@
2
2
  id: audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as
3
3
  board: code
4
4
  section: internals
5
- status: planned
5
+ status: shipped
6
6
  category: CLI · Bug
7
7
  complexity: S
8
8
  impact: High
9
9
  wow: 2
10
10
  note: one flat agents/x.md adapts into a 383 KB crew of 138 Agent()s — including itself, twice
11
11
  order: 200
12
- owner:
13
- pr:
12
+ owner: loop/adapt-flat-agents-subagent-scope
13
+ pr: 692
14
14
  title: "<code>adapt</code> renders every sibling of a flat <code>agents/</code>-dir workflow as a 138-agent crew"
15
15
  ---
16
16
  <code>adapt actix-expert --to crewai -o x.py</code> prints <em>&ldquo;&#10003; adapted actix-expert &rarr; x.py (crew of 138 &middot; claude-haiku-4-5-20251001)&rdquo;</em> and writes a <b>383 KB</b> render containing <b>138 <code>Agent()</code> + 138 <code>Task()</code></b> &mdash; <code>actix_expert</code>, then <code>actix_expert_1</code> (the item itself, again), then android-expert, angular-expert, &hellip; every sibling in the registry's <code>agents/</code> directory. <code>--to agents-sdk</code> announces <em>&ldquo;note: actix-expert declares 137 subagent(s)&rdquo;</em>. The item is one flat frontmatter file declaring nothing.
@@ -2,7 +2,7 @@
2
2
  id: audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of
3
3
  board: code
4
4
  section: dx
5
- status: inflight
5
+ status: shipped
6
6
  category: CLI · Bug
7
7
  complexity: S
8
8
  impact: High
@@ -2,7 +2,7 @@
2
2
  id: audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def
3
3
  board: code
4
4
  section: dx
5
- status: inflight
5
+ status: shipped
6
6
  category: Safety · Bug
7
7
  complexity: S
8
8
  impact: High
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: concurrent-rag-builds-delete-each-others-temp-index
3
+ board: code
4
+ section: internals
5
+ status: shipped
6
+ category: Reliability · Bug
7
+ complexity: S
8
+ impact: High
9
+ wow: 3
10
+ note: two overlapping rag.build() runs share one .tmp name; the second unlinks the first's finished 644 MB file and the first dies on replace()
11
+ order: 308
12
+ owner: loop/postings-temp-race
13
+ pr: 693
14
+ title: "Two concurrent <code>rag.build()</code> runs delete each other's temp index"
15
+ ---
16
+ Observed on a real 464-tap install during <code>boost update --shards</code>, at boost 1.2.80:
17
+ <code>FileNotFoundError: [Errno&nbsp;2] No such file or directory: '~/.boost/cache/rag_postings.sqlite.tmp' -&gt; '~/.boost/cache/rag_postings.sqlite'</code>, raised from <code>tmp.replace(final)</code> in <code>_write_postings</code>. <code>_write_postings</code> wrote every build to the <b>same</b> fixed temp path and unlinked it on entry, so a second build starting mid-flight deleted the first's <em>completed</em> file: A builds its 644&nbsp;MB temp &rarr; B enters and <code>unlink()</code>s it &rarr; A crashes on the swap. Confirmed by timestamps &mdash; the crash landed at 21:25 and a fresh <code>.tmp</code> appeared at 21:26, which then swapped in cleanly, so the index was never corrupt and the loser simply threw away several minutes of work and returned a crash report. It needs no exotic setup: <code>boost search</code> builds on a cold index, so two terminals is enough, and <code>_ingest_shards</code> rebuilds the index for any tap that moved. Fixed by giving each build its own <code>tempfile.mkstemp</code> name and unlinking it on failure &mdash; the same shape <code>util.atomic_write_text</code> already uses for every other file boost must not lose.
@@ -2,13 +2,14 @@
2
2
  id: shrink-the-published-index
3
3
  board: code
4
4
  section: planned
5
- status: planned
5
+ status: inflight
6
6
  category: Performance · Storage
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 3
10
10
  note: 653 MB of postings holds 1.4 MB of distinct terms — the term string is stored 88 times over
11
11
  order: 100
12
+ owner: loop/shrink-postings-index
12
13
  title: shrink the keyword index before publishing it — structure first, then compression
13
14
  ---
14
15
  <a href="#publish-the-keyword-index">publish-the-keyword-index</a> is worth doing only if the
@@ -58,3 +59,17 @@ for the many-small-registries case, where per-shard compression has little conte
58
59
  — on the real store, with import-side decode time beside each. That table is what tells
59
60
  <a href="#publish-the-keyword-index">publish-the-keyword-index</a> what to ship, and it is worth
60
61
  having even if publishing is declined: the on-disk win applies to every install today.
62
+
63
+ <b>Progress (PR pending).</b> The structural half shipped: <code>_write_postings</code> now
64
+ interns terms into their own <code>terms(id, term, df)</code> table, with <code>postings</code>
65
+ carrying an integer <code>term_id</code> instead of repeating the term string on every row —
66
+ exactly the "structure first" change this card calls the bigger win, and it bumps
67
+ <code>INDEX_VERSION</code> so every store picks it up on its next rebuild.
68
+ <code>stem_expansions</code> now reads the precomputed <code>df</code> column directly instead of
69
+ a <code>GROUP BY COUNT(*)</code> over <code>postings</code> on every prefix lookup. Not done: the
70
+ delta/varint doc-id encoding, and the full raw/interned/delta+varint &times;
71
+ none/gzip/zstd comparison table with import-side decode times on a real multi-hundred-MB store —
72
+ this sandbox has no such store to measure against, only a small synthetic one (interning alone cut
73
+ a 1.8M-posting/20k-term synthetic store from 63.6&nbsp;MB to 47.9&nbsp;MB, directionally consistent
74
+ with the real-store estimate above but not a substitute for it). Left as follow-on work before this
75
+ card can be called shipped.
@@ -133,7 +133,7 @@
133
133
  <div class="stat"><b>20</b><span>Shipped</span></div>
134
134
  <div class="stat"><b>1</b><span>Next up</span></div>
135
135
  <div class="stat"><b>11</b><span>Planned</span></div>
136
- <div class="stat"><b>404</b><span>Loop finds</span></div>
136
+ <div class="stat"><b>405</b><span>Loop finds</span></div>
137
137
  <!-- /ROADMAP:stats -->
138
138
  </div>
139
139
  </section>
@@ -1078,7 +1078,7 @@ is not obviously the right trade, and at the compressed sizes measured there it
1078
1078
  </article>
1079
1079
 
1080
1080
  <article class="cap rcard" id="shrink-the-published-index">
1081
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Performance · Storage</span></div>
1081
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">Performance · Storage</span></div>
1082
1082
  <h3>shrink the keyword index before publishing it — structure first, then compression</h3>
1083
1083
  <p><a href="#publish-the-keyword-index">publish-the-keyword-index</a> is worth doing only if the
1084
1084
  artifact is small enough to ship weekly. This card is the measurement that decides it, and the
@@ -1126,7 +1126,21 @@ for the many-small-registries case, where per-shard compression has little conte
1126
1126
  <b>Deliverable.</b> A measured comparison — raw, interned, delta+varint, each &times; none/gzip/zstd
1127
1127
  — on the real store, with import-side decode time beside each. That table is what tells
1128
1128
  <a href="#publish-the-keyword-index">publish-the-keyword-index</a> what to ship, and it is worth
1129
- having even if publishing is declined: the on-disk win applies to every install today.</p>
1129
+ having even if publishing is declined: the on-disk win applies to every install today.
1130
+
1131
+ <b>Progress (PR pending).</b> The structural half shipped: <code>_write_postings</code> now
1132
+ interns terms into their own <code>terms(id, term, df)</code> table, with <code>postings</code>
1133
+ carrying an integer <code>term_id</code> instead of repeating the term string on every row —
1134
+ exactly the "structure first" change this card calls the bigger win, and it bumps
1135
+ <code>INDEX_VERSION</code> so every store picks it up on its next rebuild.
1136
+ <code>stem_expansions</code> now reads the precomputed <code>df</code> column directly instead of
1137
+ a <code>GROUP BY COUNT(*)</code> over <code>postings</code> on every prefix lookup. Not done: the
1138
+ delta/varint doc-id encoding, and the full raw/interned/delta+varint &times;
1139
+ none/gzip/zstd comparison table with import-side decode times on a real multi-hundred-MB store —
1140
+ this sandbox has no such store to measure against, only a small synthetic one (interning alone cut
1141
+ a 1.8M-posting/20k-term synthetic store from 63.6&nbsp;MB to 47.9&nbsp;MB, directionally consistent
1142
+ with the real-store estimate above but not a substitute for it). Left as follow-on work before this
1143
+ card can be called shipped.</p>
1130
1144
  <div class="meta">
1131
1145
  <span class="m">Complexity <b>M</b></span>
1132
1146
  <span class="m">Impact <b>Med</b></span>
@@ -5325,15 +5339,16 @@ row has at least one referent.</p></details>
5325
5339
  </article>
5326
5340
 
5327
5341
  <article class="cap rcard" id="audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as">
5328
- <div class="head"><span class="pill planned">Planned</span><span class="cat">CLI · Bug</span></div>
5342
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">CLI · Bug</span></div>
5329
5343
  <h3><code>adapt</code> renders every sibling of a flat <code>agents/</code>-dir workflow as a 138-agent crew</h3>
5344
+ <details class="cardbody"><summary>Write-up</summary>
5330
5345
  <p><code>adapt actix-expert --to crewai -o x.py</code> prints <em>&ldquo;&#10003; adapted actix-expert &rarr; x.py (crew of 138 &middot; claude-haiku-4-5-20251001)&rdquo;</em> and writes a <b>383 KB</b> render containing <b>138 <code>Agent()</code> + 138 <code>Task()</code></b> &mdash; <code>actix_expert</code>, then <code>actix_expert_1</code> (the item itself, again), then android-expert, angular-expert, &hellip; every sibling in the registry's <code>agents/</code> directory. <code>--to agents-sdk</code> announces <em>&ldquo;note: actix-expert declares 137 subagent(s)&rdquo;</em>. The item is one flat frontmatter file declaring nothing.
5331
5346
 
5332
5347
  The mechanism: <code>cmd_adapt</code> (<code>boost_cli/commands/pkg.py:1737</code>) passes <code>skill_md.parent</code> to <code>discover_subagents</code> (<code>boost_cli/core/adapters.py:157-186</code>). For a SKILL.md-rooted skill that parent is the skill's own directory and the feature works as shipped (<code>adapt brainstorming --to crewai</code> renders a single agent). For a flat <code>agents/&lt;x&gt;.md</code> workflow the parent <em>is</em> the registry-wide <code>agents/</code> dir, so all 137 siblings become a fabricated crew &mdash; and since the exclusion at <code>adapters.py:170-173</code> skips only <code>SKILL.md</code>, the adapted item is re-included as one of its own subagents.
5333
5348
 
5334
5349
  Fix per the verified recommendation: run <code>discover_subagents</code> only when the resolved item is SKILL.md-rooted (<code>skill_md.name == 'SKILL.md'</code>), and harden <code>discover_subagents</code> to skip the entry's own file and require the <code>agents/</code>/<code>subagents/</code> dir to be strictly beneath <code>skill_dir</code>. Add a unit test adapting a bare <code>agents/&lt;x&gt;.md</code> item that asserts a single-<code>Agent()</code> render. Update <code>docs/adapters.html</code> (subagent-discovery wording).
5335
5350
 
5336
- Found by the 2026-08 CLI audit (cluster <code>adapt-subagent-misdetect</code>); repro in the audit log. Verified 2026-08-31: reproduced, defect in the shipped multi-agent adapter feature (whose design intended skill-declared subagents only), not a duplicate of it.</p>
5351
+ Found by the 2026-08 CLI audit (cluster <code>adapt-subagent-misdetect</code>); repro in the audit log. Verified 2026-08-31: reproduced, defect in the shipped multi-agent adapter feature (whose design intended skill-declared subagents only), not a duplicate of it.</p></details>
5337
5352
  <div class="meta">
5338
5353
  <span class="m">Complexity <b>S</b></span>
5339
5354
  <span class="m hi">Impact <b>High</b></span>
@@ -5614,6 +5629,20 @@ repro run needed. Absolute date of verification: 2026-08-31.</p></details>
5614
5629
  <span class="m">a quickstart rerun re-downloads every shard the store already holds at that commit</span>
5615
5630
  </div>
5616
5631
  </article>
5632
+
5633
+ <article class="cap rcard" id="concurrent-rag-builds-delete-each-others-temp-index">
5634
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Reliability · Bug</span></div>
5635
+ <h3>Two concurrent <code>rag.build()</code> runs delete each other's temp index</h3>
5636
+ <details class="cardbody"><summary>Write-up</summary>
5637
+ <p>Observed on a real 464-tap install during <code>boost update --shards</code>, at boost 1.2.80:
5638
+ <code>FileNotFoundError: [Errno&nbsp;2] No such file or directory: '~/.boost/cache/rag_postings.sqlite.tmp' -&gt; '~/.boost/cache/rag_postings.sqlite'</code>, raised from <code>tmp.replace(final)</code> in <code>_write_postings</code>. <code>_write_postings</code> wrote every build to the <b>same</b> fixed temp path and unlinked it on entry, so a second build starting mid-flight deleted the first's <em>completed</em> file: A builds its 644&nbsp;MB temp &rarr; B enters and <code>unlink()</code>s it &rarr; A crashes on the swap. Confirmed by timestamps &mdash; the crash landed at 21:25 and a fresh <code>.tmp</code> appeared at 21:26, which then swapped in cleanly, so the index was never corrupt and the loser simply threw away several minutes of work and returned a crash report. It needs no exotic setup: <code>boost search</code> builds on a cold index, so two terminals is enough, and <code>_ingest_shards</code> rebuilds the index for any tap that moved. Fixed by giving each build its own <code>tempfile.mkstemp</code> name and unlinking it on failure &mdash; the same shape <code>util.atomic_write_text</code> already uses for every other file boost must not lose.</p></details>
5639
+ <div class="meta">
5640
+ <span class="m">Complexity <b>S</b></span>
5641
+ <span class="m hi">Impact <b>High</b></span>
5642
+ <span class="m">Wow <b class="wow">★★★</b></span>
5643
+ <span class="m">two overlapping rag.build() runs share one .tmp name; the second unlinks the first's finished 644 MB file and the first dies on replace()</span>
5644
+ </div>
5645
+ </article>
5617
5646
  <!-- /ROADMAP:cards -->
5618
5647
 
5619
5648
  </div>
@@ -11826,8 +11855,9 @@ Found by the 2026-08 CLI audit (cluster <code>kinds-reported-as-skills</code>);
11826
11855
  </article>
11827
11856
 
11828
11857
  <article class="cap rcard" id="audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of">
11829
- <div class="head"><span class="pill inflight">In flight</span><span class="cat">CLI · Bug</span></div>
11858
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">CLI · Bug</span></div>
11830
11859
  <h3><code>install --local</code> writes the repo's <code>.mcp.json</code> silently — the 'recorded N servers' report never runs</h3>
11860
+ <details class="cardbody"><summary>Write-up</summary>
11831
11861
  <p>Installing a skill that declares an MCP server with <code>--local</code> prints
11832
11862
  <em>&ldquo;&#10003; copied into this repo &rarr; claude-code &middot; windsurf &middot; cursor &middot;
11833
11863
  gemini / &#10003; project lock updated (.boost/skill-lock.json) / commit .boost/ to share these with
@@ -11853,7 +11883,7 @@ asserting the <em>&ldquo;recorded 1 MCP server in .mcp.json&rdquo;</em> line for
11853
11883
  uninstall side. Docs: fix <code>docs/roadmap/items/mcp-servers-ignore-install-scope.md</code>, which
11854
11884
  describes the recorded-report as reachable; no flag change, so <code>docs/commands.html</code> only
11855
11885
  needs regenerating if a summary moves. Found by the 2026-08 CLI audit (cluster
11856
- <code>mcp-project-scope-report</code>); repro in the audit log.</p>
11886
+ <code>mcp-project-scope-report</code>); repro in the audit log.</p></details>
11857
11887
  <div class="meta">
11858
11888
  <span class="m">Complexity <b>S</b></span>
11859
11889
  <span class="m hi">Impact <b>High</b></span>
@@ -11982,15 +12012,16 @@ Found by the 2026-08 CLI audit (cluster <code>qualifier-rejected-elsewhere</code
11982
12012
  </article>
11983
12013
 
11984
12014
  <article class="cap rcard" id="audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def">
11985
- <div class="head"><span class="pill inflight">In flight</span><span class="cat">Safety · Bug</span></div>
12015
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Safety · Bug</span></div>
11986
12016
  <h3><code>tap --dry-run</code> is silently ignored outside <code>--catalog</code>: SPEC and <code>--defaults</code> clone for real</h3>
12017
+ <details class="cardbody"><summary>Write-up</summary>
11987
12018
  <p>On a pristine HOME, <code>boost tap --dry-run expo/skills</code> printed <code>&#10003; Tapped expo/skills (26 items)</code>, exit 0 in 1.56&nbsp;s &mdash; and the clone exists and <code>config.json</code> gained the row. <code>tap --defaults --dry-run</code> cloned five registries (<code>&#10003; tapped trailofbits/skills (124 items) &hellip;</code>) and grew the config from 21 to 26 taps. The multi-spec path is the same: <code>tap --dry-run expo/skills anthropics/skills</code> answered with <code>already tapped</code> lines, proving registry code ran. Help does say <em>&ldquo;with --catalog: print what would be tapped, tap nothing&rdquo;</em> &mdash; documented-narrow, but a flag literally named <code>--dry-run</code> that clones repos and writes config is a safety hole regardless of wording.
11988
12019
 
11989
12020
  The source confirms the shape: <code>taps.py</code> consults <code>args.dry_run</code> only inside <code>_tap_catalog</code> (<code>boost_cli/commands/taps.py:38</code>); <code>cmd_tap</code>'s defaults, single-spec and multi-spec branches (<code>taps.py:144-166</code>) never read it. Not a duplicate of the roadmap's <em>dry-run-promised-a-link-nobody-makes</em>, which is about <code>install --dry-run</code>.
11990
12021
 
11991
12022
  Fix, per the verified recommendation: in <code>cmd_tap</code>, when <code>args.dry_run</code> and (<code>args.spec</code> or <code>args.defaults</code>), print the parsed <code>(name, url)</code> per spec &mdash; or the <code>DEFAULT_TAPS</code> list &mdash; and return 0 <em>before</em> <code>registry.add</code>/<code>_tap_all</code>; update the <code>--dry-run</code> help text; add a unit test that <code>--dry-run SPEC</code> writes nothing. Docs: regenerate <code>docs/commands.html</code> after the help-text change.
11992
12023
 
11993
- Found by the 2026-08 CLI audit (cluster <code>tap-dry-run-ignored</code>); repro in the audit log. Verified against source 2026-08-31.</p>
12024
+ Found by the 2026-08 CLI audit (cluster <code>tap-dry-run-ignored</code>); repro in the audit log. Verified against source 2026-08-31.</p></details>
11994
12025
  <div class="meta">
11995
12026
  <span class="m">Complexity <b>S</b></span>
11996
12027
  <span class="m hi">Impact <b>High</b></span>
@@ -3,6 +3,8 @@
3
3
  """Functional tests: `boost adapt` — render a skill as framework source."""
4
4
  from __future__ import annotations
5
5
 
6
+ import subprocess
7
+
6
8
 
7
9
  def test_adapt_installed_skill_to_crewai_stdout(boost, installed):
8
10
  r = boost("adapt", installed, "--to", "crewai")
@@ -130,3 +132,41 @@ def test_multi_agent_target_without_crew_falls_back_with_note(boost, installed):
130
132
  assert "reviewer = Agent(" not in r.out
131
133
  assert "declares 2 subagent" in r.err
132
134
  compile(r.out, "<sdk>", "exec")
135
+
136
+
137
+ # --- flat agents/-dir workflow item: not a multi-agent skill --------------
138
+
139
+ def _flat_agents_tap(tmp_path):
140
+ """A registry whose agents/ directory holds one Markdown file per
141
+ stand-alone workflow item, no SKILL.md anywhere — the shape that made
142
+ `adapt` mistake every sibling workflow for a subagent of the one being
143
+ adapted."""
144
+ tap = tmp_path / "flat-tap"
145
+ agents = tap / "agents"
146
+ agents.mkdir(parents=True)
147
+ (agents / "actix-expert.md").write_text(
148
+ "---\nname: actix-expert\ndescription: Actix web framework expert\n---\n"
149
+ "Body for actix.\n", encoding="utf-8")
150
+ (agents / "android-expert.md").write_text(
151
+ "---\nname: android-expert\ndescription: Android expert\n---\n"
152
+ "Body for android.\n", encoding="utf-8")
153
+ run = lambda *a: subprocess.run(a, cwd=tap, check=True, capture_output=True)
154
+ run("git", "init", "-q")
155
+ run("git", "config", "user.email", "fixture@boost.test")
156
+ run("git", "config", "user.name", "Boost Fixture")
157
+ run("git", "add", "-A")
158
+ run("git", "commit", "-qm", "flat agents fixture")
159
+ return tap
160
+
161
+
162
+ def test_flat_agents_dir_workflow_adapts_as_single_agent(boost, tmp_path):
163
+ tap = _flat_agents_tap(tmp_path)
164
+ boost("tap", str(tap))
165
+ r = boost("adapt", "actix-expert", "--to", "crewai", "--model", "none")
166
+ assert "actix_expert = Agent(" in r.out
167
+ # the sibling workflow in the same shared agents/ dir must not appear —
168
+ # neither as a rendered agent nor as a dropped-subagent note
169
+ assert "android_expert" not in r.out
170
+ assert "crew of" not in r.out
171
+ assert r.err == ""
172
+ compile(r.out, "<crewai>", "exec")
@@ -156,6 +156,35 @@ class TestDiscoverSubagents:
156
156
  f.write_text("---\nname: wf\ndescription: t\n---\n", encoding="utf-8")
157
157
  assert adapters.discover_subagents(f) == [] # not a directory
158
158
 
159
+ def test_shared_dir_itself_named_agents_has_no_subagents(self, tmp_path):
160
+ # A flat agents/<x>.md workflow item's "skill_dir" (its own file's
161
+ # parent) IS the registry-wide agents/ folder — siblings sitting
162
+ # directly inside it are not nested under an agents/subagents dir
163
+ # *beneath* skill_dir, so none of them count as subagents.
164
+ shared = tmp_path / "agents"
165
+ shared.mkdir()
166
+ (shared / "actix-expert.md").write_text(
167
+ "---\nname: actix-expert\ndescription: d\n---\nB\n", encoding="utf-8")
168
+ (shared / "android-expert.md").write_text(
169
+ "---\nname: android-expert\ndescription: d\n---\nB\n", encoding="utf-8")
170
+ assert adapters.discover_subagents(shared) == []
171
+
172
+ def test_own_file_excluded_even_when_nested(self, tmp_path):
173
+ # Defense in depth: the entry being adapted never counts as one of
174
+ # its own subagents, even if it happens to sit under a nested
175
+ # agents/subagents dir that legitimately holds other subagents.
176
+ _skill(tmp_path, {
177
+ "self.md": "---\nname: self\ndescription: d\n---\nB\n",
178
+ "helper.md": "---\nname: helper\ndescription: d\n---\nB\n",
179
+ })
180
+ own = tmp_path / "agents" / "self.md"
181
+ specs = adapters.discover_subagents(tmp_path, own_file=own)
182
+ assert [s.name for s in specs] == ["helper"]
183
+
184
+ def test_own_file_none_does_not_exclude_anything(self, tmp_path):
185
+ _skill(tmp_path, {"a.md": "---\nname: a\ndescription: x\n---\nB\n"})
186
+ assert [s.name for s in adapters.discover_subagents(tmp_path, own_file=None)] == ["a"]
187
+
159
188
 
160
189
  # --- helpers: idents & tool union ----------------------------------------
161
190