boost-skill-cli 1.2.98__tar.gz → 1.2.100__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 (973) hide show
  1. {boost_skill_cli-1.2.98/boost_skill_cli.egg-info → boost_skill_cli-1.2.100}/PKG-INFO +3 -1
  2. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/README.md +2 -0
  3. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost +3 -3
  4. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/_version.py +2 -2
  5. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/cli.py +141 -71
  6. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/_common.py +2 -0
  7. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/configuration.py +71 -33
  8. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/discovery.py +85 -68
  9. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/info.py +161 -38
  10. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/intelligence.py +16 -4
  11. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/pkg.py +15 -6
  12. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/quality.py +24 -23
  13. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/safety.py +2 -2
  14. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/taps.py +39 -6
  15. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/team.py +186 -47
  16. boost_skill_cli-1.2.100/boost_cli/core/cohort.py +46 -0
  17. boost_skill_cli-1.2.100/boost_cli/core/deps.py +118 -0
  18. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/imperative.py +12 -3
  19. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/journal.py +49 -0
  20. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/lockfile.py +36 -0
  21. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/mcphost.py +53 -0
  22. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/output.py +17 -7
  23. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/rag.py +11 -1
  24. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/registry.py +23 -0
  25. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/store.py +42 -15
  26. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/util.py +37 -0
  27. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100/boost_skill_cli.egg-info}/PKG-INFO +3 -1
  28. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_skill_cli.egg-info/SOURCES.txt +5 -0
  29. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/adapters.html +1 -1
  30. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/commands.html +43 -43
  31. boost_skill_cli-1.2.100/docs/demo.gif +0 -0
  32. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/index.html +12 -12
  33. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +3 -3
  34. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-cohort-findings.md +4 -4
  35. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-deps-findings.md +18 -3
  36. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-discover-findings.md +3 -3
  37. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-edit-findings.md +3 -3
  38. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +3 -3
  39. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +6 -4
  40. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +2 -2
  41. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-mcp-findings.md +3 -3
  42. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-onboard-findings.md +3 -3
  43. boost_skill_cli-1.2.100/docs/roadmap/items/audit-protocol-findings.md +16 -0
  44. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-pulse-findings.md +23 -3
  45. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-quarantine-findings.md +3 -3
  46. boost_skill_cli-1.2.100/docs/roadmap/items/audit-reindex-findings.md +20 -0
  47. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-simulate-findings.md +4 -4
  48. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-tap-findings.md +3 -3
  49. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-test-findings.md +3 -3
  50. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-trust-findings.md +14 -2
  51. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-unpin-findings.md +3 -3
  52. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap.html +99 -40
  53. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/setup.cfg +1 -0
  54. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/discover.feature +3 -2
  55. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/mcp.feature +15 -2
  56. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/steps/mcp_steps.py +15 -0
  57. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_configuration.py +121 -2
  58. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_discovery.py +67 -11
  59. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_info.py +158 -4
  60. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_intelligence.py +39 -0
  61. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_pkg.py +6 -0
  62. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_quality.py +60 -0
  63. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_taps.py +35 -3
  64. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_team.py +227 -2
  65. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_everyday_loop.py +1 -1
  66. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_integrity_enforce.py +12 -0
  67. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_tap_signing.py +31 -0
  68. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/smoke.sh +6 -0
  69. boost_skill_cli-1.2.100/tests/unit/test_cohort.py +71 -0
  70. boost_skill_cli-1.2.100/tests/unit/test_deps.py +132 -0
  71. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_errors_and_cli_table.py +139 -0
  72. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_imperative.py +36 -0
  73. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_journal.py +84 -0
  74. boost_skill_cli-1.2.100/tests/unit/test_launcher_python_floor.py +48 -0
  75. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_lockfile.py +113 -0
  76. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mcphost.py +96 -0
  77. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_output.py +49 -0
  78. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_rag.py +18 -1
  79. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_registry.py +49 -0
  80. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_registry_control_chars.py +2 -0
  81. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_store.py +70 -0
  82. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_util.py +68 -0
  83. boost_skill_cli-1.2.98/docs/demo.gif +0 -0
  84. boost_skill_cli-1.2.98/docs/roadmap/items/audit-protocol-findings.md +0 -16
  85. boost_skill_cli-1.2.98/docs/roadmap/items/audit-reindex-findings.md +0 -20
  86. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.gitattributes +0 -0
  87. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.gitignore +0 -0
  88. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.gitleaks.toml +0 -0
  89. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.htmlvalidate.json +0 -0
  90. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.lighthouserc.json +0 -0
  91. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.lycheeignore +0 -0
  92. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.markdownlint-cli2.jsonc +0 -0
  93. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.pre-commit-config.yaml +0 -0
  94. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.stylelintrc.json +0 -0
  95. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.vale/styles/boost/AIWriting.yml +0 -0
  96. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.vale/styles/boost/Terminology.yml +0 -0
  97. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  98. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/.vale.ini +0 -0
  99. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/CLAUDE.md +0 -0
  100. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/CODE_OF_CONDUCT.md +0 -0
  101. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/CONTRIBUTING.md +0 -0
  102. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/DCO +0 -0
  103. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/GOVERNANCE.md +0 -0
  104. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/LICENSE +0 -0
  105. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/MAINTAINERS.md +0 -0
  106. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/MANIFEST.in +0 -0
  107. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/Makefile +0 -0
  108. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/SECURITY.md +0 -0
  109. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/SUPPORT.md +0 -0
  110. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/__init__.py +0 -0
  111. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/__main__.py +0 -0
  112. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/cliparse.py +0 -0
  113. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/__init__.py +0 -0
  114. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/bmad.py +0 -0
  115. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/hooks.py +0 -0
  116. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/quickstart.py +0 -0
  117. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/commands/run.py +0 -0
  118. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/__init__.py +0 -0
  119. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/adapters.py +0 -0
  120. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/agents.py +0 -0
  121. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/ai.py +0 -0
  122. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/aihost.py +0 -0
  123. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/archive.py +0 -0
  124. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/bmad.py +0 -0
  125. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/bootstrap.py +0 -0
  126. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/browse.py +0 -0
  127. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/builtin.py +0 -0
  128. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/capabilities.py +0 -0
  129. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/catalog.py +0 -0
  130. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/catalogbundle.py +0 -0
  131. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/chat.py +0 -0
  132. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/claude_settings.py +0 -0
  133. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/complete.py +0 -0
  134. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/config.py +0 -0
  135. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/dense.py +0 -0
  136. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/discovery.py +0 -0
  137. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/ed25519.py +0 -0
  138. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/embed.py +0 -0
  139. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/faithfulness.py +0 -0
  140. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/frontmatter.py +0 -0
  141. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/gitutil.py +0 -0
  142. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/hookhost.py +0 -0
  143. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/injectscan.py +0 -0
  144. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/installscan.py +0 -0
  145. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/integrity.py +0 -0
  146. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/jsonstate.py +0 -0
  147. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/localembed.py +0 -0
  148. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/logs.py +0 -0
  149. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/mcp.py +0 -0
  150. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/mcpdecl.py +0 -0
  151. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/minisign.py +0 -0
  152. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/nethttp.py +0 -0
  153. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/paths.py +0 -0
  154. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/policy.py +0 -0
  155. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/projectlock.py +0 -0
  156. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/provenance.py +0 -0
  157. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/resolve.py +0 -0
  158. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/rules.py +0 -0
  159. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/scopes.py +0 -0
  160. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/secretscan.py +0 -0
  161. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/selfupdate.py +0 -0
  162. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/serve.py +0 -0
  163. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/shards.py +0 -0
  164. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/stackprobe.py +0 -0
  165. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/staleness.py +0 -0
  166. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/trustaudit.py +0 -0
  167. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/typedvalue.py +0 -0
  168. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/typosquat.py +0 -0
  169. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/updatediff.py +0 -0
  170. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/core/workflows.py +0 -0
  171. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/data/registries.json +0 -0
  172. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/data/rules/boost-first.mdc +0 -0
  173. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/errors.py +0 -0
  174. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_cli/spin.py +0 -0
  175. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_langchain/__init__.py +0 -0
  176. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_langchain/_compat.py +0 -0
  177. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_langchain/graph.py +0 -0
  178. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_langchain/loader.py +0 -0
  179. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_langchain/py.typed +0 -0
  180. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_langchain/retriever.py +0 -0
  181. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  182. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  183. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_skill_cli.egg-info/requires.txt +0 -0
  184. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/boost_skill_cli.egg-info/top_level.txt +0 -0
  185. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/codecov.yml +0 -0
  186. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/.claude/settings.local.json +0 -0
  187. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/DEBUGGING.md +0 -0
  188. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/architecture/README.md +0 -0
  189. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/architecture/c4-components-core.md +0 -0
  190. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/architecture/c4-containers.md +0 -0
  191. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/architecture/c4-context.md +0 -0
  192. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/architecture/c4-dynamic-install.md +0 -0
  193. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/bmad.md +0 -0
  194. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/distill.gif +0 -0
  195. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/doctor.gif +0 -0
  196. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/explain.gif +0 -0
  197. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/hooks.gif +0 -0
  198. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/install.gif +0 -0
  199. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/pulse.gif +0 -0
  200. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/search.gif +0 -0
  201. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/gifs/tap.gif +0 -0
  202. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/distill.tape +0 -0
  203. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/doctor.tape +0 -0
  204. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/explain.tape +0 -0
  205. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/hooks.tape +0 -0
  206. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/install.tape +0 -0
  207. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/pulse.tape +0 -0
  208. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/search.tape +0 -0
  209. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel/tapes/tap.tape +0 -0
  210. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/carousel.html +0 -0
  211. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/chat.html +0 -0
  212. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/code-review.md +0 -0
  213. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/commit-audit.md +0 -0
  214. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/demo-index.json +0 -0
  215. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/demo.html +0 -0
  216. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/demo.tape +0 -0
  217. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/dependencies.md +0 -0
  218. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/design-roadmap.html +0 -0
  219. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/eval-latest.json +0 -0
  220. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/eval.html +0 -0
  221. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/langchain.html +0 -0
  222. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/mcp-hub.html +0 -0
  223. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/openssf-badge.md +0 -0
  224. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/openssf-playbook.md +0 -0
  225. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/rag-architecture.md +0 -0
  226. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D01.md +0 -0
  227. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D02.md +0 -0
  228. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D03.md +0 -0
  229. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D04.md +0 -0
  230. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D05.md +0 -0
  231. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D06.md +0 -0
  232. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D07.md +0 -0
  233. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D08.md +0 -0
  234. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D09.md +0 -0
  235. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D10.md +0 -0
  236. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D11.md +0 -0
  237. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D12.md +0 -0
  238. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D13.md +0 -0
  239. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D14.md +0 -0
  240. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D15.md +0 -0
  241. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D16.md +0 -0
  242. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D17.md +0 -0
  243. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D18.md +0 -0
  244. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D19.md +0 -0
  245. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D20.md +0 -0
  246. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D21.md +0 -0
  247. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D22.md +0 -0
  248. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D23.md +0 -0
  249. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D24.md +0 -0
  250. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D25.md +0 -0
  251. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D26.md +0 -0
  252. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/BOOST-D27.md +0 -0
  253. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  254. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  255. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  256. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  257. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  258. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ai-backend-fanout.md +0 -0
  259. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  260. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  261. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  262. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  263. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-absorb-findings.md +0 -0
  264. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-adapt-findings.md +0 -0
  265. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
  266. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
  267. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
  268. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-attest-findings.md +0 -0
  269. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-audit-findings.md +0 -0
  270. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-bmad-findings.md +0 -0
  271. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-browse-findings.md +0 -0
  272. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-bundle-findings.md +0 -0
  273. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-catalog-findings.md +0 -0
  274. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
  275. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-changelog-findings.md +0 -0
  276. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-chat-findings.md +0 -0
  277. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
  278. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-completions-findings.md +0 -0
  279. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-config-findings.md +0 -0
  280. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
  281. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-context-findings.md +0 -0
  282. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
  283. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
  284. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-create-findings.md +0 -0
  285. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
  286. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
  287. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-doctor-findings.md +0 -0
  288. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-drift-findings.md +0 -0
  289. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
  290. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-evolve-findings.md +0 -0
  291. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-explain-findings.md +0 -0
  292. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-export-findings.md +0 -0
  293. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
  294. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
  295. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
  296. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
  297. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
  298. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-health-findings.md +0 -0
  299. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
  300. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
  301. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-import-findings.md +0 -0
  302. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-index-findings.md +0 -0
  303. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
  304. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-install-findings.md +0 -0
  305. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
  306. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-lint-findings.md +0 -0
  307. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-log-findings.md +0 -0
  308. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
  309. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
  310. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
  311. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
  312. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
  313. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-outdated-findings.md +0 -0
  314. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
  315. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
  316. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-policy-findings.md +0 -0
  317. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-preview-findings.md +0 -0
  318. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-profile-findings.md +0 -0
  319. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
  320. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
  321. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
  322. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-recommend-findings.md +0 -0
  323. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
  324. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-replay-findings.md +0 -0
  325. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-root-findings.md +0 -0
  326. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
  327. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-run-findings.md +0 -0
  328. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-schedule-findings.md +0 -0
  329. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-search-findings.md +0 -0
  330. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
  331. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
  332. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
  333. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
  334. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
  335. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
  336. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
  337. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-sync-findings.md +0 -0
  338. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-tag-findings.md +0 -0
  339. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
  340. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-taps-findings.md +0 -0
  341. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
  342. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
  343. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-untap-findings.md +0 -0
  344. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-update-findings.md +0 -0
  345. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
  346. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-verify-findings.md +0 -0
  347. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/audit-who-findings.md +0 -0
  348. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  349. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
  350. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  351. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
  352. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
  353. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
  354. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/boost-first-rule.md +0 -0
  355. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
  356. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  357. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/branch-current-gate.md +0 -0
  358. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  359. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  360. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
  361. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  362. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  363. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  364. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  365. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
  366. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
  367. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
  368. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  369. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  370. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  371. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  372. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  373. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  374. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
  375. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/cli-command-audit.md +0 -0
  376. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
  377. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  378. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  379. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
  380. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/command-carousel-page.md +0 -0
  381. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  382. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  383. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
  384. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  385. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
  386. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  387. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  388. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  389. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  390. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  391. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
  392. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
  393. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  394. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  395. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
  396. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
  397. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
  398. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  399. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
  400. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
  401. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  402. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  403. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  404. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
  405. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  406. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
  407. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  408. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  409. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  410. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  411. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
  412. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  413. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
  414. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  415. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  416. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  417. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  418. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  419. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  420. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
  421. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
  422. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  423. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  424. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  425. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  426. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  427. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  428. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  429. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  430. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  431. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
  432. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  433. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
  434. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
  435. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
  436. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/github-community-health-files.md +0 -0
  437. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  438. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  439. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  440. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
  441. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  442. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  443. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  444. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  445. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  446. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  447. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/install-path-disambiguation.md +0 -0
  448. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  449. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  450. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  451. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  452. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  453. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  454. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  455. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  456. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  457. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
  458. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  459. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  460. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
  461. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  462. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  463. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  464. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  465. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  466. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  467. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  468. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  469. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  470. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  471. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
  472. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  473. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  474. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  475. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  476. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  477. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  478. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  479. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
  480. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
  481. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  482. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
  483. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  484. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  485. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  486. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  487. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  488. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  489. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  490. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  491. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  492. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  493. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  494. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
  495. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  496. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  497. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  498. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  499. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  500. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  501. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  502. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  503. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  504. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
  505. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  506. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  507. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
  508. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  509. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  510. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  511. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  512. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  513. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  514. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
  515. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
  516. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/openssf-playbook.md +0 -0
  517. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/openssf-silver.md +0 -0
  518. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/osps-baseline-levels.md +0 -0
  519. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  520. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  521. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  522. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
  523. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
  524. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  525. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  526. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  527. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  528. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  529. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  530. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  531. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  532. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  533. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  534. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  535. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  536. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  537. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  538. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
  539. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  540. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
  541. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  542. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  543. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  544. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
  545. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  546. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
  547. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  548. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  549. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  550. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  551. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/relicence-apache-2.md +0 -0
  552. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
  553. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  554. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  555. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  556. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  557. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  558. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  559. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  560. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  561. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  562. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  563. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  564. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  565. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  566. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  567. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  568. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  569. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  570. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  571. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  572. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  573. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  574. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
  575. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
  576. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  577. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  578. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  579. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  580. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  581. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  582. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
  583. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
  584. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
  585. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  586. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
  587. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
  588. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
  589. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
  590. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  591. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/shrink-the-published-index.md +0 -0
  592. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  593. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  594. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
  595. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  596. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  597. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  598. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  599. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  600. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  601. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
  602. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
  603. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  604. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  605. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
  606. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  607. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
  608. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
  609. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
  610. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
  611. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  612. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
  613. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
  614. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
  615. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  616. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  617. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  618. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  619. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  620. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
  621. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  622. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  623. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  624. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  625. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  626. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/vex-openvex-feed.md +0 -0
  627. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  628. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
  629. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  630. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  631. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  632. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  633. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  634. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  635. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/workspace-scope-install.md +0 -0
  636. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/zip-strict-audit.md +0 -0
  637. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
  638. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  639. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/security-design.md +0 -0
  640. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/semantic-search.md +0 -0
  641. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
  642. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/verifying-releases.md +0 -0
  643. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/vex/meta.md +0 -0
  644. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/vex/openvex.json +0 -0
  645. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
  646. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
  647. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
  648. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
  649. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/eslint.config.mjs +0 -0
  650. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/README.md +0 -0
  651. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/__init__.py +0 -0
  652. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/baseline.json +0 -0
  653. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/faithfulness.py +0 -0
  654. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/golden_set.json +0 -0
  655. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/make_corpus.py +0 -0
  656. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/make_golden.py +0 -0
  657. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/metrics.py +0 -0
  658. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/publish_golden_dataset.py +0 -0
  659. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/evals/run_evals.py +0 -0
  660. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/examples/README.md +0 -0
  661. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/examples/adapt-demo.sh +0 -0
  662. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/examples/boost-run-prototype.sh +0 -0
  663. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/index.html +0 -0
  664. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/noxfile.py +0 -0
  665. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/pyproject.toml +0 -0
  666. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/coverage-tools.in +0 -0
  667. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/coverage-tools.txt +0 -0
  668. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/lint-tools.in +0 -0
  669. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/lint-tools.txt +0 -0
  670. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/mutation-tools.in +0 -0
  671. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/mutation-tools.txt +0 -0
  672. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/platform-pins.lock +0 -0
  673. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/release-tools.in +0 -0
  674. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/release-tools.txt +0 -0
  675. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/test-tools.in +0 -0
  676. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/requirements/test-tools.txt +0 -0
  677. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/a11y_check.py +0 -0
  678. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/add_spdx_headers.py +0 -0
  679. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/bench_cli.sh +0 -0
  680. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/build_command_reference.py +0 -0
  681. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/build_demo_index.py +0 -0
  682. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/build_registries.py +0 -0
  683. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/build_roadmap.py +0 -0
  684. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/build_scale_corpus.py +0 -0
  685. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/build_vex.py +0 -0
  686. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/check_anchors.py +0 -0
  687. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/check_branch_current.py +0 -0
  688. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/check_dco.py +0 -0
  689. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/check_licenses.py +0 -0
  690. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/check_reproducible.py +0 -0
  691. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/check_required_checks.py +0 -0
  692. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/ensure_eval_corpus.sh +0 -0
  693. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/eval_corpus.py +0 -0
  694. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/eval_explain.py +0 -0
  695. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/eval_gate.py +0 -0
  696. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/eval_recommend.py +0 -0
  697. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/eval_retrieval.py +0 -0
  698. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/eval_stats_summary.py +0 -0
  699. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/eval_tools.py +0 -0
  700. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/import_budget.py +0 -0
  701. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/lock_toolchain.py +0 -0
  702. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/measure_near_duplicate_bound.py +0 -0
  703. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/measure_registry.py +0 -0
  704. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/mutation_gate.py +0 -0
  705. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/mutation_shards.py +0 -0
  706. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/mutation_weights.json +0 -0
  707. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/normalize_sdist.py +0 -0
  708. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/page_budget.py +0 -0
  709. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/perf_gate.py +0 -0
  710. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/post_deploy_smoke.py +0 -0
  711. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/publish_eval_json.py +0 -0
  712. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/publish_shards.py +0 -0
  713. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/release_guard.py +0 -0
  714. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/release_preflight.py +0 -0
  715. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/serve_docs.py +0 -0
  716. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/scripts/shard_plan.py +0 -0
  717. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/sonar-project.properties +0 -0
  718. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/style/README.md +0 -0
  719. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/style/boost.css +0 -0
  720. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/style/boost.js +0 -0
  721. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/style/demo.html +0 -0
  722. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/adapt.feature +0 -0
  723. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/browse.feature +0 -0
  724. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/count.feature +0 -0
  725. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/doctor.feature +0 -0
  726. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/environment.py +0 -0
  727. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/explain.feature +0 -0
  728. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/index.feature +0 -0
  729. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/install.feature +0 -0
  730. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/list.feature +0 -0
  731. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/search.feature +0 -0
  732. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/steps/cli_steps.py +0 -0
  733. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/steps/discovery_steps.py +0 -0
  734. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/bdd/features/steps/quality_steps.py +0 -0
  735. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/conftest.py +0 -0
  736. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/baseline.json +0 -0
  737. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/explain.jsonl +0 -0
  738. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
  739. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/golden-natural.jsonl +0 -0
  740. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/golden.jsonl +0 -0
  741. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/recommend.jsonl +0 -0
  742. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/taps-scale.txt +0 -0
  743. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/taps.txt +0 -0
  744. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/eval/tool_calls.jsonl +0 -0
  745. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_bmad_all_hosts.py +0 -0
  746. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_capabilities_policy.py +0 -0
  747. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_adapt.py +0 -0
  748. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_bmad.py +0 -0
  749. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_catalog.py +0 -0
  750. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_chat.py +0 -0
  751. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_hooks.py +0 -0
  752. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_hooks_gemini.py +0 -0
  753. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_pane_width.py +0 -0
  754. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_quickstart.py +0 -0
  755. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_cli_tap_pins.py +0 -0
  756. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_kind_conformance.py +0 -0
  757. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_property_parsers.py +0 -0
  758. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_run.py +0 -0
  759. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/functional/test_workspace_scope.py +0 -0
  760. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/README.md +0 -0
  761. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  762. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  763. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  764. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  765. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  766. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  767. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  768. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  769. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  770. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  771. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  772. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  773. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  774. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  775. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  776. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  777. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  778. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  779. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  780. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  781. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
  782. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
  783. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
  784. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/fuzz_frontmatter.py +0 -0
  785. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/fuzz/fuzz_registry.py +0 -0
  786. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/langchain/conftest.py +0 -0
  787. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/langchain/test_graph.py +0 -0
  788. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/langchain/test_loader.py +0 -0
  789. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/langchain/test_retriever.py +0 -0
  790. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/make_fixture.py +0 -0
  791. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/perf/test_benchmarks.py +0 -0
  792. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_a11y_check.py +0 -0
  793. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_action_pin_lockstep.py +0 -0
  794. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_adapters.py +0 -0
  795. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_adapters_multi.py +0 -0
  796. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_adapters_runner.py +0 -0
  797. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_agents.py +0 -0
  798. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_ai.py +0 -0
  799. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_aihost.py +0 -0
  800. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_archive.py +0 -0
  801. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_bmad_core.py +0 -0
  802. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_boost_first_offer.py +0 -0
  803. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_bootstrap.py +0 -0
  804. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_bot_pr_dco.py +0 -0
  805. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_branch_current.py +0 -0
  806. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_browse.py +0 -0
  807. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_builtin.py +0 -0
  808. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_capabilities.py +0 -0
  809. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_catalog.py +0 -0
  810. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_catalogbundle.py +0 -0
  811. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_chat.py +0 -0
  812. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_check_anchors.py +0 -0
  813. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_check_dco.py +0 -0
  814. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_check_licenses.py +0 -0
  815. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_check_reproducible.py +0 -0
  816. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_claude_settings.py +0 -0
  817. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_clean_internal_cache.py +0 -0
  818. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_cli_update_shards.py +0 -0
  819. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_cliparse.py +0 -0
  820. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_codeql_analysis_key.py +0 -0
  821. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_command_reference_fresh.py +0 -0
  822. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_community_health_files.py +0 -0
  823. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_compact.py +0 -0
  824. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_complete.py +0 -0
  825. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_complete_rc_block.py +0 -0
  826. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_config.py +0 -0
  827. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_content_dedupe.py +0 -0
  828. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_content_identity.py +0 -0
  829. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_crash_redaction.py +0 -0
  830. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dedup_trust.py +0 -0
  831. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_demo_index.py +0 -0
  832. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense.py +0 -0
  833. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
  834. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_embed_dedupe.py +0 -0
  835. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_entry_reuse.py +0 -0
  836. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_entry_vectors.py +0 -0
  837. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_fallback.py +0 -0
  838. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_fix_hint.py +0 -0
  839. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_progress.py +0 -0
  840. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_quantized.py +0 -0
  841. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_ready_order.py +0 -0
  842. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_shard_real_schema.py +0 -0
  843. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
  844. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_shards.py +0 -0
  845. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_status.py +0 -0
  846. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_status_cheap.py +0 -0
  847. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dense_vector_dedupe.py +0 -0
  848. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_dependabot_config.py +0 -0
  849. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_discovery.py +0 -0
  850. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_distill_merge.py +0 -0
  851. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_docs_pages_linked.py +0 -0
  852. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_docsite_chrome.py +0 -0
  853. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_doctor_output_polish.py +0 -0
  854. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_drift_hint.py +0 -0
  855. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_ed25519.py +0 -0
  856. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_embed.py +0 -0
  857. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_embed_local.py +0 -0
  858. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_embed_truncated_response.py +0 -0
  859. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_entry_key.py +0 -0
  860. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_baseline.py +0 -0
  861. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_corpus.py +0 -0
  862. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_faithfulness.py +0 -0
  863. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_gate.py +0 -0
  864. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_grading.py +0 -0
  865. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_metrics.py +0 -0
  866. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_stats_summary.py +0 -0
  867. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_tools.py +0 -0
  868. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_eval_tools_probe.py +0 -0
  869. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
  870. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_faithfulness.py +0 -0
  871. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_frontmatter.py +0 -0
  872. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_fuzz_targets.py +0 -0
  873. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_gemini_agent_sanitize.py +0 -0
  874. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_gitleaks_config.py +0 -0
  875. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_gitutil.py +0 -0
  876. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_gitutil_lfs.py +0 -0
  877. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_gitutil_sparse.py +0 -0
  878. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_gstack_coexistence.py +0 -0
  879. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_hook_settings_hosts.py +0 -0
  880. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_hookhost.py +0 -0
  881. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_import_budget.py +0 -0
  882. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_injectscan.py +0 -0
  883. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_install_permission_error.py +0 -0
  884. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_installscan.py +0 -0
  885. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_integrity.py +0 -0
  886. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_jsonstate.py +0 -0
  887. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_langchain_packaging.py +0 -0
  888. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_link_ownership.py +0 -0
  889. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_localembed.py +0 -0
  890. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_localembed_e2e.py +0 -0
  891. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_logs.py +0 -0
  892. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_marketing_counts.py +0 -0
  893. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mcp.py +0 -0
  894. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mcp_install_scan.py +0 -0
  895. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mcp_read.py +0 -0
  896. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mcpdecl.py +0 -0
  897. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_measure_registry.py +0 -0
  898. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_minisign.py +0 -0
  899. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mutation_hardening.py +0 -0
  900. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mutation_shards.py +0 -0
  901. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mutation_subfile_shards.py +0 -0
  902. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_mutmut_source_paths.py +0 -0
  903. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_near_duplicate_collapse.py +0 -0
  904. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_nethttp.py +0 -0
  905. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_normalize_sdist.py +0 -0
  906. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_page_budget.py +0 -0
  907. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_paths.py +0 -0
  908. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_perf_gate.py +0 -0
  909. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_pkg_confusions.py +0 -0
  910. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_pkg_injection.py +0 -0
  911. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_pkg_secrets.py +0 -0
  912. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_platform_pins.py +0 -0
  913. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_policy.py +0 -0
  914. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_post_deploy_smoke.py +0 -0
  915. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_project_mcp_sidecar.py +0 -0
  916. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_projectlock.py +0 -0
  917. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_provenance.py +0 -0
  918. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_publish_golden_dataset.py +0 -0
  919. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_rag_fastpath.py +0 -0
  920. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_rag_fusion.py +0 -0
  921. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_registries_fresh.py +0 -0
  922. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_registry_categories.py +0 -0
  923. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_registry_parallel.py +0 -0
  924. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_release_guard.py +0 -0
  925. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_release_preflight.py +0 -0
  926. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_required_checks.py +0 -0
  927. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_rerank_cache.py +0 -0
  928. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_resolve.py +0 -0
  929. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
  930. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_roadmap_fresh.py +0 -0
  931. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_rules.py +0 -0
  932. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_scale_corpus.py +0 -0
  933. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_schedule_plist.py +0 -0
  934. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_scopes.py +0 -0
  935. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_secretscan.py +0 -0
  936. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_selfupdate.py +0 -0
  937. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_serve.py +0 -0
  938. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_serve_docs.py +0 -0
  939. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_shard_plan.py +0 -0
  940. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_shards.py +0 -0
  941. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_shards_incremental.py +0 -0
  942. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_shards_ingest.py +0 -0
  943. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_shards_matrix.py +0 -0
  944. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_smoke_covers_every_command.py +0 -0
  945. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_spdx_headers.py +0 -0
  946. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_spin.py +0 -0
  947. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_stackprobe.py +0 -0
  948. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_staleness.py +0 -0
  949. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_store_materialize.py +0 -0
  950. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_sync_blocked_links.py +0 -0
  951. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
  952. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_tap_pins.py +0 -0
  953. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_token_parity.py +0 -0
  954. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_toolchain_lock.py +0 -0
  955. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_trustaudit.py +0 -0
  956. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_typedvalue.py +0 -0
  957. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_typosquat.py +0 -0
  958. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_updatediff.py +0 -0
  959. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_version.py +0 -0
  960. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_version_tags.py +0 -0
  961. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_vex.py +0 -0
  962. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_visual_harness_flags.py +0 -0
  963. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_workflow_concurrency.py +0 -0
  964. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_workflow_concurrency_groups.py +0 -0
  965. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_workflow_push_has_credentials.py +0 -0
  966. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_workflow_timeouts.py +0 -0
  967. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_workflows.py +0 -0
  968. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
  969. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/visual/a11y_check.mjs +0 -0
  970. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/visual/console_check.mjs +0 -0
  971. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/visual/package-lock.json +0 -0
  972. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/tests/visual/package.json +0 -0
  973. {boost_skill_cli-1.2.98 → boost_skill_cli-1.2.100}/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.98
3
+ Version: 1.2.100
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License-Expression: Apache-2.0
@@ -468,6 +468,7 @@ is the whole setup.
468
468
  boost mcp register # every installed host (default: --host auto)
469
469
  boost mcp register --host gemini # just one
470
470
  boost mcp register --no-seed # register only; tap nothing
471
+ boost mcp register --dry-run # print the resolved command per host; change nothing
471
472
  boost mcp unregister # same host selection, in reverse
472
473
  ```
473
474
 
@@ -479,6 +480,7 @@ purely local operation, for CI images and air-gapped machines.
479
480
  |------|-----|---------------|
480
481
  | Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
481
482
  | Gemini CLI | `gemini` | `gemini mcp add -s user` → `~/.gemini/settings.json` |
483
+ | Antigravity CLI | `agy` | `agy mcp add` → `~/.gemini/config/mcp_config.json` |
482
484
 
483
485
  Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
484
486
  `boost_read`, `boost_install`, `boost_doctor` and
@@ -426,6 +426,7 @@ is the whole setup.
426
426
  boost mcp register # every installed host (default: --host auto)
427
427
  boost mcp register --host gemini # just one
428
428
  boost mcp register --no-seed # register only; tap nothing
429
+ boost mcp register --dry-run # print the resolved command per host; change nothing
429
430
  boost mcp unregister # same host selection, in reverse
430
431
  ```
431
432
 
@@ -437,6 +438,7 @@ purely local operation, for CI images and air-gapped machines.
437
438
  |------|-----|---------------|
438
439
  | Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
439
440
  | Gemini CLI | `gemini` | `gemini mcp add -s user` → `~/.gemini/settings.json` |
441
+ | Antigravity CLI | `agy` | `agy mcp add` → `~/.gemini/config/mcp_config.json` |
440
442
 
441
443
  Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
442
444
  `boost_read`, `boost_install`, `boost_doctor` and
@@ -2,7 +2,7 @@
2
2
  # Copyright the boost contributors.
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
  # boost — Homebrew for AI coding skills.
5
- # Thin shim: finds Python 3.9+, runs the boost_cli package that lives
5
+ # Thin shim: finds Python 3.12+, runs the boost_cli package that lives
6
6
  # next to this script (resolving symlinks, so `ln -s .../boost ~/bin/boost`
7
7
  # just works). No PyPI, no Artifactory — stdlib only.
8
8
  set -euo pipefail
@@ -24,7 +24,7 @@ fi
24
24
  find_python() {
25
25
  for py in python3 python; do
26
26
  if command -v "$py" >/dev/null 2>&1; then
27
- if "$py" -c 'import sys; sys.exit(0 if sys.version_info >= (3, 9) else 1)' 2>/dev/null; then
27
+ if "$py" -c 'import sys; sys.exit(0 if sys.version_info >= (3, 12) else 1)' 2>/dev/null; then
28
28
  echo "$py"
29
29
  return 0
30
30
  fi
@@ -34,7 +34,7 @@ find_python() {
34
34
  }
35
35
 
36
36
  PY="$(find_python)" || {
37
- echo "boost: Python 3.9+ is required but was not found on PATH" >&2
37
+ echo "boost: Python 3.12+ is required but was not found on PATH" >&2
38
38
  echo " hint: brew install python3" >&2
39
39
  exit 1
40
40
  }
@@ -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.98'
22
- __version_tuple__ = version_tuple = (1, 2, 98)
21
+ __version__ = version = '1.2.100'
22
+ __version_tuple__ = version_tuple = (1, 2, 100)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -11,6 +11,7 @@ from __future__ import annotations
11
11
  import contextlib
12
12
  import difflib
13
13
  import importlib
14
+ import os
14
15
  import sys
15
16
  import time
16
17
 
@@ -51,20 +52,20 @@ GROUPS = {
51
52
  COMMANDS = [
52
53
  # Package Management (13)
53
54
  ("install", "pkg", "pkg", "Install a skill from a tap registry"),
54
- ("uninstall", "pkg", "pkg", "Remove an installed skill, rule, workflow, or config"),
55
+ ("uninstall", "pkg", "pkg", "Remove an installed skill, rule, or workflow"),
55
56
  ("sync", "pkg", "pkg", "Reconcile installed skills & symlinks against the lock file"),
56
57
  ("update", "pkg", "pkg", "Sync taps or update installed skills"),
57
- ("reinstall", "pkg", "pkg", "Reinstall a skill or all skills (force)"),
58
+ ("reinstall", "pkg", "pkg", "Reinstall a skill, rule or workflow (force)"),
58
59
  ("bundle", "pkg", "pkg", "Export/install skill sets via a Boostfile"),
59
60
  ("import", "pkg", "pkg", "Import skills from a GitHub URL or local path"),
60
- ("pin", "pkg", "pkg", "Pin a skill to its current version"),
61
- ("unpin", "pkg", "pkg", "Allow a pinned skill to update again"),
61
+ ("pin", "pkg", "pkg", "Pin a skill, rule or workflow to its current version"),
62
+ ("unpin", "pkg", "pkg", "Allow a pinned skill, rule or workflow to update again"),
62
63
  ("snapshot", "pkg", "pkg", "Save & restore whole skill environments"),
63
64
  ("export", "pkg", "pkg", "Package skills as shareable zip/tar archives"),
64
- ("adapt", "pkg", "pkg", "Render a skill as another framework's agent source (CrewAI, Agents SDK)"),
65
+ ("adapt", "pkg", "pkg", "Render a skill as another framework's agent source (CrewAI, Agents SDK, LangGraph)"),
65
66
  ("run", "pkg", "run", "Adapt a skill, wire tools & run it as a live agent"),
66
67
  # Discovery & Search (9)
67
- ("search", "find", "discovery", "Search skills across tap registries (AI-ranked)"),
68
+ ("search", "find", "discovery", "Search skills across tap registries (BM25; --smart reranks with Claude)"),
68
69
  ("reindex", "find", "discovery", "Build/refresh the full-content search index"),
69
70
  ("discover", "find", "discovery", "Search GitHub for skill repos you have not tapped yet"),
70
71
  ("recommend", "find", "discovery", "Suggest skills based on your project's tech stack"),
@@ -85,10 +86,10 @@ COMMANDS = [
85
86
  ("deps", "info", "info", "Show dependency & conflict relationships"),
86
87
  ("tag", "info", "info", "Custom labels for organizing skills"),
87
88
  # Registry (Taps) (5)
88
- ("tap", "tap", "taps", "Add a GitHub repo as a skill registry"),
89
+ ("tap", "tap", "taps", "Add a git URL, GitHub repo, or local directory as a skill registry"),
89
90
  ("untap", "tap", "taps", "Remove a registry tap"),
90
91
  ("taps", "tap", "taps", "List all configured registry taps"),
91
- ("outdated", "tap", "taps", "Show skills with available updates"),
92
+ ("outdated", "tap", "taps", "Show skills, rules & workflows with available updates"),
92
93
  ("catalog", "tap", "taps", "Share the tapped catalogue so others skip the clone"),
93
94
  # Intelligence (9)
94
95
  ("chat", "ai", "intelligence", "Ask about skills in plain language (RAG-grounded)"),
@@ -99,7 +100,7 @@ COMMANDS = [
99
100
  ("evolve", "ai", "intelligence", "Iteratively improve a skill from feedback"),
100
101
  ("context", "ai", "intelligence", "Branch-aware skill activation"),
101
102
  ("focus", "ai", "intelligence", "Temporarily prioritize skills for a work session"),
102
- ("impact", "ai", "intelligence", "Measure a skill's influence on code quality"),
103
+ ("impact", "ai", "intelligence", "Correlate a skill's install date with repo activity"),
103
104
  # Quality & Health (15)
104
105
  ("doctor", "chk", "quality", "Check installation health & report issues"),
105
106
  ("lint", "chk", "quality", "Validate SKILL.md frontmatter & quality"),
@@ -108,7 +109,7 @@ COMMANDS = [
108
109
  ("drift", "chk", "quality", "Detect installed skills diverging from source"),
109
110
  ("test", "chk", "quality", "Validate installed skills against quality checks"),
110
111
  ("fingerprint", "chk", "quality", "Deterministic hash of the skill environment"),
111
- ("quarantine", "chk", "safety", "Isolate a problematic skill without uninstalling"),
112
+ ("quarantine", "chk", "safety", "Isolate a problematic skill, rule or workflow without uninstalling"),
112
113
  ("decay", "chk", "quality", "Flag skills irrelevant to your current stack"),
113
114
  ("heal", "chk", "quality", "Self-diagnose & repair the boost environment"),
114
115
  ("conflict", "chk", "quality", "Detect contradictory rules between skills"),
@@ -123,11 +124,11 @@ COMMANDS = [
123
124
  ("compact", "cfg", "configuration", "Shrink tap clones to the files boost indexes"),
124
125
  ("create", "cfg", "configuration", "Scaffold a new skill from a template"),
125
126
  ("policy", "cfg", "configuration", "Manage & enforce skill governance policies"),
126
- ("onboard", "cfg", "configuration", "Add skill-tracker telemetry to a repo & open a PR"),
127
+ ("onboard", "cfg", "configuration", "Add skill-tracker telemetry to a repo (optionally open a PR with --pr)"),
127
128
  ("completions", "cfg", "configuration", "Generate shell tab-completion scripts"),
128
129
  ("schedule", "cfg", "configuration", "Manage automatic skill-sync scheduling"),
129
130
  ("serve", "cfg", "configuration", "Browse the catalogue in a browser: search, facets and a tap graph"),
130
- ("mcp", "cfg", "configuration", "Register boost as an MCP server (Claude Code, Gemini CLI)"),
131
+ ("mcp", "cfg", "configuration", "Register boost as an MCP server (Claude Code, Gemini CLI, Antigravity CLI)"),
131
132
  ("hooks", "cfg", "hooks", "Manage agent hooks (Claude Code, Gemini CLI) in settings.json"),
132
133
  ("bmad", "cfg", "bmad", "BMAD Method autopilot — `bmad on` routes every task to a persona"),
133
134
  ("self-update", "cfg", "configuration", "Update boost itself to the latest version"),
@@ -195,6 +196,9 @@ def print_help() -> None:
195
196
  else:
196
197
  print(usage)
197
198
  print(" " + detail)
199
+ print(out.c(
200
+ "Options: -V/--version -v/--verbose --debug -q/--quiet",
201
+ out.DIM))
198
202
 
199
203
  width = max(len(n) for n, _, _, _ in COMMANDS)
200
204
  for idx, (gkey, (_icon, title, desc)) in enumerate(GROUPS.items()):
@@ -220,6 +224,21 @@ def print_help() -> None:
220
224
 
221
225
 
222
226
  def print_command_help(name: str) -> int:
227
+ # `main`'s own aliases (-h/--help, -V/--version/version, help itself)
228
+ # never appear in COMMANDS, so `boost help --help` used to fall straight
229
+ # into `_unknown` and get difflib-guessed at an unrelated command
230
+ # (`--help` -> "heal", `version` -> "verify"). Resolve them the same way
231
+ # `main` does before treating the name as an unrecognized command.
232
+ if name in ("-h", "--help"):
233
+ print_help()
234
+ return 0
235
+ if name in ("-V", "--version", "version"):
236
+ print_version()
237
+ return 0
238
+ if name == "help":
239
+ print(out.c("boost help [COMMAND]", out.BOLD)
240
+ + " — show this index, or one command's own --help")
241
+ return 0
223
242
  meta = resolve(name)
224
243
  if not meta:
225
244
  return _unknown(name)
@@ -237,6 +256,13 @@ def _crash_hint(report) -> str:
237
256
 
238
257
 
239
258
  def _unknown(name: str) -> int:
259
+ # A dash-prefixed token is a mistyped flag, not a command guess — nothing
260
+ # in _BY_NAME is a plausible correction for e.g. `--hepl`, and guessing
261
+ # one anyway ("did you mean: heal?") reads as a wrong command suggestion
262
+ # rather than what actually happened.
263
+ if name.startswith("-"):
264
+ out.err("unknown option: %s" % name, hint="see `boost --help`")
265
+ return 2
240
266
  close = difflib.get_close_matches(name, list(_BY_NAME), n=3)
241
267
  out.err("unknown command: %s" % name,
242
268
  hint=("did you mean: %s?" % ", ".join(close)) if close
@@ -286,6 +312,102 @@ def _extract_globals(argv: list[str]) -> tuple[dict, list[str]]:
286
312
  return opts, argv[i:]
287
313
 
288
314
 
315
+ def _seal_broken_stdout() -> None:
316
+ """Stop CPython's own exit-time flush from re-raising BrokenPipeError.
317
+
318
+ A downstream reader closing early (``boost --help | head``) does not
319
+ raise the moment boost prints — small writes fit the pipe's kernel buffer
320
+ and succeed silently, so the error only surfaces on the next explicit
321
+ flush. Left unhandled it surfaces on the *interpreter's own* final flush
322
+ of stdout at shutdown, which happens outside any of boost's try/except
323
+ blocks: Python prints "Exception ignored on flushing sys.stdout:
324
+ BrokenPipeError" straight to stderr and the process exits non-zero.
325
+ Redirecting the fd to devnull means that final flush lands somewhere
326
+ that cannot raise.
327
+ """
328
+ with contextlib.suppress(Exception):
329
+ sys.stdout.flush()
330
+ with contextlib.suppress(Exception):
331
+ devnull = os.open(os.devnull, os.O_WRONLY)
332
+ try:
333
+ os.dup2(devnull, sys.stdout.fileno())
334
+ finally:
335
+ os.close(devnull)
336
+
337
+
338
+ def _route(argv: list[str]) -> int:
339
+ try:
340
+ if not argv or argv[0] in ("-h", "--help"):
341
+ print_help()
342
+ return 0
343
+ if argv[0] in ("-V", "--version", "version"):
344
+ print_version()
345
+ return 0
346
+ if argv[0] == "help":
347
+ if len(argv) > 1:
348
+ return print_command_help(argv[1])
349
+ print_help()
350
+ return 0
351
+ name, rest = argv[0], argv[1:]
352
+ if name in _PLUMBING:
353
+ # Before the _BY_NAME guard (it is not a command) and before
354
+ # log_invocation: this runs on every TAB, and logging a line per
355
+ # keystroke would bury the diagnostic log in completion noise.
356
+ return _PLUMBING[name](rest)
357
+ if name not in _BY_NAME:
358
+ return _unknown(name)
359
+ logs.log_invocation([name, *rest])
360
+ start = time.perf_counter()
361
+ rc = 70 # assume the worst until a handler proves otherwise
362
+ try:
363
+ rc = _dispatch(name, rest)
364
+ return rc
365
+ except BoostError as e:
366
+ logs.get_logger().info("BoostError: %s", e.message)
367
+ rc = 1
368
+ out.err(e.message, hint=e.hint)
369
+ return rc
370
+ except KeyboardInterrupt:
371
+ logs.get_logger().debug("interrupted by user")
372
+ rc = 130
373
+ print()
374
+ return rc
375
+ except BrokenPipeError:
376
+ # Reclassify before `except Exception` below can mistake a
377
+ # closed pipe for a crash and write a spurious crash report.
378
+ rc = 0
379
+ return rc
380
+ except SystemExit as e:
381
+ # argparse (--help, usage errors) exits via SystemExit, which is
382
+ # a BaseException and so skips the `except Exception` below
383
+ # entirely — left uncaught, the trail journaled the preset rc=70
384
+ # for every benign --help and usage exit instead of the real 0
385
+ # or 2.
386
+ code = e.code
387
+ rc = 0 if code is None else code if isinstance(code, int) else 1
388
+ raise
389
+ except Exception as e:
390
+ report = logs.write_crash_report(e, [name, *rest])
391
+ if logs.is_debug():
392
+ raise
393
+ out.err("boost hit an unexpected error: %s: %s"
394
+ % (type(e).__name__, e),
395
+ hint=_crash_hint(report))
396
+ return 70 # EX_SOFTWARE
397
+ finally:
398
+ # Bookend every invocation with its exit code + duration, even
399
+ # when the --debug path re-raises the traceback above.
400
+ logs.log_completion([name, *rest], rc,
401
+ (time.perf_counter() - start) * 1000)
402
+ finally:
403
+ # Force any buffered output through now, still inside `main`'s own
404
+ # BrokenPipeError handler below — a `--help`/`--version`/`count`
405
+ # write that merely fit the pipe's buffer never raised above, and
406
+ # would otherwise wait until the unhandled, uncatchable flush at
407
+ # interpreter shutdown to report the broken pipe.
408
+ sys.stdout.flush()
409
+
410
+
289
411
  def main(argv: list[str] | None = None) -> int:
290
412
  argv = list(sys.argv[1:] if argv is None else argv)
291
413
  out.harden_console_encoding()
@@ -297,64 +419,12 @@ def main(argv: list[str] | None = None) -> int:
297
419
  opts, argv = _extract_globals(argv)
298
420
  logs.configure(verbose=opts["verbose"], debug=opts["debug"],
299
421
  quiet=opts["quiet"])
300
- if not argv or argv[0] in ("-h", "--help"):
301
- print_help()
302
- return 0
303
- if argv[0] in ("-V", "--version", "version"):
304
- print_version()
305
- return 0
306
- if argv[0] == "help":
307
- if len(argv) > 1:
308
- return print_command_help(argv[1])
309
- print_help()
310
- return 0
311
- name, rest = argv[0], argv[1:]
312
- if name in _PLUMBING:
313
- # Before the _BY_NAME guard (it is not a command) and before
314
- # log_invocation: this runs on every TAB, and logging a line per
315
- # keystroke would bury the diagnostic log in completion noise.
316
- return _PLUMBING[name](rest)
317
- if name not in _BY_NAME:
318
- return _unknown(name)
319
- logs.log_invocation([name, *rest])
320
- start = time.perf_counter()
321
- rc = 70 # assume the worst until a handler proves otherwise
322
422
  try:
323
- rc = _dispatch(name, rest)
324
- return rc
325
- except BoostError as e:
326
- logs.get_logger().info("BoostError: %s", e.message)
327
- rc = 1
328
- out.err(e.message, hint=e.hint)
329
- return rc
330
- except KeyboardInterrupt:
331
- logs.get_logger().debug("interrupted by user")
332
- rc = 130
333
- print()
334
- return rc
423
+ return _route(argv)
335
424
  except BrokenPipeError:
336
- with contextlib.suppress(Exception):
337
- sys.stdout.close()
338
- rc = 0
339
- return rc
340
- except SystemExit as e:
341
- # argparse (--help, usage errors) exits via SystemExit, which is a
342
- # BaseException and so skips the `except Exception` below entirely —
343
- # left uncaught, the trail journaled the preset rc=70 for every
344
- # benign --help and usage exit instead of the real 0 or 2.
345
- code = e.code
346
- rc = 0 if code is None else code if isinstance(code, int) else 1
347
- raise
348
- except Exception as e:
349
- report = logs.write_crash_report(e, [name, *rest])
350
- if logs.is_debug():
351
- raise
352
- out.err("boost hit an unexpected error: %s: %s"
353
- % (type(e).__name__, e),
354
- hint=_crash_hint(report))
355
- return 70 # EX_SOFTWARE
356
- finally:
357
- # Bookend every invocation with its exit code + duration, even when the
358
- # --debug path re-raises the traceback above.
359
- logs.log_completion([name, *rest], rc,
360
- (time.perf_counter() - start) * 1000)
425
+ # Covers the early-return paths above (`--help`, `--version`,
426
+ # `help`, `__complete`) that have no try/except of their own, plus
427
+ # the final flush in `_route`'s own `finally` surfacing a pipe error
428
+ # the dispatch path's flush-free writes didn't.
429
+ _seal_broken_stdout()
430
+ return 0
@@ -80,6 +80,7 @@ def _iter_installed(names: list[str] | None = None) -> list[tuple[str, dict]]:
80
80
  """
81
81
  skills = lockfile.installed()
82
82
  if names:
83
+ names = list(dict.fromkeys(names)) # order-preserving dedupe
83
84
  missing, other_kind = [], []
84
85
  for n in names:
85
86
  if n in skills:
@@ -118,6 +119,7 @@ def _iter_installed_all(
118
119
  names: list[str] | None = None) -> list[tuple[str, str, dict]]:
119
120
  """[(kind, name, lock_entry)] across every section, or the given names."""
120
121
  if names:
122
+ names = list(dict.fromkeys(names)) # order-preserving dedupe
121
123
  out, missing = [], []
122
124
  for n in names:
123
125
  found = lockfile.find_any(n)
@@ -125,13 +125,21 @@ def cmd_config(argv) -> int:
125
125
  "`boost config unset` it first") from e
126
126
  val = config.get(args.key)
127
127
  journal.log("config", args.key, op="set")
128
+ if args.json:
129
+ print(json.dumps({"key": args.key, "value": val}))
130
+ return 0
128
131
  out.ok("set %s = %s"
129
132
  % (args.key, val if isinstance(val, str) else json.dumps(val)))
130
133
  return 0
131
134
 
132
135
  # unset
133
- if config.unset(args.key):
136
+ was_set = config.unset(args.key)
137
+ if was_set:
134
138
  journal.log("config", args.key, op="unset")
139
+ if args.json:
140
+ print(json.dumps({"key": args.key, "unset": was_set}))
141
+ return 0
142
+ if was_set:
135
143
  out.ok("unset %s" % args.key)
136
144
  else:
137
145
  out.info("%s not set" % args.key)
@@ -512,6 +520,9 @@ def cmd_policy(argv) -> int:
512
520
  pol[args.key] = _parse_policy_value(args.key, args.value)
513
521
  policy.save(pol)
514
522
  journal.log("policy", args.key, op="set")
523
+ if args.json:
524
+ print(json.dumps({"key": args.key, "value": pol[args.key]}))
525
+ return 0
515
526
  out.ok("set %s = %s" % (args.key, json.dumps(pol[args.key])))
516
527
  return 0
517
528
 
@@ -520,6 +531,9 @@ def cmd_policy(argv) -> int:
520
531
  pol[args.key] = policy.DEFAULTS[args.key]
521
532
  policy.save(pol)
522
533
  journal.log("policy", args.key, op="unset")
534
+ if args.json:
535
+ print(json.dumps({"key": args.key, "value": policy.DEFAULTS[args.key]}))
536
+ return 0
523
537
  out.ok("reset %s to default (%s)"
524
538
  % (args.key, json.dumps(policy.DEFAULTS[args.key])))
525
539
  return 0
@@ -715,7 +729,7 @@ def cmd_onboard(argv) -> int:
715
729
  """boost onboard [--repo DIR] [--pr] [--dry-run] [--force]"""
716
730
  p = cliparse.parser(
717
731
  prog="boost onboard",
718
- description="Add skill-tracker telemetry to a repo & open a PR")
732
+ description="Add skill-tracker telemetry to a repo (optionally open a PR with --pr)")
719
733
  p.add_argument("--repo", default=".", help="repository directory (default: .)")
720
734
  p.add_argument("--pr", action="store_true",
721
735
  help="commit on a branch and open a PR with `gh`")
@@ -740,7 +754,8 @@ def cmd_onboard(argv) -> int:
740
754
  files = [(_TELEMETRY_REL, telemetry), (_WORKFLOW_REL, _WORKFLOW_YML)]
741
755
  if repo != paths.store_dir().resolve():
742
756
  files.append((".skill-lock.json",
743
- json.dumps(lockfile.read(), indent=2, sort_keys=True) + "\n"))
757
+ json.dumps(lockfile.portable(lockfile.read()),
758
+ indent=2, sort_keys=True) + "\n"))
744
759
 
745
760
  if args.dry_run:
746
761
  for rel, content in files:
@@ -1690,29 +1705,26 @@ def _mcp_tool(tool: str, args: dict):
1690
1705
  return REGISTRY.call(tool, args)
1691
1706
 
1692
1707
 
1693
- #: Substrings an agent CLI uses to say "this server is already registered".
1694
- #: Registering twice is not a failure — it is the state the user asked for —
1695
- #: and treating it as one is what made `--host auto` abort on host one and
1696
- #: never reach host two on any machine where boost was already in Claude.
1697
- _ALREADY = ("already exists", "already registered", "already configured")
1698
-
1699
-
1700
1708
  def _run_mcp_host(host: str, action: str, cmd) -> tuple[str, str]:
1701
1709
  """Run one host's register/unregister argv.
1702
1710
 
1703
1711
  Returns ``(status, detail)`` where status is:
1704
1712
 
1705
- * ``"ran"`` — the CLI ran and succeeded;
1706
- * ``"already"`` — it reported the server is already in the state asked
1707
- for, which is success with a different wording;
1708
- * ``"missing"`` — the CLI is not installed. Not an error: most machines
1709
- have one agent CLI, not all of them;
1710
- * ``"failed"`` — it is installed and something else went wrong.
1713
+ * ``"ran"`` — the CLI ran and did what was asked;
1714
+ * ``"already"`` — register reported the server is already in that
1715
+ state, which is success with a different wording;
1716
+ * ``"not_registered"`` — unregister reported there was nothing to remove,
1717
+ likewise success with a different wording;
1718
+ * ``"missing"`` — the CLI is not installed. Not an error: most
1719
+ machines have one agent CLI, not all of them;
1720
+ * ``"failed"`` — it is installed and something else went wrong.
1711
1721
 
1712
1722
  It **returns** rather than raises so one host cannot end the sweep. That
1713
1723
  was the bug: a present CLI exiting non-zero raised straight out of the
1714
1724
  loop, so with boost already registered in Claude, `--host auto` died on
1715
- "already exists" and never reached the second agent.
1725
+ "already exists" and never reached the second agent. The text
1726
+ classification itself lives in :func:`mcphost.classify_result`, which is
1727
+ pure and mutation-tested without a real agent CLI on PATH.
1716
1728
  """
1717
1729
  exe = mcphost.cli(host)
1718
1730
  if not shutil.which(exe):
@@ -1723,13 +1735,8 @@ def _run_mcp_host(host: str, action: str, cmd) -> tuple[str, str]:
1723
1735
  return "failed", str(e)
1724
1736
  for ln in (proc.stdout or "").strip().splitlines():
1725
1737
  out.info(ln)
1726
- if proc.returncode == 0:
1727
- return "ran", ""
1728
- blob = ((proc.stderr or "") + (proc.stdout or "")).lower()
1729
- if action == "register" and any(k in blob for k in _ALREADY):
1730
- return "already", ""
1731
- tail = (proc.stderr or "").strip().splitlines()
1732
- return "failed", tail[-1] if tail else "unknown error"
1738
+ return mcphost.classify_result(action, proc.returncode,
1739
+ proc.stdout, proc.stderr)
1733
1740
 
1734
1741
 
1735
1742
  def _seed_catalog_for_mcp(force: bool) -> None:
@@ -1838,7 +1845,7 @@ def _offer_boost_first(hosts: list[str]) -> None:
1838
1845
 
1839
1846
 
1840
1847
  def cmd_mcp(argv) -> int:
1841
- """boost mcp [register|unregister] [--host H] [--stdio] [--seed|--no-seed]"""
1848
+ """boost mcp [register|unregister] [--host H] [--stdio] [--seed|--no-seed] [--dry-run]"""
1842
1849
  p = cliparse.parser(
1843
1850
  prog="boost mcp",
1844
1851
  description="Register boost as an MCP server for your agent CLIs")
@@ -1846,11 +1853,15 @@ def cmd_mcp(argv) -> int:
1846
1853
  choices=("register", "unregister"),
1847
1854
  help="what to do (default: register)")
1848
1855
  p.add_argument("--host", metavar="H", default="auto",
1849
- help="agent CLI to (un)register with: %s, or `auto` "
1850
- "(default) for every one that is installed"
1856
+ help="agent CLI to (un)register with: %s, `auto` "
1857
+ "(default) for every one that is installed, or "
1858
+ "`all` for every known host regardless of install"
1851
1859
  % ", ".join(mcphost.hosts()))
1852
1860
  p.add_argument("--stdio", action="store_true",
1853
1861
  help="run the MCP server on stdin/stdout (used by the agent)")
1862
+ p.add_argument("--dry-run", action="store_true",
1863
+ help="print the resolved command and install status per "
1864
+ "host; register or tap nothing")
1854
1865
  # Mutually exclusive: `--seed --no-seed` used to resolve silently to the
1855
1866
  # network-touching side, which is the wrong way for an ambiguous pair of
1856
1867
  # explicitly typed flags to break.
@@ -1872,6 +1883,25 @@ def cmd_mcp(argv) -> int:
1872
1883
  raise BoostError("unknown MCP host %r" % args.host,
1873
1884
  hint="known hosts: %s" % ", ".join(mcphost.hosts())) from e
1874
1885
 
1886
+ shim = str(paths.launcher())
1887
+ verb = "register" if args.action == "register" else "unregister"
1888
+
1889
+ if args.dry_run:
1890
+ # Before seeding and before any subprocess runs — the flag exists so
1891
+ # the argv boost would run is visible in the one case that mattered
1892
+ # (`--host gemini` with `gemini` on PATH), not only the one case that
1893
+ # was already visible for free (the CLI missing entirely).
1894
+ for host in targets:
1895
+ installed = shutil.which(mcphost.cli(host)) is not None
1896
+ cmd = mcphost.argv(host, args.action, shim)
1897
+ out.info("%s %s: %s" % (
1898
+ mcphost.label(host),
1899
+ out.role("(installed)" if installed else "(not installed)",
1900
+ "muted"),
1901
+ " ".join(cmd)))
1902
+ out.dim(" dry run — nothing was %sed, nothing tapped" % verb)
1903
+ return 0
1904
+
1875
1905
  # After the host name is validated and before anything is registered. The
1876
1906
  # ordering is not cosmetic in either direction: seeding first meant a
1877
1907
  # typo'd `--host` spent 14-45s and half a gigabyte before argparse's own
@@ -1880,12 +1910,14 @@ def cmd_mcp(argv) -> int:
1880
1910
  if args.action == "register" and (args.seed_ok or args.seed):
1881
1911
  _seed_catalog_for_mcp(args.seed)
1882
1912
 
1883
- shim = str(paths.launcher())
1884
1913
  # `auto` skips hosts that are not installed; naming a host explicitly (or
1885
1914
  # `all`) always reports it, so a user setting up a machine can see the argv
1886
- # for an agent CLI they have not installed yet.
1915
+ # for an agent CLI they have not installed yet. `named` is narrower than
1916
+ # `explicit`: it excludes `all`, which — like `auto` — deliberately shows
1917
+ # every host's argv without treating "not installed" as a failure.
1887
1918
  explicit = args.host not in (None, "", "auto")
1888
- done, already, missing, failed = [], [], [], {}
1919
+ named = mcphost.is_named(args.host)
1920
+ done, already, not_registered, missing, failed = [], [], [], [], {}
1889
1921
  for host in targets:
1890
1922
  cmd = mcphost.argv(host, args.action, shim)
1891
1923
  status, detail = _run_mcp_host(host, args.action, cmd)
@@ -1893,6 +1925,8 @@ def cmd_mcp(argv) -> int:
1893
1925
  done.append(host)
1894
1926
  elif status == "already":
1895
1927
  already.append(host)
1928
+ elif status == "not_registered":
1929
+ not_registered.append(host)
1896
1930
  elif status == "failed":
1897
1931
  # Collected, not raised: the next host is a different agent on a
1898
1932
  # different config file and has nothing to do with this failure.
@@ -1904,7 +1938,6 @@ def cmd_mcp(argv) -> int:
1904
1938
  % mcphost.cli(host))
1905
1939
  out.info(" ".join(cmd))
1906
1940
 
1907
- verb = "register" if args.action == "register" else "unregister"
1908
1941
  for host in done:
1909
1942
  # agy has no scopes — one global file — so claiming "(scope: user)"
1910
1943
  # would describe a distinction its CLI does not have.
@@ -1914,6 +1947,8 @@ def cmd_mcp(argv) -> int:
1914
1947
  for host in already:
1915
1948
  out.ok("already registered with %s — nothing to do"
1916
1949
  % mcphost.label(host))
1950
+ for host in not_registered:
1951
+ out.ok("%s: not registered — nothing to do" % mcphost.label(host))
1917
1952
  for host, detail in failed.items():
1918
1953
  out.warn("%s: %s mcp %s failed — %s"
1919
1954
  % (mcphost.label(host), mcphost.cli(host), args.action,
@@ -1921,7 +1956,7 @@ def cmd_mcp(argv) -> int:
1921
1956
  out.info(out.role("run it yourself: %s"
1922
1957
  % " ".join(mcphost.argv(host, args.action, shim)),
1923
1958
  "muted"))
1924
- settled = done + already
1959
+ settled = done + already + not_registered
1925
1960
  if not settled:
1926
1961
  if failed:
1927
1962
  # Every installed CLI failed. That is a real error — but only after
@@ -1936,7 +1971,10 @@ def cmd_mcp(argv) -> int:
1936
1971
  for host in missing:
1937
1972
  out.info(" ".join(mcphost.argv(host, args.action, shim)))
1938
1973
  journal.log("mcp", args.action, hosts="")
1939
- return 0
1974
+ # A single named host whose CLI is missing is a no-op, not a success:
1975
+ # `--host all` and `auto` both tolerate an absent CLI by design (see
1976
+ # `mcphost.is_named`), so only a one-host request fails here.
1977
+ return 1 if named else 0
1940
1978
  if args.action == "register":
1941
1979
  _offer_boost_first(settled)
1942
1980
  journal.log("mcp", args.action, hosts=",".join(settled))