boost-skill-cli 1.0.62__tar.gz → 1.0.64__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.62 → boost_skill_cli-1.0.64}/.gitattributes +1 -0
  2. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/CLAUDE.md +25 -1
  3. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/CONTRIBUTING.md +15 -3
  4. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/Makefile +7 -0
  5. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/PKG-INFO +8 -4
  6. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/README.md +7 -3
  7. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/_version.py +2 -2
  8. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/bmad.py +5 -0
  9. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/PKG-INFO +8 -4
  10. boost_skill_cli-1.0.64/boost_skill_cli.egg-info/SOURCES.txt +202 -0
  11. boost_skill_cli-1.0.64/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +20 -0
  12. boost_skill_cli-1.0.64/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +16 -0
  13. boost_skill_cli-1.0.64/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +16 -0
  14. boost_skill_cli-1.0.64/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +19 -0
  15. boost_skill_cli-1.0.64/docs/roadmap/items/bring-commands-under-mutation-testing.md +18 -0
  16. boost_skill_cli-1.0.64/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +20 -0
  17. boost_skill_cli-1.0.64/docs/roadmap/items/build-provenance-slsa-attestations.md +20 -0
  18. boost_skill_cli-1.0.64/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +16 -0
  19. boost_skill_cli-1.0.64/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +20 -0
  20. boost_skill_cli-1.0.64/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +21 -0
  21. boost_skill_cli-1.0.64/docs/roadmap/items/command-reference-docs-site.md +24 -0
  22. boost_skill_cli-1.0.64/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +20 -0
  23. boost_skill_cli-1.0.64/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +16 -0
  24. boost_skill_cli-1.0.64/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +20 -0
  25. boost_skill_cli-1.0.64/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +20 -0
  26. boost_skill_cli-1.0.64/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +22 -0
  27. boost_skill_cli-1.0.64/docs/roadmap/items/dependency-cve-gate-pip-audit.md +21 -0
  28. boost_skill_cli-1.0.64/docs/roadmap/items/docstring-coverage-interrogate.md +19 -0
  29. boost_skill_cli-1.0.64/docs/roadmap/items/end-of-options-guard-on-git-commands.md +16 -0
  30. boost_skill_cli-1.0.64/docs/roadmap/items/extension-free-tests-core-dense-py.md +23 -0
  31. boost_skill_cli-1.0.64/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +16 -0
  32. boost_skill_cli-1.0.64/docs/roadmap/items/finish-mutation-hardening-across-core.md +19 -0
  33. boost_skill_cli-1.0.64/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +16 -0
  34. boost_skill_cli-1.0.64/docs/roadmap/items/frontmatter-scalar-over-coercion.md +16 -0
  35. boost_skill_cli-1.0.64/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +20 -0
  36. boost_skill_cli-1.0.64/docs/roadmap/items/guard-output-table-against-ragged-rows.md +16 -0
  37. boost_skill_cli-1.0.64/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +20 -0
  38. boost_skill_cli-1.0.64/docs/roadmap/items/html-validation-html-validate.md +20 -0
  39. boost_skill_cli-1.0.64/docs/roadmap/items/integrity-verification-boost-verify.md +21 -0
  40. boost_skill_cli-1.0.64/docs/roadmap/items/layering-guard-import-linter.md +20 -0
  41. boost_skill_cli-1.0.64/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +20 -0
  42. boost_skill_cli-1.0.64/docs/roadmap/items/localize-the-stored-bm25-snippet.md +16 -0
  43. boost_skill_cli-1.0.64/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +19 -0
  44. boost_skill_cli-1.0.64/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +19 -0
  45. boost_skill_cli-1.0.64/docs/roadmap/items/make-the-roadmaps-discoverable.md +20 -0
  46. boost_skill_cli-1.0.64/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +20 -0
  47. boost_skill_cli-1.0.64/docs/roadmap/items/memoize-config-load-in-process.md +16 -0
  48. boost_skill_cli-1.0.64/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +19 -0
  49. boost_skill_cli-1.0.64/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +19 -0
  50. boost_skill_cli-1.0.64/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +19 -0
  51. boost_skill_cli-1.0.64/docs/roadmap/items/mutation-hardening-core-store-py.md +19 -0
  52. boost_skill_cli-1.0.64/docs/roadmap/items/one-command-every-env-nox.md +20 -0
  53. boost_skill_cli-1.0.64/docs/roadmap/items/one-shared-atomic-write-helper.md +16 -0
  54. boost_skill_cli-1.0.64/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +20 -0
  55. boost_skill_cli-1.0.64/docs/roadmap/items/patch-coverage-gate-diff-cover.md +19 -0
  56. boost_skill_cli-1.0.64/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +19 -0
  57. boost_skill_cli-1.0.64/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +20 -0
  58. boost_skill_cli-1.0.64/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +19 -0
  59. boost_skill_cli-1.0.64/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +21 -0
  60. boost_skill_cli-1.0.64/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +21 -0
  61. boost_skill_cli-1.0.64/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +21 -0
  62. boost_skill_cli-1.0.64/docs/roadmap/items/prose-and-terminology-linting-vale.md +20 -0
  63. boost_skill_cli-1.0.64/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +16 -0
  64. boost_skill_cli-1.0.64/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +20 -0
  65. boost_skill_cli-1.0.64/docs/roadmap/items/reconcile-the-theme-drift.md +19 -0
  66. boost_skill_cli-1.0.64/docs/roadmap/items/refresh-the-marketing-surface.md +18 -0
  67. boost_skill_cli-1.0.64/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +16 -0
  68. boost_skill_cli-1.0.64/docs/roadmap/items/robust-tag-argument-parsing.md +16 -0
  69. boost_skill_cli-1.0.64/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +20 -0
  70. boost_skill_cli-1.0.64/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +19 -0
  71. boost_skill_cli-1.0.64/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +20 -0
  72. boost_skill_cli-1.0.64/docs/roadmap/items/second-type-checker-pyright.md +20 -0
  73. boost_skill_cli-1.0.64/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +20 -0
  74. boost_skill_cli-1.0.64/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +20 -0
  75. boost_skill_cli-1.0.64/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +22 -0
  76. boost_skill_cli-1.0.64/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +20 -0
  77. boost_skill_cli-1.0.64/docs/roadmap/items/single-imperative-rule-extractor.md +16 -0
  78. boost_skill_cli-1.0.64/docs/roadmap/items/single-tech-stack-prober.md +16 -0
  79. boost_skill_cli-1.0.64/docs/roadmap/items/split-oversized-command-modules.md +16 -0
  80. boost_skill_cli-1.0.64/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +19 -0
  81. boost_skill_cli-1.0.64/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +16 -0
  82. boost_skill_cli-1.0.64/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +21 -0
  83. boost_skill_cli-1.0.64/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +20 -0
  84. boost_skill_cli-1.0.64/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +20 -0
  85. boost_skill_cli-1.0.64/docs/roadmap/items/typo-detection-codespell.md +19 -0
  86. boost_skill_cli-1.0.64/docs/roadmap/items/typosquat-and-name-confusion-detection.md +20 -0
  87. boost_skill_cli-1.0.64/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +16 -0
  88. boost_skill_cli-1.0.64/docs/roadmap/items/untrack-generated-build-noise.md +19 -0
  89. boost_skill_cli-1.0.64/docs/roadmap/items/update-diff-before-apply.md +20 -0
  90. boost_skill_cli-1.0.64/docs/roadmap/items/visual-regression-pass-on-the-guide.md +18 -0
  91. boost_skill_cli-1.0.64/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +21 -0
  92. boost_skill_cli-1.0.64/docs/roadmap/items/windows-in-the-ci-matrix.md +20 -0
  93. boost_skill_cli-1.0.64/docs/roadmap/items/workflow-linting-actionlint.md +20 -0
  94. boost_skill_cli-1.0.64/docs/roadmap/items/workflow-sast-zizmor.md +21 -0
  95. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/roadmap.html +46 -4
  96. boost_skill_cli-1.0.64/scripts/build_roadmap.py +225 -0
  97. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_bmad.py +3 -1
  98. boost_skill_cli-1.0.64/tests/unit/test_roadmap_fresh.py +60 -0
  99. boost_skill_cli-1.0.62/boost_skill_cli.egg-info/SOURCES.txt +0 -116
  100. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/.gitignore +0 -0
  101. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/LICENSE +0 -0
  102. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/MANIFEST.in +0 -0
  103. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/SECURITY.md +0 -0
  104. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost +0 -0
  105. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/__init__.py +0 -0
  106. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/__main__.py +0 -0
  107. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/cli.py +0 -0
  108. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/cliparse.py +0 -0
  109. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/__init__.py +0 -0
  110. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/configuration.py +0 -0
  111. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/discovery.py +0 -0
  112. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/hooks.py +0 -0
  113. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/info.py +0 -0
  114. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/intelligence.py +0 -0
  115. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/pkg.py +0 -0
  116. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/quality.py +0 -0
  117. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/taps.py +0 -0
  118. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/team.py +0 -0
  119. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/__init__.py +0 -0
  120. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/agents.py +0 -0
  121. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/ai.py +0 -0
  122. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/catalog.py +0 -0
  123. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/claude_settings.py +0 -0
  124. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/config.py +0 -0
  125. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/dense.py +0 -0
  126. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/embed.py +0 -0
  127. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/frontmatter.py +0 -0
  128. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/gitutil.py +0 -0
  129. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/journal.py +0 -0
  130. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/lockfile.py +0 -0
  131. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/logs.py +0 -0
  132. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/mcp.py +0 -0
  133. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/output.py +0 -0
  134. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/paths.py +0 -0
  135. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/policy.py +0 -0
  136. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/rag.py +0 -0
  137. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/registry.py +0 -0
  138. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/store.py +0 -0
  139. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/util.py +0 -0
  140. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/data/registries.json +0 -0
  141. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/errors.py +0 -0
  142. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/spin.py +0 -0
  143. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  144. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  145. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/requires.txt +0 -0
  146. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/top_level.txt +0 -0
  147. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/.claude/settings.local.json +0 -0
  148. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/DEBUGGING.md +0 -0
  149. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/demo.gif +0 -0
  150. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/demo.tape +0 -0
  151. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/design-roadmap.html +0 -0
  152. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/index.html +0 -0
  153. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/mcp-hub.html +0 -0
  154. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/rag-architecture.md +0 -0
  155. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/index.html +0 -0
  156. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/pyproject.toml +0 -0
  157. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/scripts/build_registries.py +0 -0
  158. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/scripts/mutation_gate.py +0 -0
  159. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/setup.cfg +0 -0
  160. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/README.md +0 -0
  161. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/boost.css +0 -0
  162. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/boost.js +0 -0
  163. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/demo.html +0 -0
  164. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/conftest.py +0 -0
  165. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_configuration.py +0 -0
  166. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_discovery.py +0 -0
  167. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_hooks.py +0 -0
  168. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_info.py +0 -0
  169. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_intelligence.py +0 -0
  170. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_pkg.py +0 -0
  171. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_quality.py +0 -0
  172. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_taps.py +0 -0
  173. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_team.py +0 -0
  174. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_everyday_loop.py +0 -0
  175. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/make_fixture.py +0 -0
  176. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/smoke.sh +0 -0
  177. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_agents.py +0 -0
  178. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_ai.py +0 -0
  179. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_catalog.py +0 -0
  180. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_claude_settings.py +0 -0
  181. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_cliparse.py +0 -0
  182. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_config.py +0 -0
  183. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_dense.py +0 -0
  184. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_dense_fallback.py +0 -0
  185. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_embed.py +0 -0
  186. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_errors_and_cli_table.py +0 -0
  187. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_frontmatter.py +0 -0
  188. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_gitutil.py +0 -0
  189. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_journal.py +0 -0
  190. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_lockfile.py +0 -0
  191. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_logs.py +0 -0
  192. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_mcp.py +0 -0
  193. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_mutation_hardening.py +0 -0
  194. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_output.py +0 -0
  195. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_paths.py +0 -0
  196. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_policy.py +0 -0
  197. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_rag.py +0 -0
  198. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_registries_fresh.py +0 -0
  199. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_registry.py +0 -0
  200. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_spin.py +0 -0
  201. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_store.py +0 -0
  202. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_token_parity.py +0 -0
  203. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_util.py +0 -0
  204. {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/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
@@ -72,9 +72,33 @@ keep them from clobbering each other:
72
72
  never merge onto a red release, and after merging confirm the publish workflow
73
73
  goes green — not just the PR checks.
74
74
 
75
+ ### The roadmap is data-driven — add items, never hand-edit the HTML
76
+
77
+ `docs/roadmap.html` is **generated** from one file per item under
78
+ `docs/roadmap/items/*.md` by `scripts/build_roadmap.py` (this is what stopped the
79
+ roadmap being the repo's #1 merge-conflict source). To add or change a card:
80
+
81
+ 1. Create/edit `docs/roadmap/items/<id>.md` — a Markdown-with-frontmatter file
82
+ (`id, board: code, section, status, category, complexity, impact, wow, note,
83
+ order, owner, pr, title` + the card body after the `---`).
84
+ 2. Run `python3 scripts/build_roadmap.py` (or `make generate`) and commit both
85
+ the item file and the regenerated HTML. Counters ("Loop finds" etc.) are
86
+ **computed** — never hand-type them.
87
+
88
+ Never hand-edit the `<article>` cards or snapshot counters in `docs/roadmap.html`:
89
+ CI's `build_roadmap.py --check` and `tests/unit/test_roadmap_fresh.py` fail on
90
+ drift. Two loops adding two items now touch two *different files* → clean merge.
91
+
92
+ **Claiming an item (so two loops never pick the same one):** set `status:` and
93
+ `owner: loop/<topic>` in that item's file on your branch and open the PR. Two
94
+ loops claiming *different* items edit different files (no conflict); two loops
95
+ claiming the *same* item edit the same small file, so the second merge conflicts —
96
+ the intended "already claimed" signal, first-to-merge wins. (`docs/design-roadmap.html`
97
+ is still hand-edited until the Phase 1b migration lands.)
98
+
75
99
  ## Layout
76
100
 
77
101
  - `boost_cli/commands/` — CLI command groups · `boost_cli/core/` — engine (the mutation-gated code)
78
102
  - `boost_cli/data/` — shipped catalog data (generated) · `scripts/` — build/gate tooling
79
103
  - `tests/unit`, `tests/functional`, `tests/smoke.sh` — the three test tiers
80
- - `docs/` — `overview.html` (visual guide), `DEBUGGING.md`
104
+ - `docs/` — `overview.html` (visual guide), `DEBUGGING.md`; `roadmap.html` is generated from `docs/roadmap/items/*.md` (see above)
@@ -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.62
3
+ Version: 1.0.64
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -870,9 +870,13 @@ boost bmad doctor # what's installed where
870
870
  ```
871
871
 
872
872
  When startup is on, a `SessionStart` hook runs `boost bmad orient`, which prints
873
- a short orientation into the session only while the toggle is enabled. Global
874
- installs stage the installer in a temp dir and copy only the `bmad-*` skills, so
875
- `$HOME` never gets a stray `_bmad/` the workflow runtime stays per-project.
873
+ a short orientation into the session only while the toggle is enabled. That
874
+ orientation sets a **default bias**: build/fix/change/refactor requests go
875
+ straight to the `bmad-quick-dev` skill (clarify plan implement review),
876
+ skipping the full brief → PRD → architecture ceremony unless you ask for full
877
+ planning. Global installs stage the installer in a temp dir and copy only the
878
+ `bmad-*` skills, so `$HOME` never gets a stray `_bmad/` — the workflow runtime
879
+ stays per-project.
876
880
 
877
881
  ## The boost style
878
882
 
@@ -164,9 +164,13 @@ boost bmad doctor # what's installed where
164
164
  ```
165
165
 
166
166
  When startup is on, a `SessionStart` hook runs `boost bmad orient`, which prints
167
- a short orientation into the session only while the toggle is enabled. Global
168
- installs stage the installer in a temp dir and copy only the `bmad-*` skills, so
169
- `$HOME` never gets a stray `_bmad/` the workflow runtime stays per-project.
167
+ a short orientation into the session only while the toggle is enabled. That
168
+ orientation sets a **default bias**: build/fix/change/refactor requests go
169
+ straight to the `bmad-quick-dev` skill (clarify plan implement review),
170
+ skipping the full brief → PRD → architecture ceremony unless you ask for full
171
+ planning. Global installs stage the installer in a temp dir and copy only the
172
+ `bmad-*` skills, so `$HOME` never gets a stray `_bmad/` — the workflow runtime
173
+ stays per-project.
170
174
 
171
175
  ## The boost style
172
176
 
@@ -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.62'
22
- __version_tuple__ = version_tuple = (1, 0, 62)
21
+ __version__ = version = '1.0.64'
22
+ __version_tuple__ = version_tuple = (1, 0, 64)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -8,6 +8,7 @@ full provisioning is delegated to the canonical `npx bmad-method install`.
8
8
  boost bmad install --scope global # skills into ~/.claude/skills (+ toggle)
9
9
  boost bmad init # add _bmad/ runtime to the current repo
10
10
  boost bmad startup on|off|status # toggle the SessionStart orientation
11
+ # (biases build/fix/change work to bmad-quick-dev)
11
12
  boost bmad disable / enable # quarantine / restore skills (recoverable)
12
13
  boost bmad uninstall # delete skills + _bmad/ for a scope
13
14
  boost bmad doctor # what's installed where
@@ -56,6 +57,10 @@ Planning (bmad-prd -> bmad-architecture -> bmad-create-epics-and-stories) ->
56
57
  Build (bmad-sprint-planning -> bmad-create-story -> bmad-dev-story ->
57
58
  bmad-code-review -> bmad-qa-generate-e2e-tests -> bmad-retrospective).
58
59
 
60
+ Default bias: for a build, fix, change, or refactor request, go straight to the
61
+ `bmad-quick-dev` skill (clarify -> plan -> implement -> review) — skip the full
62
+ brief -> PRD -> architecture ceremony unless the user asks for full planning.
63
+
59
64
  Full workflows need a per-project `_bmad/` runtime — run `boost bmad init` in a
60
65
  repo if it isn't there yet. Turn this orientation off with `boost bmad startup off`."""
61
66
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.62
3
+ Version: 1.0.64
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -870,9 +870,13 @@ boost bmad doctor # what's installed where
870
870
  ```
871
871
 
872
872
  When startup is on, a `SessionStart` hook runs `boost bmad orient`, which prints
873
- a short orientation into the session only while the toggle is enabled. Global
874
- installs stage the installer in a temp dir and copy only the `bmad-*` skills, so
875
- `$HOME` never gets a stray `_bmad/` the workflow runtime stays per-project.
873
+ a short orientation into the session only while the toggle is enabled. That
874
+ orientation sets a **default bias**: build/fix/change/refactor requests go
875
+ straight to the `bmad-quick-dev` skill (clarify plan implement review),
876
+ skipping the full brief → PRD → architecture ceremony unless you ask for full
877
+ planning. Global installs stage the installer in a temp dir and copy only the
878
+ `bmad-*` skills, so `$HOME` never gets a stray `_bmad/` — the workflow runtime
879
+ stays per-project.
876
880
 
877
881
  ## The boost style
878
882
 
@@ -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.