boost-skill-cli 1.0.61__tar.gz → 1.0.63__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/.gitattributes +1 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/CONTRIBUTING.md +15 -3
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/Makefile +7 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- boost_skill_cli-1.0.63/boost_skill_cli.egg-info/SOURCES.txt +202 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/bring-commands-under-mutation-testing.md +18 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/build-provenance-slsa-attestations.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/command-reference-docs-site.md +24 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +22 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/dependency-cve-gate-pip-audit.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/docstring-coverage-interrogate.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/end-of-options-guard-on-git-commands.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/extension-free-tests-core-dense-py.md +23 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/finish-mutation-hardening-across-core.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/frontmatter-scalar-over-coercion.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/guard-output-table-against-ragged-rows.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/html-validation-html-validate.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/integrity-verification-boost-verify.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/layering-guard-import-linter.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/localize-the-stored-bm25-snippet.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/make-the-roadmaps-discoverable.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/memoize-config-load-in-process.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/mutation-hardening-core-store-py.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/one-command-every-env-nox.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/one-shared-atomic-write-helper.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/patch-coverage-gate-diff-cover.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/prose-and-terminology-linting-vale.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/reconcile-the-theme-drift.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/refresh-the-marketing-surface.md +18 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/robust-tag-argument-parsing.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/second-type-checker-pyright.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +22 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/single-imperative-rule-extractor.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/single-tech-stack-prober.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/split-oversized-command-modules.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/typo-detection-codespell.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/typosquat-and-name-confusion-detection.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +16 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/untrack-generated-build-noise.md +19 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/update-diff-before-apply.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/visual-regression-pass-on-the-guide.md +18 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +21 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/windows-in-the-ci-matrix.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/workflow-linting-actionlint.md +20 -0
- boost_skill_cli-1.0.63/docs/roadmap/items/workflow-sast-zizmor.md +21 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/roadmap.html +46 -4
- boost_skill_cli-1.0.63/scripts/build_roadmap.py +225 -0
- boost_skill_cli-1.0.63/tests/unit/test_roadmap_fresh.py +60 -0
- boost_skill_cli-1.0.61/boost_skill_cli.egg-info/SOURCES.txt +0 -116
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/.gitignore +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/LICENSE +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/README.md +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/index.html +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/index.html +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/setup.cfg +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/README.md +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/boost.css +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/boost.js +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/style/demo.html +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.61 → boost_skill_cli-1.0.63}/tests/unit/test_version.py +0 -0
|
@@ -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:
|
|
@@ -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.63'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 63)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -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.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: coverage-dashboard-codecov-free-for-oss
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: planned
|
|
6
|
+
category: Testing · Platform
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: PR decoration
|
|
11
|
+
order: 8
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: Coverage dashboard — Codecov (free for OSS)
|
|
15
|
+
---
|
|
16
|
+
Upgrade the homegrown coverage badge to Codecov's PR diff-coverage
|
|
17
|
+
comments, file sunburst and trend graph — free for public repos. The
|
|
18
|
+
hosted counterpart to the self-contained <code>diff-cover</code> gate:
|
|
19
|
+
one enforces patch coverage in CI, the other visualizes the trend over
|
|
20
|
+
time.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: coverage-guided-fuzzing-atheris-oss-fuzz
|
|
3
|
+
board: code
|
|
4
|
+
section: health
|
|
5
|
+
status: planned
|
|
6
|
+
category: Testing · Bug
|
|
7
|
+
complexity: L
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 4
|
|
10
|
+
note: stretch
|
|
11
|
+
order: 8
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: Coverage-guided fuzzing — <code>atheris</code> / OSS-Fuzz
|
|
15
|
+
---
|
|
16
|
+
Google's <code>atheris</code> fuzzes the frontmatter and registry
|
|
17
|
+
parsers under coverage guidance to mine deep crash inputs; OSS-Fuzz
|
|
18
|
+
runs it continuously for free once boost qualifies as an open-source
|
|
19
|
+
project. The stretch goal — the highest ceiling for finding the bug
|
|
20
|
+
nobody thought to write a test for.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: crash-recorder-error-paths-core-logs-py
|
|
3
|
+
board: code
|
|
4
|
+
section: shipped
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Testing · Resilience
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: 7 branches · 88%→100%
|
|
11
|
+
order: 5
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: Crash-recorder error paths — <code>core/logs.py</code>
|
|
15
|
+
---
|
|
16
|
+
The black-box diagnostic logger swallows every filesystem/handler
|
|
17
|
+
failure so a broken log can never break the CLI — but those
|
|
18
|
+
<code>except</code> arms (the parts that matter most <em>during</em> a
|
|
19
|
+
crash) were the least exercised. New tests force each failure —
|
|
20
|
+
handler <code>close()</code> raising, a read-only log dir, an
|
|
21
|
+
unresolvable version, a wedged logger, <code>unlink</code> denied —
|
|
22
|
+
taking the module to <strong>100%</strong> coverage.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dependency-cve-gate-pip-audit
|
|
3
|
+
board: code
|
|
4
|
+
section: health
|
|
5
|
+
status: planned
|
|
6
|
+
category: Security · Supply chain
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 2
|
|
10
|
+
note: OSV-backed
|
|
11
|
+
order: 2
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: Dependency CVE gate — <code>pip-audit</code>
|
|
15
|
+
---
|
|
16
|
+
PyPA's <code>pip-audit</code> fails CI when a resolved dependency
|
|
17
|
+
matches a known advisory in the OSV / PyPI Advisory database.
|
|
18
|
+
Dependabot <em>opens</em> update PRs but never blocks a merge on a live
|
|
19
|
+
CVE; a scheduled + PR <code>pip-audit</code> job closes that
|
|
20
|
+
gap and covers the dev/test toolchain that ships nothing but can still
|
|
21
|
+
run malicious code.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docstring-coverage-interrogate
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: planned
|
|
6
|
+
category: Quality · Docs
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Low
|
|
9
|
+
wow: 2
|
|
10
|
+
note: keeps core/ documented
|
|
11
|
+
order: 5
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: Docstring coverage — <code>interrogate</code>
|
|
15
|
+
---
|
|
16
|
+
Gate CI below a docstring-coverage threshold so the engine stays
|
|
17
|
+
self-documenting as it grows. <code>core/</code> is already well
|
|
18
|
+
commented; <code>interrogate</code> keeps it that way and flags the
|
|
19
|
+
new public function that shipped without a word of explanation.
|