boost-skill-cli 1.0.158__tar.gz → 1.0.161__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.158 → boost_skill_cli-1.0.161}/CONTRIBUTING.md +17 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/Makefile +8 -2
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/one-command-every-env-nox.md +3 -3
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +3 -3
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap.html +2 -2
- boost_skill_cli-1.0.161/noxfile.py +69 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/.gitattributes +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/.gitignore +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/LICENSE +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/README.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/index.html +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/examples/README.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/index.html +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/setup.cfg +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/style/README.md +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/style/boost.css +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/style/boost.js +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/style/demo.html +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/tests/unit/test_workflows.py +0 -0
|
@@ -13,6 +13,22 @@ make venv # pytest, coverage, mutmut, ruff, mypy — runtime stays stdl
|
|
|
13
13
|
Every test runs against a throwaway `$HOME`, so nothing touches your real
|
|
14
14
|
agent configs.
|
|
15
15
|
|
|
16
|
+
### Reproduce the whole gate — `nox`
|
|
17
|
+
|
|
18
|
+
[`noxfile.py`](noxfile.py) runs the exact gate the CI jobs run, in isolated
|
|
19
|
+
venvs, across the supported interpreters:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pipx install nox # or: pip install nox
|
|
23
|
+
nox # lint + tests on every installed interpreter
|
|
24
|
+
nox -s lint # one session
|
|
25
|
+
nox -s "tests-3.12" # tests on a single interpreter
|
|
26
|
+
nox -s smoke -s mutation
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Each session installs the same tools and runs the same commands as `make` and
|
|
30
|
+
CI, so "green on my machine" and "green in CI" mean the same thing.
|
|
31
|
+
|
|
16
32
|
### Pre-commit hooks (recommended)
|
|
17
33
|
|
|
18
34
|
Catch the `make lint` findings *before* they reach CI:
|
|
@@ -33,6 +49,7 @@ auto-fixes straight back onto the branch.
|
|
|
33
49
|
| Command | Gate |
|
|
34
50
|
|---|---|
|
|
35
51
|
| `make test` | unit + functional suites, **≥80% line coverage** |
|
|
52
|
+
| `make patch-coverage` | changed-line coverage vs `main`, **≥80% of the diff** (PRs) |
|
|
36
53
|
| `bash tests/smoke.sh` | 152 end-to-end checks through the real `./boost` shim |
|
|
37
54
|
| `make mutation` | mutmut over `boost_cli/core`, **≥80% mutants killed** |
|
|
38
55
|
| `ruff check boost_cli tests` | lint, zero findings |
|
|
@@ -10,11 +10,11 @@ PYTEST := $(VENV)/bin/pytest
|
|
|
10
10
|
# pinned taps out of the developer's real ~/.boost.
|
|
11
11
|
EVAL_HOME := $(CURDIR)/.eval-home
|
|
12
12
|
|
|
13
|
-
.PHONY: venv test unit functional smoke coverage mutation lint check demo clean-test eval eval-ai eval-rec eval-stats eval-explain audit dist-check bdd bench bench-cli
|
|
13
|
+
.PHONY: venv test unit functional smoke coverage patch-coverage mutation lint check demo clean-test eval eval-ai eval-rec eval-stats eval-explain audit dist-check bdd bench bench-cli
|
|
14
14
|
|
|
15
15
|
venv:
|
|
16
16
|
python3 -m venv $(VENV)
|
|
17
|
-
$(VENV)/bin/pip -q install pytest pytest-cov coverage mutmut ruff mypy codespell hypothesis import-linter
|
|
17
|
+
$(VENV)/bin/pip -q install pytest pytest-cov coverage mutmut ruff mypy codespell hypothesis import-linter diff-cover
|
|
18
18
|
|
|
19
19
|
unit:
|
|
20
20
|
$(PYTEST) tests/unit -q
|
|
@@ -28,6 +28,12 @@ test:
|
|
|
28
28
|
|
|
29
29
|
coverage: test
|
|
30
30
|
|
|
31
|
+
# patch-coverage: gate coverage on the lines THIS branch changed vs main — the
|
|
32
|
+
# same check CI runs on every PR. Needs a diff base, so run it on a branch.
|
|
33
|
+
patch-coverage:
|
|
34
|
+
$(PYTEST) tests/unit tests/functional --cov=boost_cli --cov-report=xml --cov-fail-under=0 -q
|
|
35
|
+
$(VENV)/bin/diff-cover coverage.xml --compare-branch=origin/main --fail-under=80
|
|
36
|
+
|
|
31
37
|
# shell-level functional suite: drives the real shim end-to-end in a sandbox
|
|
32
38
|
smoke:
|
|
33
39
|
bash tests/smoke.sh
|
|
@@ -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.161'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 161)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
{boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/one-command-every-env-nox.md
RENAMED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: one-command-every-env-nox
|
|
3
3
|
board: code
|
|
4
4
|
section: compat
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Testing · Infra
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Med
|
|
9
9
|
wow: 2
|
|
10
10
|
note: local == CI
|
|
11
11
|
order: 8
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/nox
|
|
13
|
+
pr: 184
|
|
14
14
|
title: One command, every env — <code>nox</code>
|
|
15
15
|
---
|
|
16
16
|
A <code>noxfile.py</code> makes the full lint / test / smoke / mutation
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: patch-coverage-gate-diff-cover
|
|
3
3
|
board: code
|
|
4
4
|
section: pipeline
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Testing · Gap
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Med
|
|
9
9
|
wow: 2
|
|
10
10
|
note: self-hosted
|
|
11
11
|
order: 8
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/patchcov
|
|
13
|
+
pr: 183
|
|
14
14
|
title: Patch-coverage gate — <code>diff-cover</code>
|
|
15
15
|
---
|
|
16
16
|
Enforce coverage on the <em>changed lines</em> of each PR — no external
|
|
@@ -1279,7 +1279,7 @@ improvement is real (or isn't)."</p>
|
|
|
1279
1279
|
</article>
|
|
1280
1280
|
|
|
1281
1281
|
<article class="cap rcard">
|
|
1282
|
-
<div class="head"><span class="pill
|
|
1282
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Testing · Gap</span></div>
|
|
1283
1283
|
<h3>Patch-coverage gate — <code>diff-cover</code></h3>
|
|
1284
1284
|
<p>Enforce coverage on the <em>changed lines</em> of each PR — no external
|
|
1285
1285
|
service needed, it reads the same <code>coverage.xml</code> the suite
|
|
@@ -1834,7 +1834,7 @@ and the work stays visible.</p>
|
|
|
1834
1834
|
</article>
|
|
1835
1835
|
|
|
1836
1836
|
<article class="cap rcard">
|
|
1837
|
-
<div class="head"><span class="pill
|
|
1837
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Testing · Infra</span></div>
|
|
1838
1838
|
<h3>One command, every env — <code>nox</code></h3>
|
|
1839
1839
|
<p>A <code>noxfile.py</code> makes the full lint / test / smoke / mutation
|
|
1840
1840
|
gate reproducible across 3.9 → 3.14 in isolated environments,
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""One command, every env: run boost's quality gate in isolated venvs.
|
|
2
|
+
|
|
3
|
+
`nox` runs the default gate (lint + tests); `nox -s <session>` runs one; and
|
|
4
|
+
the multi-version `tests` session fans out across the supported interpreters:
|
|
5
|
+
|
|
6
|
+
nox # lint + tests across every installed interpreter
|
|
7
|
+
nox -s lint # ruff / mypy / import-linter / codespell + drift checks
|
|
8
|
+
nox -s tests # unit + functional on 3.9, 3.12, 3.14 (skips absent ones)
|
|
9
|
+
nox -s "tests-3.12" # just one interpreter
|
|
10
|
+
nox -s smoke -s mutation
|
|
11
|
+
|
|
12
|
+
Each session installs the SAME tools and runs the SAME commands as `make` and
|
|
13
|
+
the CI jobs, so "green on my machine" and "green in CI" finally mean the same
|
|
14
|
+
thing — a contributor can reproduce the exact gate before pushing. nox itself
|
|
15
|
+
is the only thing to install first: `pipx install nox` (or `pip install nox`).
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
import nox
|
|
19
|
+
|
|
20
|
+
# Match the CI matrix and the >=3.9 floor in pyproject.toml.
|
|
21
|
+
PYTHONS = ["3.9", "3.12", "3.14"]
|
|
22
|
+
|
|
23
|
+
# `nox` with no -s runs these; the rest are opt-in.
|
|
24
|
+
nox.options.sessions = ["lint", "tests"]
|
|
25
|
+
# Reuse venvs between runs for speed; a contributor rarely wants a cold rebuild.
|
|
26
|
+
nox.options.reuse_existing_virtualenvs = True
|
|
27
|
+
# Local machines rarely have all of 3.9/3.12/3.14 — skip the missing ones
|
|
28
|
+
# instead of erroring, so `nox` is useful with a single interpreter too.
|
|
29
|
+
nox.options.error_on_missing_interpreters = False
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@nox.session
|
|
33
|
+
def lint(session: nox.Session) -> None:
|
|
34
|
+
"""ruff + mypy + import-linter + codespell + the generated-file drift checks."""
|
|
35
|
+
session.install("ruff", "mypy", "codespell", "import-linter")
|
|
36
|
+
session.install("-e", ".")
|
|
37
|
+
session.run("ruff", "check", "boost_cli", "tests")
|
|
38
|
+
session.run("mypy")
|
|
39
|
+
session.run("lint-imports")
|
|
40
|
+
session.run("codespell", "boost_cli", "docs", "README.md")
|
|
41
|
+
session.run("python", "scripts/build_registries.py", "--check")
|
|
42
|
+
session.run("python", "scripts/build_roadmap.py", "--check")
|
|
43
|
+
session.run("python", "scripts/import_budget.py")
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@nox.session(python=PYTHONS)
|
|
47
|
+
def tests(session: nox.Session) -> None:
|
|
48
|
+
"""Unit + functional suites with the 80% line-coverage gate."""
|
|
49
|
+
session.install("pytest", "pytest-cov", "coverage", "hypothesis")
|
|
50
|
+
session.install("-e", ".")
|
|
51
|
+
session.run(
|
|
52
|
+
"pytest", "tests/unit", "tests/functional",
|
|
53
|
+
"--cov=boost_cli", "--cov-report=term-missing", "-q",
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@nox.session
|
|
58
|
+
def smoke(session: nox.Session) -> None:
|
|
59
|
+
"""The shell-level smoke suite through the real ./boost shim."""
|
|
60
|
+
session.install("-e", ".")
|
|
61
|
+
session.run("bash", "tests/smoke.sh", external=True)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@nox.session
|
|
65
|
+
def mutation(session: nox.Session) -> None:
|
|
66
|
+
"""Mutation testing over boost_cli/core with the 80% kill gate."""
|
|
67
|
+
session.install("mutmut", "pytest", "pytest-cov", "coverage", "hypothesis")
|
|
68
|
+
session.install("-e", ".")
|
|
69
|
+
session.run("python", "scripts/mutation_gate.py", "--run", "--min", "80")
|
|
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.158 → boost_skill_cli-1.0.161}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/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
|
{boost_skill_cli-1.0.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/boost-run-live-agents.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
|
|
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.158 → boost_skill_cli-1.0.161}/docs/roadmap/items/list-rules-and-workflows.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|