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.
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/.gitattributes +1 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/CLAUDE.md +25 -1
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/CONTRIBUTING.md +15 -3
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/Makefile +7 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/PKG-INFO +8 -4
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/README.md +7 -3
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/bmad.py +5 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/PKG-INFO +8 -4
- boost_skill_cli-1.0.64/boost_skill_cli.egg-info/SOURCES.txt +202 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/bring-commands-under-mutation-testing.md +18 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/build-provenance-slsa-attestations.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/command-reference-docs-site.md +24 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +22 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/dependency-cve-gate-pip-audit.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/docstring-coverage-interrogate.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/end-of-options-guard-on-git-commands.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/extension-free-tests-core-dense-py.md +23 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/finish-mutation-hardening-across-core.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/frontmatter-scalar-over-coercion.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/guard-output-table-against-ragged-rows.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/html-validation-html-validate.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/integrity-verification-boost-verify.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/layering-guard-import-linter.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/localize-the-stored-bm25-snippet.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/make-the-roadmaps-discoverable.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/memoize-config-load-in-process.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/mutation-hardening-core-store-py.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/one-command-every-env-nox.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/one-shared-atomic-write-helper.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/patch-coverage-gate-diff-cover.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/prose-and-terminology-linting-vale.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/reconcile-the-theme-drift.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/refresh-the-marketing-surface.md +18 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/robust-tag-argument-parsing.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/second-type-checker-pyright.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +22 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/single-imperative-rule-extractor.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/single-tech-stack-prober.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/split-oversized-command-modules.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/typo-detection-codespell.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/typosquat-and-name-confusion-detection.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +16 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/untrack-generated-build-noise.md +19 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/update-diff-before-apply.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/visual-regression-pass-on-the-guide.md +18 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +21 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/windows-in-the-ci-matrix.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/workflow-linting-actionlint.md +20 -0
- boost_skill_cli-1.0.64/docs/roadmap/items/workflow-sast-zizmor.md +21 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/roadmap.html +46 -4
- boost_skill_cli-1.0.64/scripts/build_roadmap.py +225 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_bmad.py +3 -1
- boost_skill_cli-1.0.64/tests/unit/test_roadmap_fresh.py +60 -0
- boost_skill_cli-1.0.62/boost_skill_cli.egg-info/SOURCES.txt +0 -116
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/.gitignore +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/LICENSE +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/index.html +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/index.html +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/setup.cfg +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/README.md +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/boost.css +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/boost.js +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/style/demo.html +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.62 → boost_skill_cli-1.0.64}/tests/unit/test_version.py +0 -0
|
@@ -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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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.
|
|
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.
|
|
874
|
-
|
|
875
|
-
|
|
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.
|
|
168
|
-
|
|
169
|
-
|
|
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.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
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.
|
|
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.
|
|
874
|
-
|
|
875
|
-
|
|
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 & 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 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 & 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 & <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 & 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 & <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 & 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.
|