boost-skill-cli 1.2.94__tar.gz → 1.2.95__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 (960) hide show
  1. {boost_skill_cli-1.2.94/boost_skill_cli.egg-info → boost_skill_cli-1.2.95}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/pkg.py +13 -1
  4. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/store.py +22 -5
  5. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  6. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-sync-findings.md +3 -3
  7. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +3 -3
  8. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap.html +4 -3
  9. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/mutation_shards.py +75 -0
  10. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_pkg.py +33 -0
  11. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mutation_shards.py +129 -0
  12. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_store.py +4 -1
  13. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_sync_blocked_links.py +66 -1
  14. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.gitattributes +0 -0
  15. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.gitignore +0 -0
  16. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.gitleaks.toml +0 -0
  17. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.htmlvalidate.json +0 -0
  18. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.lighthouserc.json +0 -0
  19. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.lycheeignore +0 -0
  20. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.markdownlint-cli2.jsonc +0 -0
  21. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.pre-commit-config.yaml +0 -0
  22. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.stylelintrc.json +0 -0
  23. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.vale/styles/boost/AIWriting.yml +0 -0
  24. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.vale/styles/boost/Terminology.yml +0 -0
  25. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  26. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/.vale.ini +0 -0
  27. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/CLAUDE.md +0 -0
  28. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/CODE_OF_CONDUCT.md +0 -0
  29. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/CONTRIBUTING.md +0 -0
  30. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/DCO +0 -0
  31. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/GOVERNANCE.md +0 -0
  32. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/LICENSE +0 -0
  33. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/MAINTAINERS.md +0 -0
  34. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/MANIFEST.in +0 -0
  35. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/Makefile +0 -0
  36. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/README.md +0 -0
  37. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/SECURITY.md +0 -0
  38. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/SUPPORT.md +0 -0
  39. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost +0 -0
  40. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/__init__.py +0 -0
  41. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/__main__.py +0 -0
  42. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/cli.py +0 -0
  43. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/cliparse.py +0 -0
  44. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/__init__.py +0 -0
  45. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/_common.py +0 -0
  46. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/bmad.py +0 -0
  47. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/configuration.py +0 -0
  48. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/discovery.py +0 -0
  49. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/hooks.py +0 -0
  50. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/info.py +0 -0
  51. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/intelligence.py +0 -0
  52. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/quality.py +0 -0
  53. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/quickstart.py +0 -0
  54. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/run.py +0 -0
  55. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/safety.py +0 -0
  56. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/taps.py +0 -0
  57. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/commands/team.py +0 -0
  58. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/__init__.py +0 -0
  59. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/adapters.py +0 -0
  60. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/agents.py +0 -0
  61. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/ai.py +0 -0
  62. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/aihost.py +0 -0
  63. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/bmad.py +0 -0
  64. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/bootstrap.py +0 -0
  65. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/browse.py +0 -0
  66. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/builtin.py +0 -0
  67. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/capabilities.py +0 -0
  68. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/catalog.py +0 -0
  69. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/catalogbundle.py +0 -0
  70. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/chat.py +0 -0
  71. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/claude_settings.py +0 -0
  72. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/complete.py +0 -0
  73. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/config.py +0 -0
  74. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/dense.py +0 -0
  75. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/ed25519.py +0 -0
  76. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/embed.py +0 -0
  77. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/faithfulness.py +0 -0
  78. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/frontmatter.py +0 -0
  79. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/gitutil.py +0 -0
  80. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/hookhost.py +0 -0
  81. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/imperative.py +0 -0
  82. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/injectscan.py +0 -0
  83. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/installscan.py +0 -0
  84. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/integrity.py +0 -0
  85. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/journal.py +0 -0
  86. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/jsonstate.py +0 -0
  87. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/localembed.py +0 -0
  88. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/lockfile.py +0 -0
  89. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/logs.py +0 -0
  90. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/mcp.py +0 -0
  91. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/mcpdecl.py +0 -0
  92. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/mcphost.py +0 -0
  93. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/minisign.py +0 -0
  94. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/nethttp.py +0 -0
  95. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/output.py +0 -0
  96. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/paths.py +0 -0
  97. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/policy.py +0 -0
  98. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/projectlock.py +0 -0
  99. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/provenance.py +0 -0
  100. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/rag.py +0 -0
  101. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/registry.py +0 -0
  102. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/resolve.py +0 -0
  103. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/rules.py +0 -0
  104. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/scopes.py +0 -0
  105. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/secretscan.py +0 -0
  106. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/selfupdate.py +0 -0
  107. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/serve.py +0 -0
  108. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/shards.py +0 -0
  109. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/stackprobe.py +0 -0
  110. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/staleness.py +0 -0
  111. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/trustaudit.py +0 -0
  112. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/typedvalue.py +0 -0
  113. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/typosquat.py +0 -0
  114. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/updatediff.py +0 -0
  115. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/util.py +0 -0
  116. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/core/workflows.py +0 -0
  117. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/data/registries.json +0 -0
  118. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/data/rules/boost-first.mdc +0 -0
  119. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/errors.py +0 -0
  120. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_cli/spin.py +0 -0
  121. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_langchain/__init__.py +0 -0
  122. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_langchain/_compat.py +0 -0
  123. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_langchain/graph.py +0 -0
  124. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_langchain/loader.py +0 -0
  125. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_langchain/py.typed +0 -0
  126. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_langchain/retriever.py +0 -0
  127. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  128. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  129. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  130. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_skill_cli.egg-info/requires.txt +0 -0
  131. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/boost_skill_cli.egg-info/top_level.txt +0 -0
  132. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/codecov.yml +0 -0
  133. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/.claude/settings.local.json +0 -0
  134. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/DEBUGGING.md +0 -0
  135. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/adapters.html +0 -0
  136. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/architecture/README.md +0 -0
  137. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/architecture/c4-components-core.md +0 -0
  138. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/architecture/c4-containers.md +0 -0
  139. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/architecture/c4-context.md +0 -0
  140. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/architecture/c4-dynamic-install.md +0 -0
  141. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/bmad.md +0 -0
  142. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/distill.gif +0 -0
  143. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/doctor.gif +0 -0
  144. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/explain.gif +0 -0
  145. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/hooks.gif +0 -0
  146. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/install.gif +0 -0
  147. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/pulse.gif +0 -0
  148. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/search.gif +0 -0
  149. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/gifs/tap.gif +0 -0
  150. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/distill.tape +0 -0
  151. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/doctor.tape +0 -0
  152. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/explain.tape +0 -0
  153. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/hooks.tape +0 -0
  154. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/install.tape +0 -0
  155. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/pulse.tape +0 -0
  156. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/search.tape +0 -0
  157. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel/tapes/tap.tape +0 -0
  158. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/carousel.html +0 -0
  159. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/chat.html +0 -0
  160. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/code-review.md +0 -0
  161. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/commands.html +0 -0
  162. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/commit-audit.md +0 -0
  163. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/demo-index.json +0 -0
  164. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/demo.gif +0 -0
  165. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/demo.html +0 -0
  166. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/demo.tape +0 -0
  167. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/dependencies.md +0 -0
  168. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/design-roadmap.html +0 -0
  169. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/eval-latest.json +0 -0
  170. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/eval.html +0 -0
  171. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/index.html +0 -0
  172. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/langchain.html +0 -0
  173. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/mcp-hub.html +0 -0
  174. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/openssf-badge.md +0 -0
  175. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/openssf-playbook.md +0 -0
  176. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/rag-architecture.md +0 -0
  177. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D01.md +0 -0
  178. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D02.md +0 -0
  179. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D03.md +0 -0
  180. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D04.md +0 -0
  181. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D05.md +0 -0
  182. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D06.md +0 -0
  183. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D07.md +0 -0
  184. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D08.md +0 -0
  185. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D09.md +0 -0
  186. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D10.md +0 -0
  187. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D11.md +0 -0
  188. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D12.md +0 -0
  189. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D13.md +0 -0
  190. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D14.md +0 -0
  191. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D15.md +0 -0
  192. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D16.md +0 -0
  193. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D17.md +0 -0
  194. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D18.md +0 -0
  195. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D19.md +0 -0
  196. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D20.md +0 -0
  197. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D21.md +0 -0
  198. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D22.md +0 -0
  199. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D23.md +0 -0
  200. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D24.md +0 -0
  201. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D25.md +0 -0
  202. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D26.md +0 -0
  203. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/BOOST-D27.md +0 -0
  204. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  205. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  206. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  207. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  208. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  209. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  210. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  211. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  212. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  213. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  214. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  215. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  216. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  217. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  218. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  219. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-attest-findings.md +0 -0
  220. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-audit-findings.md +0 -0
  221. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  222. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-browse-findings.md +0 -0
  223. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  224. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  225. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  226. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  227. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-chat-findings.md +0 -0
  228. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  229. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
  230. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-cohort-findings.md +0 -0
  231. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-completions-findings.md +0 -0
  232. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-config-findings.md +0 -0
  233. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  234. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-context-findings.md +0 -0
  235. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  236. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  237. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-create-findings.md +0 -0
  238. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  239. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-deps-findings.md +0 -0
  240. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-discover-findings.md +0 -0
  241. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  242. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  243. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-drift-findings.md +0 -0
  244. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  245. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-edit-findings.md +0 -0
  246. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  247. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-explain-findings.md +0 -0
  248. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-export-findings.md +0 -0
  249. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  250. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  251. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  252. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  253. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/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.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-health-findings.md +0 -0
  255. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  256. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  257. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-import-findings.md +0 -0
  258. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-index-findings.md +0 -0
  259. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
  260. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  261. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-install-findings.md +0 -0
  262. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  263. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
  264. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-lint-findings.md +0 -0
  265. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-log-findings.md +0 -0
  266. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
  267. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-mcp-findings.md +0 -0
  268. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  269. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  270. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  271. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-onboard-findings.md +0 -0
  272. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  273. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  274. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  275. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  276. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  277. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-policy-findings.md +0 -0
  278. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-preview-findings.md +0 -0
  279. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-profile-findings.md +0 -0
  280. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  281. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-protocol-findings.md +0 -0
  282. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-pulse-findings.md +0 -0
  283. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
  284. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  285. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  286. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  287. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-reindex-findings.md +0 -0
  288. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  289. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-replay-findings.md +0 -0
  290. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-root-findings.md +0 -0
  291. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  292. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-run-findings.md +0 -0
  293. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  294. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-search-findings.md +0 -0
  295. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-simulate-findings.md +0 -0
  296. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  297. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  298. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  299. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  300. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  301. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  302. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  303. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-tag-findings.md +0 -0
  304. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  305. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-tap-findings.md +0 -0
  306. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-taps-findings.md +0 -0
  307. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  308. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-test-findings.md +0 -0
  309. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-trust-findings.md +0 -0
  310. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  311. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-unpin-findings.md +0 -0
  312. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-untap-findings.md +0 -0
  313. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-update-findings.md +0 -0
  314. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  315. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-verify-findings.md +0 -0
  316. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/audit-who-findings.md +0 -0
  317. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  318. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  319. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  320. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  321. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  322. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  323. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/boost-first-rule.md +0 -0
  324. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  325. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  326. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/branch-current-gate.md +0 -0
  327. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  328. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  329. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  330. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  331. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  332. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  333. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  334. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  335. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  336. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  337. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  338. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  339. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  340. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  341. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  342. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  343. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  344. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/cli-command-audit.md +0 -0
  345. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  346. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  347. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  348. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  349. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/command-carousel-page.md +0 -0
  350. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  351. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  352. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  353. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  354. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  355. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  356. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  357. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  358. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  359. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  360. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  361. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  362. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  363. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  364. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  365. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  366. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  367. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  368. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  369. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  370. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  371. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  372. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  373. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  374. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  375. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  376. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  377. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  378. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  379. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  380. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  381. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  382. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  383. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  384. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  385. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  386. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  387. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  388. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  389. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  390. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  391. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  392. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  393. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  394. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  395. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  396. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  397. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  398. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  399. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  400. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  401. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  402. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  403. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  404. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  405. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/github-community-health-files.md +0 -0
  406. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  407. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  408. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  409. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  410. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  411. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  412. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  413. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  414. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  415. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  416. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  417. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  418. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  419. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  420. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  421. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  422. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  423. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  424. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  425. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  426. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  427. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  428. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  429. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  430. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  431. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  432. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  433. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  434. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  435. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  436. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  437. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  438. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  439. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  440. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  441. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  442. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  443. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  444. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  445. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  446. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  447. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  448. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  449. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  450. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  451. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  452. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  453. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  454. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  455. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  456. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  457. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  458. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  459. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  460. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  461. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  462. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  463. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  464. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  465. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  466. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  467. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  468. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  469. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  470. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  471. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  472. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  473. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  474. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  475. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  476. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  477. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  478. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  479. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  480. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  481. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  482. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  483. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  484. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/openssf-playbook.md +0 -0
  485. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/openssf-silver.md +0 -0
  486. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  487. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  488. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  489. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  490. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  491. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  492. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  493. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  494. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  495. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  496. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  497. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  498. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  499. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  500. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  501. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  502. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  503. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  504. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  505. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  506. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  507. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  508. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  509. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  510. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  511. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  512. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  513. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  514. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  515. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  516. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  517. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  518. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  519. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/relicence-apache-2.md +0 -0
  520. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  521. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  522. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  523. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  524. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  525. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  526. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  527. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  528. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  529. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  530. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  531. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  532. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  533. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  534. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  535. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  536. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  537. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  538. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  539. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  540. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  541. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  542. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  543. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  544. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  545. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  546. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  547. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  548. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  549. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  550. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  551. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  552. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  553. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  554. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  555. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  556. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  557. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  558. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  559. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  560. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  561. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  562. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  563. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  564. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  565. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  566. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  567. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  568. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  569. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  570. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  571. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  572. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  573. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  574. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  575. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  576. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  577. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  578. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  579. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  580. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  581. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  582. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  583. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  584. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  585. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  586. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  587. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  588. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  589. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  590. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  591. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  592. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  593. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  594. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  595. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  596. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  597. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  598. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  599. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  600. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  601. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  602. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  603. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/workspace-scope-install.md +0 -0
  604. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/zip-strict-audit.md +0 -0
  605. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  606. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  607. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/security-design.md +0 -0
  608. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/semantic-search.md +0 -0
  609. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  610. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/verifying-releases.md +0 -0
  611. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/vex/meta.md +0 -0
  612. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/vex/openvex.json +0 -0
  613. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  614. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  615. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  616. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  617. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/eslint.config.mjs +0 -0
  618. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/README.md +0 -0
  619. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/__init__.py +0 -0
  620. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/baseline.json +0 -0
  621. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/faithfulness.py +0 -0
  622. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/golden_set.json +0 -0
  623. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/make_corpus.py +0 -0
  624. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/make_golden.py +0 -0
  625. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/metrics.py +0 -0
  626. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/publish_golden_dataset.py +0 -0
  627. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/evals/run_evals.py +0 -0
  628. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/examples/README.md +0 -0
  629. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/examples/adapt-demo.sh +0 -0
  630. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/examples/boost-run-prototype.sh +0 -0
  631. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/index.html +0 -0
  632. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/noxfile.py +0 -0
  633. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/pyproject.toml +0 -0
  634. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/coverage-tools.in +0 -0
  635. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/coverage-tools.txt +0 -0
  636. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/lint-tools.in +0 -0
  637. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/lint-tools.txt +0 -0
  638. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/mutation-tools.in +0 -0
  639. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/mutation-tools.txt +0 -0
  640. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/platform-pins.lock +0 -0
  641. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/release-tools.in +0 -0
  642. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/release-tools.txt +0 -0
  643. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/test-tools.in +0 -0
  644. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/requirements/test-tools.txt +0 -0
  645. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/a11y_check.py +0 -0
  646. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/add_spdx_headers.py +0 -0
  647. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/bench_cli.sh +0 -0
  648. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/build_command_reference.py +0 -0
  649. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/build_demo_index.py +0 -0
  650. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/build_registries.py +0 -0
  651. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/build_roadmap.py +0 -0
  652. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/build_scale_corpus.py +0 -0
  653. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/build_vex.py +0 -0
  654. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/check_anchors.py +0 -0
  655. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/check_branch_current.py +0 -0
  656. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/check_dco.py +0 -0
  657. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/check_licenses.py +0 -0
  658. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/check_reproducible.py +0 -0
  659. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/check_required_checks.py +0 -0
  660. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/ensure_eval_corpus.sh +0 -0
  661. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/eval_corpus.py +0 -0
  662. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/eval_explain.py +0 -0
  663. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/eval_gate.py +0 -0
  664. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/eval_recommend.py +0 -0
  665. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/eval_retrieval.py +0 -0
  666. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/eval_stats_summary.py +0 -0
  667. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/eval_tools.py +0 -0
  668. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/import_budget.py +0 -0
  669. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/lock_toolchain.py +0 -0
  670. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/measure_near_duplicate_bound.py +0 -0
  671. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/measure_registry.py +0 -0
  672. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/mutation_gate.py +0 -0
  673. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/mutation_weights.json +0 -0
  674. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/normalize_sdist.py +0 -0
  675. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/page_budget.py +0 -0
  676. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/perf_gate.py +0 -0
  677. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/post_deploy_smoke.py +0 -0
  678. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/publish_eval_json.py +0 -0
  679. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/publish_shards.py +0 -0
  680. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/release_guard.py +0 -0
  681. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/release_preflight.py +0 -0
  682. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/serve_docs.py +0 -0
  683. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/scripts/shard_plan.py +0 -0
  684. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/setup.cfg +0 -0
  685. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/sonar-project.properties +0 -0
  686. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/style/README.md +0 -0
  687. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/style/boost.css +0 -0
  688. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/style/boost.js +0 -0
  689. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/style/demo.html +0 -0
  690. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/adapt.feature +0 -0
  691. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/browse.feature +0 -0
  692. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/count.feature +0 -0
  693. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/discover.feature +0 -0
  694. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/doctor.feature +0 -0
  695. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/environment.py +0 -0
  696. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/explain.feature +0 -0
  697. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/index.feature +0 -0
  698. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/install.feature +0 -0
  699. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/list.feature +0 -0
  700. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/mcp.feature +0 -0
  701. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/search.feature +0 -0
  702. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/steps/cli_steps.py +0 -0
  703. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/steps/discovery_steps.py +0 -0
  704. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/steps/mcp_steps.py +0 -0
  705. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/bdd/features/steps/quality_steps.py +0 -0
  706. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/conftest.py +0 -0
  707. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/baseline.json +0 -0
  708. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/explain.jsonl +0 -0
  709. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  710. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/golden-natural.jsonl +0 -0
  711. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/golden.jsonl +0 -0
  712. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/recommend.jsonl +0 -0
  713. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/taps-scale.txt +0 -0
  714. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/taps.txt +0 -0
  715. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/eval/tool_calls.jsonl +0 -0
  716. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_bmad_all_hosts.py +0 -0
  717. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_capabilities_policy.py +0 -0
  718. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_adapt.py +0 -0
  719. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_bmad.py +0 -0
  720. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_catalog.py +0 -0
  721. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_chat.py +0 -0
  722. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_configuration.py +0 -0
  723. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_discovery.py +0 -0
  724. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_hooks.py +0 -0
  725. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_hooks_gemini.py +0 -0
  726. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_info.py +0 -0
  727. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_intelligence.py +0 -0
  728. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_pane_width.py +0 -0
  729. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_quality.py +0 -0
  730. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_quickstart.py +0 -0
  731. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_tap_pins.py +0 -0
  732. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_taps.py +0 -0
  733. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_cli_team.py +0 -0
  734. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_everyday_loop.py +0 -0
  735. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_integrity_enforce.py +0 -0
  736. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_kind_conformance.py +0 -0
  737. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_property_parsers.py +0 -0
  738. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_run.py +0 -0
  739. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_tap_signing.py +0 -0
  740. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/functional/test_workspace_scope.py +0 -0
  741. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/README.md +0 -0
  742. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  743. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  744. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  745. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  746. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  747. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  748. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  749. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  750. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  751. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  752. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  753. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  754. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  755. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  756. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  757. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  758. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  759. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  760. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  761. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  762. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  763. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  764. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  765. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/fuzz_frontmatter.py +0 -0
  766. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/fuzz/fuzz_registry.py +0 -0
  767. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/langchain/conftest.py +0 -0
  768. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/langchain/test_graph.py +0 -0
  769. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/langchain/test_loader.py +0 -0
  770. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/langchain/test_retriever.py +0 -0
  771. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/make_fixture.py +0 -0
  772. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/perf/test_benchmarks.py +0 -0
  773. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/smoke.sh +0 -0
  774. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_a11y_check.py +0 -0
  775. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_action_pin_lockstep.py +0 -0
  776. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_adapters.py +0 -0
  777. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_adapters_multi.py +0 -0
  778. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_adapters_runner.py +0 -0
  779. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_agents.py +0 -0
  780. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_ai.py +0 -0
  781. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_aihost.py +0 -0
  782. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_bmad_core.py +0 -0
  783. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_boost_first_offer.py +0 -0
  784. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_bootstrap.py +0 -0
  785. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_bot_pr_dco.py +0 -0
  786. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_branch_current.py +0 -0
  787. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_browse.py +0 -0
  788. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_builtin.py +0 -0
  789. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_capabilities.py +0 -0
  790. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_catalog.py +0 -0
  791. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_catalogbundle.py +0 -0
  792. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_chat.py +0 -0
  793. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_check_anchors.py +0 -0
  794. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_check_dco.py +0 -0
  795. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_check_licenses.py +0 -0
  796. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_check_reproducible.py +0 -0
  797. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_claude_settings.py +0 -0
  798. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_clean_internal_cache.py +0 -0
  799. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_cli_update_shards.py +0 -0
  800. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_cliparse.py +0 -0
  801. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_codeql_analysis_key.py +0 -0
  802. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_command_reference_fresh.py +0 -0
  803. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_community_health_files.py +0 -0
  804. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_compact.py +0 -0
  805. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_complete.py +0 -0
  806. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_complete_rc_block.py +0 -0
  807. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_config.py +0 -0
  808. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_content_dedupe.py +0 -0
  809. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_content_identity.py +0 -0
  810. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_crash_redaction.py +0 -0
  811. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dedup_trust.py +0 -0
  812. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_demo_index.py +0 -0
  813. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense.py +0 -0
  814. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  815. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_embed_dedupe.py +0 -0
  816. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_entry_reuse.py +0 -0
  817. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_entry_vectors.py +0 -0
  818. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_fallback.py +0 -0
  819. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_fix_hint.py +0 -0
  820. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_progress.py +0 -0
  821. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_quantized.py +0 -0
  822. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_ready_order.py +0 -0
  823. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_shard_real_schema.py +0 -0
  824. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  825. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_shards.py +0 -0
  826. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_status.py +0 -0
  827. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_status_cheap.py +0 -0
  828. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dense_vector_dedupe.py +0 -0
  829. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_dependabot_config.py +0 -0
  830. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_distill_merge.py +0 -0
  831. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_docs_pages_linked.py +0 -0
  832. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_docsite_chrome.py +0 -0
  833. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_doctor_output_polish.py +0 -0
  834. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_drift_hint.py +0 -0
  835. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_ed25519.py +0 -0
  836. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_embed.py +0 -0
  837. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_embed_local.py +0 -0
  838. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_embed_truncated_response.py +0 -0
  839. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_entry_key.py +0 -0
  840. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_errors_and_cli_table.py +0 -0
  841. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_baseline.py +0 -0
  842. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_corpus.py +0 -0
  843. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_faithfulness.py +0 -0
  844. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_gate.py +0 -0
  845. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_grading.py +0 -0
  846. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_metrics.py +0 -0
  847. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_stats_summary.py +0 -0
  848. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_tools.py +0 -0
  849. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_eval_tools_probe.py +0 -0
  850. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  851. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_faithfulness.py +0 -0
  852. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_frontmatter.py +0 -0
  853. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_fuzz_targets.py +0 -0
  854. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  855. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_gitleaks_config.py +0 -0
  856. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_gitutil.py +0 -0
  857. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_gitutil_lfs.py +0 -0
  858. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_gitutil_sparse.py +0 -0
  859. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_gstack_coexistence.py +0 -0
  860. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_hook_settings_hosts.py +0 -0
  861. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_hookhost.py +0 -0
  862. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_imperative.py +0 -0
  863. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_import_budget.py +0 -0
  864. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_injectscan.py +0 -0
  865. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_install_permission_error.py +0 -0
  866. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_installscan.py +0 -0
  867. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_integrity.py +0 -0
  868. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_journal.py +0 -0
  869. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_jsonstate.py +0 -0
  870. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_langchain_packaging.py +0 -0
  871. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_link_ownership.py +0 -0
  872. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_localembed.py +0 -0
  873. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_localembed_e2e.py +0 -0
  874. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_lockfile.py +0 -0
  875. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_logs.py +0 -0
  876. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_marketing_counts.py +0 -0
  877. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mcp.py +0 -0
  878. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mcp_install_scan.py +0 -0
  879. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mcp_read.py +0 -0
  880. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mcpdecl.py +0 -0
  881. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mcphost.py +0 -0
  882. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_measure_registry.py +0 -0
  883. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_minisign.py +0 -0
  884. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mutation_hardening.py +0 -0
  885. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mutation_subfile_shards.py +0 -0
  886. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_mutmut_source_paths.py +0 -0
  887. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_near_duplicate_collapse.py +0 -0
  888. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_nethttp.py +0 -0
  889. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_normalize_sdist.py +0 -0
  890. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_output.py +0 -0
  891. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_page_budget.py +0 -0
  892. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_paths.py +0 -0
  893. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_perf_gate.py +0 -0
  894. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_pkg_confusions.py +0 -0
  895. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_pkg_injection.py +0 -0
  896. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_pkg_secrets.py +0 -0
  897. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_platform_pins.py +0 -0
  898. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_policy.py +0 -0
  899. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_post_deploy_smoke.py +0 -0
  900. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_project_mcp_sidecar.py +0 -0
  901. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_projectlock.py +0 -0
  902. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_provenance.py +0 -0
  903. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_publish_golden_dataset.py +0 -0
  904. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_rag.py +0 -0
  905. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_rag_fastpath.py +0 -0
  906. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_rag_fusion.py +0 -0
  907. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_registries_fresh.py +0 -0
  908. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_registry.py +0 -0
  909. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_registry_categories.py +0 -0
  910. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_registry_control_chars.py +0 -0
  911. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_registry_parallel.py +0 -0
  912. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_release_guard.py +0 -0
  913. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_release_preflight.py +0 -0
  914. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_required_checks.py +0 -0
  915. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_rerank_cache.py +0 -0
  916. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_resolve.py +0 -0
  917. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  918. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_roadmap_fresh.py +0 -0
  919. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_rules.py +0 -0
  920. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_scale_corpus.py +0 -0
  921. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_scopes.py +0 -0
  922. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_secretscan.py +0 -0
  923. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_selfupdate.py +0 -0
  924. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_serve.py +0 -0
  925. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_serve_docs.py +0 -0
  926. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_shard_plan.py +0 -0
  927. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_shards.py +0 -0
  928. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_shards_incremental.py +0 -0
  929. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_shards_ingest.py +0 -0
  930. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_shards_matrix.py +0 -0
  931. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_smoke_covers_every_command.py +0 -0
  932. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_spdx_headers.py +0 -0
  933. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_spin.py +0 -0
  934. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_stackprobe.py +0 -0
  935. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_staleness.py +0 -0
  936. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_store_materialize.py +0 -0
  937. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  938. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_tap_pins.py +0 -0
  939. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_token_parity.py +0 -0
  940. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_toolchain_lock.py +0 -0
  941. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_trustaudit.py +0 -0
  942. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_typedvalue.py +0 -0
  943. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_typosquat.py +0 -0
  944. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_updatediff.py +0 -0
  945. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_util.py +0 -0
  946. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_version.py +0 -0
  947. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_version_tags.py +0 -0
  948. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_vex.py +0 -0
  949. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_visual_harness_flags.py +0 -0
  950. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_workflow_concurrency.py +0 -0
  951. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  952. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  953. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_workflow_timeouts.py +0 -0
  954. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_workflows.py +0 -0
  955. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  956. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/visual/a11y_check.mjs +0 -0
  957. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/visual/console_check.mjs +0 -0
  958. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/visual/package-lock.json +0 -0
  959. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/tests/visual/package.json +0 -0
  960. {boost_skill_cli-1.2.94 → boost_skill_cli-1.2.95}/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.94
3
+ Version: 1.2.95
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.94'
22
- __version_tuple__ = version_tuple = (1, 2, 94)
21
+ __version__ = version = '1.2.95'
22
+ __version_tuple__ = version_tuple = (1, 2, 95)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -664,6 +664,15 @@ def cmd_sync(argv: list[str]) -> int:
664
664
  out.info("%s → %s" % (item[0], item[1]))
665
665
  elif key == "missing_materializations":
666
666
  out.info("%s %s" % (item[0], item[1])) # (kind, name)
667
+ elif key == "blocked_links":
668
+ # (skill, agent, path) — the general str()-of-a-tuple
669
+ # fallback below prints this verbatim as
670
+ # "('brainstorming', 'windsurf', '/private/tmp/.../
671
+ # brainstorming')", which is what the live warning at the
672
+ # bottom of this command deliberately does not do.
673
+ name, agent, path = item
674
+ out.info("%s → %s (%s in the way)"
675
+ % (name, agent, _tilde(Path(path))))
667
676
  else:
668
677
  out.info(_tilde(item))
669
678
  return 0
@@ -699,9 +708,12 @@ def cmd_sync(argv: list[str]) -> int:
699
708
  left = [n for n in orphans if n not in pruned]
700
709
  blocked = plan["blocked_links"]
701
710
  if args.json:
711
+ # `sync --diff --json` above is indent=2; this printed one unindented
712
+ # line, so the two `--json` shapes of the same command disagreed on
713
+ # style for no reason tied to their content.
702
714
  print(json.dumps({"actions": actions, "pruned": pruned,
703
715
  "orphaned_store": left, "out_of_scope_links": oos,
704
- "blocked_links": blocked}))
716
+ "blocked_links": blocked}, indent=2))
705
717
  return 0
706
718
  for a in actions:
707
719
  out.ok(a)
@@ -1632,9 +1632,22 @@ def sync_plan() -> dict[str, list]:
1632
1632
  # is already "reinstall this skill from its tap", which is exactly what
1633
1633
  # a gutted directory needs, and reusing it means sync_apply needs no
1634
1634
  # change at all.
1635
- if not sdir.is_dir() or not (sdir / "SKILL.md").is_file():
1635
+ #
1636
+ # This used to `continue` here, which skipped agent-link classification
1637
+ # for the entry entirely — so a foreign file already occupying a link
1638
+ # path went unreported until a *second* `sync` noticed the repair had
1639
+ # not actually relinked that agent. The classification below reads
1640
+ # only the agent dir, never the store, so running it costs nothing
1641
+ # even while the store copy is still missing — see the `missing_store`
1642
+ # check further down, which still lets it feed `blocked_links` but
1643
+ # keeps it out of `missing_links`: `sync_apply` repairs a missing
1644
+ # store by reinstalling from the tap, which relinks every non-blocked
1645
+ # agent as one step, and that reinstall runs *after* this plan is
1646
+ # built, so a `missing_links` entry here would have `sync_apply` try
1647
+ # to link a store directory that does not exist yet.
1648
+ missing_store = not sdir.is_dir() or not (sdir / "SKILL.md").is_file()
1649
+ if missing_store:
1636
1650
  plan["missing_store"].append(name)
1637
- continue
1638
1651
  if entry.get("quarantined"):
1639
1652
  continue
1640
1653
  # A deliberate sideline (`focus`, `profile use`, `context apply`)
@@ -1659,11 +1672,11 @@ def sync_plan() -> dict[str, list]:
1659
1672
  # A symlink is boost's to replace even when it dangles; anything
1660
1673
  # else that exists is someone else's file and stays put.
1661
1674
  if link.is_symlink():
1662
- if not link.exists():
1675
+ if not link.exists() and not missing_store:
1663
1676
  plan["missing_links"].append((name, agent))
1664
1677
  elif link.exists():
1665
1678
  plan["blocked_links"].append((name, agent, str(link)))
1666
- else:
1679
+ elif not missing_store:
1667
1680
  plan["missing_links"].append((name, agent))
1668
1681
  # The other direction, which nothing checked: a link that exists in an
1669
1682
  # agent the declaration excludes. The loop above is narrowed to the
@@ -1802,7 +1815,11 @@ def sync_apply(plan: dict[str, list]) -> list[str]:
1802
1815
  p = Path(path)
1803
1816
  if p.is_symlink():
1804
1817
  p.unlink()
1805
- actions.append("removed stale link %s" % path)
1818
+ # `--diff` shows this same path tilde-contracted (`_tilde` in
1819
+ # commands/pkg.py); the raw absolute string here made the two
1820
+ # views of one path disagree in the exact case a user compares
1821
+ # them — planned vs. applied.
1822
+ actions.append("removed stale link %s" % paths.tilde(path))
1806
1823
  for name in plan["missing_store"]:
1807
1824
  entry = lockfile.get_skill(name) or {}
1808
1825
  tap_name = entry.get("tap")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.2.94
3
+ Version: 1.2.95
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -2,15 +2,15 @@
2
2
  id: audit-sync-findings
3
3
  board: code
4
4
  section: dx
5
- status: planned
5
+ status: shipped
6
6
  category: CLI · Bug
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 2
10
10
  note: "First sync run hides a blocked link; --diff prints it as a raw Python tuple"
11
11
  order: 293
12
- owner:
13
- pr:
12
+ owner: loop/sync-blocked-link-report
13
+ pr: 813
14
14
  title: "boost sync: CLI audit findings (2026-08)"
15
15
  ---
16
16
  <b>Repairing a missing store dir silently skips a blocked agent link — only a second run reports it.</b> With the store dir deleted and a foreign dir at <code>~/.windsurf/skills/brainstorming</code>: <code>sync --diff</code> showed only missing-store plus 4 stale links, nothing about windsurf; the first <code>sync</code> printed <em>"&#10003; reinstalled missing brainstorming from sickn33/antigravity-awesome-skills"</em> with no windsurf mention (the link was not created — lock agents ended as claude-code, cursor, antigravity); only a second <code>sync</code> said <em>"! 1 agent link could not be created: brainstorming &rarr; windsurf (~/.windsurf/skills/brainstorming in the way)…"</em>. Cause: <code>sync_plan</code> (<code>core/store.py:1471-1473</code>) <code>continue</code>s past link classification when the store dir is missing, and <code>sync_apply</code> (<code>store.py:1651</code>) discards <code>install()</code>'s <code>InstallResult</code>, whose <code>.conflicts</code> names the refused link. Surface those conflicts as blocked-link warnings and still classify agent links for a missing-store entry (or re-plan after repair). This is the residual missing-store case of the shipped fix — note it in <code>docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md</code>. Unit test: missing store + foreign dir reported in one run.
@@ -2,15 +2,15 @@
2
2
  id: mutation-shards-rerun-full-set-every-push
3
3
  board: code
4
4
  section: pipeline
5
- status: planned
5
+ status: inflight
6
6
  category: CI · Performance
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 2
10
10
  note: a re-push repays six ~20-min shards from zero; mutmut's .meta already holds the answers
11
11
  order: 307
12
- owner:
13
- pr:
12
+ owner: loop/mutation-shard-cache
13
+ pr: 801
14
14
  title: "Mutation shards re-run <em>every</em> mutant on every push of the same PR"
15
15
  ---
16
16
  <b>&ldquo;Mutation shard actions take about 20 minutes and re-run with each
@@ -9345,7 +9345,7 @@ about vectors that were refreshed that morning.</p></details>
9345
9345
  </article>
9346
9346
 
9347
9347
  <article class="cap rcard" id="mutation-shards-rerun-full-set-every-push">
9348
- <div class="head"><span class="pill planned">Planned</span><span class="cat">CI · Performance</span></div>
9348
+ <div class="head"><span class="pill inflight">In flight</span><span class="cat">CI · Performance</span></div>
9349
9349
  <h3>Mutation shards re-run <em>every</em> mutant on every push of the same PR</h3>
9350
9350
  <p><b>&ldquo;Mutation shard actions take about 20 minutes and re-run with each
9351
9351
  commit.&rdquo;</b> The user's words, and the workflow agrees: six
@@ -14110,13 +14110,14 @@ Found by the 2026-08 CLI audit (cluster <code>simulate-text-polish</code>); repr
14110
14110
  </article>
14111
14111
 
14112
14112
  <article class="cap rcard" id="audit-sync-findings">
14113
- <div class="head"><span class="pill planned">Planned</span><span class="cat">CLI · Bug</span></div>
14113
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">CLI · Bug</span></div>
14114
14114
  <h3>boost sync: CLI audit findings (2026-08)</h3>
14115
+ <details class="cardbody"><summary>Write-up</summary>
14115
14116
  <p><b>Repairing a missing store dir silently skips a blocked agent link — only a second run reports it.</b> With the store dir deleted and a foreign dir at <code>~/.windsurf/skills/brainstorming</code>: <code>sync --diff</code> showed only missing-store plus 4 stale links, nothing about windsurf; the first <code>sync</code> printed <em>"&#10003; reinstalled missing brainstorming from sickn33/antigravity-awesome-skills"</em> with no windsurf mention (the link was not created — lock agents ended as claude-code, cursor, antigravity); only a second <code>sync</code> said <em>"! 1 agent link could not be created: brainstorming &rarr; windsurf (~/.windsurf/skills/brainstorming in the way)…"</em>. Cause: <code>sync_plan</code> (<code>core/store.py:1471-1473</code>) <code>continue</code>s past link classification when the store dir is missing, and <code>sync_apply</code> (<code>store.py:1651</code>) discards <code>install()</code>'s <code>InstallResult</code>, whose <code>.conflicts</code> names the refused link. Surface those conflicts as blocked-link warnings and still classify agent links for a missing-store entry (or re-plan after repair). This is the residual missing-store case of the shipped fix — note it in <code>docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md</code>. Unit test: missing store + foreign dir reported in one run.
14116
14117
 
14117
14118
  <b><code>--diff</code> renders blocked links as a raw Python tuple, and the two modes disagree on formatting.</b> Observed: <em>"==&gt; agent links blocked by a foreign file (1)"</em> then <code>('brainstorming', 'windsurf', '/private/tmp/…/.windsurf/skills/brainstorming')</code> — <code>_PAIR_KEYS</code> (<code>commands/pkg.py:581-582</code>) covers only 2-tuples, so the 3-tuple falls to the <code>str()</code> else branch (<code>pkg.py:620-625</code>). Also apply says <em>"removed stale link /private/tmp/…/ghost"</em> where <code>--diff</code> shows <code>~/.claude/skills/ghost</code> (<code>store.py:1634</code> uses raw absolute paths), and <code>sync --diff --json</code> is indent=2 (<code>pkg.py:603</code>) while <code>sync --json</code> is one line (<code>pkg.py:660-662</code>). Fix in <code>cmd_sync</code>: a blocked_links branch printing <em>"brainstorming &rarr; windsurf (~/.windsurf/skills/brainstorming in the way)"</em>, <code>_tilde</code> paths in apply's action strings, one <code>json.dumps</code> style. No flag changes, so <code>docs/commands.html</code> needs no regeneration.
14118
14119
 
14119
- Found by the 2026-08 CLI audit (clusters <code>sync-blocked-link-report</code>, <code>sync-diff-formatting</code>); repro in the audit log.</p>
14120
+ Found by the 2026-08 CLI audit (clusters <code>sync-blocked-link-report</code>, <code>sync-diff-formatting</code>); repro in the audit log.</p></details>
14120
14121
  <div class="meta">
14121
14122
  <span class="m">Complexity <b>M</b></span>
14122
14123
  <span class="m">Impact <b>Med</b></span>
@@ -88,11 +88,13 @@ Usage
88
88
  mutation_shards.py plan --shards N --explain # the whole split + speedup cap
89
89
  mutation_shards.py merge --shards N --into mutants results/* # rebuild results
90
90
  mutation_shards.py weights --source mutants # refresh the balance hints
91
+ mutation_shards.py cache-key # hash half of a shard's actions/cache key
91
92
  """
92
93
  from __future__ import annotations
93
94
 
94
95
  import argparse
95
96
  import ast
97
+ import hashlib
96
98
  import json
97
99
  import sys
98
100
  from pathlib import Path
@@ -722,6 +724,76 @@ def cmd_scope(args: argparse.Namespace) -> int:
722
724
  return 0
723
725
 
724
726
 
727
+ # --------------------------------------------------------------------------
728
+ # cache key: reuse a shard's mutants/ results across pushes of the same PR
729
+ # --------------------------------------------------------------------------
730
+
731
+ # Same list as RELEVANT_PREFIXES, minus boost_cli/ itself. mutmut already
732
+ # reuses a source file's own results by content hash (per the module
733
+ # docstring's "Balance without a chicken-and-egg" -- mutmut's per-source
734
+ # hashing, not re-verified locally against the 3.7.0 pin here), so keying the
735
+ # actions/cache entry on boost_cli/ too would just repeat that reuse one
736
+ # level up, at the cost of evicting every mutant in the cache -- not just the
737
+ # ones in the file that changed -- on every core edit, which is most pushes.
738
+ # What mutmut does NOT re-derive on its own is which tests ran, which
739
+ # mutmut/pytest built the recorded exit codes, and the gate's own scripts;
740
+ # any of those changing must miss the cache and pay the full run, exactly as
741
+ # `is_relevant` already says for the scope job.
742
+ CACHE_KEY_PREFIXES = tuple(p for p in RELEVANT_PREFIXES if p != "boost_cli/")
743
+ CACHE_KEY_EXACT = RELEVANT_EXACT
744
+
745
+
746
+ def cache_key_paths(root: Path) -> list[Path]:
747
+ """Every file whose content can change a shard's cache key.
748
+
749
+ Mirrors ``is_relevant``'s own file list, minus ``boost_cli/`` (see
750
+ ``CACHE_KEY_PREFIXES``). A named file or directory that does not exist is
751
+ skipped rather than raising, so a fixture repo that only sets up part of
752
+ the tree still produces a stable key.
753
+ """
754
+ found: set[Path] = set()
755
+ for name in CACHE_KEY_EXACT:
756
+ path = root / name
757
+ if path.is_file():
758
+ found.add(path)
759
+ for prefix in CACHE_KEY_PREFIXES:
760
+ base = root / prefix
761
+ if base.is_dir():
762
+ found.update(f for f in base.rglob("*") if f.is_file())
763
+ elif base.is_file():
764
+ found.add(base)
765
+ return sorted(found)
766
+
767
+
768
+ def cache_key_hash(root: Path) -> str:
769
+ """A deterministic digest of every file ``cache_key_paths`` names.
770
+
771
+ Hashes content, not mtime or git status: a checkout's timestamps are not
772
+ reproducible across machines, but bytes are. Each file's path is folded
773
+ in alongside its content (relative to `root`, POSIX-normalized) so a
774
+ rename or an added/removed file changes the digest even when every
775
+ remaining file's bytes are untouched.
776
+ """
777
+ digest = hashlib.sha256()
778
+ for path in cache_key_paths(root):
779
+ digest.update(path.relative_to(root).as_posix().encode("utf-8"))
780
+ digest.update(b"\0")
781
+ digest.update(path.read_bytes())
782
+ digest.update(b"\0")
783
+ return digest.hexdigest()
784
+
785
+
786
+ def cmd_cache_key(args: argparse.Namespace) -> int:
787
+ """Print the hash half of a mutation shard's ``actions/cache`` key.
788
+
789
+ The workflow builds the full key itself (shard index + Python version +
790
+ this hash) -- this script has no reason to know either of the first two,
791
+ and folding them in here would just make the CI YAML a pass-through.
792
+ """
793
+ print(cache_key_hash(Path(args.root)))
794
+ return 0
795
+
796
+
725
797
  def cmd_weights(args: argparse.Namespace) -> int:
726
798
  """Record real mutant counts so the next split balances better.
727
799
 
@@ -827,6 +899,9 @@ def main() -> int:
827
899
  w.add_argument("--source", default="mutants", help="a mutants/ tree from a full run")
828
900
  w.set_defaults(func=cmd_weights)
829
901
 
902
+ k = sub.add_parser("cache-key", help="hash half of a shard's actions/cache key")
903
+ k.set_defaults(func=cmd_cache_key)
904
+
830
905
  args = ap.parse_args()
831
906
  return args.func(args)
832
907
 
@@ -399,6 +399,39 @@ class TestSync:
399
399
  assert link.is_symlink() and link.exists()
400
400
  assert not ghost.is_symlink()
401
401
 
402
+ def test_diff_renders_a_blocked_link_as_a_readable_line(self, boost, installed):
403
+ # `blocked_links` rows are (skill, agent, path) 3-tuples. `_PAIR_KEYS`
404
+ # only special-cases 2-tuples, so this used to fall through to the
405
+ # generic `str()` branch and print the raw Python tuple, e.g.
406
+ # "('brainstorming', 'cursor', '/private/tmp/.../cursor/skills/
407
+ # brainstorming')".
408
+ link = paths.home() / ".cursor" / "skills" / "brainstorming"
409
+ link.unlink()
410
+ link.mkdir() # a foreign real directory
411
+
412
+ r = boost("sync", "--diff")
413
+ assert "agent links blocked by a foreign file (1)" in r.out
414
+ assert "brainstorming → cursor" in r.out
415
+ assert "in the way" in r.out
416
+ assert "('brainstorming'" not in r.out, "printed the raw Python tuple"
417
+
418
+ def test_a_blocked_link_behind_a_missing_store_is_reported_in_one_run(
419
+ self, boost, installed):
420
+ # The residual case: repairing a missing store dir used to skip agent
421
+ # link classification entirely, so a foreign file already in the way
422
+ # went unreported until a *second* `sync` — this run must surface it
423
+ # in the very first one, right alongside the reinstall.
424
+ link = paths.home() / ".cursor" / "skills" / "brainstorming"
425
+ link.unlink()
426
+ link.mkdir()
427
+ shutil.rmtree(paths.store_dir() / "brainstorming")
428
+
429
+ r = boost("sync")
430
+ assert "reinstalled missing brainstorming" in r.out
431
+ assert "could not be created" in r.out
432
+ assert "brainstorming → cursor" in r.out
433
+ assert "in the way" in r.out
434
+
402
435
  def test_orphan_reported_and_pruned(self, boost, installed):
403
436
  orphan = paths.store_dir() / "orphan-x"
404
437
  orphan.mkdir()
@@ -376,6 +376,135 @@ def test_same_basename_in_different_packages_stays_distinct(tmp_path):
376
376
  assert pats == {"boost_cli.core.util.*", "boost_cli.core.rag.util.*"}
377
377
 
378
378
 
379
+ # --------------------------------------------------------------------------
380
+ # cache-key: the hash half of a shard's actions/cache key
381
+ # --------------------------------------------------------------------------
382
+
383
+ def _cache_repo(tmp_path):
384
+ """A fake checkout with one file under every CACHE_KEY_PREFIXES entry,
385
+ plus a core source file and an irrelevant doc, so a single fixture can
386
+ exercise inclusion, exclusion, and irrelevance in one place."""
387
+ (tmp_path / "boost_cli" / "core").mkdir(parents=True)
388
+ (tmp_path / "boost_cli" / "core" / "store.py").write_text("x = 1\n")
389
+ (tmp_path / "tests").mkdir()
390
+ (tmp_path / "tests" / "test_store.py").write_text("def test_a(): pass\n")
391
+ (tmp_path / "requirements").mkdir()
392
+ (tmp_path / "requirements" / "mutation-tools.txt").write_text("mutmut==3.7.0\n")
393
+ (tmp_path / "scripts").mkdir()
394
+ (tmp_path / "scripts" / "mutation_gate.py").write_text("# gate\n")
395
+ (tmp_path / "scripts" / "mutation_shards.py").write_text("# shards\n")
396
+ (tmp_path / ".github" / "workflows").mkdir(parents=True)
397
+ (tmp_path / ".github" / "workflows" / "ci.yml").write_text("name: ci\n")
398
+ (tmp_path / "setup.cfg").write_text("[mutmut]\n")
399
+ (tmp_path / "pyproject.toml").write_text("[project]\n")
400
+ (tmp_path / "docs").mkdir()
401
+ (tmp_path / "docs" / "index.html").write_text("<html></html>\n")
402
+ return tmp_path
403
+
404
+
405
+ def test_cache_key_paths_covers_every_prefix_and_excludes_core(tmp_path):
406
+ repo = _cache_repo(tmp_path)
407
+ names = {p.relative_to(repo).as_posix() for p in ms.cache_key_paths(repo)}
408
+ assert names == {
409
+ "tests/test_store.py",
410
+ "requirements/mutation-tools.txt",
411
+ "scripts/mutation_gate.py",
412
+ "scripts/mutation_shards.py",
413
+ ".github/workflows/ci.yml",
414
+ "setup.cfg",
415
+ "pyproject.toml",
416
+ }
417
+ assert "boost_cli/core/store.py" not in names
418
+ assert "docs/index.html" not in names
419
+
420
+
421
+ def test_cache_key_paths_skips_missing_files(tmp_path):
422
+ """A fixture repo that only sets up part of the tree still works."""
423
+ (tmp_path / "tests").mkdir()
424
+ (tmp_path / "tests" / "test_a.py").write_text("x = 1\n")
425
+ assert [p.name for p in ms.cache_key_paths(tmp_path)] == ["test_a.py"]
426
+
427
+
428
+ def test_cache_key_hash_is_deterministic(tmp_path):
429
+ repo = _cache_repo(tmp_path)
430
+ first = ms.cache_key_hash(repo)
431
+ for _ in range(3):
432
+ assert ms.cache_key_hash(repo) == first
433
+
434
+
435
+ def test_cache_key_hash_changes_when_a_relevant_file_changes(tmp_path):
436
+ repo = _cache_repo(tmp_path)
437
+ before = ms.cache_key_hash(repo)
438
+ (repo / "tests" / "test_store.py").write_text("def test_a(): assert False\n")
439
+ assert ms.cache_key_hash(repo) != before
440
+
441
+
442
+ def test_cache_key_hash_changes_when_the_gate_scripts_change(tmp_path):
443
+ repo = _cache_repo(tmp_path)
444
+ before = ms.cache_key_hash(repo)
445
+ (repo / "scripts" / "mutation_gate.py").write_text("# gate v2\n")
446
+ assert ms.cache_key_hash(repo) != before
447
+
448
+
449
+ def test_cache_key_hash_changes_when_ci_yml_changes(tmp_path):
450
+ repo = _cache_repo(tmp_path)
451
+ before = ms.cache_key_hash(repo)
452
+ (repo / ".github" / "workflows" / "ci.yml").write_text("name: ci\non: push\n")
453
+ assert ms.cache_key_hash(repo) != before
454
+
455
+ def test_cache_key_hash_ignores_core_source_changes(tmp_path):
456
+ """The whole point: mutmut's own per-file hashing already handles
457
+ boost_cli/ reuse, so the cache key must not evict on a core-only edit."""
458
+ repo = _cache_repo(tmp_path)
459
+ before = ms.cache_key_hash(repo)
460
+ (repo / "boost_cli" / "core" / "store.py").write_text("x = 2\n")
461
+ assert ms.cache_key_hash(repo) == before
462
+
463
+
464
+ def test_cache_key_hash_ignores_irrelevant_files(tmp_path):
465
+ repo = _cache_repo(tmp_path)
466
+ before = ms.cache_key_hash(repo)
467
+ (repo / "docs" / "index.html").write_text("<html>changed</html>\n")
468
+ (repo / "README.md").write_text("hello\n")
469
+ assert ms.cache_key_hash(repo) == before
470
+
471
+
472
+ def test_cache_key_hash_changes_on_a_new_relevant_file(tmp_path):
473
+ """Content alone is not enough: adding a file must also change the key,
474
+ or a brand-new test would silently reuse a cache that never ran it."""
475
+ repo = _cache_repo(tmp_path)
476
+ before = ms.cache_key_hash(repo)
477
+ (repo / "tests" / "test_new.py").write_text("def test_b(): pass\n")
478
+ assert ms.cache_key_hash(repo) != before
479
+
480
+
481
+ def test_cache_key_hash_distinguishes_same_bytes_at_different_paths(tmp_path):
482
+ """Renaming a same-content file must change the key: the path is hashed
483
+ in too, not just the concatenated bytes."""
484
+ repo_a = tmp_path / "a"
485
+ (repo_a / "tests").mkdir(parents=True)
486
+ (repo_a / "tests" / "test_one.py").write_text("x = 1\n")
487
+ repo_b = tmp_path / "b"
488
+ (repo_b / "tests").mkdir(parents=True)
489
+ (repo_b / "tests" / "test_two.py").write_text("x = 1\n")
490
+ assert ms.cache_key_hash(repo_a) != ms.cache_key_hash(repo_b)
491
+
492
+
493
+ def test_cache_key_hash_is_a_hex_sha256(tmp_path):
494
+ repo = _cache_repo(tmp_path)
495
+ key = ms.cache_key_hash(repo)
496
+ assert len(key) == 64
497
+ int(key, 16) # raises ValueError if not valid hex
498
+
499
+
500
+ def test_cmd_cache_key_prints_the_hash(tmp_path, capsys):
501
+ repo = _cache_repo(tmp_path)
502
+ rc = ms.cmd_cache_key(_ns(root=str(repo)))
503
+ assert rc == 0
504
+ out = capsys.readouterr().out.strip()
505
+ assert out == ms.cache_key_hash(repo)
506
+
507
+
379
508
  def test_pattern_is_dotted_on_every_platform(monkeypatch):
380
509
  """The dotted prefix must not depend on the OS path separator.
381
510
 
@@ -1015,7 +1015,10 @@ class TestSyncApply:
1015
1015
  ghost = paths.home() / ".claude" / "skills" / "ghost"
1016
1016
  ghost.symlink_to(paths.store_dir() / "ghost")
1017
1017
  actions = store.sync_apply(store.sync_plan())
1018
- assert actions == ["removed stale link %s" % ghost]
1018
+ # Tilde-contracted so this action string agrees with what `--diff`
1019
+ # shows for the same path (`_tilde` in commands/pkg.py) — the raw
1020
+ # absolute form used to make the two views disagree.
1021
+ assert actions == ["removed stale link %s" % paths.tilde(ghost)]
1019
1022
  assert not ghost.is_symlink()
1020
1023
 
1021
1024
  def test_missing_store_reinstalled_from_tap(self, brainstorming):
@@ -25,7 +25,7 @@ from pathlib import Path
25
25
 
26
26
  import pytest
27
27
 
28
- from boost_cli.core import agents, catalog, registry, store
28
+ from boost_cli.core import agents, catalog, registry, store, util
29
29
 
30
30
 
31
31
  def _agent_path(agent, name="brainstorming"):
@@ -100,6 +100,71 @@ class TestBlockedLinks:
100
100
  assert not any("linked brainstorming" in a for a in actions)
101
101
 
102
102
 
103
+ class TestBlockedLinkWithMissingStore:
104
+ """The residual case of the fix above: the store copy is ALSO gone.
105
+
106
+ Observed for real, as a closed loop across three commands: with the store
107
+ dir deleted and a foreign directory sitting at
108
+ ``~/.windsurf/skills/brainstorming``, ``sync --diff`` named only the
109
+ missing store and said nothing about windsurf; the live ``sync`` then
110
+ "repaired" it — reinstalling the store, relinking every agent it could —
111
+ with no mention of windsurf either; only a *second* ``sync`` finally
112
+ reported the blocked link. ``sync_plan`` used to ``continue`` the moment it
113
+ classified an entry as ``missing_store``, skipping the agent-link
114
+ classification below entirely — even though that classification reads only
115
+ the agent directory, never the store, so it never needed the store dir to
116
+ exist in the first place.
117
+ """
118
+
119
+ def test_missing_store_and_blocked_link_appear_in_the_same_plan(
120
+ self, brainstorming):
121
+ link = _agent_path("windsurf")
122
+ link.unlink()
123
+ link.mkdir() # a foreign real dir, as before
124
+ util.rmtree(store.skill_store_dir("brainstorming"))
125
+
126
+ plan = store.sync_plan()
127
+
128
+ assert "brainstorming" in plan["missing_store"]
129
+ assert any(n == "brainstorming" and a == "windsurf"
130
+ for n, a, *_ in plan["blocked_links"]), (
131
+ "a foreign file blocking a link must be reported the same run "
132
+ "the store copy is found missing, not held back for a second "
133
+ "`sync` to discover")
134
+ assert ("brainstorming", "windsurf") not in plan["missing_links"]
135
+
136
+ def test_the_other_agents_still_repair_in_one_pass(self, brainstorming):
137
+ # Only windsurf is blocked; claude-code, cursor and antigravity's
138
+ # links are merely dangling (their target just vanished) and must
139
+ # still come back once the store is restored — the fix must not cost
140
+ # the ordinary repair to catch the blocked one.
141
+ link = _agent_path("windsurf")
142
+ link.unlink()
143
+ link.mkdir()
144
+ util.rmtree(store.skill_store_dir("brainstorming"))
145
+
146
+ actions = store.sync_apply(store.sync_plan())
147
+
148
+ assert any("reinstalled missing brainstorming" in a for a in actions)
149
+ assert _agent_path("claude-code").is_symlink()
150
+ assert _agent_path("claude-code").exists()
151
+ # windsurf stays blocked — sync never deletes a file it does not own.
152
+ assert _agent_path("windsurf").is_dir()
153
+ assert not _agent_path("windsurf").is_symlink()
154
+
155
+ def test_a_healthy_missing_store_repair_is_unaffected(self, brainstorming):
156
+ # No blocked link at all: the classic case from PR #515 must keep
157
+ # working exactly as before — a missing-store entry's own agents
158
+ # never enter `missing_links` (the reinstall in `sync_apply` relinks
159
+ # them as one step), and none of them are blocked either.
160
+ util.rmtree(store.skill_store_dir("brainstorming"))
161
+ plan = store.sync_plan()
162
+ assert "brainstorming" in plan["missing_store"]
163
+ assert plan["blocked_links"] == []
164
+ for agent in ("claude-code", "cursor", "windsurf"):
165
+ assert ("brainstorming", agent) not in plan["missing_links"]
166
+
167
+
103
168
  class TestDoctorNamesAReachableRemedy:
104
169
  def test_doctor_does_not_prescribe_sync_for_a_blocked_link(self, brainstorming, capsys):
105
170
  from boost_cli.commands import quality
File without changes
File without changes