boost-skill-cli 1.0.216__tar.gz → 1.0.217__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 (476) hide show
  1. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.vale/styles/config/vocabularies/boost/accept.txt +4 -0
  2. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/CONTRIBUTING.md +17 -0
  3. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/Makefile +11 -1
  4. {boost_skill_cli-1.0.216/boost_skill_cli.egg-info → boost_skill_cli-1.0.217}/PKG-INFO +1 -1
  5. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/_version.py +2 -2
  6. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/pkg.py +7 -12
  7. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  8. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_skill_cli.egg-info/SOURCES.txt +6 -0
  9. boost_skill_cli-1.0.217/codecov.yml +46 -0
  10. boost_skill_cli-1.0.217/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +25 -0
  11. boost_skill_cli-1.0.217/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +28 -0
  12. boost_skill_cli-1.0.217/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +27 -0
  13. boost_skill_cli-1.0.217/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +38 -0
  14. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap.html +73 -19
  15. boost_skill_cli-1.0.217/scripts/post_deploy_smoke.py +201 -0
  16. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/setup.cfg +2 -0
  17. boost_skill_cli-1.0.217/sonar-project.properties +38 -0
  18. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_pkg.py +13 -2
  19. boost_skill_cli-1.0.217/tests/unit/test_post_deploy_smoke.py +218 -0
  20. boost_skill_cli-1.0.217/tests/visual/console_check.mjs +90 -0
  21. boost_skill_cli-1.0.216/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -20
  22. boost_skill_cli-1.0.216/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -20
  23. boost_skill_cli-1.0.216/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -20
  24. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.gitattributes +0 -0
  25. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.gitignore +0 -0
  26. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.gitleaks.toml +0 -0
  27. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.htmlvalidate.json +0 -0
  28. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.lighthouserc.json +0 -0
  29. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.lycheeignore +0 -0
  30. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.markdownlint-cli2.jsonc +0 -0
  31. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.pre-commit-config.yaml +0 -0
  32. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.stylelintrc.json +0 -0
  33. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.vale/styles/boost/Terminology.yml +0 -0
  34. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/.vale.ini +0 -0
  35. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/CLAUDE.md +0 -0
  36. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/LICENSE +0 -0
  37. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/MANIFEST.in +0 -0
  38. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/README.md +0 -0
  39. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/SECURITY.md +0 -0
  40. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost +0 -0
  41. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/__init__.py +0 -0
  42. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/__main__.py +0 -0
  43. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/cli.py +0 -0
  44. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/cliparse.py +0 -0
  45. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/__init__.py +0 -0
  46. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/_common.py +0 -0
  47. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/bmad.py +0 -0
  48. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/configuration.py +0 -0
  49. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/discovery.py +0 -0
  50. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/hooks.py +0 -0
  51. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/info.py +0 -0
  52. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/intelligence.py +0 -0
  53. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/quality.py +0 -0
  54. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/run.py +0 -0
  55. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/safety.py +0 -0
  56. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/taps.py +0 -0
  57. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/commands/team.py +0 -0
  58. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/__init__.py +0 -0
  59. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/adapters.py +0 -0
  60. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/agents.py +0 -0
  61. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/ai.py +0 -0
  62. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/capabilities.py +0 -0
  63. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/catalog.py +0 -0
  64. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/claude_settings.py +0 -0
  65. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/config.py +0 -0
  66. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/dense.py +0 -0
  67. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/ed25519.py +0 -0
  68. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/embed.py +0 -0
  69. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/faithfulness.py +0 -0
  70. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/frontmatter.py +0 -0
  71. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/gitutil.py +0 -0
  72. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/imperative.py +0 -0
  73. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/injectscan.py +0 -0
  74. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/integrity.py +0 -0
  75. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/journal.py +0 -0
  76. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/lockfile.py +0 -0
  77. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/logs.py +0 -0
  78. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/mcp.py +0 -0
  79. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/mcpdecl.py +0 -0
  80. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/minisign.py +0 -0
  81. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/nethttp.py +0 -0
  82. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/output.py +0 -0
  83. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/paths.py +0 -0
  84. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/policy.py +0 -0
  85. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/projectlock.py +0 -0
  86. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/provenance.py +0 -0
  87. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/rag.py +0 -0
  88. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/registry.py +0 -0
  89. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/resolve.py +0 -0
  90. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/rules.py +0 -0
  91. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/scopes.py +0 -0
  92. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/secretscan.py +0 -0
  93. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/serve.py +0 -0
  94. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/stackprobe.py +0 -0
  95. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/staleness.py +0 -0
  96. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/store.py +0 -0
  97. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/trustaudit.py +0 -0
  98. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/typosquat.py +0 -0
  99. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/updatediff.py +0 -0
  100. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/util.py +0 -0
  101. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/core/workflows.py +0 -0
  102. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/data/registries.json +0 -0
  103. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/errors.py +0 -0
  104. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_cli/spin.py +0 -0
  105. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  106. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  107. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_skill_cli.egg-info/requires.txt +0 -0
  108. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/boost_skill_cli.egg-info/top_level.txt +0 -0
  109. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/.claude/settings.local.json +0 -0
  110. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/DEBUGGING.md +0 -0
  111. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/adapters.html +0 -0
  112. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/distill.gif +0 -0
  113. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/doctor.gif +0 -0
  114. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/explain.gif +0 -0
  115. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/hooks.gif +0 -0
  116. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/install.gif +0 -0
  117. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/pulse.gif +0 -0
  118. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/search.gif +0 -0
  119. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/gifs/tap.gif +0 -0
  120. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/distill.tape +0 -0
  121. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/doctor.tape +0 -0
  122. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/explain.tape +0 -0
  123. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/hooks.tape +0 -0
  124. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/install.tape +0 -0
  125. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/pulse.tape +0 -0
  126. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/search.tape +0 -0
  127. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel/tapes/tap.tape +0 -0
  128. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/carousel.html +0 -0
  129. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/commands.html +0 -0
  130. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/demo.gif +0 -0
  131. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/demo.tape +0 -0
  132. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/design-roadmap.html +0 -0
  133. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/eval.html +0 -0
  134. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/index.html +0 -0
  135. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/mcp-hub.html +0 -0
  136. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/rag-architecture.md +0 -0
  137. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D01.md +0 -0
  138. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D02.md +0 -0
  139. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D03.md +0 -0
  140. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D04.md +0 -0
  141. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D05.md +0 -0
  142. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D06.md +0 -0
  143. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D07.md +0 -0
  144. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D08.md +0 -0
  145. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D09.md +0 -0
  146. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D10.md +0 -0
  147. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D11.md +0 -0
  148. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D12.md +0 -0
  149. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D13.md +0 -0
  150. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D14.md +0 -0
  151. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D15.md +0 -0
  152. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D16.md +0 -0
  153. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D17.md +0 -0
  154. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D18.md +0 -0
  155. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D19.md +0 -0
  156. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D20.md +0 -0
  157. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D21.md +0 -0
  158. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D22.md +0 -0
  159. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D23.md +0 -0
  160. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D24.md +0 -0
  161. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D25.md +0 -0
  162. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/BOOST-D26.md +0 -0
  163. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  164. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  165. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  166. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  167. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  168. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  169. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  170. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  171. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  172. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  173. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  174. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  175. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  176. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  177. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  178. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/command-carousel-page.md +0 -0
  179. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  180. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  181. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  182. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  183. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  184. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  185. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  186. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  187. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  188. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  189. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  190. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  191. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  192. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  193. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  194. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  195. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  196. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  197. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  198. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  199. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  200. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  201. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/github-community-health-files.md +0 -0
  202. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  203. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  204. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  205. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  206. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  207. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  208. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  209. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  210. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  211. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  212. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  213. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  214. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  215. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  216. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  217. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  218. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  219. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  220. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  221. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  222. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  223. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  224. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  225. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  226. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  227. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  228. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  229. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  230. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  231. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  232. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  233. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  234. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  235. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  236. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  237. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  238. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  239. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  240. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  241. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  242. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  243. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  244. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  245. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  246. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  247. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  248. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  249. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  250. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  251. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  252. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  253. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  254. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  255. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  256. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  257. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  258. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  259. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  260. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  261. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  262. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  263. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  264. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  265. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  266. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  267. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  268. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  269. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  270. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  271. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  272. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  273. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  274. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  275. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  276. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  277. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  278. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  279. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  280. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  281. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  282. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  283. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  284. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  285. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  286. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  287. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  288. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  289. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  290. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  291. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  292. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  293. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  294. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  295. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  296. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  297. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  298. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  299. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  300. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  301. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  302. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  303. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  304. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/docs/roadmap/items/workspace-scope-install.md +0 -0
  305. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/eslint.config.mjs +0 -0
  306. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/examples/README.md +0 -0
  307. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/examples/adapt-demo.sh +0 -0
  308. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/examples/boost-run-prototype.sh +0 -0
  309. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/index.html +0 -0
  310. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/noxfile.py +0 -0
  311. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/pyproject.toml +0 -0
  312. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/coverage-tools.in +0 -0
  313. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/coverage-tools.txt +0 -0
  314. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/lint-tools.in +0 -0
  315. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/lint-tools.txt +0 -0
  316. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/mutation-tools.in +0 -0
  317. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/mutation-tools.txt +0 -0
  318. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/release-tools.in +0 -0
  319. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/release-tools.txt +0 -0
  320. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/test-tools.in +0 -0
  321. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/requirements/test-tools.txt +0 -0
  322. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/a11y_check.py +0 -0
  323. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/bench_cli.sh +0 -0
  324. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/build_command_reference.py +0 -0
  325. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/build_registries.py +0 -0
  326. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/build_roadmap.py +0 -0
  327. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/check_anchors.py +0 -0
  328. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/ensure_eval_corpus.sh +0 -0
  329. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/eval_explain.py +0 -0
  330. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/eval_recommend.py +0 -0
  331. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/eval_retrieval.py +0 -0
  332. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/eval_stats_summary.py +0 -0
  333. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/import_budget.py +0 -0
  334. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/lock_toolchain.py +0 -0
  335. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/mutation_gate.py +0 -0
  336. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/scripts/perf_gate.py +0 -0
  337. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/style/README.md +0 -0
  338. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/style/boost.css +0 -0
  339. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/style/boost.js +0 -0
  340. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/style/demo.html +0 -0
  341. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/adapt.feature +0 -0
  342. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/browse.feature +0 -0
  343. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/count.feature +0 -0
  344. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/discover.feature +0 -0
  345. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/doctor.feature +0 -0
  346. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/environment.py +0 -0
  347. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/explain.feature +0 -0
  348. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/index.feature +0 -0
  349. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/install.feature +0 -0
  350. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/list.feature +0 -0
  351. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/mcp.feature +0 -0
  352. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/search.feature +0 -0
  353. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/steps/cli_steps.py +0 -0
  354. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/steps/discovery_steps.py +0 -0
  355. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/steps/mcp_steps.py +0 -0
  356. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/bdd/features/steps/quality_steps.py +0 -0
  357. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/conftest.py +0 -0
  358. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/eval/baseline.json +0 -0
  359. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/eval/explain.jsonl +0 -0
  360. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/eval/golden.jsonl +0 -0
  361. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/eval/recommend.jsonl +0 -0
  362. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/eval/taps.txt +0 -0
  363. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_capabilities_policy.py +0 -0
  364. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_adapt.py +0 -0
  365. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_bmad.py +0 -0
  366. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_configuration.py +0 -0
  367. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_discovery.py +0 -0
  368. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_hooks.py +0 -0
  369. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_info.py +0 -0
  370. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_intelligence.py +0 -0
  371. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_quality.py +0 -0
  372. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_taps.py +0 -0
  373. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_cli_team.py +0 -0
  374. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_everyday_loop.py +0 -0
  375. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_integrity_enforce.py +0 -0
  376. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_property_parsers.py +0 -0
  377. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_run.py +0 -0
  378. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_tap_signing.py +0 -0
  379. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/functional/test_workspace_scope.py +0 -0
  380. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/README.md +0 -0
  381. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  382. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  383. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  384. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  385. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  386. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  387. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  388. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  389. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  390. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  391. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  392. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  393. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  394. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  395. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  396. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  397. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  398. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  399. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  400. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  401. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/fuzz_frontmatter.py +0 -0
  402. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/fuzz/fuzz_registry.py +0 -0
  403. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/make_fixture.py +0 -0
  404. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/perf/test_benchmarks.py +0 -0
  405. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/smoke.sh +0 -0
  406. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_a11y_check.py +0 -0
  407. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_adapters.py +0 -0
  408. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_adapters_multi.py +0 -0
  409. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_adapters_runner.py +0 -0
  410. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_agents.py +0 -0
  411. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_ai.py +0 -0
  412. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_capabilities.py +0 -0
  413. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_catalog.py +0 -0
  414. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_check_anchors.py +0 -0
  415. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_claude_settings.py +0 -0
  416. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_cliparse.py +0 -0
  417. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_command_reference_fresh.py +0 -0
  418. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_config.py +0 -0
  419. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_dense.py +0 -0
  420. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_dense_fallback.py +0 -0
  421. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_docs_pages_linked.py +0 -0
  422. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_docsite_chrome.py +0 -0
  423. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_ed25519.py +0 -0
  424. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_embed.py +0 -0
  425. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_errors_and_cli_table.py +0 -0
  426. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_eval_stats_summary.py +0 -0
  427. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_faithfulness.py +0 -0
  428. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_frontmatter.py +0 -0
  429. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_fuzz_targets.py +0 -0
  430. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_gitleaks_config.py +0 -0
  431. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_gitutil.py +0 -0
  432. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_imperative.py +0 -0
  433. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_import_budget.py +0 -0
  434. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_injectscan.py +0 -0
  435. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_integrity.py +0 -0
  436. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_journal.py +0 -0
  437. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_lockfile.py +0 -0
  438. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_logs.py +0 -0
  439. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_mcp.py +0 -0
  440. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_mcpdecl.py +0 -0
  441. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_minisign.py +0 -0
  442. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_mutation_hardening.py +0 -0
  443. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_nethttp.py +0 -0
  444. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_output.py +0 -0
  445. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_paths.py +0 -0
  446. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_perf_gate.py +0 -0
  447. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_pkg_confusions.py +0 -0
  448. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_pkg_injection.py +0 -0
  449. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_pkg_secrets.py +0 -0
  450. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_policy.py +0 -0
  451. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_projectlock.py +0 -0
  452. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_provenance.py +0 -0
  453. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_rag.py +0 -0
  454. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_registries_fresh.py +0 -0
  455. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_registry.py +0 -0
  456. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_resolve.py +0 -0
  457. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_roadmap_fresh.py +0 -0
  458. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_rules.py +0 -0
  459. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_scopes.py +0 -0
  460. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_secretscan.py +0 -0
  461. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_serve.py +0 -0
  462. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_spin.py +0 -0
  463. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_stackprobe.py +0 -0
  464. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_staleness.py +0 -0
  465. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_store.py +0 -0
  466. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_token_parity.py +0 -0
  467. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_toolchain_lock.py +0 -0
  468. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_trustaudit.py +0 -0
  469. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_typosquat.py +0 -0
  470. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_updatediff.py +0 -0
  471. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_util.py +0 -0
  472. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_version.py +0 -0
  473. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/unit/test_workflows.py +0 -0
  474. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/visual/a11y_check.mjs +0 -0
  475. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/visual/package.json +0 -0
  476. {boost_skill_cli-1.0.216 → boost_skill_cli-1.0.217}/tests/visual/visual_check.mjs +0 -0
@@ -4,6 +4,7 @@ argparse
4
4
  bmad
5
5
  bookended
6
6
  CI's
7
+ Codecov
7
8
  codespell
8
9
  config
9
10
  configs
@@ -22,6 +23,7 @@ GIF
22
23
  gitignored
23
24
  glassmorphic
24
25
  hardcode
26
+ hotspots
25
27
  jonnyeclectic
26
28
  jonnyeclectic's
27
29
  langchain
@@ -31,6 +33,7 @@ mergeable
31
33
  mutmut
32
34
  mypy
33
35
  npm
36
+ onboards
34
37
  Pinecone
35
38
  pytest
36
39
  rebased
@@ -46,6 +49,7 @@ rulesets
46
49
  Rulesets
47
50
  sandboxed
48
51
  sandboxing
52
+ SonarCloud
49
53
  stderr
50
54
  Stdlib
51
55
  stdlib
@@ -63,6 +63,23 @@ are pinned to the same tool versions the lint gate uses, and
63
63
  [pre-commit.ci](https://pre-commit.ci) runs them on every PR and pushes any
64
64
  auto-fixes straight back onto the branch.
65
65
 
66
+ ## Optional dashboards (Codecov, SonarCloud)
67
+
68
+ Two hosted dashboards are wired up but **inert until someone onboards them**.
69
+ Both are deliberately *non-blocking*: boost's own gates run offline and are the
70
+ authoritative ones, and a merge should never hinge on a third party's uptime.
71
+
72
+ | Dashboard | To enable | Config |
73
+ |---|---|---|
74
+ | **Codecov** — PR diff-coverage comments, file sunburst, trend | add a `CODECOV_TOKEN` repo secret | [`codecov.yml`](codecov.yml) |
75
+ | **SonarCloud** — bugs, smells, security hotspots, duplication | import the repo at [sonarcloud.io](https://sonarcloud.io) (Analysis Method: GitHub Actions), then add the generated token as `SONAR_TOKEN` | [`sonar-project.properties`](sonar-project.properties) |
76
+
77
+ Without the secret each step skips itself — the `if:` reads the token through
78
+ `env`, since a secret can't be referenced directly in an `if`. The SonarCloud job
79
+ also writes a note to the run summary saying what to do, so a skipped run
80
+ explains itself instead of looking broken. Neither is in the required-checks
81
+ list, and neither should be added to it.
82
+
66
83
  ## The gates (CI runs all of these)
67
84
 
68
85
  | Command | Gate |
@@ -10,7 +10,7 @@ PYTEST := $(VENV)/bin/pytest
10
10
  # pinned taps out of the developer's real ~/.boost.
11
11
  EVAL_HOME := $(CURDIR)/.eval-home
12
12
 
13
- .PHONY: venv test unit functional smoke coverage patch-coverage mutation lint check demo carousel clean-test eval eval-ai eval-rec eval-stats eval-explain audit dist-check bdd bench bench-cli fuzz
13
+ .PHONY: venv test unit functional smoke coverage patch-coverage mutation lint check demo carousel clean-test eval eval-ai eval-rec eval-stats eval-explain audit dist-check bdd bench bench-cli fuzz post-deploy
14
14
 
15
15
  # Every tool comes from a hash-pinned requirements/*.txt — the same files CI
16
16
  # installs (see scripts/lock_toolchain.py). pip enforces the hashes, so a dev
@@ -155,6 +155,16 @@ fuzz:
155
155
  -max_total_time=$(FUZZ_SECONDS) -artifact_prefix=/tmp/ || exit 1; \
156
156
  done
157
157
 
158
+ # Health check for the PUBLISHED docs site: every page 200, every local asset and
159
+ # internal link resolves, and (with Chrome) no console errors or failed runtime
160
+ # requests. Not part of `make check` — it needs the network and the live deploy;
161
+ # the post-deploy workflow runs it after Pages republishes.
162
+ # BOOST_SITE=http://localhost:8000/ make post-deploy to check a local serve.
163
+ BOOST_SITE ?= https://jonnyeclectic.github.io/boost/
164
+ post-deploy:
165
+ $(PY) scripts/post_deploy_smoke.py --base-url "$(BOOST_SITE)" -v
166
+ @command -v node >/dev/null 2>&1 && BOOST_SITE="$(BOOST_SITE)" node tests/visual/console_check.mjs || echo "node not on PATH — skipping the console check (CI runs it)"
167
+
158
168
  # regenerate generated artifacts from their source (registries + roadmap boards)
159
169
  generate:
160
170
  $(PY) scripts/build_registries.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.216
3
+ Version: 1.0.217
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -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.0.216'
22
- __version_tuple__ = version_tuple = (1, 0, 216)
21
+ __version__ = version = '1.0.217'
22
+ __version_tuple__ = version_tuple = (1, 0, 217)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -109,7 +109,7 @@ def _warn_secrets(res: store.InstallResult) -> None:
109
109
  out.warn(" L%d [%s] %s" % (f.line, f.severity, f.description))
110
110
 
111
111
 
112
- def _offer_mcp(res: store.InstallResult) -> None:
112
+ def _offer_mcp(res: store.InstallResult, no_mcp: bool = False) -> None:
113
113
  """Surface the MCP servers a just-installed skill needs, and offer to wire them.
114
114
 
115
115
  A skill that only works paired with an MCP server used to install "cleanly"
@@ -118,11 +118,11 @@ def _offer_mcp(res: store.InstallResult) -> None:
118
118
  servers that came with a runnable spec.
119
119
 
120
120
  Advisory, never fatal: a declined prompt, a missing ``claude`` CLI or a failed
121
- registration all leave the skill installed. Suppressed entirely by
122
- ``--no-mcp``, which sets ``BOOST_NO_MCP_OFFER``.
121
+ registration all leave the skill installed. Suppressed by ``--no-mcp`` (passed
122
+ down as ``no_mcp``) or by exporting ``BOOST_NO_MCP_OFFER``.
123
123
  """
124
124
  rows = res.mcp_servers
125
- if not rows or os.environ.get("BOOST_NO_MCP_OFFER"):
125
+ if not rows or no_mcp or os.environ.get("BOOST_NO_MCP_OFFER"):
126
126
  return
127
127
  from ..core import mcpdecl
128
128
  out.info("")
@@ -170,7 +170,7 @@ def _register_mcp_server(name: str, spec: dict) -> None:
170
170
  journal.log("mcp-register", name)
171
171
 
172
172
 
173
- def _report_result(res: store.InstallResult) -> None:
173
+ def _report_result(res: store.InstallResult, no_mcp: bool = False) -> None:
174
174
  """The canonical three-line install report."""
175
175
  if res.kind in ("rule", "workflow"):
176
176
  where = " (this repo)" if res.scope == "project" else ""
@@ -202,7 +202,7 @@ def _report_result(res: store.InstallResult) -> None:
202
202
  out.ok("lock updated (.skill-lock.json)")
203
203
  _warn_injection(res)
204
204
  _warn_secrets(res)
205
- _offer_mcp(res)
205
+ _offer_mcp(res, no_mcp=no_mcp)
206
206
 
207
207
 
208
208
  def _boostfile_text(skills: Dict[str, dict], via: str = "boost bundle dump") -> str:
@@ -304,11 +304,6 @@ def cmd_install(argv: List[str]) -> int:
304
304
  help="don't offer to register MCP servers a skill declares")
305
305
  args = ap.parse_args(argv)
306
306
  args.scope = args.scope or scopes.SCOPE_USER
307
- if args.no_mcp:
308
- # An env flag rather than threading a parameter through _report_result's
309
- # eight call sites: the offer is a leaf-level side effect, and this keeps
310
- # every other install path (update, reinstall, team, MCP tool) unchanged.
311
- os.environ["BOOST_NO_MCP_OFFER"] = "1"
312
307
  only = _check_agents(args.agent)
313
308
  multi = len(args.names) > 1
314
309
  entries, failed = [], 0
@@ -394,7 +389,7 @@ def cmd_install(argv: List[str]) -> int:
394
389
  out.warn("%s: %s" % (e["name"], err.message))
395
390
  failed += 1
396
391
  continue
397
- _report_result(res)
392
+ _report_result(res, no_mcp=args.no_mcp)
398
393
  results.append(res)
399
394
  if results:
400
395
  kinds = {r.kind for r in results}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.216
3
+ Version: 1.0.217
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -16,11 +16,13 @@ Makefile
16
16
  README.md
17
17
  SECURITY.md
18
18
  boost
19
+ codecov.yml
19
20
  eslint.config.mjs
20
21
  index.html
21
22
  noxfile.py
22
23
  pyproject.toml
23
24
  setup.cfg
25
+ sonar-project.properties
24
26
  .vale/styles/boost/Terminology.yml
25
27
  .vale/styles/config/vocabularies/boost/accept.txt
26
28
  boost_cli/__init__.py
@@ -254,6 +256,7 @@ docs/roadmap/items/required-checks-config-drift.md
254
256
  docs/roadmap/items/retrieval-quality-eval-harness.md
255
257
  docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md
256
258
  docs/roadmap/items/robust-tag-argument-parsing.md
259
+ docs/roadmap/items/ruff-016-widens-the-default-rule-set.md
257
260
  docs/roadmap/items/rule-install-native-materialization.md
258
261
  docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md
259
262
  docs/roadmap/items/runtime-explain-faithfulness-guardrail.md
@@ -323,6 +326,7 @@ scripts/import_budget.py
323
326
  scripts/lock_toolchain.py
324
327
  scripts/mutation_gate.py
325
328
  scripts/perf_gate.py
329
+ scripts/post_deploy_smoke.py
326
330
  style/README.md
327
331
  style/boost.css
328
332
  style/boost.js
@@ -438,6 +442,7 @@ tests/unit/test_pkg_confusions.py
438
442
  tests/unit/test_pkg_injection.py
439
443
  tests/unit/test_pkg_secrets.py
440
444
  tests/unit/test_policy.py
445
+ tests/unit/test_post_deploy_smoke.py
441
446
  tests/unit/test_projectlock.py
442
447
  tests/unit/test_provenance.py
443
448
  tests/unit/test_rag.py
@@ -462,5 +467,6 @@ tests/unit/test_util.py
462
467
  tests/unit/test_version.py
463
468
  tests/unit/test_workflows.py
464
469
  tests/visual/a11y_check.mjs
470
+ tests/visual/console_check.mjs
465
471
  tests/visual/package.json
466
472
  tests/visual/visual_check.mjs
@@ -0,0 +1,46 @@
1
+ # Codecov configuration.
2
+ #
3
+ # Codecov is a DASHBOARD here, not a gate. boost already enforces coverage
4
+ # itself, twice, and those checks are the authoritative ones:
5
+ #
6
+ # * project floor — pytest --cov with fail_under = 80 (pyproject.toml)
7
+ # * patch floor — diff-cover --fail-under=80 vs origin/main (ci.yml)
8
+ #
9
+ # Both run in-repo, offline, on every PR. Layering a third-party status check on
10
+ # top would mean a merge could be blocked by somebody else's uptime, and a gate
11
+ # you cannot run locally is a gate contributors cannot preempt. So every status
12
+ # below is `informational: true`: Codecov comments, draws the sunburst and tracks
13
+ # the trend, and never fails a build.
14
+ #
15
+ # Until CODECOV_TOKEN exists as a repo secret the upload step is skipped
16
+ # entirely (see ci.yml), so this file is inert rather than wrong.
17
+
18
+ coverage:
19
+ precision: 1
20
+ round: down
21
+ # Match the repo's own floor so the dashboard and the gate tell the same story.
22
+ range: "80...100"
23
+ status:
24
+ project:
25
+ default:
26
+ target: 80%
27
+ informational: true
28
+ patch:
29
+ default:
30
+ target: 80%
31
+ informational: true
32
+
33
+ comment:
34
+ # One comment, rewritten in place, showing the diff and the file breakdown.
35
+ layout: "condensed_header, diff, flags, components, condensed_files"
36
+ behavior: once
37
+ require_changes: true # stay silent on a PR that changes no covered code
38
+
39
+ ignore:
40
+ # Generated by setuptools-scm at build time and absent from a checkout — the
41
+ # same carve-out [tool.mypy] and [tool.pyright] make.
42
+ - "boost_cli/_version.py"
43
+ # Dev/CI tooling and fixtures, not shipped code.
44
+ - "scripts/**"
45
+ - "tests/**"
46
+ - "noxfile.py"
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: coverage-dashboard-codecov-free-for-oss
3
+ board: code
4
+ section: dx
5
+ status: shipped
6
+ category: Testing · Platform
7
+ complexity: S
8
+ impact: Med
9
+ wow: 3
10
+ note: PR decoration
11
+ order: 8
12
+ owner: loop/quality-dashboards
13
+ pr: 246
14
+ title: Coverage dashboard — Codecov (free for OSS)
15
+ ---
16
+ The self-contained <code>diff-cover</code> gate enforces patch coverage in CI; this is
17
+ its hosted counterpart — the same <code>coverage.xml</code> the gate already
18
+ reads, turned into PR diff-coverage comments, a file sunburst and a trend line
19
+ over time. Wired into the existing <code>patch-coverage</code> job (no second
20
+ test run) and <em>deliberately non-blocking</em>: <code>codecov.yml</code> marks
21
+ every status <code>informational</code>, because boost already enforces coverage
22
+ twice offline and a merge should never hinge on a third party's uptime. Inert
23
+ until a <code>CODECOV_TOKEN</code> secret exists — the step's <code>if</code>
24
+ reads the token through <code>env</code> (a secret cannot be referenced directly
25
+ in an <code>if</code>), so with no secret it skips rather than fails.
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: post-deploy-smoke-headless-load-check
3
+ board: code
4
+ section: docsite
5
+ status: shipped
6
+ category: Testing · Docs
7
+ complexity: M
8
+ impact: Med
9
+ wow: 3
10
+ note: catches red deploys
11
+ order: 9
12
+ owner: loop/post-deploy-smoke
13
+ pr: 244
14
+ title: Post-deploy smoke — headless load check
15
+ ---
16
+ Every other docs gate runs against the working tree — <code>html-validate</code> and
17
+ the a11y checker parse the files, the visual sweep loads them over
18
+ <code>file://</code>. All of them can be green while the <em>deployed</em> site is
19
+ broken, because deployment is where the paths change: Pages serves this repo
20
+ under <code>/boost/</code>, so a link that resolves on disk can 404 in production.
21
+ Nothing was watching that. Now, triggered by the Pages deployment finishing (so it
22
+ checks what was actually published rather than guessing at propagation),
23
+ <code>scripts/post_deploy_smoke.py</code> asserts every page answers 200 and every
24
+ local asset and internal link resolves — pure stdlib over HTTP, no browser — and
25
+ <code>console_check.mjs</code> loads each live page in headless Chrome for the
26
+ half only a browser sees: uncaught JS, <code>console.error</code>, and runtime
27
+ request failures. Off-site links are deliberately excluded: a flaky third party
28
+ must never redden boost's deploy, and <code>links.yml</code> already owns those.
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: quality-dashboard-sonarcloud-free-for-oss
3
+ board: code
4
+ section: health
5
+ status: shipped
6
+ category: Quality · Platform
7
+ complexity: M
8
+ impact: High
9
+ wow: 5
10
+ note: PR quality gate
11
+ order: 6
12
+ owner: loop/quality-dashboards
13
+ pr: 246
14
+ title: Quality dashboard — SonarCloud (free for OSS)
15
+ ---
16
+ One external surface over everything the offline gates measure separately: bugs, code
17
+ smells, security hotspots, duplication and a coverage overlay, decorating each PR
18
+ with a quality gate. Free for public repos. Settings live in
19
+ <code>sonar-project.properties</code> — <code>boost_cli</code> as sources with
20
+ <code>tests</code> declared separately (so the suite's asserts do not score as
21
+ duplication), the generated version stub and boards excluded, coverage read from
22
+ the Cobertura report CI already emits rather than re-running the suite.
23
+ Non-blocking and inert until onboarded: without <code>SONAR_TOKEN</code> the job
24
+ skips and writes what to do into the run summary, so a skipped run explains
25
+ itself instead of looking broken. Not added to required checks — boost's own
26
+ gates stay authoritative because they run offline and a contributor can
27
+ reproduce them.
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: ruff-016-widens-the-default-rule-set
3
+ board: code
4
+ section: health
5
+ status: planned
6
+ category: Toolchain
7
+ complexity: M
8
+ impact: Med
9
+ wow: 2
10
+ note: 83 errors, 43 auto-fixable
11
+ order: 15
12
+ owner:
13
+ pr: 236
14
+ title: ruff 0.16 widens the default rule set — 83 new errors on a version bump
15
+ ---
16
+ Dependabot #236 bumps ruff <code>0.15.22 &rarr; 0.16.0</code> and the <code>ruff</code> step
17
+ fails with <b>83 errors</b>. None of them are new code — 0.16 <b>widened the default
18
+ selection</b>, and because <code>pyproject.toml</code> uses <code>extend-select</code>
19
+ (which adds to the defaults rather than replacing them), every newly-defaulted family
20
+ switched on at once. The project only ever opted into
21
+ <code>S, B, SIM, C4, PERF, RUF, UP</code>; what fires now is
22
+ <code>I001</code>&nbsp;(33), <code>PLW1510</code>&nbsp;(19), <code>BLE001</code>&nbsp;(9),
23
+ <code>ISC004</code>&nbsp;(4), plus <code>TRY</code>, <code>PLR</code>, <code>PIE</code>,
24
+ <code>DTZ</code>, <code>RET</code>, <code>PYI</code>, <code>FLY</code> and — awkwardly —
25
+ <code>FURB167</code>, a family the config explicitly delegates to refurb via
26
+ <code>external = ["FURB"]</code>.
27
+ So this is a <b>policy decision, not a lint fix</b>, and there are two honest answers.
28
+ Pin the policy: switch <code>extend-select</code> to a full <code>select = [...]</code> so
29
+ the rule set is stated outright and a future ruff release can never widen it again — the
30
+ bump then lands with zero code changes. Or adopt some of them: <code>I001</code> (import
31
+ sorting) and the 43 auto-fixable errors are cheap and arguably worth having, while
32
+ <code>PLW1510</code> (<code>subprocess.run</code> without <code>check=</code>) is 19 real
33
+ call sites that each need a judgement about whether a non-zero exit should raise.
34
+ <code>DTZ005/006</code> (naive <code>datetime.now()</code>) is worth a look on its own
35
+ merits given <a href="#rel-time-tests-race-the-wall-clock">the clock-racing test</a>.
36
+ Recommended: pin <code>select</code> first so the bump is unblocked and the gate stops
37
+ depending on an upstream default, then adopt families deliberately in follow-ups. Until
38
+ then #236 must not be merged — it reddens <code>ci / lint</code> on every branch.
@@ -109,7 +109,7 @@
109
109
  <div class="stat"><b>16</b><span>Shipped</span></div>
110
110
  <div class="stat"><b>1</b><span>Next up</span></div>
111
111
  <div class="stat"><b>4</b><span>Planned</span></div>
112
- <div class="stat"><b>145</b><span>Loop finds</span></div>
112
+ <div class="stat"><b>146</b><span>Loop finds</span></div>
113
113
  <!-- /ROADMAP:stats -->
114
114
  </div>
115
115
  </section>
@@ -1308,13 +1308,20 @@ improvement is real (or isn't)."</p>
1308
1308
  </article>
1309
1309
 
1310
1310
  <article class="cap rcard" id="quality-dashboard-sonarcloud-free-for-oss">
1311
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Platform</span></div>
1311
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Platform</span></div>
1312
1312
  <h3>Quality dashboard — SonarCloud (free for OSS)</h3>
1313
- <p>SonarCloud is free for public repos and layers bugs, code smells,
1314
- security hotspots, duplication and a coverage overlay into one
1315
- dashboard, decorating each PR with a pass/fail quality gate. The
1316
- single highest-signal freemium add one external surface that unifies
1317
- everything else in this section.</p>
1313
+ <p>One external surface over everything the offline gates measure separately: bugs, code
1314
+ smells, security hotspots, duplication and a coverage overlay, decorating each PR
1315
+ with a quality gate. Free for public repos. Settings live in
1316
+ <code>sonar-project.properties</code><code>boost_cli</code> as sources with
1317
+ <code>tests</code> declared separately (so the suite's asserts do not score as
1318
+ duplication), the generated version stub and boards excluded, coverage read from
1319
+ the Cobertura report CI already emits rather than re-running the suite.
1320
+ Non-blocking and inert until onboarded: without <code>SONAR_TOKEN</code> the job
1321
+ skips and writes what to do into the run summary, so a skipped run explains
1322
+ itself instead of looking broken. Not added to required checks — boost's own
1323
+ gates stay authoritative because they run offline and a contributor can
1324
+ reproduce them.</p>
1318
1325
  <div class="meta">
1319
1326
  <span class="m">Complexity <b>M</b></span>
1320
1327
  <span class="m hi">Impact <b>High</b></span>
@@ -1427,6 +1434,40 @@ exactly what the gate is supposed to catch.</p>
1427
1434
  </div>
1428
1435
  </article>
1429
1436
 
1437
+ <article class="cap rcard" id="ruff-016-widens-the-default-rule-set">
1438
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Toolchain</span></div>
1439
+ <h3>ruff 0.16 widens the default rule set — 83 new errors on a version bump</h3>
1440
+ <p>Dependabot #236 bumps ruff <code>0.15.22 &rarr; 0.16.0</code> and the <code>ruff</code> step
1441
+ fails with <b>83 errors</b>. None of them are new code — 0.16 <b>widened the default
1442
+ selection</b>, and because <code>pyproject.toml</code> uses <code>extend-select</code>
1443
+ (which adds to the defaults rather than replacing them), every newly-defaulted family
1444
+ switched on at once. The project only ever opted into
1445
+ <code>S, B, SIM, C4, PERF, RUF, UP</code>; what fires now is
1446
+ <code>I001</code>&nbsp;(33), <code>PLW1510</code>&nbsp;(19), <code>BLE001</code>&nbsp;(9),
1447
+ <code>ISC004</code>&nbsp;(4), plus <code>TRY</code>, <code>PLR</code>, <code>PIE</code>,
1448
+ <code>DTZ</code>, <code>RET</code>, <code>PYI</code>, <code>FLY</code> and — awkwardly —
1449
+ <code>FURB167</code>, a family the config explicitly delegates to refurb via
1450
+ <code>external = ["FURB"]</code>.
1451
+ So this is a <b>policy decision, not a lint fix</b>, and there are two honest answers.
1452
+ Pin the policy: switch <code>extend-select</code> to a full <code>select = [...]</code> so
1453
+ the rule set is stated outright and a future ruff release can never widen it again — the
1454
+ bump then lands with zero code changes. Or adopt some of them: <code>I001</code> (import
1455
+ sorting) and the 43 auto-fixable errors are cheap and arguably worth having, while
1456
+ <code>PLW1510</code> (<code>subprocess.run</code> without <code>check=</code>) is 19 real
1457
+ call sites that each need a judgement about whether a non-zero exit should raise.
1458
+ <code>DTZ005/006</code> (naive <code>datetime.now()</code>) is worth a look on its own
1459
+ merits given <a href="#rel-time-tests-race-the-wall-clock">the clock-racing test</a>.
1460
+ Recommended: pin <code>select</code> first so the bump is unblocked and the gate stops
1461
+ depending on an upstream default, then adopt families deliberately in follow-ups. Until
1462
+ then #236 must not be merged — it reddens <code>ci / lint</code> on every branch.</p>
1463
+ <div class="meta">
1464
+ <span class="m">Complexity <b>M</b></span>
1465
+ <span class="m">Impact <b>Med</b></span>
1466
+ <span class="m">Wow <b class="wow">★★</b></span>
1467
+ <span class="m">83 errors, 43 auto-fixable</span>
1468
+ </div>
1469
+ </article>
1470
+
1430
1471
  <article class="cap rcard" id="doctor-checks-rules-and-workflows">
1431
1472
  <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Diagnostics · Install engine</span></div>
1432
1473
  <h3><code>boost doctor</code> checks installed rules and workflows</h3>
@@ -1912,13 +1953,18 @@ self-merge intact. Decide before adding more concurrent loops, not after.</p>
1912
1953
  </article>
1913
1954
 
1914
1955
  <article class="cap rcard" id="coverage-dashboard-codecov-free-for-oss">
1915
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Testing · Platform</span></div>
1956
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Testing · Platform</span></div>
1916
1957
  <h3>Coverage dashboard — Codecov (free for OSS)</h3>
1917
- <p>Upgrade the homegrown coverage badge to Codecov's PR diff-coverage
1918
- comments, file sunburst and trend graph free for public repos. The
1919
- hosted counterpart to the self-contained <code>diff-cover</code> gate:
1920
- one enforces patch coverage in CI, the other visualizes the trend over
1921
- time.</p>
1958
+ <p>The self-contained <code>diff-cover</code> gate enforces patch coverage in CI; this is
1959
+ its hosted counterpart the same <code>coverage.xml</code> the gate already
1960
+ reads, turned into PR diff-coverage comments, a file sunburst and a trend line
1961
+ over time. Wired into the existing <code>patch-coverage</code> job (no second
1962
+ test run) and <em>deliberately non-blocking</em>: <code>codecov.yml</code> marks
1963
+ every status <code>informational</code>, because boost already enforces coverage
1964
+ twice offline and a merge should never hinge on a third party's uptime. Inert
1965
+ until a <code>CODECOV_TOKEN</code> secret exists — the step's <code>if</code>
1966
+ reads the token through <code>env</code> (a secret cannot be referenced directly
1967
+ in an <code>if</code>), so with no secret it skips rather than fails.</p>
1922
1968
  <div class="meta">
1923
1969
  <span class="m">Complexity <b>S</b></span>
1924
1970
  <span class="m">Impact <b>Med</b></span>
@@ -2294,13 +2340,21 @@ and the work stays visible.</p>
2294
2340
  </article>
2295
2341
 
2296
2342
  <article class="cap rcard" id="post-deploy-smoke-headless-load-check">
2297
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Testing · Docs</span></div>
2343
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Testing · Docs</span></div>
2298
2344
  <h3>Post-deploy smoke — headless load check</h3>
2299
- <p>After each Pages deploy, headless-load the guide and roadmap and assert
2300
- the essentials: HTTP 200, every asset resolves, and the console is free
2301
- of errors. Distinct from the planned visual-regression pass this is a
2302
- cheap always-on health gate that would have caught the current broken
2303
- Pages deploy automatically.</p>
2345
+ <p>Every other docs gate runs against the working tree <code>html-validate</code> and
2346
+ the a11y checker parse the files, the visual sweep loads them over
2347
+ <code>file://</code>. All of them can be green while the <em>deployed</em> site is
2348
+ broken, because deployment is where the paths change: Pages serves this repo
2349
+ under <code>/boost/</code>, so a link that resolves on disk can 404 in production.
2350
+ Nothing was watching that. Now, triggered by the Pages deployment finishing (so it
2351
+ checks what was actually published rather than guessing at propagation),
2352
+ <code>scripts/post_deploy_smoke.py</code> asserts every page answers 200 and every
2353
+ local asset and internal link resolves — pure stdlib over HTTP, no browser — and
2354
+ <code>console_check.mjs</code> loads each live page in headless Chrome for the
2355
+ half only a browser sees: uncaught JS, <code>console.error</code>, and runtime
2356
+ request failures. Off-site links are deliberately excluded: a flaky third party
2357
+ must never redden boost's deploy, and <code>links.yml</code> already owns those.</p>
2304
2358
  <div class="meta">
2305
2359
  <span class="m">Complexity <b>M</b></span>
2306
2360
  <span class="m">Impact <b>Med</b></span>