boost-skill-cli 1.0.214__tar.gz → 1.0.216__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 (467) hide show
  1. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/CLAUDE.md +80 -2
  2. {boost_skill_cli-1.0.214/boost_skill_cli.egg-info → boost_skill_cli-1.0.216}/PKG-INFO +1 -1
  3. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216/boost_skill_cli.egg-info}/PKG-INFO +1 -1
  5. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
  6. boost_skill_cli-1.0.216/docs/roadmap/items/main-has-no-branch-protection.md +32 -0
  7. boost_skill_cli-1.0.216/docs/roadmap/items/scorecard-findings-triage.md +38 -0
  8. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap.html +63 -1
  9. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.gitattributes +0 -0
  10. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.gitignore +0 -0
  11. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.gitleaks.toml +0 -0
  12. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.htmlvalidate.json +0 -0
  13. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.lighthouserc.json +0 -0
  14. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.lycheeignore +0 -0
  15. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.markdownlint-cli2.jsonc +0 -0
  16. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.pre-commit-config.yaml +0 -0
  17. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.stylelintrc.json +0 -0
  18. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.vale/styles/boost/Terminology.yml +0 -0
  19. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  20. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.vale.ini +0 -0
  21. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/CONTRIBUTING.md +0 -0
  22. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/LICENSE +0 -0
  23. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/MANIFEST.in +0 -0
  24. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/Makefile +0 -0
  25. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/README.md +0 -0
  26. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/SECURITY.md +0 -0
  27. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost +0 -0
  28. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/__init__.py +0 -0
  29. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/__main__.py +0 -0
  30. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/cli.py +0 -0
  31. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/cliparse.py +0 -0
  32. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/__init__.py +0 -0
  33. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/_common.py +0 -0
  34. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/bmad.py +0 -0
  35. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/configuration.py +0 -0
  36. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/discovery.py +0 -0
  37. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/hooks.py +0 -0
  38. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/info.py +0 -0
  39. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/intelligence.py +0 -0
  40. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/pkg.py +0 -0
  41. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/quality.py +0 -0
  42. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/run.py +0 -0
  43. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/safety.py +0 -0
  44. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/taps.py +0 -0
  45. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/team.py +0 -0
  46. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/__init__.py +0 -0
  47. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/adapters.py +0 -0
  48. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/agents.py +0 -0
  49. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/ai.py +0 -0
  50. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/capabilities.py +0 -0
  51. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/catalog.py +0 -0
  52. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/claude_settings.py +0 -0
  53. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/config.py +0 -0
  54. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/dense.py +0 -0
  55. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/ed25519.py +0 -0
  56. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/embed.py +0 -0
  57. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/faithfulness.py +0 -0
  58. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/frontmatter.py +0 -0
  59. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/gitutil.py +0 -0
  60. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/imperative.py +0 -0
  61. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/injectscan.py +0 -0
  62. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/integrity.py +0 -0
  63. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/journal.py +0 -0
  64. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/lockfile.py +0 -0
  65. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/logs.py +0 -0
  66. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/mcp.py +0 -0
  67. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/mcpdecl.py +0 -0
  68. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/minisign.py +0 -0
  69. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/nethttp.py +0 -0
  70. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/output.py +0 -0
  71. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/paths.py +0 -0
  72. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/policy.py +0 -0
  73. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/projectlock.py +0 -0
  74. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/provenance.py +0 -0
  75. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/rag.py +0 -0
  76. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/registry.py +0 -0
  77. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/resolve.py +0 -0
  78. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/rules.py +0 -0
  79. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/scopes.py +0 -0
  80. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/secretscan.py +0 -0
  81. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/serve.py +0 -0
  82. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/stackprobe.py +0 -0
  83. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/staleness.py +0 -0
  84. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/store.py +0 -0
  85. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/trustaudit.py +0 -0
  86. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/typosquat.py +0 -0
  87. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/updatediff.py +0 -0
  88. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/util.py +0 -0
  89. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/workflows.py +0 -0
  90. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/data/registries.json +0 -0
  91. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/errors.py +0 -0
  92. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/spin.py +0 -0
  93. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  94. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  95. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/requires.txt +0 -0
  96. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/top_level.txt +0 -0
  97. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/.claude/settings.local.json +0 -0
  98. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/DEBUGGING.md +0 -0
  99. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/adapters.html +0 -0
  100. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/distill.gif +0 -0
  101. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/doctor.gif +0 -0
  102. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/explain.gif +0 -0
  103. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/hooks.gif +0 -0
  104. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/install.gif +0 -0
  105. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/pulse.gif +0 -0
  106. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/search.gif +0 -0
  107. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/tap.gif +0 -0
  108. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/distill.tape +0 -0
  109. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/doctor.tape +0 -0
  110. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/explain.tape +0 -0
  111. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/hooks.tape +0 -0
  112. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/install.tape +0 -0
  113. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/pulse.tape +0 -0
  114. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/search.tape +0 -0
  115. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/tap.tape +0 -0
  116. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel.html +0 -0
  117. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/commands.html +0 -0
  118. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/demo.gif +0 -0
  119. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/demo.tape +0 -0
  120. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/design-roadmap.html +0 -0
  121. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/eval.html +0 -0
  122. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/index.html +0 -0
  123. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/mcp-hub.html +0 -0
  124. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/rag-architecture.md +0 -0
  125. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D01.md +0 -0
  126. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D02.md +0 -0
  127. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D03.md +0 -0
  128. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D04.md +0 -0
  129. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D05.md +0 -0
  130. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D06.md +0 -0
  131. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D07.md +0 -0
  132. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D08.md +0 -0
  133. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D09.md +0 -0
  134. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D10.md +0 -0
  135. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D11.md +0 -0
  136. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D12.md +0 -0
  137. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D13.md +0 -0
  138. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D14.md +0 -0
  139. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D15.md +0 -0
  140. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D16.md +0 -0
  141. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D17.md +0 -0
  142. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D18.md +0 -0
  143. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D19.md +0 -0
  144. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D20.md +0 -0
  145. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D21.md +0 -0
  146. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D22.md +0 -0
  147. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D23.md +0 -0
  148. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D24.md +0 -0
  149. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D25.md +0 -0
  150. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D26.md +0 -0
  151. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  152. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  153. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  154. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  155. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  156. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  157. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  158. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  159. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  160. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  161. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  162. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  163. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  164. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  165. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  166. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/command-carousel-page.md +0 -0
  167. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  168. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  169. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  170. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  171. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  172. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  173. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  174. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  175. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  176. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  177. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  178. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  179. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  180. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  181. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  182. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  183. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  184. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  185. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  186. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  187. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  188. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  189. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  190. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/github-community-health-files.md +0 -0
  191. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  192. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  193. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  194. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  195. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  196. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  197. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  198. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  199. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  200. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  201. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  202. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  203. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  204. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  205. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  206. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  207. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  208. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  209. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  210. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  211. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  212. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  213. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  214. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  215. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  216. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  217. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  218. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  219. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  220. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  221. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  222. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  223. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  224. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  225. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  226. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  227. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  228. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  229. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  230. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  231. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  232. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  233. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  234. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  235. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  236. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  237. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  238. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  239. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  240. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  241. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  242. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  243. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  244. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  245. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  246. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  247. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  248. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  249. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  250. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  251. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  252. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  253. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  254. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  255. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  256. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  257. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  258. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  259. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  260. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  261. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  262. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  263. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  264. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  265. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  266. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  267. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  268. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  269. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  270. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  271. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  272. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  273. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  274. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  275. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  276. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  277. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  278. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  279. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  280. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  281. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  282. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  283. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  284. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  285. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  286. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  287. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  288. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  289. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  290. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  291. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  292. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  293. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workspace-scope-install.md +0 -0
  294. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/eslint.config.mjs +0 -0
  295. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/examples/README.md +0 -0
  296. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/examples/adapt-demo.sh +0 -0
  297. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/examples/boost-run-prototype.sh +0 -0
  298. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/index.html +0 -0
  299. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/noxfile.py +0 -0
  300. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/pyproject.toml +0 -0
  301. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/coverage-tools.in +0 -0
  302. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/coverage-tools.txt +0 -0
  303. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/lint-tools.in +0 -0
  304. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/lint-tools.txt +0 -0
  305. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/mutation-tools.in +0 -0
  306. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/mutation-tools.txt +0 -0
  307. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/release-tools.in +0 -0
  308. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/release-tools.txt +0 -0
  309. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/test-tools.in +0 -0
  310. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/test-tools.txt +0 -0
  311. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/a11y_check.py +0 -0
  312. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/bench_cli.sh +0 -0
  313. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/build_command_reference.py +0 -0
  314. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/build_registries.py +0 -0
  315. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/build_roadmap.py +0 -0
  316. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/check_anchors.py +0 -0
  317. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/ensure_eval_corpus.sh +0 -0
  318. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_explain.py +0 -0
  319. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_recommend.py +0 -0
  320. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_retrieval.py +0 -0
  321. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_stats_summary.py +0 -0
  322. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/import_budget.py +0 -0
  323. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/lock_toolchain.py +0 -0
  324. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/mutation_gate.py +0 -0
  325. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/perf_gate.py +0 -0
  326. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/setup.cfg +0 -0
  327. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/README.md +0 -0
  328. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/boost.css +0 -0
  329. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/boost.js +0 -0
  330. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/demo.html +0 -0
  331. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/adapt.feature +0 -0
  332. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/browse.feature +0 -0
  333. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/count.feature +0 -0
  334. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/discover.feature +0 -0
  335. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/doctor.feature +0 -0
  336. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/environment.py +0 -0
  337. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/explain.feature +0 -0
  338. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/index.feature +0 -0
  339. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/install.feature +0 -0
  340. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/list.feature +0 -0
  341. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/mcp.feature +0 -0
  342. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/search.feature +0 -0
  343. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/cli_steps.py +0 -0
  344. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/discovery_steps.py +0 -0
  345. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/mcp_steps.py +0 -0
  346. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/quality_steps.py +0 -0
  347. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/conftest.py +0 -0
  348. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/baseline.json +0 -0
  349. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/explain.jsonl +0 -0
  350. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/golden.jsonl +0 -0
  351. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/recommend.jsonl +0 -0
  352. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/taps.txt +0 -0
  353. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_capabilities_policy.py +0 -0
  354. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_adapt.py +0 -0
  355. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_bmad.py +0 -0
  356. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_configuration.py +0 -0
  357. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_discovery.py +0 -0
  358. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_hooks.py +0 -0
  359. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_info.py +0 -0
  360. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_intelligence.py +0 -0
  361. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_pkg.py +0 -0
  362. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_quality.py +0 -0
  363. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_taps.py +0 -0
  364. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_team.py +0 -0
  365. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_everyday_loop.py +0 -0
  366. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_integrity_enforce.py +0 -0
  367. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_property_parsers.py +0 -0
  368. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_run.py +0 -0
  369. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_tap_signing.py +0 -0
  370. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_workspace_scope.py +0 -0
  371. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/README.md +0 -0
  372. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  373. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  374. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  375. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  376. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  377. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  378. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  379. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  380. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  381. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  382. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  383. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  384. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  385. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  386. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  387. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  388. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  389. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  390. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  391. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  392. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/fuzz_frontmatter.py +0 -0
  393. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/fuzz_registry.py +0 -0
  394. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/make_fixture.py +0 -0
  395. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/perf/test_benchmarks.py +0 -0
  396. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/smoke.sh +0 -0
  397. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_a11y_check.py +0 -0
  398. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_adapters.py +0 -0
  399. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_adapters_multi.py +0 -0
  400. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_adapters_runner.py +0 -0
  401. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_agents.py +0 -0
  402. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_ai.py +0 -0
  403. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_capabilities.py +0 -0
  404. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_catalog.py +0 -0
  405. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_check_anchors.py +0 -0
  406. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_claude_settings.py +0 -0
  407. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_cliparse.py +0 -0
  408. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_command_reference_fresh.py +0 -0
  409. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_config.py +0 -0
  410. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_dense.py +0 -0
  411. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_dense_fallback.py +0 -0
  412. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_docs_pages_linked.py +0 -0
  413. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_docsite_chrome.py +0 -0
  414. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_ed25519.py +0 -0
  415. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_embed.py +0 -0
  416. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_errors_and_cli_table.py +0 -0
  417. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_eval_stats_summary.py +0 -0
  418. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_faithfulness.py +0 -0
  419. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_frontmatter.py +0 -0
  420. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_fuzz_targets.py +0 -0
  421. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_gitleaks_config.py +0 -0
  422. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_gitutil.py +0 -0
  423. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_imperative.py +0 -0
  424. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_import_budget.py +0 -0
  425. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_injectscan.py +0 -0
  426. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_integrity.py +0 -0
  427. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_journal.py +0 -0
  428. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_lockfile.py +0 -0
  429. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_logs.py +0 -0
  430. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_mcp.py +0 -0
  431. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_mcpdecl.py +0 -0
  432. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_minisign.py +0 -0
  433. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_mutation_hardening.py +0 -0
  434. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_nethttp.py +0 -0
  435. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_output.py +0 -0
  436. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_paths.py +0 -0
  437. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_perf_gate.py +0 -0
  438. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_pkg_confusions.py +0 -0
  439. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_pkg_injection.py +0 -0
  440. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_pkg_secrets.py +0 -0
  441. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_policy.py +0 -0
  442. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_projectlock.py +0 -0
  443. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_provenance.py +0 -0
  444. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_rag.py +0 -0
  445. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_registries_fresh.py +0 -0
  446. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_registry.py +0 -0
  447. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_resolve.py +0 -0
  448. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_roadmap_fresh.py +0 -0
  449. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_rules.py +0 -0
  450. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_scopes.py +0 -0
  451. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_secretscan.py +0 -0
  452. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_serve.py +0 -0
  453. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_spin.py +0 -0
  454. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_stackprobe.py +0 -0
  455. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_staleness.py +0 -0
  456. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_store.py +0 -0
  457. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_token_parity.py +0 -0
  458. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_toolchain_lock.py +0 -0
  459. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_trustaudit.py +0 -0
  460. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_typosquat.py +0 -0
  461. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_updatediff.py +0 -0
  462. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_util.py +0 -0
  463. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_version.py +0 -0
  464. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_workflows.py +0 -0
  465. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/visual/a11y_check.mjs +0 -0
  466. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/visual/package.json +0 -0
  467. {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/visual/visual_check.mjs +0 -0
@@ -4,6 +4,36 @@ boost is a "Homebrew for AI coding skills": a Python CLI (`boost_cli`) that find
4
4
  installs, and governs the skill/rule/workflow files that AI coding agents run on.
5
5
  Package name on PyPI is `boost-skill-cli`; the command is `boost`.
6
6
 
7
+ ## Common commands
8
+
9
+ ```bash
10
+ make venv # .venv from the hash-pinned requirements/*.txt
11
+ .venv/bin/pytest tests/unit/test_catalog.py -q # one test file
12
+ .venv/bin/pytest tests/unit/test_catalog.py::test_scan_dir -q # one test
13
+ .venv/bin/pytest tests/functional -q -k install # functional tests matching "install"
14
+ make lint # the whole static tier — see the recipe, it is 18 commands
15
+ make test # unit + functional with 80% coverage gate
16
+ make check # the full required gate — see table below
17
+
18
+ # run boost itself against a disposable HOME (never your real ~/.boost):
19
+ export HOME=/tmp/boost-sandbox && mkdir -p $HOME
20
+ python3 tests/make_fixture.py /tmp/fixture-tap
21
+ ./boost tap /tmp/fixture-tap
22
+ ./boost install brainstorming
23
+ ./boost doctor
24
+ ```
25
+
26
+ `make venv` installs from `requirements/*.txt`, which are hash-pinned and are the
27
+ same files CI installs (`scripts/lock_toolchain.py --check` gates them against
28
+ drift) — so a dev venv and a runner resolve to identical bytes. Don't `pip
29
+ install` a lint or test tool by hand; add it to the right requirements file and
30
+ regenerate the lock, or `make lint` passes for you and fails in CI.
31
+
32
+ The functional/unit `sandbox` fixture (`tests/conftest.py`) also sets
33
+ `BOOST_NO_AI=1` and `BOOST_ASSUME_YES=1` so tests are deterministic and never
34
+ block on a confirm prompt or a real AI call — override explicitly in a test
35
+ that means to exercise the AI or confirmation path.
36
+
7
37
  ## The one gate that matters
8
38
 
9
39
  Before calling any change done, run the full gate:
@@ -124,9 +154,57 @@ Both boards are data-driven: `docs/roadmap.html` from `board: code` items and
124
154
  into the per-track sections; the filter JS and counters are computed). Same rule
125
155
  for both — edit items, run `build_roadmap.py`, never touch the HTML by hand.
126
156
 
157
+ ## Architecture
158
+
159
+ **CLI dispatch.** `boost_cli/cli.py` holds `COMMANDS`, the single
160
+ source-of-truth list of `(name, group, module, summary)` for all 78 commands.
161
+ Each command is implemented as `def cmd_<name_with_underscores>(argv) -> int`
162
+ inside `boost_cli/commands/<module>.py`, and `_dispatch` imports that module
163
+ lazily on invocation — so `boost --help` stays instant and command modules are
164
+ decoupled from each other. To add a command: add a row to `COMMANDS`, add the
165
+ `cmd_*` function to the named module, and it's live. `docs/commands.html` is
166
+ **generated** from `COMMANDS` by `scripts/build_command_reference.py`, so a new
167
+ row means regenerating it (`make generate`) or the `--check` gate fails.
168
+
169
+ **commands/ vs core/.** `boost_cli/commands/` is thin CLI glue — argument
170
+ parsing, output formatting, calling into `core/`. `boost_cli/core/` is the
171
+ actual engine (catalog scanning, install/link logic, the lock file, registries,
172
+ search) and is what the mutation gate targets — put behavior there, not in
173
+ the command layer, so it's covered by both the unit suite and mutation
174
+ testing.
175
+
176
+ **Storage layout**, all resolved at call time from `$HOME` (or `$BOOST_HOME`)
177
+ in `boost_cli/core/paths.py`, which is what makes `HOME=<tempdir>` sandboxing
178
+ work in tests and the dev loop:
179
+
180
+ ```text
181
+ ~/.boost/repos/ shallow git clones of tapped registries
182
+ ~/.boost/cache/ JSON catalogs built from SKILL.md/rule/workflow frontmatter
183
+ ~/.boost/logs/ rotating diagnostic log + crash reports
184
+ ~/.boost/state/ pins, tags, policy, profiles, pulse feed, snapshots
185
+ ~/.boost/config.json
186
+ ~/.agents/skills/ canonical store — single source of truth for installed skills
187
+ ~/.agents/skills/.skill-lock.json v3 lock file
188
+ ~/.claude/skills/ ~/.windsurf/skills/ ~/.cursor/skills/ symlinked out from the canonical store
189
+ ```
190
+
191
+ `core/catalog.scan_dir` walks a tap's clone and classifies each file into one
192
+ of the three item kinds (see Non-obvious rules above); `core/store.py` owns
193
+ install, uninstall and sync — copying into the canonical store, symlinking into
194
+ each agent's skills dir, and updating the lock file.
195
+
196
+ **Search has two engines**, both in `core/`: `rag.py` is the always-on,
197
+ zero-dependency BM25 engine (full-content index, auto-builds on first
198
+ search — this is what the required `eval` gate floors at recall@k ≥ 0.85).
199
+ `dense.py` is optional dense/vector retrieval behind the `[rag]` extra plus
200
+ an embeddings key (`VOYAGE_API_KEY`/`OPENAI_API_KEY`); it's used when both
201
+ are present and falls back to BM25 otherwise. `core/ai.py` wraps the
202
+ opt-in LLM-assisted paths (`search --smart`, `explain`, `distill`, `infer`,
203
+ `absorb`, `evolve`, `simulate`, …), shelling out to the `claude` CLI or
204
+ `ANTHROPIC_API_KEY` when available and degrading to heuristics when not.
205
+
127
206
  ## Layout
128
207
 
129
- - `boost_cli/commands/` — CLI command groups · `boost_cli/core/` — engine (the mutation-gated code)
130
208
  - `boost_cli/data/` — shipped catalog data (generated) · `scripts/` — build/gate tooling
131
209
  - `tests/unit`, `tests/functional`, `tests/smoke.sh` — the three test tiers
132
- - `docs/` — `overview.html` (visual guide), `DEBUGGING.md`; `roadmap.html` is generated from `docs/roadmap/items/*.md` (see above)
210
+ - `docs/` — `index.html` (visual guide), `commands.html` (every flag, generated), `DEBUGGING.md`; `roadmap.html` is generated from `docs/roadmap/items/*.md` (see above)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.214
3
+ Version: 1.0.216
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.214'
22
- __version_tuple__ = version_tuple = (1, 0, 214)
21
+ __version__ = version = '1.0.216'
22
+ __version_tuple__ = version_tuple = (1, 0, 216)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.214
3
+ Version: 1.0.216
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -210,6 +210,7 @@ docs/roadmap/items/localize-the-stored-bm25-snippet.md
210
210
  docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md
211
211
  docs/roadmap/items/log-timestamps-mislabeled-utc.md
212
212
  docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md
213
+ docs/roadmap/items/main-has-no-branch-protection.md
213
214
  docs/roadmap/items/make-the-roadmaps-discoverable.md
214
215
  docs/roadmap/items/markdown-consistency-markdownlint-cli2.md
215
216
  docs/roadmap/items/mcp-aware-skills.md
@@ -259,6 +260,7 @@ docs/roadmap/items/runtime-explain-faithfulness-guardrail.md
259
260
  docs/roadmap/items/sbom-aware-scanning-osv-scanner.md
260
261
  docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md
261
262
  docs/roadmap/items/scan-and-sync-rules-and-workflows.md
263
+ docs/roadmap/items/scorecard-findings-triage.md
262
264
  docs/roadmap/items/second-type-checker-pyright.md
263
265
  docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md
264
266
  docs/roadmap/items/secret-scanning-gitleaks-push-protection.md
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: main-has-no-branch-protection
3
+ board: code
4
+ section: pipeline
5
+ status: planned
6
+ category: Release safety
7
+ complexity: S
8
+ impact: High
9
+ wow: 3
10
+ note: nothing enforces the red-merge rule
11
+ order: 14
12
+ owner:
13
+ pr:
14
+ title: <code>main</code> has no branch protection, so the release rules are honour-system
15
+ ---
16
+ <code>GET /branches/main/protection</code> returns <b>"Branch not protected"</b>. Scorecard
17
+ flags it (<code>BranchProtectionID</code>, score 0), but the sharper way to see it is this:
18
+ CLAUDE.md says <i>"never merge onto a red release"</i> and <i>"every merge to main cuts a
19
+ PyPI release"</i> — and <b>nothing enforces either</b>. A merge with a red gate succeeds
20
+ silently, and the release workflow then ships that commit to PyPI. The rule exists only in
21
+ the head of whoever is merging.
22
+ This is a <b>decision, not a bug</b>, which is why it is filed rather than fixed. Requiring
23
+ status checks would have stopped the exact situation that occurred on
24
+ 2026-07-25, when three PRs sat red on a <code>lock_toolchain --check</code> failure that
25
+ belonged to none of them. But protection cuts both ways here: the repo's whole working model
26
+ is parallel <code>loop/*</code> branches opening and merging their own PRs, so
27
+ <b>"require pull request reviews"</b> would deadlock every loop (there is no second
28
+ reviewer), and that same absence is what keeps <code>CodeReviewID</code> pinned at 0/30.
29
+ The shape that fits: require <b>status checks</b> to pass (at minimum <code>ci / lint</code>
30
+ and <code>ci / tests</code>) and require branches to be up to date, but do <b>not</b>
31
+ require reviews. That enforces the release rule that actually matters while leaving
32
+ self-merge intact. Decide before adding more concurrent loops, not after.
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: scorecard-findings-triage
3
+ board: code
4
+ section: pipeline
5
+ status: planned
6
+ category: Supply chain
7
+ complexity: M
8
+ impact: Med
9
+ wow: 2
10
+ note: 15 open · 3 fixed, 4 intentional, 5 not code-fixable
11
+ order: 13
12
+ owner:
13
+ pr:
14
+ title: OpenSSF Scorecard's 15 findings, triaged into three piles
15
+ ---
16
+ Scorecard files into the same code-scanning inbox as CodeQL, so its findings read like
17
+ code defects and get ignored alongside the false positives. They are not defects — they
18
+ are <b>posture metrics</b>, and they must not be dismissed as "false positive" the way the
19
+ <code>serve.py</code> traversal alerts legitimately were, because that misrepresents the
20
+ repo's security posture. Triaged 2026-07-25:
21
+ <b>Fixed</b> — <code>TokenPermissions</code> #26/#27/#28: <code>ci</code>,
22
+ <code>codeql</code> and <code>adapter-conformance</code> had no top-level
23
+ <code>permissions:</code> block at all, scoring 0. Added <code>contents: read</code> as the
24
+ least-privilege default.
25
+ <b>Intentional, leave</b> — <code>TokenPermissions</code> #39/#37/#25/#24:
26
+ <code>publish.yml</code> needs <code>contents: write</code> to create the release and tag,
27
+ <code>osv-scanner</code> needs <code>security-events: write</code> to upload SARIF, and
28
+ <code>ci.yml</code>'s <code>tests</code> job needs <code>contents: write</code> for the
29
+ coverage-badge push. "Fixing" these breaks the release pipeline. They should be
30
+ <b>dismissed as used-in-tests/acceptable-risk with a reason</b>, not left open to rot the list.
31
+ <b>Not code-fixable</b> — <code>MaintainedID</code> is repository age; <code>CodeReviewID</code>
32
+ counts approved changesets and is structurally 0 while loops self-merge;
33
+ <code>CIIBestPracticesID</code> is an opt-in badge programme; the four
34
+ <code>PinnedDependencies</code> hits are <code>npx</code> and <code>pip</code> invocations
35
+ inside steps, not actions, so SHA-pinning does not apply to them as written.
36
+ <code>BranchProtectionID</code> is tracked separately in
37
+ <a href="#main-has-no-branch-protection">its own card</a> — it is a workflow decision, not a
38
+ config oversight.
@@ -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>143</b><span>Loop finds</span></div>
112
+ <div class="stat"><b>145</b><span>Loop finds</span></div>
113
113
  <!-- /ROADMAP:stats -->
114
114
  </div>
115
115
  </section>
@@ -1725,6 +1725,68 @@ path is never used — that fixes the behaviour without satisfying Dependabot's
1725
1725
  <span class="m">dismissed as tolerable risk, 2026-07-25</span>
1726
1726
  </div>
1727
1727
  </article>
1728
+
1729
+ <article class="cap rcard" id="scorecard-findings-triage">
1730
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Supply chain</span></div>
1731
+ <h3>OpenSSF Scorecard's 15 findings, triaged into three piles</h3>
1732
+ <p>Scorecard files into the same code-scanning inbox as CodeQL, so its findings read like
1733
+ code defects and get ignored alongside the false positives. They are not defects — they
1734
+ are <b>posture metrics</b>, and they must not be dismissed as "false positive" the way the
1735
+ <code>serve.py</code> traversal alerts legitimately were, because that misrepresents the
1736
+ repo's security posture. Triaged 2026-07-25:
1737
+ <b>Fixed</b> — <code>TokenPermissions</code> #26/#27/#28: <code>ci</code>,
1738
+ <code>codeql</code> and <code>adapter-conformance</code> had no top-level
1739
+ <code>permissions:</code> block at all, scoring 0. Added <code>contents: read</code> as the
1740
+ least-privilege default.
1741
+ <b>Intentional, leave</b> — <code>TokenPermissions</code> #39/#37/#25/#24:
1742
+ <code>publish.yml</code> needs <code>contents: write</code> to create the release and tag,
1743
+ <code>osv-scanner</code> needs <code>security-events: write</code> to upload SARIF, and
1744
+ <code>ci.yml</code>'s <code>tests</code> job needs <code>contents: write</code> for the
1745
+ coverage-badge push. "Fixing" these breaks the release pipeline. They should be
1746
+ <b>dismissed as used-in-tests/acceptable-risk with a reason</b>, not left open to rot the list.
1747
+ <b>Not code-fixable</b> — <code>MaintainedID</code> is repository age; <code>CodeReviewID</code>
1748
+ counts approved changesets and is structurally 0 while loops self-merge;
1749
+ <code>CIIBestPracticesID</code> is an opt-in badge programme; the four
1750
+ <code>PinnedDependencies</code> hits are <code>npx</code> and <code>pip</code> invocations
1751
+ inside steps, not actions, so SHA-pinning does not apply to them as written.
1752
+ <code>BranchProtectionID</code> is tracked separately in
1753
+ <a href="#main-has-no-branch-protection">its own card</a> — it is a workflow decision, not a
1754
+ config oversight.</p>
1755
+ <div class="meta">
1756
+ <span class="m">Complexity <b>M</b></span>
1757
+ <span class="m">Impact <b>Med</b></span>
1758
+ <span class="m">Wow <b class="wow">★★</b></span>
1759
+ <span class="m">15 open · 3 fixed, 4 intentional, 5 not code-fixable</span>
1760
+ </div>
1761
+ </article>
1762
+
1763
+ <article class="cap rcard" id="main-has-no-branch-protection">
1764
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Release safety</span></div>
1765
+ <h3><code>main</code> has no branch protection, so the release rules are honour-system</h3>
1766
+ <p><code>GET /branches/main/protection</code> returns <b>"Branch not protected"</b>. Scorecard
1767
+ flags it (<code>BranchProtectionID</code>, score 0), but the sharper way to see it is this:
1768
+ CLAUDE.md says <i>"never merge onto a red release"</i> and <i>"every merge to main cuts a
1769
+ PyPI release"</i> — and <b>nothing enforces either</b>. A merge with a red gate succeeds
1770
+ silently, and the release workflow then ships that commit to PyPI. The rule exists only in
1771
+ the head of whoever is merging.
1772
+ This is a <b>decision, not a bug</b>, which is why it is filed rather than fixed. Requiring
1773
+ status checks would have stopped the exact situation that occurred on
1774
+ 2026-07-25, when three PRs sat red on a <code>lock_toolchain --check</code> failure that
1775
+ belonged to none of them. But protection cuts both ways here: the repo's whole working model
1776
+ is parallel <code>loop/*</code> branches opening and merging their own PRs, so
1777
+ <b>"require pull request reviews"</b> would deadlock every loop (there is no second
1778
+ reviewer), and that same absence is what keeps <code>CodeReviewID</code> pinned at 0/30.
1779
+ The shape that fits: require <b>status checks</b> to pass (at minimum <code>ci / lint</code>
1780
+ and <code>ci / tests</code>) and require branches to be up to date, but do <b>not</b>
1781
+ require reviews. That enforces the release rule that actually matters while leaving
1782
+ self-merge intact. Decide before adding more concurrent loops, not after.</p>
1783
+ <div class="meta">
1784
+ <span class="m">Complexity <b>S</b></span>
1785
+ <span class="m hi">Impact <b>High</b></span>
1786
+ <span class="m">Wow <b class="wow">★★★</b></span>
1787
+ <span class="m">nothing enforces the red-merge rule</span>
1788
+ </div>
1789
+ </article>
1728
1790
  <!-- /ROADMAP:cards -->
1729
1791
 
1730
1792
  </div>