boost-skill-cli 1.0.309__tar.gz → 1.0.310__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.309/boost_skill_cli.egg-info → boost_skill_cli-1.0.310}/PKG-INFO +12 -4
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/README.md +11 -3
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/configuration.py +24 -15
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/mcp.py +39 -41
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310/boost_skill_cli.egg-info}/PKG-INFO +12 -4
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- boost_skill_cli-1.0.310/docs/roadmap/items/mcp-one-benefit-nameable-task.md +44 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap.html +41 -1
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_configuration.py +21 -13
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcp.py +41 -18
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.gitattributes +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.gitignore +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/.vale.ini +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/LICENSE +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/Makefile +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/codecov.yml +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/index.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/README.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/examples/README.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/index.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/noxfile.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/setup.cfg +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/README.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/boost.css +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/boost.js +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/style/demo.html +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/visual/visual_check.mjs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.310
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -956,9 +956,17 @@ A host whose CLI isn't installed is skipped, not an error — name it explicitly
|
|
|
956
956
|
|
|
957
957
|
Six tools are exposed: `boost_search`, `boost_list`, `boost_info`,
|
|
958
958
|
`boost_install`, `boost_doctor`, and `boost_discover_github`. The server also
|
|
959
|
-
returns MCP `instructions`, which
|
|
960
|
-
|
|
961
|
-
|
|
959
|
+
returns MCP `instructions`, which tell the agent *when* boost is relevant, so a
|
|
960
|
+
matching skill gets found at the start of a task rather than after the work is
|
|
961
|
+
already reconstructed by hand.
|
|
962
|
+
|
|
963
|
+
The two hosts place those instructions differently, and it matters. Claude Code
|
|
964
|
+
loads them as server instructions in the system prompt. Gemini CLI appends them
|
|
965
|
+
to its **memory tier** alongside `GEMINI.md`, and only in a trusted folder — so
|
|
966
|
+
outside one they are dropped silently. Each tool's own description therefore
|
|
967
|
+
repeats its trigger rather than relying on the server text, because a tool
|
|
968
|
+
description is the only part that is always in context at the moment the agent
|
|
969
|
+
chooses a tool.
|
|
962
970
|
|
|
963
971
|
Verify the wiring with `claude mcp list` or `gemini mcp list` — boost should show
|
|
964
972
|
as **Connected**. (Gemini only connects stdio servers in a trusted folder; run
|
|
@@ -238,9 +238,17 @@ A host whose CLI isn't installed is skipped, not an error — name it explicitly
|
|
|
238
238
|
|
|
239
239
|
Six tools are exposed: `boost_search`, `boost_list`, `boost_info`,
|
|
240
240
|
`boost_install`, `boost_doctor`, and `boost_discover_github`. The server also
|
|
241
|
-
returns MCP `instructions`, which
|
|
242
|
-
|
|
243
|
-
|
|
241
|
+
returns MCP `instructions`, which tell the agent *when* boost is relevant, so a
|
|
242
|
+
matching skill gets found at the start of a task rather than after the work is
|
|
243
|
+
already reconstructed by hand.
|
|
244
|
+
|
|
245
|
+
The two hosts place those instructions differently, and it matters. Claude Code
|
|
246
|
+
loads them as server instructions in the system prompt. Gemini CLI appends them
|
|
247
|
+
to its **memory tier** alongside `GEMINI.md`, and only in a trusted folder — so
|
|
248
|
+
outside one they are dropped silently. Each tool's own description therefore
|
|
249
|
+
repeats its trigger rather than relying on the server text, because a tool
|
|
250
|
+
description is the only part that is always in context at the moment the agent
|
|
251
|
+
chooses a tool.
|
|
244
252
|
|
|
245
253
|
Verify the wiring with `claude mcp list` or `gemini mcp list` — boost should show
|
|
246
254
|
as **Connected**. (Gemini only connects stdio servers in a trusted folder; run
|
|
@@ -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.310'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 310)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -937,16 +937,24 @@ def _tool_discover_github(args: dict):
|
|
|
937
937
|
for h in hits), False
|
|
938
938
|
|
|
939
939
|
|
|
940
|
+
# These descriptions do more work than they look like they should. Gemini CLI
|
|
941
|
+
# appends a server's `initialize` instructions to the GEMINI.md *memory* tier
|
|
942
|
+
# (McpClientManager.getMcpInstructions -> categorizeMemoryContents), gated on
|
|
943
|
+
# folder trust — so that block reads as background documentation, sits far from
|
|
944
|
+
# the decision point, and vanishes entirely in an untrusted folder. The function
|
|
945
|
+
# declarations are the only boost text reliably in context at the moment an
|
|
946
|
+
# agent chooses a tool, so each one repeats the trigger, the cost and the
|
|
947
|
+
# miss protocol rather than deferring to the server instructions.
|
|
940
948
|
REGISTRY.register(
|
|
941
949
|
"boost_search",
|
|
942
|
-
"
|
|
943
|
-
"
|
|
944
|
-
"
|
|
945
|
-
"
|
|
946
|
-
"
|
|
947
|
-
"
|
|
948
|
-
"
|
|
949
|
-
"
|
|
950
|
+
"Check whether someone already wrote down how to do this. Searches "
|
|
951
|
+
"thousands of vetted, installable AI-agent skills across the configured "
|
|
952
|
+
"registries and returns ranked matches. Worth one call whenever the task "
|
|
953
|
+
"in front of you has a name you could say out loud — \"set up code "
|
|
954
|
+
"review\", \"add commit conventions\", \"debug flaky tests\" — and before "
|
|
955
|
+
"writing a skill, subagent, slash-command or rule from scratch. Read-only, "
|
|
956
|
+
"no side effects, installs nothing. Returning nothing relevant is a fine "
|
|
957
|
+
"answer: it means build it yourself.",
|
|
950
958
|
{"type": "object",
|
|
951
959
|
"properties": {"query": {"type": "string",
|
|
952
960
|
"description": "what the skill should do (a task, "
|
|
@@ -955,17 +963,18 @@ REGISTRY.register(
|
|
|
955
963
|
_tool_search)
|
|
956
964
|
REGISTRY.register(
|
|
957
965
|
"boost_list",
|
|
958
|
-
"
|
|
959
|
-
"
|
|
960
|
-
"
|
|
961
|
-
"
|
|
966
|
+
"The skills already installed on this machine and usable right now — "
|
|
967
|
+
"capability you have but may not know about. Read-only, instant, installs "
|
|
968
|
+
"nothing. Worth a call at the start of any task that will take more than a "
|
|
969
|
+
"few steps, before planning it from memory.",
|
|
962
970
|
{"type": "object", "properties": {}},
|
|
963
971
|
_tool_list)
|
|
964
972
|
REGISTRY.register(
|
|
965
973
|
"boost_info",
|
|
966
|
-
"
|
|
967
|
-
"
|
|
968
|
-
"
|
|
974
|
+
"Look up one skill by name: description, source tap, version, and whether "
|
|
975
|
+
"it is already installed. Use it when you have a name from somewhere else "
|
|
976
|
+
"and want the details. You do not need this between a search and an "
|
|
977
|
+
"install — boost_search already returns each match's description.",
|
|
969
978
|
{"type": "object",
|
|
970
979
|
"properties": {"name": {"type": "string", "description": "skill name"}},
|
|
971
980
|
"required": ["name"]},
|
|
@@ -85,52 +85,50 @@ PROTOCOL_VERSION = "2024-11-05"
|
|
|
85
85
|
# is relevant — the difference between a search tool that sits unused and one an
|
|
86
86
|
# agent reaches for. Framed by the agent's triggers, not boost's nouns.
|
|
87
87
|
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
90
|
-
#
|
|
91
|
-
#
|
|
92
|
-
#
|
|
93
|
-
#
|
|
94
|
-
#
|
|
95
|
-
#
|
|
88
|
+
# ONE benefit, stated once: find a skill for the task in front of you. Earlier
|
|
89
|
+
# passes gave equal billing to "before you author a skill", and that cost more
|
|
90
|
+
# than it bought — authoring is the rarer moment, and an agent handed two
|
|
91
|
+
# triggers matches the one it can recognise fastest, which was the wrong one.
|
|
92
|
+
# Authoring now lives as a clause on boost_search's own description.
|
|
93
|
+
#
|
|
94
|
+
# The trigger is observable rather than a judgement call. "Before non-trivial
|
|
95
|
+
# work" lost to its own escape hatch every time: deciding a task is non-trivial
|
|
96
|
+
# takes judgement, while "this turn looks small" is free, and every turn looks
|
|
97
|
+
# small when it opens. Whether the task has a NAME can be pattern-matched
|
|
98
|
+
# without deciding anything, and a named task is exactly the kind someone has
|
|
99
|
+
# already written down.
|
|
100
|
+
#
|
|
101
|
+
# Three things below are load-bearing, not padding. The stated COST kills the
|
|
102
|
+
# hesitation over an unknown-price call. The MISS PROTOCOL stops a zero-result
|
|
103
|
+
# search reading as a wasted turn — without it one empty search teaches an agent
|
|
104
|
+
# to stop checking. And "the task stays yours" is what makes an agent willing to
|
|
105
|
+
# look at all: one that expects a hit to seize the work is safer not looking.
|
|
106
|
+
# The closing bound names concrete shapes instead of the word "trivial", which
|
|
107
|
+
# an unbounded "always check first" needs or the guidance gets ignored wholesale.
|
|
96
108
|
INSTRUCTIONS = (
|
|
97
|
-
"boost is a
|
|
98
|
-
"
|
|
99
|
-
"registries.\n"
|
|
100
|
-
"\n"
|
|
101
|
-
"Three 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"
|
|
109
|
+
"boost is a shared shelf of vetted, version-tracked skills for AI coding "
|
|
110
|
+
"agents — procedures someone already worked out, ready to follow.\n"
|
|
110
111
|
"\n"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"and shareable with the team.\n"
|
|
112
|
+
"THE CHECK: if the task in front of you has a name — \"set up code "
|
|
113
|
+
"review\", \"add commit conventions\", \"write a migration\", \"debug "
|
|
114
|
+
"flaky tests\" — someone has probably already written it down. Call "
|
|
115
|
+
"boost_list for what is installed on this machine and boost_search for "
|
|
116
|
+
"what exists. Both are read-only, take about a second, and install "
|
|
117
|
+
"nothing.\n"
|
|
118
118
|
"\n"
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"changes rather than treating the original framing as settled. The most "
|
|
124
|
-
"expensive misses are the tasks nobody checked because they were not "
|
|
125
|
-
"tasks when they began.\n"
|
|
119
|
+
"Finding nothing is a good outcome, not a wasted call: it tells you to "
|
|
120
|
+
"build it yourself, now knowing that nothing already covers it. Finding "
|
|
121
|
+
"something is a head start, not an instruction — read it, take what fits, "
|
|
122
|
+
"discard the rest. The task stays yours.\n"
|
|
126
123
|
"\n"
|
|
127
|
-
"
|
|
128
|
-
"
|
|
124
|
+
"Two moments beat the odds: the first step of anything that will take more "
|
|
125
|
+
"than a few steps, and the moment a small task turns out to be a large "
|
|
126
|
+
"one. The second matters because the first only fires at a boundary you "
|
|
127
|
+
"recognized at the time — a question that became an investigation never "
|
|
128
|
+
"got one.\n"
|
|
129
129
|
"\n"
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"once when a task starts, or when it grows into one, is the habit; "
|
|
133
|
-
"checking before every tool call is noise."
|
|
130
|
+
"Flow: boost_search -> boost_install. Skip it for a question, a one-line "
|
|
131
|
+
"edit, or a command you were just handed."
|
|
134
132
|
)
|
|
135
133
|
|
|
136
134
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.310
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -956,9 +956,17 @@ A host whose CLI isn't installed is skipped, not an error — name it explicitly
|
|
|
956
956
|
|
|
957
957
|
Six tools are exposed: `boost_search`, `boost_list`, `boost_info`,
|
|
958
958
|
`boost_install`, `boost_doctor`, and `boost_discover_github`. The server also
|
|
959
|
-
returns MCP `instructions`, which
|
|
960
|
-
|
|
961
|
-
|
|
959
|
+
returns MCP `instructions`, which tell the agent *when* boost is relevant, so a
|
|
960
|
+
matching skill gets found at the start of a task rather than after the work is
|
|
961
|
+
already reconstructed by hand.
|
|
962
|
+
|
|
963
|
+
The two hosts place those instructions differently, and it matters. Claude Code
|
|
964
|
+
loads them as server instructions in the system prompt. Gemini CLI appends them
|
|
965
|
+
to its **memory tier** alongside `GEMINI.md`, and only in a trusted folder — so
|
|
966
|
+
outside one they are dropped silently. Each tool's own description therefore
|
|
967
|
+
repeats its trigger rather than relying on the server text, because a tool
|
|
968
|
+
description is the only part that is always in context at the moment the agent
|
|
969
|
+
chooses a tool.
|
|
962
970
|
|
|
963
971
|
Verify the wiring with `claude mcp list` or `gemini mcp list` — boost should show
|
|
964
972
|
as **Connected**. (Gemini only connects stdio servers in a trusted folder; run
|
|
@@ -251,6 +251,7 @@ docs/roadmap/items/mcp-check-skills-before-starting-a-task.md
|
|
|
251
251
|
docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md
|
|
252
252
|
docs/roadmap/items/mcp-install-skips-the-injection-scan.md
|
|
253
253
|
docs/roadmap/items/mcp-launch-objc-fork-safety.md
|
|
254
|
+
docs/roadmap/items/mcp-one-benefit-nameable-task.md
|
|
254
255
|
docs/roadmap/items/mcp-register-names-server-before-env.md
|
|
255
256
|
docs/roadmap/items/mcp-search-before-reinventing.md
|
|
256
257
|
docs/roadmap/items/mcp-servers-ignore-install-scope.md
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: mcp-one-benefit-nameable-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: 74
|
|
12
|
+
owner: loop/mcp-nameable-task
|
|
13
|
+
pr: 355
|
|
14
|
+
title: MCP — one benefit, one observable trigger (and stop routing through boost_info)
|
|
15
|
+
---
|
|
16
|
+
Gemini CLI used the boost MCP server only when asked by hand, never on its own.
|
|
17
|
+
Two causes, and neither was fixed by writing more instructions.
|
|
18
|
+
<strong>Placement:</strong> Gemini appends a server's <code>initialize</code>
|
|
19
|
+
<code>instructions</code> to the <em>GEMINI.md memory tier</em>
|
|
20
|
+
(<code>getMcpInstructions</code> → <code>categorizeMemoryContents</code>), gated on
|
|
21
|
+
folder trust — so the block reads as background documentation, sits far from the
|
|
22
|
+
tool-call decision, and is dropped entirely in an untrusted folder. Claude Code puts
|
|
23
|
+
the same text in the system prompt, which is why the gap only showed on Gemini. The
|
|
24
|
+
tool descriptions are the only boost text reliably in context at the decision point,
|
|
25
|
+
so each now repeats the trigger, the cost and the miss protocol instead of deferring
|
|
26
|
+
upward. <strong>Wording:</strong> <a href="#mcp-check-skills-before-starting-a-task">the
|
|
27
|
+
previous pass</a> declared three triggers bounded by a proportionality note, and the
|
|
28
|
+
bound beat the triggers every time — judging work "non-trivial" takes judgement, while
|
|
29
|
+
"this turn looks small" is free, and every turn looks small when it opens. Collapse to
|
|
30
|
+
<strong>one</strong> benefit (find a skill for the task in front of you) and
|
|
31
|
+
<strong>one observable</strong> trigger (<em>does the task have a name?</em>), which an
|
|
32
|
+
agent can pattern-match without deciding anything. Authoring drops from co-equal
|
|
33
|
+
trigger to a clause on <code>boost_search</code> — it is the rarer moment and it was
|
|
34
|
+
crowding out the common one. Three additions are load-bearing, not padding: the stated
|
|
35
|
+
<em>cost</em> (read-only, ~1s, installs nothing) kills the unknown-price hesitation; the
|
|
36
|
+
<em>miss protocol</em> ("finding nothing is a good outcome") stops one empty search
|
|
37
|
+
teaching an agent to quit checking; and "the task stays yours" is what makes an agent
|
|
38
|
+
willing to look, since one that expects a hit to seize the work is safer not looking.
|
|
39
|
+
Finally, drop <code>boost_info</code> from the advertised flow — <code>boost_search</code>
|
|
40
|
+
already returns each hit's description, the only field that changes an install decision,
|
|
41
|
+
so the hop bought a round-trip and a decision point and nothing else. It stays registered
|
|
42
|
+
for looking up a name from elsewhere, and its description now says so. All of it is
|
|
43
|
+
pinned by tests, including negative assertions so authoring and the info hop cannot
|
|
44
|
+
creep back.
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
112
112
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
113
113
|
<div class="stat"><b>4</b><span>Planned</span></div>
|
|
114
|
-
<div class="stat"><b>
|
|
114
|
+
<div class="stat"><b>188</b><span>Loop finds</span></div>
|
|
115
115
|
<!-- /ROADMAP:stats -->
|
|
116
116
|
</div>
|
|
117
117
|
</section>
|
|
@@ -3914,6 +3914,46 @@ open: <code>zizmor</code> and <code>gitleaks</code> run only in CI and have no M
|
|
|
3914
3914
|
<span class="m">fixed — shellcheck is pinned in lint-tools and both gates now assert it is there</span>
|
|
3915
3915
|
</div>
|
|
3916
3916
|
</article>
|
|
3917
|
+
|
|
3918
|
+
<article class="cap rcard" id="mcp-one-benefit-nameable-task">
|
|
3919
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">Interop · Adoption</span></div>
|
|
3920
|
+
<h3>MCP — one benefit, one observable trigger (and stop routing through boost_info)</h3>
|
|
3921
|
+
<p>Gemini CLI used the boost MCP server only when asked by hand, never on its own.
|
|
3922
|
+
Two causes, and neither was fixed by writing more instructions.
|
|
3923
|
+
<strong>Placement:</strong> Gemini appends a server's <code>initialize</code>
|
|
3924
|
+
<code>instructions</code> to the <em>GEMINI.md memory tier</em>
|
|
3925
|
+
(<code>getMcpInstructions</code> → <code>categorizeMemoryContents</code>), gated on
|
|
3926
|
+
folder trust — so the block reads as background documentation, sits far from the
|
|
3927
|
+
tool-call decision, and is dropped entirely in an untrusted folder. Claude Code puts
|
|
3928
|
+
the same text in the system prompt, which is why the gap only showed on Gemini. The
|
|
3929
|
+
tool descriptions are the only boost text reliably in context at the decision point,
|
|
3930
|
+
so each now repeats the trigger, the cost and the miss protocol instead of deferring
|
|
3931
|
+
upward. <strong>Wording:</strong> <a href="#mcp-check-skills-before-starting-a-task">the
|
|
3932
|
+
previous pass</a> declared three triggers bounded by a proportionality note, and the
|
|
3933
|
+
bound beat the triggers every time — judging work "non-trivial" takes judgement, while
|
|
3934
|
+
"this turn looks small" is free, and every turn looks small when it opens. Collapse to
|
|
3935
|
+
<strong>one</strong> benefit (find a skill for the task in front of you) and
|
|
3936
|
+
<strong>one observable</strong> trigger (<em>does the task have a name?</em>), which an
|
|
3937
|
+
agent can pattern-match without deciding anything. Authoring drops from co-equal
|
|
3938
|
+
trigger to a clause on <code>boost_search</code> — it is the rarer moment and it was
|
|
3939
|
+
crowding out the common one. Three additions are load-bearing, not padding: the stated
|
|
3940
|
+
<em>cost</em> (read-only, ~1s, installs nothing) kills the unknown-price hesitation; the
|
|
3941
|
+
<em>miss protocol</em> ("finding nothing is a good outcome") stops one empty search
|
|
3942
|
+
teaching an agent to quit checking; and "the task stays yours" is what makes an agent
|
|
3943
|
+
willing to look, since one that expects a hit to seize the work is safer not looking.
|
|
3944
|
+
Finally, drop <code>boost_info</code> from the advertised flow — <code>boost_search</code>
|
|
3945
|
+
already returns each hit's description, the only field that changes an install decision,
|
|
3946
|
+
so the hop bought a round-trip and a decision point and nothing else. It stays registered
|
|
3947
|
+
for looking up a name from elsewhere, and its description now says so. All of it is
|
|
3948
|
+
pinned by tests, including negative assertions so authoring and the info hop cannot
|
|
3949
|
+
creep back.</p>
|
|
3950
|
+
<div class="meta">
|
|
3951
|
+
<span class="m">Complexity <b>S</b></span>
|
|
3952
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
3953
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
3954
|
+
<span class="m">agent reflex</span>
|
|
3955
|
+
</div>
|
|
3956
|
+
</article>
|
|
3917
3957
|
<!-- /ROADMAP:cards -->
|
|
3918
3958
|
|
|
3919
3959
|
</div>
|
{boost_skill_cli-1.0.309 → boost_skill_cli-1.0.310}/tests/functional/test_cli_configuration.py
RENAMED
|
@@ -878,24 +878,32 @@ class TestMcp:
|
|
|
878
878
|
assert configuration._mcp_tool("nonexistent_tool", {}) == (None, False)
|
|
879
879
|
|
|
880
880
|
def test_tool_descriptions_are_intent_framed(self, sandbox):
|
|
881
|
-
#
|
|
882
|
-
#
|
|
881
|
+
# The descriptions must tell an agent WHEN to reach for boost, not just
|
|
882
|
+
# what each tool does. On Gemini CLI these carry the whole load: it
|
|
883
|
+
# appends server `instructions` to the GEMINI.md memory tier, so the
|
|
884
|
+
# function declarations are the only boost text in context at the
|
|
885
|
+
# moment the tool-call decision is actually made.
|
|
883
886
|
from boost_cli.commands import configuration
|
|
884
887
|
specs = {s["name"]: s["description"].lower()
|
|
885
888
|
for s in configuration.REGISTRY.specs()}
|
|
886
|
-
# search
|
|
887
|
-
#
|
|
888
|
-
assert "
|
|
889
|
-
assert "
|
|
890
|
-
assert "
|
|
891
|
-
#
|
|
892
|
-
#
|
|
893
|
-
assert "
|
|
894
|
-
|
|
889
|
+
# search leads with the observable trigger and states its cost; a miss
|
|
890
|
+
# is named as a real outcome so it does not read as a wasted call.
|
|
891
|
+
assert "has a name" in specs["boost_search"]
|
|
892
|
+
assert "read-only" in specs["boost_search"]
|
|
893
|
+
assert "build it yourself" in specs["boost_search"]
|
|
894
|
+
# authoring survives ONLY here, as a clause — never as a co-equal
|
|
895
|
+
# trigger. Promoting it back cost boost its primary use once already.
|
|
896
|
+
assert "from scratch" in specs["boost_search"]
|
|
897
|
+
# list is the free half of the check — capability already on the box.
|
|
898
|
+
assert "installed" in specs["boost_list"]
|
|
899
|
+
assert "read-only" in specs["boost_list"]
|
|
900
|
+
assert "more than a few steps" in specs["boost_list"]
|
|
895
901
|
# install points back at the search that should precede it
|
|
896
902
|
assert "boost_search" in specs["boost_install"]
|
|
897
|
-
# info is
|
|
898
|
-
|
|
903
|
+
# info is a name lookup, NOT a step between search and install. It has
|
|
904
|
+
# to say so, or an agent reinstates the hop the flow just dropped.
|
|
905
|
+
assert "by name" in specs["boost_info"]
|
|
906
|
+
assert "do not need this between a search and an install" in specs["boost_info"]
|
|
899
907
|
|
|
900
908
|
def test_discover_github_missing_gh_degrades(self, sandbox, monkeypatch):
|
|
901
909
|
from boost_cli.commands import configuration
|
|
@@ -110,30 +110,53 @@ class TestHandleRequest:
|
|
|
110
110
|
|
|
111
111
|
def test_initialize_returns_server_instructions(self):
|
|
112
112
|
# MCP hosts load `instructions` into the agent's context — this is where
|
|
113
|
-
# boost earns the "
|
|
113
|
+
# boost earns the "check for a skill before doing the work" reflex.
|
|
114
114
|
resp = mcp.handle_request({"id": 1, "method": "initialize"},
|
|
115
115
|
version="9.9.9", registry=_reg_with())
|
|
116
116
|
instr = resp["result"]["instructions"]
|
|
117
117
|
assert instr == mcp.INSTRUCTIONS
|
|
118
118
|
low = instr.lower()
|
|
119
|
-
#
|
|
120
|
-
# framing and it
|
|
121
|
-
#
|
|
122
|
-
#
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
assert "
|
|
126
|
-
assert "
|
|
127
|
-
|
|
128
|
-
#
|
|
129
|
-
|
|
130
|
-
#
|
|
131
|
-
#
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
119
|
+
# ONE trigger, and it must be observable rather than a judgement call.
|
|
120
|
+
# "Non-trivial work" was the old framing and it lost to its own escape
|
|
121
|
+
# hatch: deciding a task is non-trivial takes judgement, while "this
|
|
122
|
+
# turn looks small" is free — and every turn looks small when it opens.
|
|
123
|
+
# A task having a NAME is something an agent can pattern-match without
|
|
124
|
+
# deciding anything.
|
|
125
|
+
assert "has a name" in low
|
|
126
|
+
assert "boost_list" in instr and "boost_search" in instr
|
|
127
|
+
# The cost has to be stated. An unknown-cost call with an unknown hit
|
|
128
|
+
# rate gets skipped, however good the pitch above it.
|
|
129
|
+
assert "read-only" in low
|
|
130
|
+
# ...as does the miss protocol. Without it a zero-result search reads as
|
|
131
|
+
# a wasted turn, so the next task skips the check to avoid repeating it.
|
|
132
|
+
assert "finding nothing" in low
|
|
133
|
+
# Non-capturing, and load-bearing rather than merely polite: an agent
|
|
134
|
+
# that expects a hit to seize the task is safer not looking.
|
|
135
|
+
assert "the task stays yours" in low
|
|
136
|
+
# Escalation still has to be caught — both other moments fire at a task
|
|
137
|
+
# boundary, so a turn that starts small and grows is never re-checked.
|
|
138
|
+
assert "turns out to be a large one" in low
|
|
135
139
|
# ...and it must stay bounded, or an agent learns to ignore all of it.
|
|
136
|
-
assert "skip
|
|
140
|
+
assert "skip it for a question" in low
|
|
141
|
+
|
|
142
|
+
def test_instructions_lead_with_using_a_skill_not_authoring_one(self):
|
|
143
|
+
# Authoring used to be a co-equal numbered trigger, which cost the
|
|
144
|
+
# instructions their point: boost's primary benefit is finding a skill
|
|
145
|
+
# for the task in front of you, and "am I about to write a skill?" is
|
|
146
|
+
# both rarer and a different question. It survives only as a clause on
|
|
147
|
+
# boost_search's own description, never as a trigger here.
|
|
148
|
+
low = mcp.INSTRUCTIONS.lower()
|
|
149
|
+
assert "before you write a new skill" not in low
|
|
150
|
+
assert "authoring" not in low
|
|
151
|
+
|
|
152
|
+
def test_instructions_route_search_straight_to_install(self):
|
|
153
|
+
# boost_info sat between search and install in the advertised flow, but
|
|
154
|
+
# search already returns each hit's description — the only field that
|
|
155
|
+
# changes an install decision — so the hop bought a round-trip and a
|
|
156
|
+
# decision point and nothing else. It stays a registered tool for
|
|
157
|
+
# looking up a name from elsewhere; it is not a step.
|
|
158
|
+
assert "boost_search -> boost_install" in mcp.INSTRUCTIONS
|
|
159
|
+
assert "boost_info" not in mcp.INSTRUCTIONS
|
|
137
160
|
|
|
138
161
|
def test_protocol_version_constant(self):
|
|
139
162
|
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
|