boost-skill-cli 1.0.282__tar.gz → 1.0.284__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.282 → boost_skill_cli-1.0.284}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/configuration.py +12 -7
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/mcp.py +37 -10
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- boost_skill_cli-1.0.284/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +30 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/one-commit-can-cut-two-releases.md +6 -2
- boost_skill_cli-1.0.284/docs/roadmap/items/sbom-declares-the-wrong-version.md +54 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap.html +83 -3
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_configuration.py +7 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_mcp.py +9 -1
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.gitattributes +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.gitignore +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/.vale.ini +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/LICENSE +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/Makefile +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/README.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/codecov.yml +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/index.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/README.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/examples/README.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/index.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/noxfile.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/setup.cfg +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/style/README.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/style/boost.css +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/style/boost.js +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/style/demo.html +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/visual/visual_check.mjs +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.284'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 284)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -917,11 +917,14 @@ def _tool_discover_github(args: dict):
|
|
|
917
917
|
|
|
918
918
|
REGISTRY.register(
|
|
919
919
|
"boost_search",
|
|
920
|
-
"
|
|
921
|
-
"
|
|
922
|
-
"
|
|
923
|
-
"
|
|
924
|
-
"
|
|
920
|
+
"Find an existing, installable skill instead of improvising one. Reach for "
|
|
921
|
+
"this at two moments: (1) when starting non-trivial work — check whether a "
|
|
922
|
+
"vetted skill already covers the task before planning it yourself; (2) as "
|
|
923
|
+
"the FIRST STOP before writing a skill, subagent, slash-command, rule, or "
|
|
924
|
+
"any reusable block of agent instructions from scratch. Searches thousands "
|
|
925
|
+
"of curated AI-agent skills across the configured registries and returns "
|
|
926
|
+
"ranked matches you can install in one call — don't reinvent one that "
|
|
927
|
+
"already exists.",
|
|
925
928
|
{"type": "object",
|
|
926
929
|
"properties": {"query": {"type": "string",
|
|
927
930
|
"description": "what the skill should do (a task, "
|
|
@@ -930,8 +933,10 @@ REGISTRY.register(
|
|
|
930
933
|
_tool_search)
|
|
931
934
|
REGISTRY.register(
|
|
932
935
|
"boost_list",
|
|
933
|
-
"List the skills already installed
|
|
934
|
-
"
|
|
936
|
+
"List the skills already installed and usable right now. Check at the "
|
|
937
|
+
"START of a task to leverage a capability you already have — an installed "
|
|
938
|
+
"skill is a vetted procedure you can follow immediately, at no cost — and "
|
|
939
|
+
"again before installing, to avoid duplicating something you have.",
|
|
935
940
|
{"type": "object", "properties": {}},
|
|
936
941
|
_tool_list)
|
|
937
942
|
REGISTRY.register(
|
|
@@ -83,19 +83,46 @@ PROTOCOL_VERSION = "2024-11-05"
|
|
|
83
83
|
# Server-level guidance returned in the `initialize` result. MCP hosts load this
|
|
84
84
|
# into the model's context, so it is boost's one chance to tell an agent WHEN it
|
|
85
85
|
# is relevant — the difference between a search tool that sits unused and one an
|
|
86
|
-
# agent reaches for
|
|
87
|
-
#
|
|
86
|
+
# agent reaches for. Framed by the agent's triggers, not boost's nouns.
|
|
87
|
+
#
|
|
88
|
+
# It declares TWO triggers, and the first exists because the second alone was
|
|
89
|
+
# not enough. Framed only as "before you author a skill", agents reached for
|
|
90
|
+
# boost exclusively when they were already about to write one — which is the
|
|
91
|
+
# rarer moment. The common one is starting ordinary work that an installed or
|
|
92
|
+
# installable skill already covers, and nothing was telling them to look. The
|
|
93
|
+
# closing proportion note is load-bearing in the other direction: an unbounded
|
|
94
|
+
# "always check first" turns every trivial turn into a tool call, and an agent
|
|
95
|
+
# that learns to ignore the guidance ignores all of it.
|
|
88
96
|
INSTRUCTIONS = (
|
|
89
97
|
"boost is a package manager for AI-agent skills: reusable, version-tracked "
|
|
90
98
|
"capabilities (skills, rules, slash-commands, subagents) from curated "
|
|
91
|
-
"registries
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
+
"registries.\n"
|
|
100
|
+
"\n"
|
|
101
|
+
"Two moments make boost relevant. The first is the one usually missed:\n"
|
|
102
|
+
"\n"
|
|
103
|
+
"1. STARTING A TASK. Before doing non-trivial work — building a feature, "
|
|
104
|
+
"setting up tooling or CI, reviewing code, debugging a class of problem, "
|
|
105
|
+
"writing docs — stop and check whether a skill already covers it. Call "
|
|
106
|
+
"boost_list for what is installed and usable right now, and boost_search "
|
|
107
|
+
"for what could be. A matching skill is a procedure someone already got "
|
|
108
|
+
"right and vetted; following it beats reconstructing the same steps from "
|
|
109
|
+
"memory.\n"
|
|
110
|
+
"\n"
|
|
111
|
+
"2. AUTHORING. Before you write a new skill, subagent, slash-command, "
|
|
112
|
+
"rule, or any reusable block of agent instructions — or when the user "
|
|
113
|
+
"describes a repeatable workflow (\"set up code review\", \"add a commit "
|
|
114
|
+
"convention\") — call boost_search FIRST to check whether a vetted one "
|
|
115
|
+
"already exists. Installing beats hand-writing: an installed skill is "
|
|
116
|
+
"version-pinned, wired into every agent on this machine, policy-governed, "
|
|
117
|
+
"and shareable with the team.\n"
|
|
118
|
+
"\n"
|
|
119
|
+
"Typical flow: boost_search -> boost_info -> boost_install. Only build "
|
|
120
|
+
"from scratch when a search turns up nothing relevant.\n"
|
|
121
|
+
"\n"
|
|
122
|
+
"Proportion: skip the check for trivial or one-off turns — answering a "
|
|
123
|
+
"question, a small edit, running a command you were just handed. Checking "
|
|
124
|
+
"once when a task starts is the habit; checking before every tool call is "
|
|
125
|
+
"noise."
|
|
99
126
|
)
|
|
100
127
|
|
|
101
128
|
|
|
@@ -232,6 +232,7 @@ docs/roadmap/items/make-the-roadmaps-discoverable.md
|
|
|
232
232
|
docs/roadmap/items/markdown-consistency-markdownlint-cli2.md
|
|
233
233
|
docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md
|
|
234
234
|
docs/roadmap/items/mcp-aware-skills.md
|
|
235
|
+
docs/roadmap/items/mcp-check-skills-before-starting-a-task.md
|
|
235
236
|
docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md
|
|
236
237
|
docs/roadmap/items/mcp-launch-objc-fork-safety.md
|
|
237
238
|
docs/roadmap/items/mcp-register-names-server-before-env.md
|
|
@@ -287,6 +288,7 @@ docs/roadmap/items/rule-install-native-materialization.md
|
|
|
287
288
|
docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md
|
|
288
289
|
docs/roadmap/items/runtime-explain-faithfulness-guardrail.md
|
|
289
290
|
docs/roadmap/items/sbom-aware-scanning-osv-scanner.md
|
|
291
|
+
docs/roadmap/items/sbom-declares-the-wrong-version.md
|
|
290
292
|
docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md
|
|
291
293
|
docs/roadmap/items/sbom-release-event-never-fires.md
|
|
292
294
|
docs/roadmap/items/scan-and-sync-rules-and-workflows.md
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: mcp-check-skills-before-starting-a-task
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: inflight
|
|
6
|
+
category: Interop · Adoption
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 3
|
|
10
|
+
note: agent reflex
|
|
11
|
+
order: 64
|
|
12
|
+
owner: mcp-task-entrance
|
|
13
|
+
pr: 318
|
|
14
|
+
title: MCP — check for a skill when a task starts, not only when authoring one
|
|
15
|
+
---
|
|
16
|
+
<a href="#mcp-search-before-reinventing">The previous pass</a> gave the MCP server
|
|
17
|
+
<code>initialize</code> <code>instructions</code> and intent-framed tool descriptions, but
|
|
18
|
+
framed both around a single trigger: <em>before you author a new skill</em>. That is the
|
|
19
|
+
rarer moment. Observed behaviour matched the framing exactly — agents called
|
|
20
|
+
<code>boost_search</code> only when they were already about to write a skill, and never to ask
|
|
21
|
+
whether an installed one covered the work in front of them. The common case, starting
|
|
22
|
+
ordinary work that a vetted skill already handles, had nothing pointing at it.
|
|
23
|
+
Broaden to <strong>two</strong> declared triggers: <em>starting a task</em> (call
|
|
24
|
+
<code>boost_list</code> for what is usable right now, <code>boost_search</code> for what could
|
|
25
|
+
be) and the existing <em>authoring</em> one. <code>boost_list</code> is re-framed from "avoid a
|
|
26
|
+
duplicate install" to "leverage a capability you already have" — it is the free half of the
|
|
27
|
+
check. A closing proportion note bounds it, because an unbounded <em>always check first</em>
|
|
28
|
+
turns every trivial turn into a tool call and an agent that learns to ignore the guidance
|
|
29
|
+
ignores all of it. Both triggers and the bound are pinned by tests, so dropping either
|
|
30
|
+
regresses.
|
|
@@ -48,5 +48,9 @@ ci will trigger its own release, but it means some merges never get their own ve
|
|
|
48
48
|
|
|
49
49
|
<b>Already mitigated:</b> <code>sbom.yml</code> now builds and attaches an SBOM for <em>every</em>
|
|
50
50
|
tag on the commit rather than only the highest, so a duplicate release no longer produces a release
|
|
51
|
-
with no SBOM. Each tag is built separately
|
|
52
|
-
|
|
51
|
+
with no SBOM. Each tag is built separately so its SBOM carries its own version.
|
|
52
|
+
|
|
53
|
+
<b>Correction:</b> the claim above originally read "because setuptools-scm reads the version from
|
|
54
|
+
the tag", and that is false — it reads the version from the <em>commit</em>, so separate checkouts
|
|
55
|
+
of two tags on one commit produce the same version. That was a second, quieter consequence of the
|
|
56
|
+
duplicate release, fixed separately in <code>sbom-declares-the-wrong-version</code>.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: sbom-declares-the-wrong-version
|
|
3
|
+
board: code
|
|
4
|
+
section: trust
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Supply chain · Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 5
|
|
10
|
+
note: fixed — release v1.0.278's SBOM declared 1.0.277; the version is now pinned to the tag
|
|
11
|
+
order: 68
|
|
12
|
+
owner: loop/sbom-tag-version
|
|
13
|
+
pr:
|
|
14
|
+
title: The SBOM can declare a different version than the release it is attached to
|
|
15
|
+
---
|
|
16
|
+
<code>sbom.yml</code> builds each released tag separately so that every release gets an SBOM
|
|
17
|
+
describing <em>its own</em> version. It does that by checking the tag out:
|
|
18
|
+
<code>git checkout --detach "refs/tags/$TAG"</code>. The premise is wrong.
|
|
19
|
+
<b>setuptools-scm derives the version from the commit, not from the ref used to reach it</b>, so
|
|
20
|
+
when one commit carries two tags every checkout resolves to the same version — whichever one
|
|
21
|
+
<code>git describe</code> picks, which is not the highest.
|
|
22
|
+
|
|
23
|
+
Measured against the real repository, detached at each tag in turn:
|
|
24
|
+
|
|
25
|
+
<code>checked out v1.0.278 -> setuptools-scm says: 1.0.277</code><br>
|
|
26
|
+
<code>checked out v1.0.277 -> setuptools-scm says: 1.0.277</code>
|
|
27
|
+
|
|
28
|
+
And confirmed in production rather than in a fixture — the published asset on
|
|
29
|
+
<code>v1.0.278</code>, downloaded from the release, contains
|
|
30
|
+
<code>{"name": "boost-skill-cli", "version": "1.0.277"}</code>. <b>The SBOM attached to release
|
|
31
|
+
v1.0.278 describes v1.0.277.</b> A consumer resolving that release's bill of materials gets a
|
|
32
|
+
document for a different version, which is precisely the trust property an SBOM exists to provide.
|
|
33
|
+
|
|
34
|
+
The blast radius is bounded by how often one commit cuts two releases, which
|
|
35
|
+
<code>one-commit-can-cut-two-releases</code> documents happening three times so far
|
|
36
|
+
(<code>246</code>/<code>247</code>, <code>248</code>/<code>249</code>, <code>277</code>/<code>278</code>).
|
|
37
|
+
Every duplicate pair mislabels one of its two SBOMs. It is <em>not</em> latent in
|
|
38
|
+
<code>publish.yml</code>, which builds the PyPI dist: that job checks out before the sibling run's
|
|
39
|
+
tag exists, so it happens to resolve correctly — all 281 PyPI versions are present and correctly
|
|
40
|
+
numbered. The defect is specific to the job that runs <em>after</em> both tags are in place.
|
|
41
|
+
|
|
42
|
+
<b>Shipped.</b> The build now pins the version to the tag it is building
|
|
43
|
+
(<code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_BOOST_SKILL_CLI="${TAG#v}"</code>) and then asserts the
|
|
44
|
+
wheel it produced carries that version, so a package rename — which would silently unhook the
|
|
45
|
+
scoped variable and restore the bug — fails the job instead of shipping a mislabelled document.
|
|
46
|
+
Verified both ways against the live repository: without the pin, <code>v1.0.278</code> resolves to
|
|
47
|
+
<code>1.0.277</code>; with it, <code>1.0.278</code>.
|
|
48
|
+
|
|
49
|
+
The same exercise settled the other thing this workflow had never proven: the multi-tag loop
|
|
50
|
+
itself. Both <code>run:</code> blocks were extracted verbatim from the YAML and driven against a
|
|
51
|
+
fixture repository with two tags on one commit, with <code>gh</code> and the build toolchain
|
|
52
|
+
stubbed. Resolution returns both tags newest-first, the loop iterates both, and it issues a
|
|
53
|
+
separate <code>upload</code> and a separate post-upload <code>view</code> assertion per tag. That
|
|
54
|
+
path had never executed in production — every commit since it shipped has carried exactly one tag.
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
111
111
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
112
112
|
<div class="stat"><b>4</b><span>Planned</span></div>
|
|
113
|
-
<div class="stat"><b>
|
|
113
|
+
<div class="stat"><b>175</b><span>Loop finds</span></div>
|
|
114
114
|
<!-- /ROADMAP:stats -->
|
|
115
115
|
</div>
|
|
116
116
|
</section>
|
|
@@ -2707,8 +2707,12 @@ ci will trigger its own release, but it means some merges never get their own ve
|
|
|
2707
2707
|
|
|
2708
2708
|
<b>Already mitigated:</b> <code>sbom.yml</code> now builds and attaches an SBOM for <em>every</em>
|
|
2709
2709
|
tag on the commit rather than only the highest, so a duplicate release no longer produces a release
|
|
2710
|
-
with no SBOM. Each tag is built separately
|
|
2711
|
-
|
|
2710
|
+
with no SBOM. Each tag is built separately so its SBOM carries its own version.
|
|
2711
|
+
|
|
2712
|
+
<b>Correction:</b> the claim above originally read "because setuptools-scm reads the version from
|
|
2713
|
+
the tag", and that is false — it reads the version from the <em>commit</em>, so separate checkouts
|
|
2714
|
+
of two tags on one commit produce the same version. That was a second, quieter consequence of the
|
|
2715
|
+
duplicate release, fixed separately in <code>sbom-declares-the-wrong-version</code>.</p>
|
|
2712
2716
|
<div class="meta">
|
|
2713
2717
|
<span class="m">Complexity <b>M</b></span>
|
|
2714
2718
|
<span class="m">Impact <b>Med</b></span>
|
|
@@ -3151,6 +3155,32 @@ three states: a <b>failing</b> actionlint now fails <code>make</code> (exit 2) i
|
|
|
3151
3155
|
<span class="m">fixed — a failing actionlint now fails make, in all three targets</span>
|
|
3152
3156
|
</div>
|
|
3153
3157
|
</article>
|
|
3158
|
+
|
|
3159
|
+
<article class="cap rcard" id="mcp-check-skills-before-starting-a-task">
|
|
3160
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">Interop · Adoption</span></div>
|
|
3161
|
+
<h3>MCP — check for a skill when a task starts, not only when authoring one</h3>
|
|
3162
|
+
<p><a href="#mcp-search-before-reinventing">The previous pass</a> gave the MCP server
|
|
3163
|
+
<code>initialize</code> <code>instructions</code> and intent-framed tool descriptions, but
|
|
3164
|
+
framed both around a single trigger: <em>before you author a new skill</em>. That is the
|
|
3165
|
+
rarer moment. Observed behaviour matched the framing exactly — agents called
|
|
3166
|
+
<code>boost_search</code> only when they were already about to write a skill, and never to ask
|
|
3167
|
+
whether an installed one covered the work in front of them. The common case, starting
|
|
3168
|
+
ordinary work that a vetted skill already handles, had nothing pointing at it.
|
|
3169
|
+
Broaden to <strong>two</strong> declared triggers: <em>starting a task</em> (call
|
|
3170
|
+
<code>boost_list</code> for what is usable right now, <code>boost_search</code> for what could
|
|
3171
|
+
be) and the existing <em>authoring</em> one. <code>boost_list</code> is re-framed from "avoid a
|
|
3172
|
+
duplicate install" to "leverage a capability you already have" — it is the free half of the
|
|
3173
|
+
check. A closing proportion note bounds it, because an unbounded <em>always check first</em>
|
|
3174
|
+
turns every trivial turn into a tool call and an agent that learns to ignore the guidance
|
|
3175
|
+
ignores all of it. Both triggers and the bound are pinned by tests, so dropping either
|
|
3176
|
+
regresses.</p>
|
|
3177
|
+
<div class="meta">
|
|
3178
|
+
<span class="m">Complexity <b>S</b></span>
|
|
3179
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
3180
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
3181
|
+
<span class="m">agent reflex</span>
|
|
3182
|
+
</div>
|
|
3183
|
+
</article>
|
|
3154
3184
|
<!-- /ROADMAP:cards -->
|
|
3155
3185
|
|
|
3156
3186
|
</div>
|
|
@@ -4253,6 +4283,56 @@ having found error-severity alerts.</p>
|
|
|
4253
4283
|
<span class="m">safe scoped to CodeQL (0 open) — adding Scorecard deadlocks every merge</span>
|
|
4254
4284
|
</div>
|
|
4255
4285
|
</article>
|
|
4286
|
+
|
|
4287
|
+
<article class="cap rcard" id="sbom-declares-the-wrong-version">
|
|
4288
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Supply chain · Bug</span></div>
|
|
4289
|
+
<h3>The SBOM can declare a different version than the release it is attached to</h3>
|
|
4290
|
+
<p><code>sbom.yml</code> builds each released tag separately so that every release gets an SBOM
|
|
4291
|
+
describing <em>its own</em> version. It does that by checking the tag out:
|
|
4292
|
+
<code>git checkout --detach "refs/tags/$TAG"</code>. The premise is wrong.
|
|
4293
|
+
<b>setuptools-scm derives the version from the commit, not from the ref used to reach it</b>, so
|
|
4294
|
+
when one commit carries two tags every checkout resolves to the same version — whichever one
|
|
4295
|
+
<code>git describe</code> picks, which is not the highest.
|
|
4296
|
+
|
|
4297
|
+
Measured against the real repository, detached at each tag in turn:
|
|
4298
|
+
|
|
4299
|
+
<code>checked out v1.0.278 -> setuptools-scm says: 1.0.277</code><br>
|
|
4300
|
+
<code>checked out v1.0.277 -> setuptools-scm says: 1.0.277</code>
|
|
4301
|
+
|
|
4302
|
+
And confirmed in production rather than in a fixture — the published asset on
|
|
4303
|
+
<code>v1.0.278</code>, downloaded from the release, contains
|
|
4304
|
+
<code>{"name": "boost-skill-cli", "version": "1.0.277"}</code>. <b>The SBOM attached to release
|
|
4305
|
+
v1.0.278 describes v1.0.277.</b> A consumer resolving that release's bill of materials gets a
|
|
4306
|
+
document for a different version, which is precisely the trust property an SBOM exists to provide.
|
|
4307
|
+
|
|
4308
|
+
The blast radius is bounded by how often one commit cuts two releases, which
|
|
4309
|
+
<code>one-commit-can-cut-two-releases</code> documents happening three times so far
|
|
4310
|
+
(<code>246</code>/<code>247</code>, <code>248</code>/<code>249</code>, <code>277</code>/<code>278</code>).
|
|
4311
|
+
Every duplicate pair mislabels one of its two SBOMs. It is <em>not</em> latent in
|
|
4312
|
+
<code>publish.yml</code>, which builds the PyPI dist: that job checks out before the sibling run's
|
|
4313
|
+
tag exists, so it happens to resolve correctly — all 281 PyPI versions are present and correctly
|
|
4314
|
+
numbered. The defect is specific to the job that runs <em>after</em> both tags are in place.
|
|
4315
|
+
|
|
4316
|
+
<b>Shipped.</b> The build now pins the version to the tag it is building
|
|
4317
|
+
(<code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_BOOST_SKILL_CLI="${TAG#v}"</code>) and then asserts the
|
|
4318
|
+
wheel it produced carries that version, so a package rename — which would silently unhook the
|
|
4319
|
+
scoped variable and restore the bug — fails the job instead of shipping a mislabelled document.
|
|
4320
|
+
Verified both ways against the live repository: without the pin, <code>v1.0.278</code> resolves to
|
|
4321
|
+
<code>1.0.277</code>; with it, <code>1.0.278</code>.
|
|
4322
|
+
|
|
4323
|
+
The same exercise settled the other thing this workflow had never proven: the multi-tag loop
|
|
4324
|
+
itself. Both <code>run:</code> blocks were extracted verbatim from the YAML and driven against a
|
|
4325
|
+
fixture repository with two tags on one commit, with <code>gh</code> and the build toolchain
|
|
4326
|
+
stubbed. Resolution returns both tags newest-first, the loop iterates both, and it issues a
|
|
4327
|
+
separate <code>upload</code> and a separate post-upload <code>view</code> assertion per tag. That
|
|
4328
|
+
path had never executed in production — every commit since it shipped has carried exactly one tag.</p>
|
|
4329
|
+
<div class="meta">
|
|
4330
|
+
<span class="m">Complexity <b>S</b></span>
|
|
4331
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
4332
|
+
<span class="m">Wow <b class="wow">★★★★★</b></span>
|
|
4333
|
+
<span class="m">fixed — release v1.0.278's SBOM declared 1.0.277; the version is now pinned to the tag</span>
|
|
4334
|
+
</div>
|
|
4335
|
+
</article>
|
|
4256
4336
|
<!-- /ROADMAP:cards -->
|
|
4257
4337
|
|
|
4258
4338
|
</div>
|
{boost_skill_cli-1.0.282 → boost_skill_cli-1.0.284}/tests/functional/test_cli_configuration.py
RENAMED
|
@@ -876,8 +876,15 @@ class TestMcp:
|
|
|
876
876
|
from boost_cli.commands import configuration
|
|
877
877
|
specs = {s["name"]: s["description"].lower()
|
|
878
878
|
for s in configuration.REGISTRY.specs()}
|
|
879
|
+
# search carries BOTH triggers: starting a task, and authoring. The
|
|
880
|
+
# second alone is why the tool sat unused for ordinary work.
|
|
881
|
+
assert "starting non-trivial work" in specs["boost_search"]
|
|
879
882
|
assert "first stop before writing" in specs["boost_search"]
|
|
880
883
|
assert "reinvent" in specs["boost_search"]
|
|
884
|
+
# list is the cheap half of the task-start check — leverage what is
|
|
885
|
+
# already installed, not merely "avoid a duplicate install".
|
|
886
|
+
assert "start" in specs["boost_list"]
|
|
887
|
+
assert "leverage" in specs["boost_list"]
|
|
881
888
|
# install points back at the search that should precede it
|
|
882
889
|
assert "boost_search" in specs["boost_install"]
|
|
883
890
|
# info is framed as the vet-before-install step
|
|
@@ -116,9 +116,17 @@ class TestHandleRequest:
|
|
|
116
116
|
instr = resp["result"]["instructions"]
|
|
117
117
|
assert instr == mcp.INSTRUCTIONS
|
|
118
118
|
low = instr.lower()
|
|
119
|
-
|
|
119
|
+
# TWO triggers must survive here. Authoring alone was the original
|
|
120
|
+
# framing and it under-fired: agents reached for boost only when about
|
|
121
|
+
# to write a skill, never to check whether one already covered the work
|
|
122
|
+
# in front of them. Dropping either trigger regresses that.
|
|
123
|
+
assert "starting a task" in low # trigger 1: leverage first
|
|
124
|
+
assert "boost_list" in instr # ...what is already installed
|
|
125
|
+
assert "before you write a new skill" in low # trigger 2: authoring
|
|
120
126
|
assert "boost_search" in instr # the concrete first action
|
|
121
127
|
assert "already exists" in low # the "don't reinvent" frame
|
|
128
|
+
# ...and it must stay bounded, or an agent learns to ignore all of it.
|
|
129
|
+
assert "skip the check for trivial" in low
|
|
122
130
|
|
|
123
131
|
def test_protocol_version_constant(self):
|
|
124
132
|
assert mcp.PROTOCOL_VERSION == "2024-11-05"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|