boost-skill-cli 1.0.119__tar.gz → 1.0.120__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.119 → boost_skill_cli-1.0.120}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/quality.py +8 -1
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/integrity-verification-boost-verify.md +3 -3
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap.html +1 -1
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_quality.py +8 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/.gitattributes +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/.gitignore +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/LICENSE +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/Makefile +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/README.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/index.html +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/index.html +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/setup.cfg +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/style/README.md +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/style/boost.css +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/style/boost.js +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/style/demo.html +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/unit/test_version.py +0 -0
|
@@ -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.120'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 120)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -286,12 +286,19 @@ def cmd_doctor(argv):
|
|
|
286
286
|
enabled = agents.enabled_agents()
|
|
287
287
|
skill_issues = 0
|
|
288
288
|
for name, entry in sorted(skills.items()):
|
|
289
|
-
|
|
289
|
+
sdir = store.skill_store_dir(name)
|
|
290
|
+
if not sdir.is_dir():
|
|
290
291
|
bad("skill %s missing from store — run `boost heal`" % name)
|
|
291
292
|
skill_issues += 1
|
|
292
293
|
continue
|
|
293
294
|
if entry.get("quarantined"):
|
|
294
295
|
continue
|
|
296
|
+
# tamper detection: the lock file records a sha256 at install time, but
|
|
297
|
+
# only `boost verify` ever re-checked it — surface content drift here too.
|
|
298
|
+
locked = entry.get("sha256")
|
|
299
|
+
if locked and util.sha256_dir(sdir) != locked:
|
|
300
|
+
bad("skill %s modified since install — run `boost verify`" % name)
|
|
301
|
+
skill_issues += 1
|
|
295
302
|
for agent in entry.get("agents", []):
|
|
296
303
|
adir = enabled.get(agent)
|
|
297
304
|
if adir is None:
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: integrity-verification-boost-verify
|
|
3
3
|
board: code
|
|
4
4
|
section: trust
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Security · Integrity
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
10
|
note: reuses sha256_dir
|
|
11
11
|
order: 2
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/doctor-integrity
|
|
13
|
+
pr: 139
|
|
14
14
|
title: Integrity verification — <code>boost verify</code>
|
|
15
15
|
---
|
|
16
16
|
The lockfile already records a <code>sha256</code> per install via
|
|
@@ -1663,7 +1663,7 @@ and the work stays visible.</p>
|
|
|
1663
1663
|
</article>
|
|
1664
1664
|
|
|
1665
1665
|
<article class="cap rcard">
|
|
1666
|
-
<div class="head"><span class="pill
|
|
1666
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Security · Integrity</span></div>
|
|
1667
1667
|
<h3>Integrity verification — <code>boost verify</code></h3>
|
|
1668
1668
|
<p>The lockfile already records a <code>sha256</code> per install via
|
|
1669
1669
|
<code>util.sha256_dir</code>, but nothing ever re-checks it. A
|
|
@@ -82,6 +82,14 @@ class TestDoctor:
|
|
|
82
82
|
assert "no taps configured — add one with `boost tap owner/repo`" in r.out
|
|
83
83
|
assert "0 skills installed · 0 taps synced · 0 broken links" in r.out
|
|
84
84
|
|
|
85
|
+
def test_tampered_content_rc1(self, boost, installed):
|
|
86
|
+
# doctor must re-hash installed skills, not just check they exist:
|
|
87
|
+
# editing SKILL.md content after install is drift from the lock digest.
|
|
88
|
+
_tamper("brainstorming")
|
|
89
|
+
r = boost("doctor", expect=1)
|
|
90
|
+
assert "skill brainstorming modified since install — run `boost verify`" in r.out
|
|
91
|
+
assert "need attention" in r.out
|
|
92
|
+
|
|
85
93
|
|
|
86
94
|
# ── lint ─────────────────────────────────────────────────────────────────
|
|
87
95
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/one-command-every-env-nox.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/reconcile-the-theme-drift.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/single-tech-stack-prober.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/typo-detection-codespell.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/update-diff-before-apply.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/windows-in-the-ci-matrix.md
RENAMED
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/workflow-sast-zizmor.md
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/docs/roadmap/items/workspace-scope-install.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_configuration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.119 → boost_skill_cli-1.0.120}/tests/functional/test_cli_intelligence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|