boost-skill-cli 1.2.52__tar.gz → 1.2.53__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.52/boost_skill_cli.egg-info → boost_skill_cli-1.2.53}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/taps.py +19 -9
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/commands.html +2 -2
- boost_skill_cli-1.2.53/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +93 -0
- boost_skill_cli-1.2.53/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +93 -0
- boost_skill_cli-1.2.53/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +67 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap.html +243 -1
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_taps.py +33 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_shards_matrix.py +59 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.gitattributes +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.gitignore +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/.vale.ini +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/DCO +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/LICENSE +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/Makefile +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/README.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/codecov.yml +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/index.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/README.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/examples/README.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/index.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/noxfile.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/setup.cfg +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/style/README.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/style/boost.css +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/style/boost.js +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/style/demo.html +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.52 → boost_skill_cli-1.2.53}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.53'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 53)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -51,7 +51,8 @@ def _tap_catalog(args) -> int:
|
|
|
51
51
|
|
|
52
52
|
def _tap_all(urls: list[str], jobs: int | None,
|
|
53
53
|
focus: dict[str, str] | None = None,
|
|
54
|
-
pins: dict[str, str] | None = None
|
|
54
|
+
pins: dict[str, str] | None = None,
|
|
55
|
+
curated: bool = True) -> int:
|
|
55
56
|
"""Clone many registries at once, then scan each one that arrived.
|
|
56
57
|
|
|
57
58
|
The split is the whole optimisation. Cloning is network latency — 1.6 s per
|
|
@@ -60,7 +61,7 @@ def _tap_all(urls: list[str], jobs: int | None,
|
|
|
60
61
|
its output can be printed in order and its errors belong to one tap.
|
|
61
62
|
"""
|
|
62
63
|
focus = focus or {}
|
|
63
|
-
results = registry.add_many(urls, curated=
|
|
64
|
+
results = registry.add_many(urls, curated=curated, pins=pins, jobs=jobs)
|
|
64
65
|
rc = 0
|
|
65
66
|
for res in results:
|
|
66
67
|
name = res["name"]
|
|
@@ -106,8 +107,9 @@ def cmd_tap(argv) -> int:
|
|
|
106
107
|
p = cliparse.parser(
|
|
107
108
|
prog="boost tap",
|
|
108
109
|
description="Add a GitHub repo as a skill registry")
|
|
109
|
-
p.add_argument("spec", nargs="
|
|
110
|
-
help="owner/repo, a git URL, or a local directory"
|
|
110
|
+
p.add_argument("spec", nargs="*",
|
|
111
|
+
help="owner/repo, a git URL, or a local directory — several "
|
|
112
|
+
"at once clone in parallel")
|
|
111
113
|
p.add_argument("--defaults", action="store_true",
|
|
112
114
|
help="tap the recommended public registries")
|
|
113
115
|
p.add_argument("--catalog", action="store_true",
|
|
@@ -131,8 +133,8 @@ def cmd_tap(argv) -> int:
|
|
|
131
133
|
"%d)" % (registry.DEFAULT_TAP_JOBS,
|
|
132
134
|
registry.MAX_TAP_JOBS))
|
|
133
135
|
args = p.parse_args(argv)
|
|
134
|
-
if args.at and
|
|
135
|
-
p.error("--at pins one registry, so it needs
|
|
136
|
+
if args.at and len(args.spec) != 1:
|
|
137
|
+
p.error("--at pins one registry, so it needs exactly one SPEC")
|
|
136
138
|
if not args.spec and not args.defaults and not args.catalog:
|
|
137
139
|
p.error("provide a SPEC, --defaults, or --catalog")
|
|
138
140
|
|
|
@@ -147,13 +149,21 @@ def cmd_tap(argv) -> int:
|
|
|
147
149
|
jobs=args.jobs,
|
|
148
150
|
focus={str(d["name"]): str(d.get("focus", ""))
|
|
149
151
|
for d in config.DEFAULT_TAPS})
|
|
150
|
-
if args.spec:
|
|
151
|
-
with spin.Spinner("cloning %s" % args.spec):
|
|
152
|
-
tap = registry.add(args.spec, curated=args.curated, at=args.at)
|
|
152
|
+
if len(args.spec) == 1:
|
|
153
|
+
with spin.Spinner("cloning %s" % args.spec[0]):
|
|
154
|
+
tap = registry.add(args.spec[0], curated=args.curated, at=args.at)
|
|
153
155
|
entries = catalog.rebuild_tap(tap)
|
|
154
156
|
journal.log("tap", tap.name)
|
|
155
157
|
pin = " @ %s" % args.at[:7] if args.at else ""
|
|
156
158
|
out.ok("Tapped %s (%d items)%s" % (tap.name, len(entries), pin))
|
|
159
|
+
elif args.spec:
|
|
160
|
+
# Several specs clone through the same pool as --defaults/--catalog.
|
|
161
|
+
# This is not only a convenience: `xargs boost_cli tap < list` hands
|
|
162
|
+
# every line to ONE invocation, and rejecting the extras is how the
|
|
163
|
+
# shards workflow tapped nothing — argparse errored, `|| true`
|
|
164
|
+
# swallowed it, and the job died three steps later on "no taps
|
|
165
|
+
# configured". A multi-spec surface makes the natural script correct.
|
|
166
|
+
rc |= _tap_all(list(args.spec), jobs=args.jobs, curated=args.curated)
|
|
157
167
|
# Refresh the TAB-completion name cache so `boost install <TAB>` sees
|
|
158
168
|
# whatever this call just tapped instead of the pre-tap snapshot.
|
|
159
169
|
complete.refresh_names()
|
|
@@ -253,6 +253,8 @@ docs/roadmap/items/crash-reports-leak-api-keys.md
|
|
|
253
253
|
docs/roadmap/items/demo-cannot-open-its-own-pr.md
|
|
254
254
|
docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md
|
|
255
255
|
docs/roadmap/items/demo-workflow-cancels-other-prs.md
|
|
256
|
+
docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md
|
|
257
|
+
docs/roadmap/items/dense-reindex-reuses-whole-taps.md
|
|
256
258
|
docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md
|
|
257
259
|
docs/roadmap/items/dense-search-rescans-every-vector.md
|
|
258
260
|
docs/roadmap/items/dependabot-missing-pip-ecosystem.md
|
|
@@ -336,6 +338,7 @@ docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md
|
|
|
336
338
|
docs/roadmap/items/marketing-crm-domain-had-no-category.md
|
|
337
339
|
docs/roadmap/items/mcp-already-covered-defeater.md
|
|
338
340
|
docs/roadmap/items/mcp-aware-skills.md
|
|
341
|
+
docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md
|
|
339
342
|
docs/roadmap/items/mcp-check-skills-before-starting-a-task.md
|
|
340
343
|
docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md
|
|
341
344
|
docs/roadmap/items/mcp-install-skips-the-injection-scan.md
|
|
@@ -628,10 +628,10 @@
|
|
|
628
628
|
<section class="cmd" id="cmd-tap" data-search="tap add a github repo as a skill registry --defaults --catalog --type {skill,rule,workflow} --category category --limit n --include-lists --dry-run --curated --at sha --jobs n spec">
|
|
629
629
|
<h3><span class="cname">tap</span><span class="gtag">tap</span></h3>
|
|
630
630
|
<p class="summary">Add a GitHub repo as a skill registry</p>
|
|
631
|
-
<pre class="syn">boost tap [--defaults] [--catalog] [--type {skill,rule,workflow}] [--category CATEGORY] [--limit N] [--include-lists] [--dry-run] [--curated] [--at SHA] [--jobs N] [spec]</pre>
|
|
631
|
+
<pre class="syn">boost tap [--defaults] [--catalog] [--type {skill,rule,workflow}] [--category CATEGORY] [--limit N] [--include-lists] [--dry-run] [--curated] [--at SHA] [--jobs N] [spec ...]</pre>
|
|
632
632
|
<div class="args-h">Arguments</div>
|
|
633
633
|
<div class="args">
|
|
634
|
-
<div class="arg"><code>spec</code><span>owner/repo, a git URL, or a local directory</span></div>
|
|
634
|
+
<div class="arg"><code>spec</code><span>owner/repo, a git URL, or a local directory — several at once clone in parallel</span></div>
|
|
635
635
|
</div>
|
|
636
636
|
<div class="args-h">Options</div>
|
|
637
637
|
<div class="args">
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dense-reindex-has-no-progress-or-durability
|
|
3
|
+
board: code
|
|
4
|
+
section: internals
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Observability · UX
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 3
|
|
10
|
+
note: 5 h 33 m of silence, 18.26 GB RSS, nothing on disk
|
|
11
|
+
order: 125
|
|
12
|
+
owner:
|
|
13
|
+
pr: 603
|
|
14
|
+
title: "<code>reindex --dense</code> runs for hours behind a bare spinner, and a cancel discards all of it"
|
|
15
|
+
---
|
|
16
|
+
A keyless <code>boost reindex --dense</code> on a 465-tap / <b>63,003-entry</b> install ran
|
|
17
|
+
<b>5 h 33 m</b> and emitted exactly one thing the whole time:
|
|
18
|
+
<code>⠏ embedding chunks into the dense store</code>. Nothing on the machine could answer
|
|
19
|
+
“how far along is it, and should I cancel?” — three independent reasons, each
|
|
20
|
+
separately fixable.
|
|
21
|
+
|
|
22
|
+
<b>(1) The loop is holding the numbers and never prints them.</b> <code>_embed_and_store</code>'s
|
|
23
|
+
batch loop (<code>dense.py:781</code>) has <code>start</code> and <code>len(order)</code> in scope
|
|
24
|
+
— precisely the pair <code>spin.progress(current, total, label)</code> takes.
|
|
25
|
+
That helper already exists in <code>boost_cli/spin.py</code>, is already TTY-gated so piped, CI and
|
|
26
|
+
test output stay clean, and already has a caller <em>one module over</em> at
|
|
27
|
+
<code>discovery.py:478</code>. So this is a one-line call into shipped, exercised code, not new
|
|
28
|
+
machinery.
|
|
29
|
+
|
|
30
|
+
<b>(2) <code>--debug</code> is a dead end on this path.</b> <code>dense.py</code> never constructs a
|
|
31
|
+
logger, so <code>--debug</code>, <code>BOOST_DEBUG=1</code> and <code>BOOST_LOG_LEVEL=DEBUG</code>
|
|
32
|
+
all produce the same bare spinner. <code>~/.boost/logs/boost.log</code> records <code>invoke:</code>
|
|
33
|
+
and <code>done:</code> and nothing in between — which for a six-hour command is the one
|
|
34
|
+
interval that matters.
|
|
35
|
+
|
|
36
|
+
<b>(3) The store cannot serve as a proxy either, and that is the deeper defect.</b>
|
|
37
|
+
<code>_embed_and_store</code> accumulates every vector into the <code>vec_of</code> dict and inserts
|
|
38
|
+
nothing until the final batch returns (<code>dense.py:802</code>); <code>build()</code> then commits
|
|
39
|
+
<b>once</b>, at <code>dense.py:535</code>. Measured across the entire run:
|
|
40
|
+
<code>rag_vectors.sqlite</code> sat at <b>24,924,160 bytes</b> with its mtime unchanged and no
|
|
41
|
+
<code>-journal</code> beside it. A user watching the file sees a dead process.
|
|
42
|
+
|
|
43
|
+
The only thing that actually worked was reading the live frame:
|
|
44
|
+
<code>sudo py-spy dump --pid <pid> --locals</code> → <code>start: 361216</code>. The
|
|
45
|
+
<code>--locals</code> is load-bearing; a plain <code>dump</code> gives the function but not the
|
|
46
|
+
position. From that one number: <b>361,216 distinct texts in 20,006 s = 18.1/s</b>, on
|
|
47
|
+
<b>1 of 18 cores</b>, at <b>18.26 GB RSS</b> of 48 GB — <code>vec_of</code> grows
|
|
48
|
+
monotonically and is never drained.
|
|
49
|
+
|
|
50
|
+
<b>And <code>start</code> alone is still not an answer, which is the sharpest form of the bug.</b>
|
|
51
|
+
A numerator without its denominator is not progress. <code>len(order)</code> is <em>not</em>
|
|
52
|
+
printable from a py-spy dump, so establishing it meant re-deriving boost's own chunking over all 465
|
|
53
|
+
cached catalogs out-of-process: <b>647,597 chunks spanning 390,978 distinct texts</b> (39.63%
|
|
54
|
+
duplicates) from <b>62,041 entries across 457 fresh taps</b>. Only then does
|
|
55
|
+
<code>start: 361216</code> resolve to <b>92.4% complete, ~27 min remaining</b>. Requiring a user to
|
|
56
|
+
reimplement the chunker to read a percentage is the whole defect in one sentence — and the
|
|
57
|
+
process already had both numbers in the same stack frame the entire time.
|
|
58
|
+
|
|
59
|
+
<b>What the opacity actually costs.</b> Because the only commit is at the end, Ctrl-C rolls the whole
|
|
60
|
+
transaction back; and <code>build()</code> records per-tap commits only <em>after</em>
|
|
61
|
+
<code>_embed_and_store</code> returns, so a cancelled run records nothing and a re-run re-embeds from
|
|
62
|
+
zero. The user is therefore asked to bet five and a half hours of CPU on a guess about whether a
|
|
63
|
+
spinner is stuck. That is the real bug — the missing progress line is how it reaches them.
|
|
64
|
+
|
|
65
|
+
<b>Fix, smallest first.</b>
|
|
66
|
+
<b>(a)</b> <code>spin.progress(start, len(order), "embedding chunks")</code> in the batch loop.
|
|
67
|
+
<b>(b)</b> A <code>logger.debug</code> per batch, so <code>--debug</code> leaves a trail a bug report
|
|
68
|
+
can carry.
|
|
69
|
+
<b>(c)</b> Stream rather than accumulate — embed a batch, insert it, commit every N —
|
|
70
|
+
which bounds peak RSS instead of letting it reach tens of GB, and makes a cancel cost one batch
|
|
71
|
+
rather than the whole run.
|
|
72
|
+
<b>(c) is what makes (a) worth trusting</b>: a progress bar over work that evaporates on Ctrl-C is
|
|
73
|
+
still a bad deal. Note (c) has to keep the current failure semantics — a tap whose batch the
|
|
74
|
+
provider rejected must still not get a recorded commit, or one transient failure leaves that tap
|
|
75
|
+
permanently marked built and empty.
|
|
76
|
+
|
|
77
|
+
<b>(a) and (c) shipped in <code>#603</code>.</b> <code>dense.build</code> now takes
|
|
78
|
+
<code>on_progress(done, total)</code>, called once before the first request so the size of the job is
|
|
79
|
+
known up front and again after every batch — including a rejected one, or a run with a few
|
|
80
|
+
provider errors would appear to stall. <code>discovery.py</code> feeds it into the existing spinner via
|
|
81
|
+
<code>_embed_progress</code>. And <code>_embed_and_store</code> now commits every
|
|
82
|
+
<code>_COMMIT_EVERY = 5000</code> rows instead of once at the end, so an interrupt costs one batch
|
|
83
|
+
rather than the whole run. That is safe precisely because <code>build</code> deletes each changed
|
|
84
|
+
tap's rows <em>before</em> re-inserting, so a partial store is replaced rather than doubled.
|
|
85
|
+
|
|
86
|
+
<b>One detail worth keeping.</b> The progress total counts <b>distinct</b> texts, not rows. On this
|
|
87
|
+
corpus 657,587 chunks reduce to 396,812 distinct (39.66% repeats, embedded once), so a total taken
|
|
88
|
+
from the row count would over-report the work by two thirds and make the bar crawl.
|
|
89
|
+
|
|
90
|
+
<b>Still open: (b).</b> <code>dense.py</code> constructs no logger, so <code>--debug</code>,
|
|
91
|
+
<code>BOOST_DEBUG=1</code> and <code>BOOST_LOG_LEVEL=DEBUG</code> still produce no per-batch trail —
|
|
92
|
+
fine interactively now that the spinner counts, but a piped or CI run still has nothing to attach to a
|
|
93
|
+
bug report, and <code>spin.progress</code> is deliberately silent off a TTY.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dense-reindex-reuses-whole-taps
|
|
3
|
+
board: code
|
|
4
|
+
section: internals
|
|
5
|
+
status: next
|
|
6
|
+
category: Search · Performance
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 3
|
|
10
|
+
note: one changed file re-embeds 29 min for 1.9 s of new text
|
|
11
|
+
order: 126
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: "Dense reuse is per <em>tap</em>, so one changed file re-embeds the whole registry"
|
|
15
|
+
---
|
|
16
|
+
<code>dense.build</code> decides reuse by comparing each tap's recorded commit against its current
|
|
17
|
+
one, and everything below that granularity is re-done from scratch:
|
|
18
|
+
<code>_delete_taps</code> is <code>DELETE FROM chunks WHERE tap = ?</code>, and <code>fresh</code>
|
|
19
|
+
collects <b>every entry of any tap whose commit moved</b>. So a one-character fix upstream costs that
|
|
20
|
+
registry's entire distinct chunk set.
|
|
21
|
+
|
|
22
|
+
<b>The incremental path is excellent when nothing moves and terrible when something does.</b> Measured
|
|
23
|
+
on a real 464-tap / 63,003-entry / 657,587-chunk install (keyless local
|
|
24
|
+
<code>BAAI/bge-small-en-v1.5</code>, 384-d, ~21 texts/s single-core):
|
|
25
|
+
|
|
26
|
+
full cold build <b>5 h 28 m</b>;<br>
|
|
27
|
+
<code>reindex --dense</code> with nothing changed <b>26.6 s</b>;<br>
|
|
28
|
+
worst single tap re-embed <b>29 m 13 s</b> — for <b>≤1.9 s</b> of genuinely new text.
|
|
29
|
+
|
|
30
|
+
That last figure is the defect in one line. The corpus is brutally skewed:
|
|
31
|
+
<code>lingxling/awesome-skills-cn</code> alone is <b>123,471 chunks (18.8%)</b>, the top ten taps carry
|
|
32
|
+
<b>47.2%</b>, and the median tap is <b>349 chunks (~17 s)</b>. So the cost of an update is decided
|
|
33
|
+
almost entirely by <em>which</em> registries happened to push.
|
|
34
|
+
|
|
35
|
+
<b>And they push often.</b> Measured 6.56 h after tapping all 464 at HEAD: <b>19 taps had already
|
|
36
|
+
moved</b> — 4.1% of taps but <b>17.0% of chunks</b>, because drift is weighted toward the big,
|
|
37
|
+
active registries. Re-running at that point costs <b>61–68 min, 20.9% of the full
|
|
38
|
+
build</b>, to absorb a few hours of upstream commits — and ~99% of that is embedding: deleting
|
|
39
|
+
and re-inserting all 112,081 rows on a copy of the real 1.65 GB store measured <b>2.7 s</b>, a full
|
|
40
|
+
464-clone rescan <b>12.7 s</b>.
|
|
41
|
+
|
|
42
|
+
<b>The amplification, counted exactly.</b> Those 19 taps are 64 commits and 967 changed files ahead.
|
|
43
|
+
Exactly <b>39</b> of those files map to an indexed catalog entry, and those entries own <b>659
|
|
44
|
+
chunks</b>. Boost re-embeds <b>112,081</b>. That is <b>170×</b> more work than the change.
|
|
45
|
+
|
|
46
|
+
<b>Worse: 40% of it is bots.</b> <b>10 of the 19 moved taps changed nothing boost indexes at all</b>
|
|
47
|
+
— no SKILL.md, no rule file, no Markdown under commands/agents/workflows. They moved on badge
|
|
48
|
+
JSON, star-history SVGs, CI YAML and e2e TypeScript, and they cost <b>44,866 chunks = 40.0% of the
|
|
49
|
+
incremental bill</b>, about <b>37 of the 68 minutes</b>. <code>davila7/claude-code-templates</code>
|
|
50
|
+
alone re-embeds all <b>18,566</b> of its chunks because four dashboard JSON files changed.
|
|
51
|
+
Entry-level digests take that 40% to <b>zero</b> without a special case, which is most of the argument
|
|
52
|
+
for doing it.
|
|
53
|
+
|
|
54
|
+
<b>And the advantage decays with cadence</b> (distinct-text counts per scenario at the measured
|
|
55
|
+
19.92 texts/s): 6.9 h → 21%, 1 day → 33%, <b>7 days → 52–58%</b>, 30 days
|
|
56
|
+
→ 72% of a full rebuild. A weekly refresh buys under 2×. Part of that is a dedup collapse:
|
|
57
|
+
the whole corpus is 39.66% duplicate text, but <em>within</em> the 19 moved taps only 27.21%, so
|
|
58
|
+
effective throughput falls 33.5 → 27.4 chunks/s.
|
|
59
|
+
|
|
60
|
+
<b>The fix does not need new identity machinery.</b> A catalog entry already carries
|
|
61
|
+
<code>content</code>, a truncated sha256 of name + description + body stamped by
|
|
62
|
+
<code>catalog._content_digest</code> at scan time and pinned byte-identical to what
|
|
63
|
+
<code>rag.read_body</code> assembles by <code>tests/unit/test_content_identity.py</code>. On a commit
|
|
64
|
+
change, diff the tap's entries by that digest and delete + re-embed only the ones that actually moved.
|
|
65
|
+
A registry that reorganised files, bumped a README or touched one skill then costs one entry rather
|
|
66
|
+
than 123,471 chunks. Deletion stays tap-scoped underneath, so the constraint that
|
|
67
|
+
<code>chunks.tap</code> is what scopes removal is unaffected.
|
|
68
|
+
|
|
69
|
+
<b>Content-keyed vectors were measured and declined.</b> The obvious neighbouring idea — hash each
|
|
70
|
+
chunk's text, look it up before embedding, skip on a hit — sounds like it should erase the
|
|
71
|
+
corpus's 39.6% duplicate rate. It does not, because <code>_embed_and_store</code> already dedupes
|
|
72
|
+
<code>order</code> <em>within the fresh set</em>: on a cold build every duplicate is already collapsed,
|
|
73
|
+
so content keying saves <b>0</b>. Only text shared with the <em>unchanged</em> taps is recoverable:
|
|
74
|
+
measured on the real moved set, <b>11,501 of 81,580 distinct texts = 14.1%</b>, worth <b>9.6 min of
|
|
75
|
+
the 68</b> — against ~60–120 lines in <code>dense.py</code>
|
|
76
|
+
plus a schema change, an <code>INDEX_VERSION</code> bump and a wrong-vector failure mode that is silent.
|
|
77
|
+
Recorded so the measurement is not re-litigated; per-entry granularity is where the win is.
|
|
78
|
+
|
|
79
|
+
<b>Related gap: a tap pin cannot be set after tapping.</b> <code>registry.pin</code> /
|
|
80
|
+
<code>unpin</code> exist (<code>registry.py:398</code>/<code>410</code>) and <code>registry.update</code>
|
|
81
|
+
already honours them — <em>“A pinned tap is skipped unless <code>force</code>, which also
|
|
82
|
+
clears the pin”</em> — but the only way to set one is <code>boost tap --at <SHA></code> at
|
|
83
|
+
creation, and <code>add()</code> raises <code>"tap %s is already configured"</code>.
|
|
84
|
+
<code>boost pin</code>/<code>unpin</code> are in the <code>pkg</code> group and pin <em>skills</em>, not
|
|
85
|
+
taps. So freezing the registries responsible for most of the re-embed cost is impossible on an
|
|
86
|
+
existing install without untapping. Exposing the pin that already works is the cheapest lever here and
|
|
87
|
+
worth landing first — measured, pinning just <code>jeremylongshore/claude-code-plugins-plus-skills</code>
|
|
88
|
+
and <code>davila7/claude-code-templates</code> removes <b>75,227 of 112,081 moved chunks = 67.1%</b> of
|
|
89
|
+
today's incremental cost, and <code>davila7</code> changed nothing boost indexes.
|
|
90
|
+
|
|
91
|
+
<b>Shards do not cover this case.</b> Of the 19 moved taps exactly one appears in the published
|
|
92
|
+
manifest, and its shard is pinned at the commit the tap just left, so <code>import_shard</code>
|
|
93
|
+
refuses it. Net importable for this reindex: <b>0 of 112,081 chunks</b>.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: mcp-cannot-read-a-skill-before-installing
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: next
|
|
6
|
+
category: MCP · UX
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 3
|
|
10
|
+
note: boost_info returns the same one line boost_search already gave
|
|
11
|
+
order: 127
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: MCP has no way to read a skill before installing it
|
|
15
|
+
---
|
|
16
|
+
<code>boost_info</code>'s MCP description promises “<em>the whole picture of one skill, rule or
|
|
17
|
+
workflow by name — what it does, its kind, the tap it came from, its version, and whether it is
|
|
18
|
+
already installed</em>”. Called on a real hit it returns five fields:
|
|
19
|
+
|
|
20
|
+
<code>name</code> · <code>version</code> · <code>tap</code> ·
|
|
21
|
+
<code>description</code> · <code>installed</code>
|
|
22
|
+
|
|
23
|
+
— where <code>description</code> is <b>byte-identical to the one-liner
|
|
24
|
+
<code>boost_search</code> already returned</b>. There is no body, no excerpt, no first paragraph. So
|
|
25
|
+
“what it does” is the same sentence the agent already had, and the tool adds only
|
|
26
|
+
<code>installed: no</code>, which the search reply already marks.
|
|
27
|
+
|
|
28
|
+
<b>The consequence is that installing is the only way to read.</b> An agent deciding whether a skill
|
|
29
|
+
is worth adopting has exactly one sentence to go on, written by whoever published it, and its only
|
|
30
|
+
route to the actual procedure is to install it into the user's real
|
|
31
|
+
<code>~/.agents/skills</code> and read it off disk. That inverts the tool's own pitch: the point of
|
|
32
|
+
<code>boost_search</code> costing 10–15 s of LLM rerank is that the top result is
|
|
33
|
+
“worth acting on rather than skimming”, and then nothing lets the agent look before it acts.
|
|
34
|
+
|
|
35
|
+
<b>Why the one-liner is not enough, measured today.</b> A single search for embedding work returned ten
|
|
36
|
+
hits, two of which — <code>ai-cost-optimization</code> and <code>rag-patterns</code>, both from
|
|
37
|
+
<code>j4flmao/agent-skills</code> — carry the description “<em>To optimize **Skill**, we
|
|
38
|
+
enforce the following foundational rules:</em>”. That is an unfilled template. Separately,
|
|
39
|
+
<code>superpowers-lab</code> installs to an 868-byte <code>SKILL.md</code> whose entire Instructions
|
|
40
|
+
section reads “<em>This skill provides guidance and patterns for lab environment for claude
|
|
41
|
+
superpowers.</em>” — the name echoed back in every section. Both indexed, both ranked, both
|
|
42
|
+
returned looking exactly like real results. <b>The body is the only thing that separates a written
|
|
43
|
+
skill from a generated stub, and MCP cannot reach the body.</b> Note the eval gate cannot catch this
|
|
44
|
+
either: <code>golden.jsonl</code> grades by <em>name</em>, and a stub matches its own name perfectly.
|
|
45
|
+
|
|
46
|
+
<b>The fix is already written — it is just not exposed.</b> Two CLI commands already do this, both
|
|
47
|
+
in the <code>info</code> module: <code>boost cat</code> (“Print a skill or rule's contents”,
|
|
48
|
+
<code>cli.py:79</code>) and <code>boost explain</code> (“Explain what a skill does in plain
|
|
49
|
+
English”, <code>cli.py:82</code>). The MCP server exposes six tools and neither is among them. And
|
|
50
|
+
<code>core/mcp.py</code> is built for exactly this: tools self-register on a <code>Registry</code>, so
|
|
51
|
+
adding one is “<em>one <code>register()</code> call — no dispatcher edits, no server
|
|
52
|
+
changes</em>” (<code>mcp.py:7-10</code>).
|
|
53
|
+
|
|
54
|
+
<b>Three things to get right, none of them large.</b>
|
|
55
|
+
<b>(1) Prefer <code>cat</code> as the default.</b> It is offline, deterministic and free;
|
|
56
|
+
<code>explain</code> goes through <code>core/ai.py</code>, costs seconds plus a key, and degrades to
|
|
57
|
+
heuristics without one. The cheap answer must not sit behind the expensive one's latency — that is
|
|
58
|
+
the same mistake <code>boost_list</code> avoids by never reading the catalog.
|
|
59
|
+
<b>(2) Cap the bytes and say so when truncating.</b> A <code>SKILL.md</code> can be large and an MCP
|
|
60
|
+
reply lands directly in an agent's context; returning a whole file unbounded is how one lookup costs a
|
|
61
|
+
session. The <code>snip = text[:200]</code> convention exists for the same reason.
|
|
62
|
+
<b>(3) Keep it read-only.</b> This is the tool that exists so an agent does <em>not</em> have to install
|
|
63
|
+
to look; it must not become a second install path.
|
|
64
|
+
|
|
65
|
+
<b>And fix the description either way.</b> If <code>boost_info</code> keeps returning five fields, it
|
|
66
|
+
should stop claiming the whole picture — an overstated tool description costs an agent a wasted
|
|
67
|
+
call and teaches it to distrust the rest of the surface.
|