boost-skill-cli 1.2.50__tar.gz → 1.2.52__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.2.50 → boost_skill_cli-1.2.52}/.vale/styles/config/vocabularies/boost/accept.txt +5 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/CLAUDE.md +36 -2
- {boost_skill_cli-1.2.50/boost_skill_cli.egg-info → boost_skill_cli-1.2.52}/PKG-INFO +7 -3
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/README.md +6 -2
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/configuration.py +5 -2
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/discovery.py +41 -4
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/agents.py +50 -1
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/config.py +23 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/dense.py +43 -8
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/mcphost.py +50 -2
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/store.py +7 -3
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/util.py +17 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52/boost_skill_cli.egg-info}/PKG-INFO +7 -3
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/commands.html +1 -1
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/index.html +3 -3
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/mcp.feature +6 -5
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_configuration.py +19 -4
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_info.py +2 -1
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_pkg.py +29 -6
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_quality.py +9 -6
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_team.py +1 -1
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_everyday_loop.py +1 -1
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_agents.py +40 -1
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_config.py +9 -2
- boost_skill_cli-1.2.52/tests/unit/test_dense_progress.py +211 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcphost.py +58 -4
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_store.py +52 -17
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.gitattributes +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.gitignore +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale.ini +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/DCO +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/LICENSE +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/Makefile +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/codecov.yml +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/roadmap.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/README.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/examples/README.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/index.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/noxfile.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/setup.cfg +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/README.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/boost.css +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/boost.js +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/style/demo.html +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/tests/visual/visual_check.mjs +0 -0
{boost_skill_cli-1.2.50 → boost_skill_cli-1.2.52}/.vale/styles/config/vocabularies/boost/accept.txt
RENAMED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
ABM
|
|
2
2
|
agentic
|
|
3
|
+
agy
|
|
3
4
|
Algolia
|
|
4
5
|
allowlist
|
|
5
6
|
allowlisted
|
|
6
7
|
argparse
|
|
8
|
+
args
|
|
9
|
+
argv
|
|
7
10
|
Arize
|
|
8
11
|
ASan
|
|
9
12
|
Attio
|
|
@@ -172,6 +175,8 @@ unremediated
|
|
|
172
175
|
unstaged
|
|
173
176
|
untap
|
|
174
177
|
untrusted
|
|
178
|
+
upsert
|
|
179
|
+
upserts
|
|
175
180
|
uv
|
|
176
181
|
Vaadin
|
|
177
182
|
Valgrind
|
|
@@ -363,7 +363,7 @@ work in tests and the dev loop:
|
|
|
363
363
|
~/.gemini/ rules (GEMINI.md) + workflows only — see below
|
|
364
364
|
```
|
|
365
365
|
|
|
366
|
-
**
|
|
366
|
+
**Five agent targets, and only Gemini CLI skips symlinks.** Gemini CLI implements the
|
|
367
367
|
Agent Skills standard and discovers `~/.agents/skills` — the canonical store —
|
|
368
368
|
*directly*, so it is configured with `links_skills: false`. Linking into
|
|
369
369
|
`~/.gemini/skills` too would put one skill in two of its discovery tiers, where
|
|
@@ -394,6 +394,19 @@ for code you write:
|
|
|
394
394
|
one hop lands in another agent's dir. It resolves **both sides**: on macOS a
|
|
395
395
|
`$HOME` under `/var/folders` resolves to `/private/var/...`, so resolving
|
|
396
396
|
only the target compares a real path against a nominal one and never matches.
|
|
397
|
+
- **Antigravity CLI (`agy`) is Gemini's successor and is NOT a native-store
|
|
398
|
+
agent.** It shares the `~/.gemini` tree but reads neither `~/.agents/skills`
|
|
399
|
+
nor — for CLI scope — the shared `~/.gemini/skills`, so it takes real
|
|
400
|
+
symlinks, into `~/.gemini/antigravity-cli/skills`. Linking into the *shared*
|
|
401
|
+
dir instead would be the mistake: Gemini CLI reads that path too and already
|
|
402
|
+
sees the same skills through the `~/.agents/skills` alias, so every skill
|
|
403
|
+
would cost a "Skill conflict detected" line per session — the exact failure
|
|
404
|
+
`links_skills: false` exists to prevent. Its rules arrive through the
|
|
405
|
+
`gemini` agent, which already writes the `~/.gemini/GEMINI.md` Antigravity
|
|
406
|
+
reads; its workflow and MCP surfaces are **not** wired up, because their
|
|
407
|
+
formats have not been verified against the real CLI, and this file does not
|
|
408
|
+
record guesses (see `hookhost.py` for the standard: name the sources).
|
|
409
|
+
|
|
397
410
|
- Per-agent *formats* differ and are pure functions in `core/`: `rules.CONTEXT_FILES`
|
|
398
411
|
maps an agent with no rules dir to its context file (`claude-code` → CLAUDE.md /
|
|
399
412
|
CLAUDE.local.md, `gemini` → GEMINI.md for both scopes), and
|
|
@@ -401,7 +414,16 @@ for code you write:
|
|
|
401
414
|
Gemini's `commands/` slot is `.toml` (`workflows.render_gemini_command`); its
|
|
402
415
|
`agents/` slot stays verbatim Markdown. Getting that backwards produces a file
|
|
403
416
|
the agent silently never loads.
|
|
404
|
-
- `core/mcphost.py` holds the per-host `mcp add`/`remove` grammar.
|
|
417
|
+
- `core/mcphost.py` holds the per-host `mcp add`/`remove` grammar.
|
|
418
|
+
**Antigravity CLI (`agy`) is the third host**, and its two argv rules both bite: flags must
|
|
419
|
+
come *before* `<name>` (a flag after it is rejected) and `--` must precede a
|
|
420
|
+
command whose args start with `-`, or `--stdio` is eaten as an agy flag. It
|
|
421
|
+
has **no scope** — one global file at `~/.gemini/config/mcp_config.json`,
|
|
422
|
+
inherited from Gemini CLI, so there is no `~/.antigravity` — which is why
|
|
423
|
+
`has_scope()` exists and the success line drops "(scope: user)" for it. Its
|
|
424
|
+
`add` **upserts** where Claude's errors on a duplicate name; that asymmetry
|
|
425
|
+
is what made `--host auto` abort on a machine already registered with
|
|
426
|
+
Claude. Claude and
|
|
405
427
|
Gemini disagree on name position, the `--` separator, and whether unregister
|
|
406
428
|
needs an explicit scope — all three verified against the real CLIs and pinned
|
|
407
429
|
by `tests/unit/test_mcphost.py`. Don't "simplify" them into one shape.
|
|
@@ -534,6 +556,18 @@ Consequences for code you write here:
|
|
|
534
556
|
the measured trade is **3.40 GB → 3.87 GB (+14%), in 1360 s**, peaking at
|
|
535
557
|
~2× while both copies coexist. Don't describe it as size-neutral — an earlier
|
|
536
558
|
draft of this section did, from prediction rather than measurement.
|
|
559
|
+
- **Embedding reports progress and commits as it goes.** `dense.build` takes
|
|
560
|
+
`on_progress(done, total)` and `_embed_and_store` commits every
|
|
561
|
+
`_COMMIT_EVERY` rows. Both are bug fixes, not polish: a full catalogue is
|
|
562
|
+
tens of thousands of distinct chunks under one fixed spinner label, which a
|
|
563
|
+
user reported as a hang after hours; and every row used to land in a single
|
|
564
|
+
transaction that committed after the last one, so an interrupt threw away the
|
|
565
|
+
whole build. Periodic commits are safe because `build` deletes each changed
|
|
566
|
+
tap's rows *before* re-inserting, so a partial store is replaced rather than
|
|
567
|
+
doubled. The total counts **distinct** texts, not rows — 42.9% of chunks on a
|
|
568
|
+
real install are repeats and are embedded once — so a progress total taken
|
|
569
|
+
from row count would over-report the work.
|
|
570
|
+
|
|
537
571
|
- **Nothing on the search path may count `chunks`.** `SELECT COUNT(*)` scans the
|
|
538
572
|
`chunks_tap` covering index — 8,419 pages / 34.5 MB, measured 1.94 s — and
|
|
539
573
|
both `ready()` and `status()` did it on every search, the latter only to word
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.52
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -54,7 +54,11 @@ Dynamic: license-file
|
|
|
54
54
|
|
|
55
55
|
**Homebrew for AI coding skills.** boost finds, installs, and version-tracks skills
|
|
56
56
|
from GitHub-hosted registries, and wires each one into Claude Code, Windsurf,
|
|
57
|
-
Cursor and
|
|
57
|
+
Cursor, Gemini CLI and Antigravity CLI in a single pass.
|
|
58
|
+
|
|
59
|
+
Antigravity CLI (`agy`) is wired up the same way: skills link into
|
|
60
|
+
`~/.gemini/antigravity-cli/skills`, and `boost mcp register` reaches it through
|
|
61
|
+
`agy mcp add` alongside Claude Code.
|
|
58
62
|
|
|
59
63
|
```bash
|
|
60
64
|
pipx install boost-skill-cli
|
|
@@ -66,7 +70,7 @@ boost install tdd-workflow # → every agent, version-pinned, one lock file
|
|
|
66
70
|
(No `pipx` yet? macOS ships neither it nor a new enough Python — run the
|
|
67
71
|
[prerequisites check](#prerequisites) first.)
|
|
68
72
|
|
|
69
|
-
No more copying `SKILL.md` into
|
|
73
|
+
No more copying `SKILL.md` into five agent folders and forgetting which one is
|
|
70
74
|
stale. The default install is pure stdlib, with no build step and no
|
|
71
75
|
dependencies.
|
|
72
76
|
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
**Homebrew for AI coding skills.** boost finds, installs, and version-tracks skills
|
|
14
14
|
from GitHub-hosted registries, and wires each one into Claude Code, Windsurf,
|
|
15
|
-
Cursor and
|
|
15
|
+
Cursor, Gemini CLI and Antigravity CLI in a single pass.
|
|
16
|
+
|
|
17
|
+
Antigravity CLI (`agy`) is wired up the same way: skills link into
|
|
18
|
+
`~/.gemini/antigravity-cli/skills`, and `boost mcp register` reaches it through
|
|
19
|
+
`agy mcp add` alongside Claude Code.
|
|
16
20
|
|
|
17
21
|
```bash
|
|
18
22
|
pipx install boost-skill-cli
|
|
@@ -24,7 +28,7 @@ boost install tdd-workflow # → every agent, version-pinned, one lock file
|
|
|
24
28
|
(No `pipx` yet? macOS ships neither it nor a new enough Python — run the
|
|
25
29
|
[prerequisites check](#prerequisites) first.)
|
|
26
30
|
|
|
27
|
-
No more copying `SKILL.md` into
|
|
31
|
+
No more copying `SKILL.md` into five agent folders and forgetting which one is
|
|
28
32
|
stale. The default install is pure stdlib, with no build step and no
|
|
29
33
|
dependencies.
|
|
30
34
|
|
|
@@ -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.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.52'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 52)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1664,8 +1664,11 @@ def cmd_mcp(argv) -> int:
|
|
|
1664
1664
|
|
|
1665
1665
|
verb = "register" if args.action == "register" else "unregister"
|
|
1666
1666
|
for host in done:
|
|
1667
|
-
|
|
1668
|
-
|
|
1667
|
+
# agy has no scopes — one global file — so claiming "(scope: user)"
|
|
1668
|
+
# would describe a distinction its CLI does not have.
|
|
1669
|
+
scope_note = " (scope: user)" if mcphost.has_scope(host) else ""
|
|
1670
|
+
out.ok("%sed boost as an MCP server for %s%s"
|
|
1671
|
+
% (verb, mcphost.label(host), scope_note))
|
|
1669
1672
|
for host in already:
|
|
1670
1673
|
out.ok("already registered with %s — nothing to do"
|
|
1671
1674
|
% mcphost.label(host))
|
|
@@ -388,8 +388,8 @@ def cmd_reindex(argv):
|
|
|
388
388
|
# holds — count, stats, trending, plain search. See the import-budget
|
|
389
389
|
# gate (scripts/import_budget.py).
|
|
390
390
|
from ..core import embed
|
|
391
|
-
with spin.Spinner("embedding chunks into the dense store"):
|
|
392
|
-
dense_stats = _reindex_dense(args.force)
|
|
391
|
+
with spin.Spinner("embedding chunks into the dense store") as sp:
|
|
392
|
+
dense_stats = _reindex_dense(args.force, spinner=sp)
|
|
393
393
|
if args.as_json:
|
|
394
394
|
print(json.dumps({"bm25": stats, "dense": dense_stats}
|
|
395
395
|
if args.dense else stats))
|
|
@@ -434,7 +434,44 @@ def cmd_reindex(argv):
|
|
|
434
434
|
return 0
|
|
435
435
|
|
|
436
436
|
|
|
437
|
-
def
|
|
437
|
+
def _embed_progress(spinner):
|
|
438
|
+
"""A callback that rewrites the spinner's label with real numbers.
|
|
439
|
+
|
|
440
|
+
Embedding is the longest thing boost does — tens of thousands of distinct
|
|
441
|
+
chunks at roughly a second each for a full catalogue — and it ran under a
|
|
442
|
+
fixed label for hours. "embedding chunks into the dense store" is
|
|
443
|
+
indistinguishable from a hang, which is exactly how it was reported.
|
|
444
|
+
|
|
445
|
+
The rate comes from this run rather than a constant, because the two
|
|
446
|
+
backends differ by an order of magnitude and a local model's throughput
|
|
447
|
+
depends on the machine. Until a batch has finished there is nothing to
|
|
448
|
+
estimate from, so it says the total and nothing else rather than guessing.
|
|
449
|
+
"""
|
|
450
|
+
started = time.monotonic()
|
|
451
|
+
|
|
452
|
+
def report(done: int, total: int) -> None:
|
|
453
|
+
if spinner is None or not total:
|
|
454
|
+
return
|
|
455
|
+
pct = 100.0 * done / total
|
|
456
|
+
# The bar first, because it is the part that answers the question the
|
|
457
|
+
# user actually has — "is this moving?" — at a glance, before any of
|
|
458
|
+
# the digits are read. `spin.bar` is the same determinate bar the rest
|
|
459
|
+
# of the CLI draws, so this looks like boost rather than like a
|
|
460
|
+
# second progress convention.
|
|
461
|
+
label = "embedding %s %d%% · %s/%s chunks" % (
|
|
462
|
+
spin.bar(done, total, width=16), int(pct),
|
|
463
|
+
format(done, ","), format(total, ","))
|
|
464
|
+
elapsed = time.monotonic() - started
|
|
465
|
+
if done and elapsed > 1:
|
|
466
|
+
remaining = (total - done) * (elapsed / done)
|
|
467
|
+
if remaining >= 1:
|
|
468
|
+
label += " · ~%s left" % util.human_duration(remaining)
|
|
469
|
+
spinner.label = label
|
|
470
|
+
|
|
471
|
+
return report
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
def _reindex_dense(force, spinner=None):
|
|
438
475
|
"""Build the dense vector store; returns stats or None when unavailable."""
|
|
439
476
|
# Local import: the dense/embedding engines are opt-in (`search --dense`),
|
|
440
477
|
# so they stay out of startup for every other command in this module.
|
|
@@ -447,7 +484,7 @@ def _reindex_dense(force):
|
|
|
447
484
|
# only what changed. Doing it after would quantize, then write float32 rows
|
|
448
485
|
# into a store that no longer has a float32 table.
|
|
449
486
|
migrated = dense.quantize()
|
|
450
|
-
stats = dense.build(force=force)
|
|
487
|
+
stats = dense.build(force=force, on_progress=_embed_progress(spinner))
|
|
451
488
|
if migrated and isinstance(stats, dict):
|
|
452
489
|
stats = stats | {"quantized": migrated["chunks"]}
|
|
453
490
|
return stats
|
|
@@ -8,7 +8,8 @@ from pathlib import Path
|
|
|
8
8
|
from . import config, paths
|
|
9
9
|
|
|
10
10
|
DISPLAY = {"claude-code": "Claude Code", "windsurf": "Windsurf",
|
|
11
|
-
"cursor": "Cursor", "gemini": "Gemini CLI"
|
|
11
|
+
"cursor": "Cursor", "gemini": "Gemini CLI",
|
|
12
|
+
"antigravity": "Antigravity CLI"}
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
def known_agents() -> dict[str, dict]:
|
|
@@ -22,6 +23,15 @@ def known_agents() -> dict[str, dict]:
|
|
|
22
23
|
# implements the Agent Skills standard's `~/.agents/skills` path,
|
|
23
24
|
# which most do not, so the symlink is the safe assumption.
|
|
24
25
|
"links_skills": bool(spec.get("links_skills", True)),
|
|
26
|
+
# Defaults True: nearly every agent reads a repo-local copy of its
|
|
27
|
+
# own dotdir, so a project install lands in `<repo>/.claude/skills`
|
|
28
|
+
# and its siblings. False marks an agent whose project layout boost
|
|
29
|
+
# does not know — see :func:`project_agents`.
|
|
30
|
+
"project_scope": bool(spec.get("project_scope", True)),
|
|
31
|
+
# Defaults False: most agents take all three kinds. True marks an
|
|
32
|
+
# agent where only the skills surface is known — see
|
|
33
|
+
# :func:`materializing_agents`.
|
|
34
|
+
"skills_only": bool(spec.get("skills_only", False)),
|
|
25
35
|
}
|
|
26
36
|
return out
|
|
27
37
|
|
|
@@ -52,6 +62,45 @@ def linking_agents() -> dict[str, Path]:
|
|
|
52
62
|
if s["enabled"] and s["links_skills"]}
|
|
53
63
|
|
|
54
64
|
|
|
65
|
+
def project_agents() -> dict[str, Path]:
|
|
66
|
+
"""Enabled agents whose *project* layout boost actually knows.
|
|
67
|
+
|
|
68
|
+
Project scope is derived from the agent's own dotdir
|
|
69
|
+
(``scopes.agent_root``: ``<repo>/.claude/skills/…``), which holds for every
|
|
70
|
+
agent whose skills dir is one level under a dotdir. Antigravity CLI's is
|
|
71
|
+
two — ``~/.gemini/antigravity-cli/skills`` — so the derivation would create
|
|
72
|
+
a dotless ``<repo>/antigravity-cli/`` that nothing reads, and boost would
|
|
73
|
+
report a coverage it does not have. Its documented project location is
|
|
74
|
+
inside ``~/.gemini/config/projects/``, which is not a repo-local directory
|
|
75
|
+
at all; until that is verified against the CLI, the honest answer is to
|
|
76
|
+
leave it out of project scope rather than invent a path for it.
|
|
77
|
+
"""
|
|
78
|
+
return {n: s["dir"] for n, s in known_agents().items()
|
|
79
|
+
if s["enabled"] and s["project_scope"]}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def agents_for_scope(base) -> dict[str, Path]:
|
|
83
|
+
"""Enabled agents for user scope (``base is None``) or project scope."""
|
|
84
|
+
return enabled_agents() if base is None else project_agents()
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def materializing_agents(base=None) -> dict[str, Path]:
|
|
88
|
+
"""Agents a *rule* or *workflow* may be written into.
|
|
89
|
+
|
|
90
|
+
A skill is a directory boost symlinks; a rule and a workflow are files
|
|
91
|
+
boost writes in a format the agent has to already read — a context file at
|
|
92
|
+
a known path, or a slash command in a known dir and syntax. So this set is
|
|
93
|
+
narrower than :func:`agents_for_scope`: an agent whose rule and workflow
|
|
94
|
+
formats have not been verified is skills-only, and writing a plausible file
|
|
95
|
+
into its config tree would claim a coverage that does not exist.
|
|
96
|
+
|
|
97
|
+
Antigravity CLI is the current case. Its rules arrive anyway, through the
|
|
98
|
+
``gemini`` agent, which already writes the ``~/.gemini/GEMINI.md`` it reads.
|
|
99
|
+
"""
|
|
100
|
+
return {n: d for n, d in agents_for_scope(base).items()
|
|
101
|
+
if not known_agents()[n]["skills_only"]}
|
|
102
|
+
|
|
103
|
+
|
|
55
104
|
def native_store_agents() -> dict[str, Path]:
|
|
56
105
|
"""Enabled agents that read the canonical store without a symlink.
|
|
57
106
|
|
|
@@ -28,6 +28,29 @@ DEFAULTS = {
|
|
|
28
28
|
# symlink if that alias is ever narrowed.
|
|
29
29
|
"gemini": {"dir": "~/.gemini/skills", "enabled": True,
|
|
30
30
|
"links_skills": False},
|
|
31
|
+
# Antigravity CLI (`agy`) is Gemini CLI's successor and shares its
|
|
32
|
+
# `~/.gemini` tree, but it does **not** implement the Agent Skills
|
|
33
|
+
# standard: it reads neither `~/.agents/skills` nor, for CLI scope,
|
|
34
|
+
# anything outside `~/.gemini/antigravity-cli/`. So unlike gemini it
|
|
35
|
+
# needs real symlinks — `links_skills` defaults true and stays true.
|
|
36
|
+
#
|
|
37
|
+
# Why the CLI-scoped dir and not the shared `~/.gemini/skills`: that
|
|
38
|
+
# shared dir is one of *Gemini CLI's* user-tier discovery paths, and
|
|
39
|
+
# Gemini already reads the same skills through the `~/.agents/skills`
|
|
40
|
+
# alias. Linking there would put one skill in two of Gemini's tiers and
|
|
41
|
+
# cost a "Skill conflict detected" line per skill per session — the
|
|
42
|
+
# exact failure `links_skills: false` exists to avoid. Linking into
|
|
43
|
+
# `antigravity-cli/skills` is invisible to Gemini and is the tier the
|
|
44
|
+
# CLI itself reads.
|
|
45
|
+
# `project_scope: false` — its skills dir is two levels under the
|
|
46
|
+
# dotdir, so the repo-local derivation would make a dotless
|
|
47
|
+
# `<repo>/antigravity-cli/` nothing reads. See agents.project_agents.
|
|
48
|
+
# `skills_only`: its rule and workflow formats are unverified, and a
|
|
49
|
+
# rule reaches it anyway through the `gemini` entry above, which writes
|
|
50
|
+
# the ~/.gemini/GEMINI.md Antigravity reads.
|
|
51
|
+
"antigravity": {"dir": "~/.gemini/antigravity-cli/skills",
|
|
52
|
+
"enabled": True, "project_scope": False,
|
|
53
|
+
"skills_only": True},
|
|
31
54
|
},
|
|
32
55
|
"taps": [], # [{"name": "owner/repo", "url": "...", "curated": bool}]
|
|
33
56
|
"ai": {
|
|
@@ -25,6 +25,11 @@ from .rag import Hit, chunk, entry_key, read_body
|
|
|
25
25
|
|
|
26
26
|
INDEX_VERSION = 2
|
|
27
27
|
_BATCH = 128 # texts per embedding request
|
|
28
|
+
|
|
29
|
+
#: Rows between commits while storing vectors. Small enough that an interrupted
|
|
30
|
+
#: build keeps almost everything it embedded, large enough that the commits are
|
|
31
|
+
#: not the cost — on a 750k-chunk store this is ~150 commits.
|
|
32
|
+
_COMMIT_EVERY = 5000
|
|
28
33
|
_POOL = 8 # chunk over-fetch factor for KNN before per-entry reduce
|
|
29
34
|
|
|
30
35
|
|
|
@@ -462,12 +467,20 @@ def ready() -> bool:
|
|
|
462
467
|
con.close()
|
|
463
468
|
|
|
464
469
|
|
|
465
|
-
def build(entries: list[dict] | None = None,
|
|
466
|
-
|
|
470
|
+
def build(entries: list[dict] | None = None, force: bool = False,
|
|
471
|
+
on_progress=None) -> dict | None:
|
|
467
472
|
"""(Re)embed and store chunk vectors, reusing unchanged taps.
|
|
468
473
|
|
|
469
474
|
Returns stats, or ``None`` if the backend or an embeddings provider is
|
|
470
475
|
unavailable (nothing is written in that case).
|
|
476
|
+
|
|
477
|
+
``on_progress(done, total)`` is called before the first batch and after
|
|
478
|
+
each one. It exists because this is the longest-running thing boost does —
|
|
479
|
+
a full catalogue is tens of thousands of distinct chunks at roughly a
|
|
480
|
+
second each — and it used to run under a bare spinner that said "embedding
|
|
481
|
+
chunks into the dense store" for hours without a number. A user cannot
|
|
482
|
+
tell that apart from a hang, and the honest fix is to say how many there
|
|
483
|
+
are and how far in we got.
|
|
471
484
|
"""
|
|
472
485
|
from .rag import _tap_commits, _tap_paths
|
|
473
486
|
if not have_backend() or not embed.available():
|
|
@@ -517,7 +530,8 @@ def build(entries: list[dict] | None = None,
|
|
|
517
530
|
removed_taps = sorted(_indexed_taps(con) - {e["tap"] for e in entries})
|
|
518
531
|
_delete_taps(con, changed_taps + removed_taps)
|
|
519
532
|
|
|
520
|
-
added, failed_taps = _embed_and_store(con, fresh, tap_paths
|
|
533
|
+
added, failed_taps = _embed_and_store(con, fresh, tap_paths,
|
|
534
|
+
on_progress=on_progress)
|
|
521
535
|
# Only record a commit for a tap whose chunks actually landed. Recording
|
|
522
536
|
# one for a tap that stored nothing makes every later non-forced run
|
|
523
537
|
# treat it as already built and skip it — one transient rate limit would
|
|
@@ -743,8 +757,8 @@ def _delete_taps(con: sqlite3.Connection, taps: list[str]) -> None:
|
|
|
743
757
|
|
|
744
758
|
|
|
745
759
|
def _embed_and_store(con: sqlite3.Connection, entries: list[dict],
|
|
746
|
-
tap_paths: dict[str, Path] | None
|
|
747
|
-
) -> tuple[int, set]:
|
|
760
|
+
tap_paths: dict[str, Path] | None,
|
|
761
|
+
on_progress=None) -> tuple[int, set]:
|
|
748
762
|
"""Embed every chunk of ``entries``; returns ``(added, failed_taps)``.
|
|
749
763
|
|
|
750
764
|
A batch the provider rejects (rate limit, quota, oversized input) yields no
|
|
@@ -778,15 +792,31 @@ def _embed_and_store(con: sqlite3.Connection, entries: list[dict],
|
|
|
778
792
|
order.append(text)
|
|
779
793
|
|
|
780
794
|
vec_of: dict[str, object] = {}
|
|
795
|
+
if on_progress is not None:
|
|
796
|
+
# Reported before the first request, so the size of the job is known
|
|
797
|
+
# up front rather than inferred from how long it has already taken.
|
|
798
|
+
on_progress(0, len(order))
|
|
781
799
|
for start in range(0, len(order), _BATCH):
|
|
782
800
|
batch = order[start:start + _BATCH]
|
|
783
801
|
vecs = embed.embed(batch, input_type="document")
|
|
784
|
-
if
|
|
785
|
-
|
|
786
|
-
|
|
802
|
+
if vecs and len(vecs) == len(batch):
|
|
803
|
+
vec_of.update(zip(batch, vecs, strict=True))
|
|
804
|
+
# else: taps are attributed per row below, not per batch — but the
|
|
805
|
+
# progress count still advances, or a run with a few rejected batches
|
|
806
|
+
# would appear to stall.
|
|
807
|
+
if on_progress is not None:
|
|
808
|
+
on_progress(min(start + _BATCH, len(order)), len(order))
|
|
787
809
|
|
|
788
810
|
added = 0
|
|
789
811
|
failed_taps: set = set()
|
|
812
|
+
# Durability, not speed. Every row used to land in one transaction that
|
|
813
|
+
# committed only after the last one, so interrupting a three-hour build —
|
|
814
|
+
# or losing the machine to a sleep or an OOM — threw away every vector it
|
|
815
|
+
# had paid for. Committing as the rows accumulate keeps the work, and
|
|
816
|
+
# re-running is still correct because `_delete_taps` has already removed
|
|
817
|
+
# each changed tap's old rows, so a partial store is replaced rather than
|
|
818
|
+
# doubled.
|
|
819
|
+
since_commit = 0
|
|
790
820
|
for e, ci, text in rows:
|
|
791
821
|
vec = vec_of.get(text)
|
|
792
822
|
if vec is None:
|
|
@@ -801,6 +831,11 @@ def _embed_and_store(con: sqlite3.Connection, entries: list[dict],
|
|
|
801
831
|
e.get("kind", "skill"), ci, text[:200].strip()))
|
|
802
832
|
_store_vector(con, cur.lastrowid, mod.serialize_float32(vec))
|
|
803
833
|
added += 1
|
|
834
|
+
since_commit += 1
|
|
835
|
+
if since_commit >= _COMMIT_EVERY:
|
|
836
|
+
con.commit()
|
|
837
|
+
since_commit = 0
|
|
838
|
+
con.commit()
|
|
804
839
|
return added, failed_taps
|
|
805
840
|
|
|
806
841
|
|
|
@@ -10,7 +10,22 @@ and I/O-free (like :mod:`boost_cli.core.mcpdecl`) so every branch is unit
|
|
|
10
10
|
testable and reachable by the mutation gate; the command layer does the
|
|
11
11
|
``shutil.which`` probing and the ``subprocess.run``.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Antigravity CLI (``agy``) is the third host, and it is Gemini CLI's successor
|
|
14
|
+
rather than a variant of it: Gemini is being deprecated in its favour. Its
|
|
15
|
+
``add`` **upserts** where Claude's errors on a duplicate name, it has **no
|
|
16
|
+
scope** (one global file at ``~/.gemini/config/mcp_config.json`` — it inherited
|
|
17
|
+
Gemini's directory, so there is no ``~/.antigravity``), its off-switch is
|
|
18
|
+
``enable``/``disable`` rather than removal, and it has no per-server ``get``.
|
|
19
|
+
Its two argv rules come from its own help and both bite: **flags must precede
|
|
20
|
+
the name**, and **``--`` must precede a command whose args start with ``-``**,
|
|
21
|
+
or ``--stdio`` is eaten as an agy flag.
|
|
22
|
+
|
|
23
|
+
That upsert-vs-error asymmetry is also why `boost mcp register --host auto`
|
|
24
|
+
used to abort: Claude rejects the duplicate, and the sweep gave up before
|
|
25
|
+
reaching the next agent. Against agy alone it would never have surfaced.
|
|
26
|
+
|
|
27
|
+
The three ways the Claude and Gemini grammars differ, all of them
|
|
28
|
+
load-bearing:
|
|
14
29
|
|
|
15
30
|
* **Name position.** Both CLIs advertise the same usage string —
|
|
16
31
|
``[options] <name> <commandOrUrl> [args...]`` — so the shape is not the
|
|
@@ -68,12 +83,15 @@ LAUNCH_ENV = {
|
|
|
68
83
|
|
|
69
84
|
CLAUDE = "claude"
|
|
70
85
|
GEMINI = "gemini"
|
|
86
|
+
AGY = "agy"
|
|
71
87
|
|
|
72
88
|
# name -> {"cli": executable, "label": display name}. Order is the order hosts
|
|
73
|
-
# are tried and reported in
|
|
89
|
+
# are tried and reported in; new hosts are appended so the existing order is
|
|
90
|
+
# untouched.
|
|
74
91
|
HOSTS: dict[str, dict] = {
|
|
75
92
|
CLAUDE: {"cli": "claude", "label": "Claude Code"},
|
|
76
93
|
GEMINI: {"cli": "gemini", "label": "Gemini CLI"},
|
|
94
|
+
AGY: {"cli": "agy", "label": "Antigravity CLI"},
|
|
77
95
|
}
|
|
78
96
|
|
|
79
97
|
|
|
@@ -92,6 +110,17 @@ def label(host: str) -> str:
|
|
|
92
110
|
return str(HOSTS[host]["label"])
|
|
93
111
|
|
|
94
112
|
|
|
113
|
+
def has_scope(host: str) -> bool:
|
|
114
|
+
"""True when this host's registrations are scoped at all.
|
|
115
|
+
|
|
116
|
+
Claude and Gemini keep local/user/project settings; agy keeps one global
|
|
117
|
+
file. Reporting "(scope: user)" for agy would describe a distinction its
|
|
118
|
+
CLI does not have — and would send anyone looking for a project-scoped
|
|
119
|
+
entry after something that cannot exist.
|
|
120
|
+
"""
|
|
121
|
+
return host != AGY
|
|
122
|
+
|
|
123
|
+
|
|
95
124
|
def _env_flags(env: dict[str, str] | None) -> list[str]:
|
|
96
125
|
"""``-e KEY=VALUE`` pairs, sorted so the argv is deterministic."""
|
|
97
126
|
if not env:
|
|
@@ -113,6 +142,17 @@ def register_argv(host: str, launcher: str, *, scope: str = "user",
|
|
|
113
142
|
"""
|
|
114
143
|
exe = cli(host)
|
|
115
144
|
flags = _env_flags(LAUNCH_ENV if env is None else env)
|
|
145
|
+
if host == AGY:
|
|
146
|
+
# [flags] <name> <commandOrUrl> [args...], and both of its rules bite
|
|
147
|
+
# here. Flags must come BEFORE the name — a flag after it is rejected —
|
|
148
|
+
# and `--` must precede a command whose own args start with `-`, or
|
|
149
|
+
# `--stdio` is eaten as an agy flag rather than passed to boost. There
|
|
150
|
+
# is no scope: agy keeps one global file
|
|
151
|
+
# (~/.gemini/config/mcp_config.json, inherited from Gemini CLI — there
|
|
152
|
+
# is no ~/.antigravity), so passing `--scope` would be an error rather
|
|
153
|
+
# than a no-op.
|
|
154
|
+
return [exe, "mcp", "add", *flags, name,
|
|
155
|
+
"--", launcher, "mcp", "--stdio"]
|
|
116
156
|
if host == GEMINI:
|
|
117
157
|
# [options] <name> <commandOrUrl> [args...]. No `--`: yargs
|
|
118
158
|
# `unknown-options-as-args` already carries `--stdio` into [args...],
|
|
@@ -135,6 +175,14 @@ def unregister_argv(host: str, *, scope: str = "user",
|
|
|
135
175
|
exe = cli(host)
|
|
136
176
|
if host == GEMINI:
|
|
137
177
|
return [exe, "mcp", "remove", "--scope", scope, name]
|
|
178
|
+
if host == AGY:
|
|
179
|
+
# No scope flag: one global file. NOTE — `add`, `enable` and `disable`
|
|
180
|
+
# are the subcommands verified from agy's own help; `remove` mirrors
|
|
181
|
+
# Claude's and is the only shape that matches this command's meaning.
|
|
182
|
+
# If a release turns out not to have it, the failure is loud and names
|
|
183
|
+
# the argv, and `agy mcp disable boost` is the documented off-switch
|
|
184
|
+
# that keeps the entry.
|
|
185
|
+
return [exe, "mcp", "remove", name]
|
|
138
186
|
return [exe, "mcp", "remove", name]
|
|
139
187
|
|
|
140
188
|
|
|
@@ -604,8 +604,12 @@ def _install_project_skill(entry: dict, force: bool = False,
|
|
|
604
604
|
src = source_dir_for(entry)
|
|
605
605
|
_enforce_capability_policy(name, src / "SKILL.md")
|
|
606
606
|
only_agents = preserved_agent_scope(only_agents, existing)
|
|
607
|
+
# agents_for_scope, not enabled_agents: project scope derives a repo-local
|
|
608
|
+
# dotdir from the agent's own, which holds for every agent whose skills dir
|
|
609
|
+
# sits one level under it. Antigravity's sits two, so it is excluded rather
|
|
610
|
+
# than given an invented `<repo>/antigravity-cli/`.
|
|
607
611
|
targets = [(agent, scopes.skill_target(skills_dir, name, base=resolved_base))
|
|
608
|
-
for agent, skills_dir in agents.
|
|
612
|
+
for agent, skills_dir in agents.agents_for_scope(resolved_base).items()
|
|
609
613
|
if not only_agents or agent in only_agents]
|
|
610
614
|
|
|
611
615
|
# Refuse to write through a symlink that leaves the repo. An agent dir like
|
|
@@ -836,7 +840,7 @@ def _install_rule(entry: dict, force: bool = False,
|
|
|
836
840
|
paths.ensure_dirs()
|
|
837
841
|
materializations: list[dict] = []
|
|
838
842
|
linked: list[str] = []
|
|
839
|
-
for agent, skills_dir in agents.
|
|
843
|
+
for agent, skills_dir in agents.materializing_agents(resolved_base).items():
|
|
840
844
|
if only_agents and agent not in only_agents:
|
|
841
845
|
continue
|
|
842
846
|
mode, path = rules.rule_target(agent, skills_dir, name, base=resolved_base)
|
|
@@ -1070,7 +1074,7 @@ def _install_workflow(entry: dict, force: bool = False,
|
|
|
1070
1074
|
paths.ensure_dirs()
|
|
1071
1075
|
materializations: list[dict] = []
|
|
1072
1076
|
linked: list[str] = []
|
|
1073
|
-
for agent, skills_dir in agents.
|
|
1077
|
+
for agent, skills_dir in agents.materializing_agents(resolved_base).items():
|
|
1074
1078
|
if only_agents and agent not in only_agents:
|
|
1075
1079
|
continue
|
|
1076
1080
|
path = workflows.workflow_target(skills_dir, slot, name,
|
|
@@ -168,6 +168,23 @@ def rel_time(iso: str) -> str:
|
|
|
168
168
|
return then.strftime("%Y-%m-%d")
|
|
169
169
|
|
|
170
170
|
|
|
171
|
+
def human_duration(seconds: float) -> str:
|
|
172
|
+
"""A short, honest duration: ``'45s'``, ``'12m'``, ``'2h 5m'``.
|
|
173
|
+
|
|
174
|
+
Coarse on purpose. This labels an estimate that is extrapolated from a
|
|
175
|
+
partial run, so seconds of precision on a two-hour figure would claim an
|
|
176
|
+
accuracy the number does not have.
|
|
177
|
+
"""
|
|
178
|
+
seconds = max(0, int(seconds))
|
|
179
|
+
if seconds < 60:
|
|
180
|
+
return "%ds" % seconds
|
|
181
|
+
minutes = seconds // 60
|
|
182
|
+
if minutes < 60:
|
|
183
|
+
return "%dm" % minutes
|
|
184
|
+
hours, minutes = divmod(minutes, 60)
|
|
185
|
+
return "%dh %dm" % (hours, minutes) if minutes else "%dh" % hours
|
|
186
|
+
|
|
187
|
+
|
|
171
188
|
def human_size(n: int) -> str:
|
|
172
189
|
"""Format a byte count for humans: ``1536`` -> ``'1.5KB'``.
|
|
173
190
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.52
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -54,7 +54,11 @@ Dynamic: license-file
|
|
|
54
54
|
|
|
55
55
|
**Homebrew for AI coding skills.** boost finds, installs, and version-tracks skills
|
|
56
56
|
from GitHub-hosted registries, and wires each one into Claude Code, Windsurf,
|
|
57
|
-
Cursor and
|
|
57
|
+
Cursor, Gemini CLI and Antigravity CLI in a single pass.
|
|
58
|
+
|
|
59
|
+
Antigravity CLI (`agy`) is wired up the same way: skills link into
|
|
60
|
+
`~/.gemini/antigravity-cli/skills`, and `boost mcp register` reaches it through
|
|
61
|
+
`agy mcp add` alongside Claude Code.
|
|
58
62
|
|
|
59
63
|
```bash
|
|
60
64
|
pipx install boost-skill-cli
|
|
@@ -66,7 +70,7 @@ boost install tdd-workflow # → every agent, version-pinned, one lock file
|
|
|
66
70
|
(No `pipx` yet? macOS ships neither it nor a new enough Python — run the
|
|
67
71
|
[prerequisites check](#prerequisites) first.)
|
|
68
72
|
|
|
69
|
-
No more copying `SKILL.md` into
|
|
73
|
+
No more copying `SKILL.md` into five agent folders and forgetting which one is
|
|
70
74
|
stale. The default install is pure stdlib, with no build step and no
|
|
71
75
|
dependencies.
|
|
72
76
|
|
|
@@ -682,6 +682,7 @@ tests/unit/test_dense.py
|
|
|
682
682
|
tests/unit/test_dense_embed_dedupe.py
|
|
683
683
|
tests/unit/test_dense_fallback.py
|
|
684
684
|
tests/unit/test_dense_fix_hint.py
|
|
685
|
+
tests/unit/test_dense_progress.py
|
|
685
686
|
tests/unit/test_dense_quantized.py
|
|
686
687
|
tests/unit/test_dense_ready_order.py
|
|
687
688
|
tests/unit/test_dense_shard_real_schema.py
|
|
@@ -1117,7 +1117,7 @@
|
|
|
1117
1117
|
</div>
|
|
1118
1118
|
<div class="args-h">Options</div>
|
|
1119
1119
|
<div class="args">
|
|
1120
|
-
<div class="arg"><code>--host H</code><span>agent CLI to (un)register with: claude, gemini, or `auto` (default) for every one that is installed</span></div>
|
|
1120
|
+
<div class="arg"><code>--host H</code><span>agent CLI to (un)register with: claude, gemini, agy, or `auto` (default) for every one that is installed</span></div>
|
|
1121
1121
|
<div class="arg"><code>--stdio</code><span>run the MCP server on stdin/stdout (used by the agent)</span></div>
|
|
1122
1122
|
<div class="arg"><code>--seed</code><span>top up any missing recommended registries even if others are already tapped (the repair path)</span></div>
|
|
1123
1123
|
<div class="arg"><code>--no-seed</code><span>register only; do not tap anything</span></div>
|