boost-skill-cli 1.0.339__tar.gz → 1.0.341__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.339/boost_skill_cli.egg-info → boost_skill_cli-1.0.341}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/configuration.py +13 -3
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/mcp.py +5 -2
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +22 -0
- boost_skill_cli-1.0.341/docs/roadmap/items/mcp-search-cost-was-understated.md +44 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap.html +64 -2
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_dense_shards.py +76 -1
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mcp.py +22 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.gitattributes +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.gitignore +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/.vale.ini +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/LICENSE +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/Makefile +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/README.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/codecov.yml +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/index.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/README.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/examples/README.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/index.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/noxfile.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/setup.cfg +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/style/README.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/style/boost.css +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/style/boost.js +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/style/demo.html +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/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.341'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 341)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -816,7 +816,15 @@ REGISTRY = mcp.Registry()
|
|
|
816
816
|
def _tool_search(args: dict):
|
|
817
817
|
query = str(args.get("query", ""))
|
|
818
818
|
rag.ensure() # build the full-content index on first use (BM25 by default)
|
|
819
|
-
|
|
819
|
+
# smart=True is stated, not inherited. It is `rag.search`'s default, so this
|
|
820
|
+
# path was spending an LLM call per search by accident of a signature —
|
|
821
|
+
# while the CLI makes the user ask for it with `--smart`. Measured on the
|
|
822
|
+
# 91-query golden set, the rerank moves hit@1 from 0.791 to 0.945, and an
|
|
823
|
+
# agent acts on the top result rather than scanning ten, so it is the one
|
|
824
|
+
# caller for whom the seconds are clearly worth it. Written down here so
|
|
825
|
+
# the asymmetry with the CLI is a decision someone can revisit, not a
|
|
826
|
+
# default nobody chose. It degrades on its own when no AI is configured.
|
|
827
|
+
rag_result = rag.search(query, limit=10, smart=True)
|
|
820
828
|
if rag_result is not None: # full-content index is built
|
|
821
829
|
hits, _ranker = rag_result
|
|
822
830
|
if not hits:
|
|
@@ -953,8 +961,10 @@ REGISTRY.register(
|
|
|
953
961
|
"in front of you has a name you could say out loud — \"set up code "
|
|
954
962
|
"review\", \"add commit conventions\", \"debug flaky tests\" — and before "
|
|
955
963
|
"writing a skill, subagent, slash-command or rule from scratch. Read-only, "
|
|
956
|
-
"no side effects, installs nothing.
|
|
957
|
-
"
|
|
964
|
+
"no side effects, installs nothing. Takes a few seconds because it ranks "
|
|
965
|
+
"the matches with an LLM, which is what makes the top result worth acting "
|
|
966
|
+
"on. Returning nothing relevant is a fine answer: it means build it "
|
|
967
|
+
"yourself.",
|
|
958
968
|
{"type": "object",
|
|
959
969
|
"properties": {"query": {"type": "string",
|
|
960
970
|
"description": "what the skill should do (a task, "
|
|
@@ -113,8 +113,11 @@ INSTRUCTIONS = (
|
|
|
113
113
|
"review\", \"add commit conventions\", \"write a migration\", \"debug "
|
|
114
114
|
"flaky tests\" — someone has probably already written it down. Call "
|
|
115
115
|
"boost_list for what is installed on this machine and boost_search for "
|
|
116
|
-
"what exists. Both are read-only
|
|
117
|
-
"
|
|
116
|
+
"what exists. Both are read-only and install nothing. boost_list is "
|
|
117
|
+
"instant. boost_search takes a few seconds: it retrieves, then ranks them "
|
|
118
|
+
"with an LLM, which is worth it because you act on the top result — "
|
|
119
|
+
"measured, that ranking puts the right skill first 95% of the time "
|
|
120
|
+
"against 79% without it.\n"
|
|
118
121
|
"\n"
|
|
119
122
|
"Finding nothing is a good outcome, not a wasted call: it tells you to "
|
|
120
123
|
"build it yourself, now knowing that nothing already covers it. Finding "
|
|
@@ -255,6 +255,7 @@ docs/roadmap/items/mcp-launch-objc-fork-safety.md
|
|
|
255
255
|
docs/roadmap/items/mcp-one-benefit-nameable-task.md
|
|
256
256
|
docs/roadmap/items/mcp-register-names-server-before-env.md
|
|
257
257
|
docs/roadmap/items/mcp-search-before-reinventing.md
|
|
258
|
+
docs/roadmap/items/mcp-search-cost-was-understated.md
|
|
258
259
|
docs/roadmap/items/mcp-servers-ignore-install-scope.md
|
|
259
260
|
docs/roadmap/items/mcp-startup-self-harden-fork-safety.md
|
|
260
261
|
docs/roadmap/items/memoize-config-load-in-process.md
|
|
@@ -331,3 +331,25 @@ both sides, and only the document half can be shipped ahead of time.
|
|
|
331
331
|
<b>Still open in step 2:</b> the CI workflow that publishes shards as release artifacts, and the
|
|
332
332
|
<code>boost tap</code> integration that fetches one automatically. Both are now plumbing on top of a
|
|
333
333
|
verified mechanism rather than open questions. Steps 3 and 5 are untouched.
|
|
334
|
+
|
|
335
|
+
<b>Step 3 works, and it did not need new code — it needed proving.</b> Local delta top-up falls
|
|
336
|
+
out of the shard mechanism plus the commit-keyed reuse <code>build()</code> already had:
|
|
337
|
+
<code>import_shard</code> records the tap's commit in the same <code>meta.commits</code> map
|
|
338
|
+
<code>build()</code> consults, so an imported shard is indistinguishable from locally-built vectors
|
|
339
|
+
as far as reuse is concerned.
|
|
340
|
+
|
|
341
|
+
Measured end to end with a stubbed embedder, on a store holding an imported shard for
|
|
342
|
+
<code>anthropics/skills</code> plus a freshly tapped <code>Aaronontheweb/dotnet-cursor-rules</code>:
|
|
343
|
+
<b>158 chunks embedded — the new tap only — and the shard's 262 untouched</b>. The
|
|
344
|
+
resulting store is one coherent embedding space: 420 vectors, both taps' commits recorded, single
|
|
345
|
+
provider/model/dim. That is exactly the shape this step asks for — shards cover the popular
|
|
346
|
+
registries, the local model makes the long tail self-serve, and cost scales with what a user taps
|
|
347
|
+
rather than with the ecosystem.
|
|
348
|
+
|
|
349
|
+
Two tests now pin it, because the coupling is the kind that breaks silently: an import that forgot to
|
|
350
|
+
record the commit would still produce a <em>working</em> store, and the only symptom would be
|
|
351
|
+
re-embedding the shard's chunks on every later build — minutes of wasted CPU that nothing
|
|
352
|
+
reports.
|
|
353
|
+
|
|
354
|
+
<b>Steps 1, 2, 3, 4 and 6 are now done; step 5 (a hosted demo) is the remainder</b>, along with the
|
|
355
|
+
CI workflow that publishes shards as release artifacts, which is noted under step 2.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: mcp-search-cost-was-understated
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: inflight
|
|
6
|
+
category: Interop · Adoption
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Medium
|
|
9
|
+
wow: 2
|
|
10
|
+
note: the instructions claimed a second; it is twelve
|
|
11
|
+
order: 76
|
|
12
|
+
owner: loop/mcp-true-cost
|
|
13
|
+
pr:
|
|
14
|
+
title: The MCP instructions understated what a search costs by 100x
|
|
15
|
+
---
|
|
16
|
+
<a href="#mcp-one-benefit-nameable-task">The nameable-task rewrite</a> gave the MCP
|
|
17
|
+
server a stated cost, on the reasoning that an unknown-price call with an unknown hit
|
|
18
|
+
rate gets skipped. That reasoning still holds. The number was wrong: <em>"Both are
|
|
19
|
+
read-only, take about a second, and install nothing."</em> Measured against the real
|
|
20
|
+
path, <code>boost_list</code> is instant but <code>boost_search</code> runs
|
|
21
|
+
<b>11.7–17.0 s</b> (median ~12) against <b>0.10 s</b> with the rerank
|
|
22
|
+
off — because <code>rag.search</code> defaults <code>smart=True</code> and the MCP
|
|
23
|
+
tool called it bare, so every agent search spends an LLM call while the CLI makes a
|
|
24
|
+
human ask with <code>--smart</code>.
|
|
25
|
+
<b>Ship the cost, not a smaller one.</b> The fix is not to hide the latency: the rerank
|
|
26
|
+
is the largest measured quality lever in the retrieval stack. On the 91-query golden set
|
|
27
|
+
it moves <code>hit@1</code> from <b>0.791 to 0.945</b> — +14 net queries, against
|
|
28
|
+
the ~6-query floor for <em>p</em><0.05 at this <em>n</em>. For scale, full-content
|
|
29
|
+
BM25 beat the old frontmatter search by +0.077, and dense retrieval tied BM25 exactly at
|
|
30
|
+
0.000. An agent acts on the top result rather than scanning ten, so it is the caller for
|
|
31
|
+
whom those seconds are most clearly worth paying. The instructions now separate the two
|
|
32
|
+
tools (<code>boost_list</code> instant, <code>boost_search</code> a few seconds) and say
|
|
33
|
+
what the seconds buy, because a wrong cost in the one paragraph whose job is to make the
|
|
34
|
+
tool worth reaching for discredits everything around it — and an agent that
|
|
35
|
+
budgeted a second gets a surprise instead of a decision.
|
|
36
|
+
<b>The default is now written down.</b> <code>smart=True</code> is passed explicitly at
|
|
37
|
+
the MCP call site with the measurement in a comment. It was previously inherited from
|
|
38
|
+
<code>rag.search</code>'s signature, which meant the most expensive behaviour in the
|
|
39
|
+
tool was an accident nobody had chosen and nobody could find. Same asymmetry as before,
|
|
40
|
+
but now it is a decision someone can revisit.
|
|
41
|
+
<b>What is still unmeasured:</b> the lift is over <em>raw BM25</em>, the pipeline that
|
|
42
|
+
stopped shipping when RRF fusion landed. Whether it survives over the fused ranking
|
|
43
|
+
needs the arm that
|
|
44
|
+
<a href="#keyless-semantic-search-for-everyone">step 6</a> is already committed to.
|
|
@@ -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>191</b><span>Loop finds</span></div>
|
|
115
115
|
<!-- /ROADMAP:stats -->
|
|
116
116
|
</div>
|
|
117
117
|
</section>
|
|
@@ -918,7 +918,29 @@ both sides, and only the document half can be shipped ahead of time.
|
|
|
918
918
|
|
|
919
919
|
<b>Still open in step 2:</b> the CI workflow that publishes shards as release artifacts, and the
|
|
920
920
|
<code>boost tap</code> integration that fetches one automatically. Both are now plumbing on top of a
|
|
921
|
-
verified mechanism rather than open questions. Steps 3 and 5 are untouched
|
|
921
|
+
verified mechanism rather than open questions. Steps 3 and 5 are untouched.
|
|
922
|
+
|
|
923
|
+
<b>Step 3 works, and it did not need new code — it needed proving.</b> Local delta top-up falls
|
|
924
|
+
out of the shard mechanism plus the commit-keyed reuse <code>build()</code> already had:
|
|
925
|
+
<code>import_shard</code> records the tap's commit in the same <code>meta.commits</code> map
|
|
926
|
+
<code>build()</code> consults, so an imported shard is indistinguishable from locally-built vectors
|
|
927
|
+
as far as reuse is concerned.
|
|
928
|
+
|
|
929
|
+
Measured end to end with a stubbed embedder, on a store holding an imported shard for
|
|
930
|
+
<code>anthropics/skills</code> plus a freshly tapped <code>Aaronontheweb/dotnet-cursor-rules</code>:
|
|
931
|
+
<b>158 chunks embedded — the new tap only — and the shard's 262 untouched</b>. The
|
|
932
|
+
resulting store is one coherent embedding space: 420 vectors, both taps' commits recorded, single
|
|
933
|
+
provider/model/dim. That is exactly the shape this step asks for — shards cover the popular
|
|
934
|
+
registries, the local model makes the long tail self-serve, and cost scales with what a user taps
|
|
935
|
+
rather than with the ecosystem.
|
|
936
|
+
|
|
937
|
+
Two tests now pin it, because the coupling is the kind that breaks silently: an import that forgot to
|
|
938
|
+
record the commit would still produce a <em>working</em> store, and the only symptom would be
|
|
939
|
+
re-embedding the shard's chunks on every later build — minutes of wasted CPU that nothing
|
|
940
|
+
reports.
|
|
941
|
+
|
|
942
|
+
<b>Steps 1, 2, 3, 4 and 6 are now done; step 5 (a hosted demo) is the remainder</b>, along with the
|
|
943
|
+
CI workflow that publishes shards as release artifacts, which is noted under step 2.</p>
|
|
922
944
|
<div class="meta">
|
|
923
945
|
<span class="m">Complexity <b>L</b></span>
|
|
924
946
|
<span class="m hi">Impact <b>High</b></span>
|
|
@@ -4755,6 +4777,46 @@ with a negative assertion so the hop cannot creep back.</p>
|
|
|
4755
4777
|
<span class="m">agent reflex</span>
|
|
4756
4778
|
</div>
|
|
4757
4779
|
</article>
|
|
4780
|
+
|
|
4781
|
+
<article class="cap rcard" id="mcp-search-cost-was-understated">
|
|
4782
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">Interop · Adoption</span></div>
|
|
4783
|
+
<h3>The MCP instructions understated what a search costs by 100x</h3>
|
|
4784
|
+
<p><a href="#mcp-one-benefit-nameable-task">The nameable-task rewrite</a> gave the MCP
|
|
4785
|
+
server a stated cost, on the reasoning that an unknown-price call with an unknown hit
|
|
4786
|
+
rate gets skipped. That reasoning still holds. The number was wrong: <em>"Both are
|
|
4787
|
+
read-only, take about a second, and install nothing."</em> Measured against the real
|
|
4788
|
+
path, <code>boost_list</code> is instant but <code>boost_search</code> runs
|
|
4789
|
+
<b>11.7–17.0 s</b> (median ~12) against <b>0.10 s</b> with the rerank
|
|
4790
|
+
off — because <code>rag.search</code> defaults <code>smart=True</code> and the MCP
|
|
4791
|
+
tool called it bare, so every agent search spends an LLM call while the CLI makes a
|
|
4792
|
+
human ask with <code>--smart</code>.
|
|
4793
|
+
<b>Ship the cost, not a smaller one.</b> The fix is not to hide the latency: the rerank
|
|
4794
|
+
is the largest measured quality lever in the retrieval stack. On the 91-query golden set
|
|
4795
|
+
it moves <code>hit@1</code> from <b>0.791 to 0.945</b> — +14 net queries, against
|
|
4796
|
+
the ~6-query floor for <em>p</em><0.05 at this <em>n</em>. For scale, full-content
|
|
4797
|
+
BM25 beat the old frontmatter search by +0.077, and dense retrieval tied BM25 exactly at
|
|
4798
|
+
0.000. An agent acts on the top result rather than scanning ten, so it is the caller for
|
|
4799
|
+
whom those seconds are most clearly worth paying. The instructions now separate the two
|
|
4800
|
+
tools (<code>boost_list</code> instant, <code>boost_search</code> a few seconds) and say
|
|
4801
|
+
what the seconds buy, because a wrong cost in the one paragraph whose job is to make the
|
|
4802
|
+
tool worth reaching for discredits everything around it — and an agent that
|
|
4803
|
+
budgeted a second gets a surprise instead of a decision.
|
|
4804
|
+
<b>The default is now written down.</b> <code>smart=True</code> is passed explicitly at
|
|
4805
|
+
the MCP call site with the measurement in a comment. It was previously inherited from
|
|
4806
|
+
<code>rag.search</code>'s signature, which meant the most expensive behaviour in the
|
|
4807
|
+
tool was an accident nobody had chosen and nobody could find. Same asymmetry as before,
|
|
4808
|
+
but now it is a decision someone can revisit.
|
|
4809
|
+
<b>What is still unmeasured:</b> the lift is over <em>raw BM25</em>, the pipeline that
|
|
4810
|
+
stopped shipping when RRF fusion landed. Whether it survives over the fused ranking
|
|
4811
|
+
needs the arm that
|
|
4812
|
+
<a href="#keyless-semantic-search-for-everyone">step 6</a> is already committed to.</p>
|
|
4813
|
+
<div class="meta">
|
|
4814
|
+
<span class="m">Complexity <b>S</b></span>
|
|
4815
|
+
<span class="m">Impact <b>Medium</b></span>
|
|
4816
|
+
<span class="m">Wow <b class="wow">★★</b></span>
|
|
4817
|
+
<span class="m">the instructions claimed a second; it is twelve</span>
|
|
4818
|
+
</div>
|
|
4819
|
+
</article>
|
|
4758
4820
|
<!-- /ROADMAP:cards -->
|
|
4759
4821
|
|
|
4760
4822
|
</div>
|
|
@@ -96,7 +96,19 @@ def with_backend(monkeypatch):
|
|
|
96
96
|
instead of exercising the check they are named for, which is how they
|
|
97
97
|
passed locally and reddened three macOS legs plus the canary.
|
|
98
98
|
"""
|
|
99
|
-
|
|
99
|
+
class _FakeVec:
|
|
100
|
+
"""Enough of sqlite_vec for the paths under test.
|
|
101
|
+
|
|
102
|
+
`serialize_float32` is real: tests that WRITE vectors reach it, and a
|
|
103
|
+
bare object() stub only survived while every test stopped at validation.
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
@staticmethod
|
|
107
|
+
def serialize_float32(vec):
|
|
108
|
+
import struct
|
|
109
|
+
return struct.pack("%df" % len(vec), *vec)
|
|
110
|
+
|
|
111
|
+
monkeypatch.setattr(dense, "_load", lambda: _FakeVec)
|
|
100
112
|
monkeypatch.setattr(dense, "_connect",
|
|
101
113
|
lambda: sqlite3.connect(str(dense.db_path())))
|
|
102
114
|
|
|
@@ -240,3 +252,66 @@ class TestWorksWithoutTheExtension:
|
|
|
240
252
|
"commit": "c1", "chunks": []}
|
|
241
253
|
ok, reason = dense.import_shard(shard, commit="c1")
|
|
242
254
|
assert ok is False and "backend" in reason
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
class TestDeltaTopUp:
|
|
258
|
+
"""An imported shard must make `build` skip that tap and embed only the rest.
|
|
259
|
+
|
|
260
|
+
This is step 3 of the keyless epic — "when a tap runs ahead of its published
|
|
261
|
+
shard, or is a registry CI has never seen, embed just those files on the
|
|
262
|
+
spot". It works because `import_shard` records the tap's commit in the same
|
|
263
|
+
`meta.commits` map that `build` consults, so a shard is indistinguishable
|
|
264
|
+
from locally-built vectors as far as reuse is concerned.
|
|
265
|
+
|
|
266
|
+
That coupling is easy to break silently: an import that forgot to record the
|
|
267
|
+
commit would still produce a working store, and the only symptom would be
|
|
268
|
+
re-embedding the shard's chunks on the next build — minutes of wasted CPU
|
|
269
|
+
that nothing reports. Hence a test.
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
def _tap_seen(self, monkeypatch, commits):
|
|
273
|
+
from boost_cli.core import rag
|
|
274
|
+
monkeypatch.setattr(rag, "_tap_commits", lambda: commits)
|
|
275
|
+
monkeypatch.setattr(rag, "_tap_paths", lambda: {})
|
|
276
|
+
|
|
277
|
+
def test_an_imported_shard_is_reused_not_re_embedded(self, sandbox,
|
|
278
|
+
with_backend,
|
|
279
|
+
monkeypatch):
|
|
280
|
+
from boost_cli.core import embed
|
|
281
|
+
_store(rows=(("a", "acme/skills"),))
|
|
282
|
+
embedded = []
|
|
283
|
+
monkeypatch.setattr(embed, "embed",
|
|
284
|
+
lambda texts, **kw: embedded.extend(texts) or
|
|
285
|
+
[[0.1, 0.2, 0.3] for _ in texts])
|
|
286
|
+
monkeypatch.setattr(embed, "available", lambda: True)
|
|
287
|
+
monkeypatch.setattr(embed, "dimension", lambda: 3)
|
|
288
|
+
monkeypatch.setattr(embed, "provider", lambda: "local")
|
|
289
|
+
monkeypatch.setattr(embed, "model", lambda: "bge")
|
|
290
|
+
self._tap_seen(monkeypatch, {"acme__skills": "c1"})
|
|
291
|
+
entries = [{"name": "a", "tap": "acme/skills", "kind": "skill",
|
|
292
|
+
"skill_md": "a/SKILL.md", "_body": "text", "description": ""}]
|
|
293
|
+
stats = dense.build(entries=entries, force=False)
|
|
294
|
+
assert stats is not None
|
|
295
|
+
assert "acme__skills" in stats["reused"]
|
|
296
|
+
assert embedded == [], "re-embedded a tap the shard already covered"
|
|
297
|
+
|
|
298
|
+
def test_a_tap_the_shard_does_not_cover_is_still_embedded(self, sandbox,
|
|
299
|
+
with_backend,
|
|
300
|
+
monkeypatch):
|
|
301
|
+
# The other half: shards cover the popular registries, the local model
|
|
302
|
+
# makes the long tail self-serve. If this regressed, an uncatalogued
|
|
303
|
+
# registry would be a dead end for a keyless user.
|
|
304
|
+
from boost_cli.core import embed
|
|
305
|
+
_store(rows=(("a", "acme/skills"),))
|
|
306
|
+
monkeypatch.setattr(embed, "embed",
|
|
307
|
+
lambda texts, **kw: [[0.1, 0.2, 0.3] for _ in texts])
|
|
308
|
+
monkeypatch.setattr(embed, "available", lambda: True)
|
|
309
|
+
monkeypatch.setattr(embed, "dimension", lambda: 3)
|
|
310
|
+
monkeypatch.setattr(embed, "provider", lambda: "local")
|
|
311
|
+
monkeypatch.setattr(embed, "model", lambda: "bge")
|
|
312
|
+
self._tap_seen(monkeypatch, {"acme__skills": "c1", "new__repo": "z9"})
|
|
313
|
+
entries = [{"name": "b", "tap": "new/repo", "kind": "skill",
|
|
314
|
+
"skill_md": "b/SKILL.md", "_body": "text", "description": ""}]
|
|
315
|
+
stats = dense.build(entries=entries, force=False)
|
|
316
|
+
assert stats is not None
|
|
317
|
+
assert "new/repo" in stats["reindexed"]
|
|
@@ -149,6 +149,28 @@ class TestHandleRequest:
|
|
|
149
149
|
assert "before you write a new skill" not in low
|
|
150
150
|
assert "authoring" not in low
|
|
151
151
|
|
|
152
|
+
def test_instructions_do_not_understate_what_a_search_costs(self):
|
|
153
|
+
# The first version of this block said both tools "take about a second".
|
|
154
|
+
# boost_list does; boost_search does NOT -- it reranks with an LLM by
|
|
155
|
+
# default, measured at ~12s median against 0.10s without. Shipping a
|
|
156
|
+
# false cost in the text whose whole job is making the tool worth
|
|
157
|
+
# reaching for is the one lie that discredits the rest of it, and an
|
|
158
|
+
# agent that budgeted a second gets a surprise instead of a decision.
|
|
159
|
+
low = mcp.INSTRUCTIONS.lower()
|
|
160
|
+
assert "about a second" not in low
|
|
161
|
+
# State it, and state why it is worth paying rather than just warning.
|
|
162
|
+
assert "seconds" in low
|
|
163
|
+
assert "ranks them with an llm" in low or "reranks" in low
|
|
164
|
+
assert "read-only" in low # the part that WAS true stays
|
|
165
|
+
|
|
166
|
+
def test_instructions_still_separate_the_free_tool_from_the_slow_one(self):
|
|
167
|
+
# boost_list really is instant, and collapsing the two costs into one
|
|
168
|
+
# number is what produced the wrong claim. Naming them separately is
|
|
169
|
+
# what lets an agent reach for the cheap one freely.
|
|
170
|
+
low = mcp.INSTRUCTIONS.lower()
|
|
171
|
+
assert "boost_list" in low and "boost_search" in low
|
|
172
|
+
assert "instant" in low
|
|
173
|
+
|
|
152
174
|
def test_instructions_route_search_straight_to_install(self):
|
|
153
175
|
# boost_info sat between search and install in the advertised flow, but
|
|
154
176
|
# search already returns each hit's description — the only field that
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.339 → boost_skill_cli-1.0.341}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|