boost-skill-cli 1.0.61__tar.gz → 1.0.63__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 (204) hide show
  1. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/.gitattributes +1 -0
  2. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/CONTRIBUTING.md +15 -3
  3. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/Makefile +7 -0
  4. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/PKG-INFO +1 -1
  5. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/_version.py +2 -2
  6. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  7. boost_skill_cli-1.0.63/boost_skill_cli.egg-info/SOURCES.txt +202 -0
  8. boost_skill_cli-1.0.63/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +20 -0
  9. boost_skill_cli-1.0.63/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +16 -0
  10. boost_skill_cli-1.0.63/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +16 -0
  11. boost_skill_cli-1.0.63/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +19 -0
  12. boost_skill_cli-1.0.63/docs/roadmap/items/bring-commands-under-mutation-testing.md +18 -0
  13. boost_skill_cli-1.0.63/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +20 -0
  14. boost_skill_cli-1.0.63/docs/roadmap/items/build-provenance-slsa-attestations.md +20 -0
  15. boost_skill_cli-1.0.63/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +16 -0
  16. boost_skill_cli-1.0.63/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +20 -0
  17. boost_skill_cli-1.0.63/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +21 -0
  18. boost_skill_cli-1.0.63/docs/roadmap/items/command-reference-docs-site.md +24 -0
  19. boost_skill_cli-1.0.63/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +20 -0
  20. boost_skill_cli-1.0.63/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +16 -0
  21. boost_skill_cli-1.0.63/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +20 -0
  22. boost_skill_cli-1.0.63/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +20 -0
  23. boost_skill_cli-1.0.63/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +22 -0
  24. boost_skill_cli-1.0.63/docs/roadmap/items/dependency-cve-gate-pip-audit.md +21 -0
  25. boost_skill_cli-1.0.63/docs/roadmap/items/docstring-coverage-interrogate.md +19 -0
  26. boost_skill_cli-1.0.63/docs/roadmap/items/end-of-options-guard-on-git-commands.md +16 -0
  27. boost_skill_cli-1.0.63/docs/roadmap/items/extension-free-tests-core-dense-py.md +23 -0
  28. boost_skill_cli-1.0.63/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +16 -0
  29. boost_skill_cli-1.0.63/docs/roadmap/items/finish-mutation-hardening-across-core.md +19 -0
  30. boost_skill_cli-1.0.63/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +16 -0
  31. boost_skill_cli-1.0.63/docs/roadmap/items/frontmatter-scalar-over-coercion.md +16 -0
  32. boost_skill_cli-1.0.63/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +20 -0
  33. boost_skill_cli-1.0.63/docs/roadmap/items/guard-output-table-against-ragged-rows.md +16 -0
  34. boost_skill_cli-1.0.63/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +20 -0
  35. boost_skill_cli-1.0.63/docs/roadmap/items/html-validation-html-validate.md +20 -0
  36. boost_skill_cli-1.0.63/docs/roadmap/items/integrity-verification-boost-verify.md +21 -0
  37. boost_skill_cli-1.0.63/docs/roadmap/items/layering-guard-import-linter.md +20 -0
  38. boost_skill_cli-1.0.63/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +20 -0
  39. boost_skill_cli-1.0.63/docs/roadmap/items/localize-the-stored-bm25-snippet.md +16 -0
  40. boost_skill_cli-1.0.63/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +19 -0
  41. boost_skill_cli-1.0.63/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +19 -0
  42. boost_skill_cli-1.0.63/docs/roadmap/items/make-the-roadmaps-discoverable.md +20 -0
  43. boost_skill_cli-1.0.63/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +20 -0
  44. boost_skill_cli-1.0.63/docs/roadmap/items/memoize-config-load-in-process.md +16 -0
  45. boost_skill_cli-1.0.63/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +19 -0
  46. boost_skill_cli-1.0.63/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +19 -0
  47. boost_skill_cli-1.0.63/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +19 -0
  48. boost_skill_cli-1.0.63/docs/roadmap/items/mutation-hardening-core-store-py.md +19 -0
  49. boost_skill_cli-1.0.63/docs/roadmap/items/one-command-every-env-nox.md +20 -0
  50. boost_skill_cli-1.0.63/docs/roadmap/items/one-shared-atomic-write-helper.md +16 -0
  51. boost_skill_cli-1.0.63/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +20 -0
  52. boost_skill_cli-1.0.63/docs/roadmap/items/patch-coverage-gate-diff-cover.md +19 -0
  53. boost_skill_cli-1.0.63/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +19 -0
  54. boost_skill_cli-1.0.63/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +20 -0
  55. boost_skill_cli-1.0.63/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +19 -0
  56. boost_skill_cli-1.0.63/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +21 -0
  57. boost_skill_cli-1.0.63/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +21 -0
  58. boost_skill_cli-1.0.63/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +21 -0
  59. boost_skill_cli-1.0.63/docs/roadmap/items/prose-and-terminology-linting-vale.md +20 -0
  60. boost_skill_cli-1.0.63/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +16 -0
  61. boost_skill_cli-1.0.63/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +20 -0
  62. boost_skill_cli-1.0.63/docs/roadmap/items/reconcile-the-theme-drift.md +19 -0
  63. boost_skill_cli-1.0.63/docs/roadmap/items/refresh-the-marketing-surface.md +18 -0
  64. boost_skill_cli-1.0.63/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +16 -0
  65. boost_skill_cli-1.0.63/docs/roadmap/items/robust-tag-argument-parsing.md +16 -0
  66. boost_skill_cli-1.0.63/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +20 -0
  67. boost_skill_cli-1.0.63/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +19 -0
  68. boost_skill_cli-1.0.63/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +20 -0
  69. boost_skill_cli-1.0.63/docs/roadmap/items/second-type-checker-pyright.md +20 -0
  70. boost_skill_cli-1.0.63/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +20 -0
  71. boost_skill_cli-1.0.63/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +20 -0
  72. boost_skill_cli-1.0.63/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +22 -0
  73. boost_skill_cli-1.0.63/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +20 -0
  74. boost_skill_cli-1.0.63/docs/roadmap/items/single-imperative-rule-extractor.md +16 -0
  75. boost_skill_cli-1.0.63/docs/roadmap/items/single-tech-stack-prober.md +16 -0
  76. boost_skill_cli-1.0.63/docs/roadmap/items/split-oversized-command-modules.md +16 -0
  77. boost_skill_cli-1.0.63/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +19 -0
  78. boost_skill_cli-1.0.63/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +16 -0
  79. boost_skill_cli-1.0.63/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +21 -0
  80. boost_skill_cli-1.0.63/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +20 -0
  81. boost_skill_cli-1.0.63/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +20 -0
  82. boost_skill_cli-1.0.63/docs/roadmap/items/typo-detection-codespell.md +19 -0
  83. boost_skill_cli-1.0.63/docs/roadmap/items/typosquat-and-name-confusion-detection.md +20 -0
  84. boost_skill_cli-1.0.63/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +16 -0
  85. boost_skill_cli-1.0.63/docs/roadmap/items/untrack-generated-build-noise.md +19 -0
  86. boost_skill_cli-1.0.63/docs/roadmap/items/update-diff-before-apply.md +20 -0
  87. boost_skill_cli-1.0.63/docs/roadmap/items/visual-regression-pass-on-the-guide.md +18 -0
  88. boost_skill_cli-1.0.63/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +21 -0
  89. boost_skill_cli-1.0.63/docs/roadmap/items/windows-in-the-ci-matrix.md +20 -0
  90. boost_skill_cli-1.0.63/docs/roadmap/items/workflow-linting-actionlint.md +20 -0
  91. boost_skill_cli-1.0.63/docs/roadmap/items/workflow-sast-zizmor.md +21 -0
  92. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/roadmap.html +46 -4
  93. boost_skill_cli-1.0.63/scripts/build_roadmap.py +225 -0
  94. boost_skill_cli-1.0.63/tests/unit/test_roadmap_fresh.py +60 -0
  95. boost_skill_cli-1.0.61/boost_skill_cli.egg-info/SOURCES.txt +0 -116
  96. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/.gitignore +0 -0
  97. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/CLAUDE.md +0 -0
  98. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/LICENSE +0 -0
  99. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/MANIFEST.in +0 -0
  100. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/README.md +0 -0
  101. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/SECURITY.md +0 -0
  102. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost +0 -0
  103. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/__init__.py +0 -0
  104. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/__main__.py +0 -0
  105. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/cli.py +0 -0
  106. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/cliparse.py +0 -0
  107. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/__init__.py +0 -0
  108. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/bmad.py +0 -0
  109. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/configuration.py +0 -0
  110. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/discovery.py +0 -0
  111. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/hooks.py +0 -0
  112. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/info.py +0 -0
  113. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/intelligence.py +0 -0
  114. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/pkg.py +0 -0
  115. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/quality.py +0 -0
  116. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/taps.py +0 -0
  117. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/team.py +0 -0
  118. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/__init__.py +0 -0
  119. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/agents.py +0 -0
  120. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/ai.py +0 -0
  121. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/catalog.py +0 -0
  122. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/claude_settings.py +0 -0
  123. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/config.py +0 -0
  124. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/dense.py +0 -0
  125. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/embed.py +0 -0
  126. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/frontmatter.py +0 -0
  127. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/gitutil.py +0 -0
  128. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/journal.py +0 -0
  129. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/lockfile.py +0 -0
  130. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/logs.py +0 -0
  131. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/mcp.py +0 -0
  132. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/output.py +0 -0
  133. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/paths.py +0 -0
  134. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/policy.py +0 -0
  135. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/rag.py +0 -0
  136. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/registry.py +0 -0
  137. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/store.py +0 -0
  138. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/util.py +0 -0
  139. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/data/registries.json +0 -0
  140. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/errors.py +0 -0
  141. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/spin.py +0 -0
  142. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  143. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  144. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/requires.txt +0 -0
  145. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/top_level.txt +0 -0
  146. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/.claude/settings.local.json +0 -0
  147. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/DEBUGGING.md +0 -0
  148. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/demo.gif +0 -0
  149. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/demo.tape +0 -0
  150. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/design-roadmap.html +0 -0
  151. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/index.html +0 -0
  152. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/mcp-hub.html +0 -0
  153. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/rag-architecture.md +0 -0
  154. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/index.html +0 -0
  155. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/pyproject.toml +0 -0
  156. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/scripts/build_registries.py +0 -0
  157. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/scripts/mutation_gate.py +0 -0
  158. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/setup.cfg +0 -0
  159. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/README.md +0 -0
  160. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/boost.css +0 -0
  161. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/boost.js +0 -0
  162. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/demo.html +0 -0
  163. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/conftest.py +0 -0
  164. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_bmad.py +0 -0
  165. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_configuration.py +0 -0
  166. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_discovery.py +0 -0
  167. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_hooks.py +0 -0
  168. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_info.py +0 -0
  169. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_intelligence.py +0 -0
  170. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_pkg.py +0 -0
  171. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_quality.py +0 -0
  172. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_taps.py +0 -0
  173. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_team.py +0 -0
  174. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_everyday_loop.py +0 -0
  175. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/make_fixture.py +0 -0
  176. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/smoke.sh +0 -0
  177. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_agents.py +0 -0
  178. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_ai.py +0 -0
  179. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_catalog.py +0 -0
  180. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_claude_settings.py +0 -0
  181. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_cliparse.py +0 -0
  182. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_config.py +0 -0
  183. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_dense.py +0 -0
  184. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_dense_fallback.py +0 -0
  185. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_embed.py +0 -0
  186. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_errors_and_cli_table.py +0 -0
  187. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_frontmatter.py +0 -0
  188. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_gitutil.py +0 -0
  189. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_journal.py +0 -0
  190. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_lockfile.py +0 -0
  191. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_logs.py +0 -0
  192. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_mcp.py +0 -0
  193. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_mutation_hardening.py +0 -0
  194. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_output.py +0 -0
  195. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_paths.py +0 -0
  196. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_policy.py +0 -0
  197. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_rag.py +0 -0
  198. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_registries_fresh.py +0 -0
  199. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_registry.py +0 -0
  200. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_spin.py +0 -0
  201. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_store.py +0 -0
  202. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_token_parity.py +0 -0
  203. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_util.py +0 -0
  204. {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_version.py +0 -0
@@ -2,3 +2,4 @@
2
2
  # CONTRIBUTING.md "Generated files"). Marked linguist-generated so GitHub
3
3
  # collapses their diffs and excludes them from language stats.
4
4
  boost_cli/data/registries.json linguist-generated=true
5
+ docs/roadmap.html linguist-generated=true
@@ -42,10 +42,22 @@ drifts from its source (CI fails the build otherwise):
42
42
  | Generated file | Source of truth | Regenerate with |
43
43
  |---|---|---|
44
44
  | `boost_cli/data/registries.json` | `SKILLS`/`RULES`/`WORKFLOWS` tuples in `scripts/build_registries.py` | `python3 scripts/build_registries.py` |
45
+ | `docs/roadmap.html` | one file per item under `docs/roadmap/items/` | `python3 scripts/build_roadmap.py` |
45
46
 
46
- CI runs `python3 scripts/build_registries.py --check` and fails on drift; the
47
- same guard lives in `tests/unit/test_registries_fresh.py`. Regenerating last also
48
- keeps line-adjacent JSON conflicts between parallel branches rare.
47
+ Or regenerate everything at once with `make generate`. CI runs the matching
48
+ `--check` for each and fails on drift; the same guards live in
49
+ `tests/unit/test_registries_fresh.py` and `tests/unit/test_roadmap_fresh.py`.
50
+
51
+ ### The roadmap is data-driven — add items, don't edit the HTML
52
+
53
+ To add or change a roadmap card, create/edit a small Markdown-with-frontmatter
54
+ file under `docs/roadmap/items/` and run `python3 scripts/build_roadmap.py`.
55
+ **Never hand-edit the `<article>` cards or the snapshot counters in
56
+ `docs/roadmap.html`** — they are regenerated, and the counters are computed. This
57
+ is what lets parallel loops work the roadmap without colliding: two loops adding
58
+ two items create two different files (clean merge); a status change edits one
59
+ small file instead of a shared line in a 1,400-line document. Regenerating last
60
+ also keeps line-adjacent conflicts rare.
49
61
 
50
62
  ## Pull requests
51
63
 
@@ -35,6 +35,13 @@ mutation:
35
35
  lint:
36
36
  $(VENV)/bin/ruff check boost_cli tests
37
37
  $(VENV)/bin/mypy
38
+ $(PY) scripts/build_registries.py --check
39
+ $(PY) scripts/build_roadmap.py --check
40
+
41
+ # regenerate generated artifacts from their source (registries + roadmap boards)
42
+ generate:
43
+ $(PY) scripts/build_registries.py
44
+ $(PY) scripts/build_roadmap.py
38
45
 
39
46
  # regenerate docs/demo.gif (brew install vhs)
40
47
  demo:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.61
3
+ Version: 1.0.63
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.61'
22
- __version_tuple__ = version_tuple = (1, 0, 61)
21
+ __version__ = version = '1.0.63'
22
+ __version_tuple__ = version_tuple = (1, 0, 63)
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.61
3
+ Version: 1.0.63
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -0,0 +1,202 @@
1
+ .gitattributes
2
+ .gitignore
3
+ CLAUDE.md
4
+ CONTRIBUTING.md
5
+ LICENSE
6
+ MANIFEST.in
7
+ Makefile
8
+ README.md
9
+ SECURITY.md
10
+ boost
11
+ index.html
12
+ pyproject.toml
13
+ setup.cfg
14
+ boost_cli/__init__.py
15
+ boost_cli/__main__.py
16
+ boost_cli/_version.py
17
+ boost_cli/cli.py
18
+ boost_cli/cliparse.py
19
+ boost_cli/errors.py
20
+ boost_cli/spin.py
21
+ boost_cli/commands/__init__.py
22
+ boost_cli/commands/bmad.py
23
+ boost_cli/commands/configuration.py
24
+ boost_cli/commands/discovery.py
25
+ boost_cli/commands/hooks.py
26
+ boost_cli/commands/info.py
27
+ boost_cli/commands/intelligence.py
28
+ boost_cli/commands/pkg.py
29
+ boost_cli/commands/quality.py
30
+ boost_cli/commands/taps.py
31
+ boost_cli/commands/team.py
32
+ boost_cli/core/__init__.py
33
+ boost_cli/core/agents.py
34
+ boost_cli/core/ai.py
35
+ boost_cli/core/catalog.py
36
+ boost_cli/core/claude_settings.py
37
+ boost_cli/core/config.py
38
+ boost_cli/core/dense.py
39
+ boost_cli/core/embed.py
40
+ boost_cli/core/frontmatter.py
41
+ boost_cli/core/gitutil.py
42
+ boost_cli/core/journal.py
43
+ boost_cli/core/lockfile.py
44
+ boost_cli/core/logs.py
45
+ boost_cli/core/mcp.py
46
+ boost_cli/core/output.py
47
+ boost_cli/core/paths.py
48
+ boost_cli/core/policy.py
49
+ boost_cli/core/rag.py
50
+ boost_cli/core/registry.py
51
+ boost_cli/core/store.py
52
+ boost_cli/core/util.py
53
+ boost_cli/data/registries.json
54
+ boost_skill_cli.egg-info/PKG-INFO
55
+ boost_skill_cli.egg-info/SOURCES.txt
56
+ boost_skill_cli.egg-info/dependency_links.txt
57
+ boost_skill_cli.egg-info/entry_points.txt
58
+ boost_skill_cli.egg-info/requires.txt
59
+ boost_skill_cli.egg-info/top_level.txt
60
+ docs/DEBUGGING.md
61
+ docs/demo.gif
62
+ docs/demo.tape
63
+ docs/design-roadmap.html
64
+ docs/index.html
65
+ docs/mcp-hub.html
66
+ docs/rag-architecture.md
67
+ docs/roadmap.html
68
+ docs/.claude/settings.local.json
69
+ docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md
70
+ docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md
71
+ docs/roadmap/items/atomic-skill-install-temp-dir-swap.md
72
+ docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md
73
+ docs/roadmap/items/bring-commands-under-mutation-testing.md
74
+ docs/roadmap/items/broken-link-and-anchor-checking-lychee.md
75
+ docs/roadmap/items/build-provenance-slsa-attestations.md
76
+ docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md
77
+ docs/roadmap/items/capability-manifest-and-least-privilege-policy.md
78
+ docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md
79
+ docs/roadmap/items/command-reference-docs-site.md
80
+ docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md
81
+ docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md
82
+ docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md
83
+ docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md
84
+ docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md
85
+ docs/roadmap/items/dependency-cve-gate-pip-audit.md
86
+ docs/roadmap/items/docstring-coverage-interrogate.md
87
+ docs/roadmap/items/end-of-options-guard-on-git-commands.md
88
+ docs/roadmap/items/extension-free-tests-core-dense-py.md
89
+ docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md
90
+ docs/roadmap/items/finish-mutation-hardening-across-core.md
91
+ docs/roadmap/items/fix-self-update-version-detection-dead-branch.md
92
+ docs/roadmap/items/frontmatter-scalar-over-coercion.md
93
+ docs/roadmap/items/github-pages-deploy-is-broken-every-push.md
94
+ docs/roadmap/items/guard-output-table-against-ragged-rows.md
95
+ docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md
96
+ docs/roadmap/items/html-validation-html-validate.md
97
+ docs/roadmap/items/integrity-verification-boost-verify.md
98
+ docs/roadmap/items/layering-guard-import-linter.md
99
+ docs/roadmap/items/lighthouse-ci-on-the-pages-site.md
100
+ docs/roadmap/items/localize-the-stored-bm25-snippet.md
101
+ docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md
102
+ docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md
103
+ docs/roadmap/items/make-the-roadmaps-discoverable.md
104
+ docs/roadmap/items/markdown-consistency-markdownlint-cli2.md
105
+ docs/roadmap/items/memoize-config-load-in-process.md
106
+ docs/roadmap/items/modernization-smells-refurb-pyupgrade.md
107
+ docs/roadmap/items/mutation-hardening-core-frontmatter-py.md
108
+ docs/roadmap/items/mutation-hardening-core-gitutil-py.md
109
+ docs/roadmap/items/mutation-hardening-core-store-py.md
110
+ docs/roadmap/items/one-command-every-env-nox.md
111
+ docs/roadmap/items/one-shared-atomic-write-helper.md
112
+ docs/roadmap/items/package-metadata-validation-twine-check-friends.md
113
+ docs/roadmap/items/patch-coverage-gate-diff-cover.md
114
+ docs/roadmap/items/performance-regression-gate-pytest-benchmark.md
115
+ docs/roadmap/items/post-deploy-smoke-headless-load-check.md
116
+ docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md
117
+ docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md
118
+ docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md
119
+ docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md
120
+ docs/roadmap/items/prose-and-terminology-linting-vale.md
121
+ docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md
122
+ docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md
123
+ docs/roadmap/items/reconcile-the-theme-drift.md
124
+ docs/roadmap/items/refresh-the-marketing-surface.md
125
+ docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md
126
+ docs/roadmap/items/robust-tag-argument-parsing.md
127
+ docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md
128
+ docs/roadmap/items/sbom-aware-scanning-osv-scanner.md
129
+ docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md
130
+ docs/roadmap/items/second-type-checker-pyright.md
131
+ docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md
132
+ docs/roadmap/items/secret-scanning-gitleaks-push-protection.md
133
+ docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md
134
+ docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md
135
+ docs/roadmap/items/single-imperative-rule-extractor.md
136
+ docs/roadmap/items/single-tech-stack-prober.md
137
+ docs/roadmap/items/split-oversized-command-modules.md
138
+ docs/roadmap/items/startup-and-import-time-budget-x-importtime.md
139
+ docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md
140
+ docs/roadmap/items/supply-chain-posture-openssf-scorecard.md
141
+ docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md
142
+ docs/roadmap/items/theme-asset-linting-stylelint-eslint.md
143
+ docs/roadmap/items/typo-detection-codespell.md
144
+ docs/roadmap/items/typosquat-and-name-confusion-detection.md
145
+ docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md
146
+ docs/roadmap/items/untrack-generated-build-noise.md
147
+ docs/roadmap/items/update-diff-before-apply.md
148
+ docs/roadmap/items/visual-regression-pass-on-the-guide.md
149
+ docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md
150
+ docs/roadmap/items/windows-in-the-ci-matrix.md
151
+ docs/roadmap/items/workflow-linting-actionlint.md
152
+ docs/roadmap/items/workflow-sast-zizmor.md
153
+ scripts/build_registries.py
154
+ scripts/build_roadmap.py
155
+ scripts/mutation_gate.py
156
+ style/README.md
157
+ style/boost.css
158
+ style/boost.js
159
+ style/demo.html
160
+ tests/conftest.py
161
+ tests/make_fixture.py
162
+ tests/smoke.sh
163
+ tests/functional/test_cli_bmad.py
164
+ tests/functional/test_cli_configuration.py
165
+ tests/functional/test_cli_discovery.py
166
+ tests/functional/test_cli_hooks.py
167
+ tests/functional/test_cli_info.py
168
+ tests/functional/test_cli_intelligence.py
169
+ tests/functional/test_cli_pkg.py
170
+ tests/functional/test_cli_quality.py
171
+ tests/functional/test_cli_taps.py
172
+ tests/functional/test_cli_team.py
173
+ tests/functional/test_everyday_loop.py
174
+ tests/unit/test_agents.py
175
+ tests/unit/test_ai.py
176
+ tests/unit/test_catalog.py
177
+ tests/unit/test_claude_settings.py
178
+ tests/unit/test_cliparse.py
179
+ tests/unit/test_config.py
180
+ tests/unit/test_dense.py
181
+ tests/unit/test_dense_fallback.py
182
+ tests/unit/test_embed.py
183
+ tests/unit/test_errors_and_cli_table.py
184
+ tests/unit/test_frontmatter.py
185
+ tests/unit/test_gitutil.py
186
+ tests/unit/test_journal.py
187
+ tests/unit/test_lockfile.py
188
+ tests/unit/test_logs.py
189
+ tests/unit/test_mcp.py
190
+ tests/unit/test_mutation_hardening.py
191
+ tests/unit/test_output.py
192
+ tests/unit/test_paths.py
193
+ tests/unit/test_policy.py
194
+ tests/unit/test_rag.py
195
+ tests/unit/test_registries_fresh.py
196
+ tests/unit/test_registry.py
197
+ tests/unit/test_roadmap_fresh.py
198
+ tests/unit/test_spin.py
199
+ tests/unit/test_store.py
200
+ tests/unit/test_token_parity.py
201
+ tests/unit/test_util.py
202
+ tests/unit/test_version.py
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: accessibility-audit-pa11y-ci-axe-core
3
+ board: code
4
+ section: docsite
5
+ status: planned
6
+ category: Quality · A11y
7
+ complexity: M
8
+ impact: Med
9
+ wow: 4
10
+ note: WCAG AA
11
+ order: 3
12
+ owner:
13
+ pr:
14
+ title: Accessibility audit — <code>pa11y-ci</code> / axe-core
15
+ ---
16
+ Run WCAG checks over the rendered pages: colour contrast, focus order,
17
+ alt text and ARIA. The Aurora palette leans on muted
18
+ <code>--text-2/--text-3</code> tokens against dark glass — exactly where
19
+ contrast ratios slip below AA. Catches the a11y regressions a purely
20
+ visual review misses.
@@ -0,0 +1,16 @@
1
+ ---
2
+ id: atomic-corruption-safe-lock-file-writes
3
+ board: code
4
+ section: internals
5
+ status: next
6
+ category: Correctness · Robustness
7
+ complexity: M
8
+ impact: High
9
+ wow: 4
10
+ note:
11
+ order: 1
12
+ owner:
13
+ pr:
14
+ title: Atomic, corruption-safe lock-file writes
15
+ ---
16
+ <code>read()</code> returns an empty skeleton on <b>any</b> JSON error and <code>write()</code> is a bare <code>write_text</code> at <code>core/lockfile.py:55</code>. An interrupted or concurrent write truncates the lock — the next <code>set_skill()</code> then <b>permanently drops every prior install record</b> while store dirs linger as orphans. Write to a temp file + <code>os.replace()</code>, and tell "empty" apart from "corrupt".
@@ -0,0 +1,16 @@
1
+ ---
2
+ id: atomic-skill-install-temp-dir-swap
3
+ board: code
4
+ section: internals
5
+ status: planned
6
+ category: Robustness
7
+ complexity: M
8
+ impact: Med
9
+ wow: 3
10
+ note:
11
+ order: 7
12
+ owner:
13
+ pr:
14
+ title: Atomic skill install (temp-dir swap)
15
+ ---
16
+ <code>_copy_skill</code> does <code>rmtree(dest)</code> then <code>copytree()</code> (<code>core/store.py:108–131</code>); an interrupt between the two leaves a missing or half-copied skill, and the lock is written afterward — so a mid-copy failure leaves store and lock <b>disagreeing</b>. Copy to a temp dir and atomically swap into place.
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: autonomous-ship-workflow-and-isolated-worktree
3
+ board: code
4
+ section: shipped
5
+ status: shipped
6
+ category: Infra · DX
7
+ complexity: L
8
+ impact: High
9
+ wow: 4
10
+ note:
11
+ order: 6
12
+ owner:
13
+ pr:
14
+ title: Autonomous ship-workflow &amp; isolated worktree
15
+ ---
16
+ The loop now runs commit → PR → green CI → squash-merge → release in a
17
+ dedicated <code>~/boost-loop</code> git worktree (own venv for mutmut),
18
+ and modern <strong>git&nbsp;2.55</strong> replaced a 2017 build that
19
+ fatally choked on the global <code>zdiff3</code> config.
@@ -0,0 +1,18 @@
1
+ ---
2
+ id: bring-commands-under-mutation-testing
3
+ board: code
4
+ section: planned
5
+ status: planned
6
+ category: Testing · Gap
7
+ complexity: XL
8
+ impact: High
9
+ wow: 3
10
+ note:
11
+ order: 2
12
+ owner:
13
+ pr:
14
+ title: Bring <code>commands/</code> under mutation testing
15
+ ---
16
+ The ~5,000-line CLI command layer has <strong>zero</strong> mutation
17
+ coverage today — mutmut is scoped to <code>core/</code> only. Extend
18
+ the gate (or a second gate) to the command groups.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: broken-link-and-anchor-checking-lychee
3
+ board: code
4
+ section: docsite
5
+ status: planned
6
+ category: Quality · Docs
7
+ complexity: S
8
+ impact: Med
9
+ wow: 3
10
+ note: URLs + anchors
11
+ order: 5
12
+ owner:
13
+ pr:
14
+ title: Broken-link &amp; anchor checking — <code>lychee</code>
15
+ ---
16
+ Fast, free link checker over the README and <code>docs/*.html</code>:
17
+ verifies external URLs (GitHub, PyPI), asset paths
18
+ (<code>../style/boost.css</code>) and in-page anchors
19
+ (<code>#next</code>, <code>#health</code>) still resolve. A dead link in
20
+ the landing page is the first broken promise a visitor sees.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: build-provenance-slsa-attestations
3
+ board: code
4
+ section: pipeline
5
+ status: planned
6
+ category: Security · Supply chain
7
+ complexity: S
8
+ impact: Med
9
+ wow: 4
10
+ note: SLSA build L2
11
+ order: 3
12
+ owner:
13
+ pr:
14
+ title: Build provenance — SLSA attestations
15
+ ---
16
+ <code>actions/attest-build-provenance</code> emits a cryptographically
17
+ signed, verifiable record of <em>which workflow built which wheel from
18
+ which commit</em>, layered on top of the existing PyPI Trusted
19
+ Publishing. Consumers can <code>gh attestation verify</code> the
20
+ artifact they install — provenance without a paid signing service.
@@ -0,0 +1,16 @@
1
+ ---
2
+ id: cache-the-catalog-entry-set-across-rag-queries
3
+ board: code
4
+ section: internals
5
+ status: planned
6
+ category: Performance
7
+ complexity: M
8
+ impact: Med
9
+ wow: 3
10
+ note:
11
+ order: 10
12
+ owner:
13
+ pr:
14
+ title: Cache the catalog entry-set across RAG queries
15
+ ---
16
+ <code>rag.retrieve()</code> calls <code>all_entries()</code>, which reads &amp; <code>json.loads</code> <b>every tap cache on every search</b> to build the live map (<code>rag.py:323 · catalog.py:166–181</code>) — the BM25 index is mtime-cached, the entry set is not. Memoize the entry set on cache mtime the same way.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: capability-manifest-and-least-privilege-policy
3
+ board: code
4
+ section: trust
5
+ status: planned
6
+ category: Security · Policy
7
+ complexity: L
8
+ impact: Med
9
+ wow: 4
10
+ note: builds on policy.py
11
+ order: 8
12
+ owner:
13
+ pr:
14
+ title: Capability manifest &amp; least-privilege policy
15
+ ---
16
+ Extend the existing <code>policy.py</code> so a skill declares the
17
+ capabilities it expects — network, shell, file scope — and the user's
18
+ policy allows or denies them. Turns install-time governance into
19
+ least-privilege for the instructions an agent is about to run, the
20
+ natural next step for a tool that already blocks installs by policy.
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: clean-env-install-smoke-pip-and-pipx
3
+ board: code
4
+ section: compat
5
+ status: planned
6
+ category: Testing · Install
7
+ complexity: S
8
+ impact: High
9
+ wow: 4
10
+ note: tests the real artifact
11
+ order: 2
12
+ owner:
13
+ pr:
14
+ title: Clean-env install smoke — pip &amp; <code>pipx</code>
15
+ ---
16
+ Every gate runs against an editable <code>pip install -e .</code>, which
17
+ hides missing package-data, a broken entry point or an undeclared
18
+ dependency. A job that <code>pip install</code>s the built wheel into a
19
+ <em>fresh</em> venv (and <code>pipx install</code>s it) then runs
20
+ <code>boost --version</code> proves the artifact a user actually gets
21
+ works.
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: command-reference-docs-site
3
+ board: code
4
+ section: docsite
5
+ status: planned
6
+ category: Docs · Command reference
7
+ complexity: M
8
+ impact: High
9
+ wow: 4
10
+ note: Read the Docs–style
11
+ order: 10
12
+ owner:
13
+ pr:
14
+ title: Command reference documentation site
15
+ ---
16
+ boost has no browsable command reference — help lives only in
17
+ <code>--help</code> output and scattered README prose, so there's no
18
+ versioned, searchable home for what each command does. Build a proper
19
+ docs site in the shape of
20
+ <a href="https://learning-python.readthedocs.io/en/latest/">learning-python.readthedocs.io</a>:
21
+ a left-nav tree of commands, per-command pages (synopsis, flags,
22
+ examples, exit codes), and full-text search. Generate the command
23
+ pages from the CLI's own definitions so the docs can't drift from the
24
+ code, and publish alongside the existing Pages site under the Aurora theme.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: complexity-and-dead-code-radar-xenon-vulture
3
+ board: code
4
+ section: health
5
+ status: planned
6
+ category: Quality · Smell
7
+ complexity: M
8
+ impact: Med
9
+ wow: 2
10
+ note: commands/ first
11
+ order: 5
12
+ owner:
13
+ pr:
14
+ title: Complexity &amp; dead-code radar — <code>xenon</code> · <code>vulture</code>
15
+ ---
16
+ Gate CI on a maintainability grade with <code>xenon</code> (built on
17
+ <code>radon</code>) and flag unreachable branches, unused arguments and
18
+ orphan helpers with <code>vulture</code>. First target: the
19
+ ~5,000-line <code>commands/</code> layer that has no complexity signal
20
+ today. Surfaces the structural smells mutation testing can't see.
@@ -0,0 +1,16 @@
1
+ ---
2
+ id: consolidate-skill-staleness-drift-logic-into-cor
3
+ board: code
4
+ section: internals
5
+ status: next
6
+ category: Correctness
7
+ complexity: M
8
+ impact: High
9
+ wow: 3
10
+ note:
11
+ order: 3
12
+ owner:
13
+ pr:
14
+ title: Consolidate skill-staleness / drift logic into core
15
+ ---
16
+ The "is this skill outdated" decision — <code>semver_gt</code> → commit compare → <code>sha256_dir</code> vs lock — is reimplemented nearly verbatim in <code>cmd_update</code>, <code>cmd_outdated</code> and <code>_drift_status</code> (<code>pkg.py:277 · taps.py:225 · quality.py:120</code>). Three copies of core business logic that <b>will drift apart</b>. Make it one <code>core</code> function the commands render.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: coverage-dashboard-codecov-free-for-oss
3
+ board: code
4
+ section: dx
5
+ status: planned
6
+ category: Testing · Platform
7
+ complexity: S
8
+ impact: Med
9
+ wow: 3
10
+ note: PR decoration
11
+ order: 8
12
+ owner:
13
+ pr:
14
+ title: Coverage dashboard — Codecov (free for OSS)
15
+ ---
16
+ Upgrade the homegrown coverage badge to Codecov's PR diff-coverage
17
+ comments, file sunburst and trend graph — free for public repos. The
18
+ hosted counterpart to the self-contained <code>diff-cover</code> gate:
19
+ one enforces patch coverage in CI, the other visualizes the trend over
20
+ time.
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: coverage-guided-fuzzing-atheris-oss-fuzz
3
+ board: code
4
+ section: health
5
+ status: planned
6
+ category: Testing · Bug
7
+ complexity: L
8
+ impact: Med
9
+ wow: 4
10
+ note: stretch
11
+ order: 8
12
+ owner:
13
+ pr:
14
+ title: Coverage-guided fuzzing — <code>atheris</code> / OSS-Fuzz
15
+ ---
16
+ Google's <code>atheris</code> fuzzes the frontmatter and registry
17
+ parsers under coverage guidance to mine deep crash inputs; OSS-Fuzz
18
+ runs it continuously for free once boost qualifies as an open-source
19
+ project. The stretch goal — the highest ceiling for finding the bug
20
+ nobody thought to write a test for.
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: crash-recorder-error-paths-core-logs-py
3
+ board: code
4
+ section: shipped
5
+ status: shipped
6
+ category: Testing · Resilience
7
+ complexity: S
8
+ impact: Med
9
+ wow: 3
10
+ note: 7 branches · 88%→100%
11
+ order: 5
12
+ owner:
13
+ pr:
14
+ title: Crash-recorder error paths — <code>core/logs.py</code>
15
+ ---
16
+ The black-box diagnostic logger swallows every filesystem/handler
17
+ failure so a broken log can never break the CLI — but those
18
+ <code>except</code> arms (the parts that matter most <em>during</em> a
19
+ crash) were the least exercised. New tests force each failure —
20
+ handler <code>close()</code> raising, a read-only log dir, an
21
+ unresolvable version, a wedged logger, <code>unlink</code> denied —
22
+ taking the module to <strong>100%</strong> coverage.
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: dependency-cve-gate-pip-audit
3
+ board: code
4
+ section: health
5
+ status: planned
6
+ category: Security · Supply chain
7
+ complexity: S
8
+ impact: Med
9
+ wow: 2
10
+ note: OSV-backed
11
+ order: 2
12
+ owner:
13
+ pr:
14
+ title: Dependency CVE gate — <code>pip-audit</code>
15
+ ---
16
+ PyPA's <code>pip-audit</code> fails CI when a resolved dependency
17
+ matches a known advisory in the OSV / PyPI Advisory database.
18
+ Dependabot <em>opens</em> update PRs but never blocks a merge on a live
19
+ CVE; a scheduled&nbsp;+&nbsp;PR <code>pip-audit</code> job closes that
20
+ gap and covers the dev/test toolchain that ships nothing but can still
21
+ run malicious code.
@@ -0,0 +1,19 @@
1
+ ---
2
+ id: docstring-coverage-interrogate
3
+ board: code
4
+ section: dx
5
+ status: planned
6
+ category: Quality · Docs
7
+ complexity: S
8
+ impact: Low
9
+ wow: 2
10
+ note: keeps core/ documented
11
+ order: 5
12
+ owner:
13
+ pr:
14
+ title: Docstring coverage — <code>interrogate</code>
15
+ ---
16
+ Gate CI below a docstring-coverage threshold so the engine stays
17
+ self-documenting as it grows. <code>core/</code> is already well
18
+ commented; <code>interrogate</code> keeps it that way and flags the
19
+ new public function that shipped without a word of explanation.