boost-skill-cli 1.2.82__tar.gz → 1.2.84__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.82/boost_skill_cli.egg-info → boost_skill_cli-1.2.84}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/pkg.py +6 -2
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/adapters.py +13 -9
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/rag.py +65 -17
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- boost_skill_cli-1.2.84/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +3 -3
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +1 -1
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +1 -1
- boost_skill_cli-1.2.84/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +17 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shrink-the-published-index.md +16 -1
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap.html +40 -9
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_adapt.py +40 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_adapters_multi.py +29 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rag.py +191 -0
- boost_skill_cli-1.2.82/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.gitattributes +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.gitignore +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/.vale.ini +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/DCO +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/LICENSE +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/Makefile +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/README.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/codecov.yml +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/index.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/README.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/examples/README.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/index.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/noxfile.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/setup.cfg +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/README.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/boost.css +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/boost.js +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/style/demo.html +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/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.84'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 84)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1767,8 +1767,12 @@ def cmd_adapt(argv: list[str]) -> int:
|
|
|
1767
1767
|
# A skill that declares subagents projects to a runnable multi-agent
|
|
1768
1768
|
# workflow (a CrewAI Crew / LangGraph StateGraph) when the target supports
|
|
1769
1769
|
# one; flat skills — and multi-agent targets without a crew path — keep the
|
|
1770
|
-
# single-Agent render.
|
|
1771
|
-
|
|
1770
|
+
# single-Agent render. Subagent discovery only applies to a SKILL.md-rooted
|
|
1771
|
+
# skill: a flat `agents/<name>.md` workflow's "directory" is the registry's
|
|
1772
|
+
# shared agents/ folder, and every sibling workflow living in it is not a
|
|
1773
|
+
# subagent of this one.
|
|
1774
|
+
subagents = (adapters.discover_subagents(skill_md.parent, own_file=skill_md)
|
|
1775
|
+
if skill_md.name == "SKILL.md" else [])
|
|
1772
1776
|
crew_size = 0
|
|
1773
1777
|
if subagents and adapters.supports_multi(args.to):
|
|
1774
1778
|
primary = adapters.AgentSpec(display, description, body,
|
|
@@ -154,23 +154,27 @@ def parse_tools(meta: dict) -> list[str]:
|
|
|
154
154
|
return seen
|
|
155
155
|
|
|
156
156
|
|
|
157
|
-
def discover_subagents(skill_dir: Path) -> list[AgentSpec]:
|
|
157
|
+
def discover_subagents(skill_dir: Path, own_file: Path | None = None) -> list[AgentSpec]:
|
|
158
158
|
"""Discover a skill's subagents for multi-agent adaptation.
|
|
159
159
|
|
|
160
|
-
A subagent is a Markdown file (other than ``SKILL.md``
|
|
161
|
-
``agents/`` or ``subagents/``
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
160
|
+
A subagent is a Markdown file (other than ``SKILL.md`` or ``own_file``,
|
|
161
|
+
the entry being adapted) that lives under an ``agents/`` or ``subagents/``
|
|
162
|
+
directory strictly beneath ``skill_dir`` — not ``skill_dir`` itself, so a
|
|
163
|
+
flat item whose own directory happens to be shared (a registry-wide
|
|
164
|
+
``agents/`` folder holding one Markdown file per workflow) never treats
|
|
165
|
+
its siblings as subagents — and carries both a frontmatter ``name`` and
|
|
166
|
+
``description``. Files are visited in sorted path order so the emitted
|
|
167
|
+
crew/graph is deterministic. Returns the subagents as :class:`AgentSpec`s
|
|
168
|
+
— an empty list for a flat single-agent skill or a missing directory.
|
|
166
169
|
"""
|
|
167
170
|
specs: list[AgentSpec] = []
|
|
168
171
|
if not skill_dir or not skill_dir.is_dir():
|
|
169
172
|
return specs
|
|
170
173
|
for path in sorted(skill_dir.rglob("*.md")):
|
|
171
|
-
if path.name == "SKILL.md":
|
|
174
|
+
if path.name == "SKILL.md" or path == own_file:
|
|
172
175
|
continue
|
|
173
|
-
|
|
176
|
+
rel_dirs = {part.lower() for part in path.relative_to(skill_dir).parts[:-1]}
|
|
177
|
+
if not (SUBAGENT_DIRS & rel_dirs):
|
|
174
178
|
continue
|
|
175
179
|
try:
|
|
176
180
|
meta, body = frontmatter.parse(
|
|
@@ -25,6 +25,7 @@ import math
|
|
|
25
25
|
import os
|
|
26
26
|
import re
|
|
27
27
|
import sqlite3
|
|
28
|
+
import tempfile
|
|
28
29
|
from collections import defaultdict
|
|
29
30
|
from collections.abc import Sequence
|
|
30
31
|
from functools import lru_cache
|
|
@@ -41,7 +42,10 @@ from . import ai, catalog, config, frontmatter, gitutil, paths, registry, util
|
|
|
41
42
|
# v2: `snip` stores a larger head of the matched chunk (not just SNIP_WIDTH
|
|
42
43
|
# chars) so `retrieve` can window it onto the query terms; bump forces a
|
|
43
44
|
# one-time reindex.
|
|
44
|
-
|
|
45
|
+
# v7: postings interns term text into its own `terms` table instead of
|
|
46
|
+
# repeating it on every posting row — see `_write_postings`; bump forces a
|
|
47
|
+
# one-time reindex so every store gets the smaller layout.
|
|
48
|
+
INDEX_VERSION = 7
|
|
45
49
|
ENGINE = "bm25"
|
|
46
50
|
|
|
47
51
|
# Chunking defaults (documented in docs/rag-architecture.md §4).
|
|
@@ -331,27 +335,66 @@ def _write_postings(postings: dict[str, list[list[int]]]) -> None:
|
|
|
331
335
|
SQLite is used purely as an indexed key-value store here, not as a search
|
|
332
336
|
engine: BM25 scoring stays in `_bm25` byte for byte, so this changes cold
|
|
333
337
|
start cost and nothing about which results come back.
|
|
338
|
+
|
|
339
|
+
Terms are interned into their own table rather than repeated on every
|
|
340
|
+
posting row. Measured on a real 458-tap store: 18,619,658 posting rows over
|
|
341
|
+
210,422 distinct terms averaging 6.6 characters — the term string alone was
|
|
342
|
+
~123 MB of the 653 MB file, stored on average 88 times over. `postings` now
|
|
343
|
+
carries an integer `term_id`, and `terms` also carries each term's document
|
|
344
|
+
frequency (`df`, the length of its posting list) so `stem_expansions` can
|
|
345
|
+
read it directly instead of re-deriving it with `GROUP BY` on every lookup.
|
|
334
346
|
"""
|
|
335
347
|
paths.ensure_dirs()
|
|
336
348
|
final = postings_path()
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
349
|
+
# A UNIQUE temp per build, not a fixed `.sqlite.tmp`, and this is a
|
|
350
|
+
# concurrency fix rather than tidiness. Every build used to write the same
|
|
351
|
+
# name and unlink it on entry, so a second build starting mid-flight
|
|
352
|
+
# deleted the first's *finished* file and the first died on the swap:
|
|
353
|
+
#
|
|
354
|
+
# FileNotFoundError: rag_postings.sqlite.tmp -> rag_postings.sqlite
|
|
355
|
+
#
|
|
356
|
+
# observed on a real 464-tap install. The loser threw away several minutes
|
|
357
|
+
# of work and returned a crash report instead of an index. Nothing here is
|
|
358
|
+
# exotic — `boost search` builds on a cold index, so two terminals is
|
|
359
|
+
# enough to hit it. Same mkstemp-then-replace shape as
|
|
360
|
+
# `util.atomic_write_text`, which every other file boost must not lose
|
|
361
|
+
# already goes through.
|
|
362
|
+
fd, tmp_name = tempfile.mkstemp(dir=str(final.parent),
|
|
363
|
+
prefix="." + final.name + ".",
|
|
364
|
+
suffix=".tmp")
|
|
365
|
+
os.close(fd) # SQLite opens the path itself
|
|
366
|
+
tmp = Path(tmp_name)
|
|
340
367
|
con = sqlite3.connect(str(tmp))
|
|
341
368
|
try:
|
|
342
369
|
# No durability needed: this file is a derived cache, and a crash
|
|
343
370
|
# mid-build leaves the .tmp behind rather than a torn index.
|
|
344
371
|
con.execute("PRAGMA journal_mode=OFF")
|
|
345
372
|
con.execute("PRAGMA synchronous=OFF")
|
|
346
|
-
con.execute("CREATE TABLE
|
|
373
|
+
con.execute("CREATE TABLE terms (id INTEGER PRIMARY KEY, "
|
|
374
|
+
"term TEXT NOT NULL, df INTEGER NOT NULL)")
|
|
375
|
+
con.execute("CREATE TABLE postings (term_id INTEGER, doc INTEGER, "
|
|
376
|
+
"tf INTEGER)")
|
|
377
|
+
items = list(postings.items())
|
|
378
|
+
con.executemany(
|
|
379
|
+
"INSERT INTO terms (id, term, df) VALUES (?, ?, ?)",
|
|
380
|
+
((term_id, term, len(plist))
|
|
381
|
+
for term_id, (term, plist) in enumerate(items)))
|
|
347
382
|
con.executemany(
|
|
348
|
-
"INSERT INTO postings (
|
|
349
|
-
((
|
|
383
|
+
"INSERT INTO postings (term_id, doc, tf) VALUES (?, ?, ?)",
|
|
384
|
+
((term_id, doc, tf) for term_id, (_term, plist) in enumerate(items)
|
|
350
385
|
for doc, tf in plist))
|
|
351
386
|
# Built after the insert: maintaining it per-row is far slower.
|
|
352
|
-
con.execute("CREATE INDEX
|
|
387
|
+
con.execute("CREATE UNIQUE INDEX terms_term ON terms(term)")
|
|
388
|
+
con.execute("CREATE INDEX postings_term_id ON postings(term_id)")
|
|
353
389
|
con.commit()
|
|
354
|
-
|
|
390
|
+
except BaseException:
|
|
391
|
+
# Never leave a temp behind, and never mask the original error —
|
|
392
|
+
# `util.atomic_write_text`'s rule, for the same reason.
|
|
393
|
+
con.close()
|
|
394
|
+
with contextlib.suppress(OSError):
|
|
395
|
+
tmp.unlink()
|
|
396
|
+
raise
|
|
397
|
+
else:
|
|
355
398
|
con.close()
|
|
356
399
|
tmp.replace(final) # atomic swap, same as the JSON half
|
|
357
400
|
|
|
@@ -375,8 +418,9 @@ def read_postings(terms: Sequence[str]) -> dict[str, list[list[int]]]:
|
|
|
375
418
|
# long query can exceed it.
|
|
376
419
|
for i in range(0, len(uniq), 500):
|
|
377
420
|
batch = uniq[i:i + 500]
|
|
378
|
-
q = ("SELECT term, doc, tf FROM postings
|
|
379
|
-
|
|
421
|
+
q = ("SELECT t.term, p.doc, p.tf FROM postings p " # noqa: S608 interpolates only `?` placeholders; terms are bound params
|
|
422
|
+
"JOIN terms t ON p.term_id = t.id "
|
|
423
|
+
"WHERE t.term IN (%s)" % ",".join("?" * len(batch)))
|
|
380
424
|
for term, doc, tf in con.execute(q, batch):
|
|
381
425
|
out[term].append([doc, tf])
|
|
382
426
|
except sqlite3.Error:
|
|
@@ -429,12 +473,14 @@ def stem_expansions(terms: Sequence[str]) -> dict[str, str]:
|
|
|
429
473
|
for term in missing:
|
|
430
474
|
# `tokenize` emits only [a-z0-9]+, and "~" sorts above every
|
|
431
475
|
# character it can produce — so this half-open range is exactly the
|
|
432
|
-
# terms beginning with `term`, and it rides the
|
|
433
|
-
# instead of scanning.
|
|
434
|
-
#
|
|
476
|
+
# terms beginning with `term`, and it rides the terms_term index
|
|
477
|
+
# instead of scanning. `df` (document frequency) is stored per term
|
|
478
|
+
# at build time, so this needs no join and no GROUP BY. Ties break
|
|
479
|
+
# on the term itself so the choice is deterministic across
|
|
480
|
+
# machines.
|
|
435
481
|
row = con.execute(
|
|
436
|
-
"SELECT term FROM
|
|
437
|
-
"
|
|
482
|
+
"SELECT term FROM terms WHERE term > ? AND term < ? "
|
|
483
|
+
"ORDER BY df DESC, term LIMIT 1",
|
|
438
484
|
(term, term + "~")).fetchone()
|
|
439
485
|
if row:
|
|
440
486
|
out[term] = row[0]
|
|
@@ -453,7 +499,9 @@ def _all_postings() -> dict[str, list[list[int]]]:
|
|
|
453
499
|
return {}
|
|
454
500
|
out: dict[str, list[list[int]]] = defaultdict(list)
|
|
455
501
|
try:
|
|
456
|
-
for term, doc, tf in con.execute(
|
|
502
|
+
for term, doc, tf in con.execute(
|
|
503
|
+
"SELECT t.term, p.doc, p.tf FROM postings p "
|
|
504
|
+
"JOIN terms t ON p.term_id = t.id"):
|
|
457
505
|
out[term].append([doc, tf])
|
|
458
506
|
except sqlite3.Error:
|
|
459
507
|
return {}
|
|
@@ -352,6 +352,7 @@ docs/roadmap/items/command-reference-docs-site.md
|
|
|
352
352
|
docs/roadmap/items/completions-complete-only-command-names.md
|
|
353
353
|
docs/roadmap/items/completions-install-could-eat-your-rc-file.md
|
|
354
354
|
docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md
|
|
355
|
+
docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md
|
|
355
356
|
docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md
|
|
356
357
|
docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md
|
|
357
358
|
docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md
|
|
Binary file
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as
|
|
3
3
|
board: code
|
|
4
4
|
section: internals
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: CLI · Bug
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 2
|
|
10
10
|
note: one flat agents/x.md adapts into a 383 KB crew of 138 Agent()s — including itself, twice
|
|
11
11
|
order: 200
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/adapt-flat-agents-subagent-scope
|
|
13
|
+
pr: 692
|
|
14
14
|
title: "<code>adapt</code> renders every sibling of a flat <code>agents/</code>-dir workflow as a 138-agent crew"
|
|
15
15
|
---
|
|
16
16
|
<code>adapt actix-expert --to crewai -o x.py</code> prints <em>“✓ adapted actix-expert → x.py (crew of 138 · claude-haiku-4-5-20251001)”</em> and writes a <b>383 KB</b> render containing <b>138 <code>Agent()</code> + 138 <code>Task()</code></b> — <code>actix_expert</code>, then <code>actix_expert_1</code> (the item itself, again), then android-expert, angular-expert, … every sibling in the registry's <code>agents/</code> directory. <code>--to agents-sdk</code> announces <em>“note: actix-expert declares 137 subagent(s)”</em>. The item is one flat frontmatter file declaring nothing.
|
boost_skill_cli-1.2.84/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: concurrent-rag-builds-delete-each-others-temp-index
|
|
3
|
+
board: code
|
|
4
|
+
section: internals
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Reliability · Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 3
|
|
10
|
+
note: two overlapping rag.build() runs share one .tmp name; the second unlinks the first's finished 644 MB file and the first dies on replace()
|
|
11
|
+
order: 308
|
|
12
|
+
owner: loop/postings-temp-race
|
|
13
|
+
pr: 693
|
|
14
|
+
title: "Two concurrent <code>rag.build()</code> runs delete each other's temp index"
|
|
15
|
+
---
|
|
16
|
+
Observed on a real 464-tap install during <code>boost update --shards</code>, at boost 1.2.80:
|
|
17
|
+
<code>FileNotFoundError: [Errno 2] No such file or directory: '~/.boost/cache/rag_postings.sqlite.tmp' -> '~/.boost/cache/rag_postings.sqlite'</code>, raised from <code>tmp.replace(final)</code> in <code>_write_postings</code>. <code>_write_postings</code> wrote every build to the <b>same</b> fixed temp path and unlinked it on entry, so a second build starting mid-flight deleted the first's <em>completed</em> file: A builds its 644 MB temp → B enters and <code>unlink()</code>s it → A crashes on the swap. Confirmed by timestamps — the crash landed at 21:25 and a fresh <code>.tmp</code> appeared at 21:26, which then swapped in cleanly, so the index was never corrupt and the loser simply threw away several minutes of work and returned a crash report. It needs no exotic setup: <code>boost search</code> builds on a cold index, so two terminals is enough, and <code>_ingest_shards</code> rebuilds the index for any tap that moved. Fixed by giving each build its own <code>tempfile.mkstemp</code> name and unlinking it on failure — the same shape <code>util.atomic_write_text</code> already uses for every other file boost must not lose.
|
{boost_skill_cli-1.2.82 → boost_skill_cli-1.2.84}/docs/roadmap/items/shrink-the-published-index.md
RENAMED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
id: shrink-the-published-index
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: inflight
|
|
6
6
|
category: Performance · Storage
|
|
7
7
|
complexity: M
|
|
8
8
|
impact: Med
|
|
9
9
|
wow: 3
|
|
10
10
|
note: 653 MB of postings holds 1.4 MB of distinct terms — the term string is stored 88 times over
|
|
11
11
|
order: 100
|
|
12
|
+
owner: loop/shrink-postings-index
|
|
12
13
|
title: shrink the keyword index before publishing it — structure first, then compression
|
|
13
14
|
---
|
|
14
15
|
<a href="#publish-the-keyword-index">publish-the-keyword-index</a> is worth doing only if the
|
|
@@ -58,3 +59,17 @@ for the many-small-registries case, where per-shard compression has little conte
|
|
|
58
59
|
— on the real store, with import-side decode time beside each. That table is what tells
|
|
59
60
|
<a href="#publish-the-keyword-index">publish-the-keyword-index</a> what to ship, and it is worth
|
|
60
61
|
having even if publishing is declined: the on-disk win applies to every install today.
|
|
62
|
+
|
|
63
|
+
<b>Progress (PR pending).</b> The structural half shipped: <code>_write_postings</code> now
|
|
64
|
+
interns terms into their own <code>terms(id, term, df)</code> table, with <code>postings</code>
|
|
65
|
+
carrying an integer <code>term_id</code> instead of repeating the term string on every row —
|
|
66
|
+
exactly the "structure first" change this card calls the bigger win, and it bumps
|
|
67
|
+
<code>INDEX_VERSION</code> so every store picks it up on its next rebuild.
|
|
68
|
+
<code>stem_expansions</code> now reads the precomputed <code>df</code> column directly instead of
|
|
69
|
+
a <code>GROUP BY COUNT(*)</code> over <code>postings</code> on every prefix lookup. Not done: the
|
|
70
|
+
delta/varint doc-id encoding, and the full raw/interned/delta+varint ×
|
|
71
|
+
none/gzip/zstd comparison table with import-side decode times on a real multi-hundred-MB store —
|
|
72
|
+
this sandbox has no such store to measure against, only a small synthetic one (interning alone cut
|
|
73
|
+
a 1.8M-posting/20k-term synthetic store from 63.6 MB to 47.9 MB, directionally consistent
|
|
74
|
+
with the real-store estimate above but not a substitute for it). Left as follow-on work before this
|
|
75
|
+
card can be called shipped.
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
<div class="stat"><b>20</b><span>Shipped</span></div>
|
|
134
134
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
135
135
|
<div class="stat"><b>11</b><span>Planned</span></div>
|
|
136
|
-
<div class="stat"><b>
|
|
136
|
+
<div class="stat"><b>405</b><span>Loop finds</span></div>
|
|
137
137
|
<!-- /ROADMAP:stats -->
|
|
138
138
|
</div>
|
|
139
139
|
</section>
|
|
@@ -1078,7 +1078,7 @@ is not obviously the right trade, and at the compressed sizes measured there it
|
|
|
1078
1078
|
</article>
|
|
1079
1079
|
|
|
1080
1080
|
<article class="cap rcard" id="shrink-the-published-index">
|
|
1081
|
-
<div class="head"><span class="pill
|
|
1081
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">Performance · Storage</span></div>
|
|
1082
1082
|
<h3>shrink the keyword index before publishing it — structure first, then compression</h3>
|
|
1083
1083
|
<p><a href="#publish-the-keyword-index">publish-the-keyword-index</a> is worth doing only if the
|
|
1084
1084
|
artifact is small enough to ship weekly. This card is the measurement that decides it, and the
|
|
@@ -1126,7 +1126,21 @@ for the many-small-registries case, where per-shard compression has little conte
|
|
|
1126
1126
|
<b>Deliverable.</b> A measured comparison — raw, interned, delta+varint, each × none/gzip/zstd
|
|
1127
1127
|
— on the real store, with import-side decode time beside each. That table is what tells
|
|
1128
1128
|
<a href="#publish-the-keyword-index">publish-the-keyword-index</a> what to ship, and it is worth
|
|
1129
|
-
having even if publishing is declined: the on-disk win applies to every install today
|
|
1129
|
+
having even if publishing is declined: the on-disk win applies to every install today.
|
|
1130
|
+
|
|
1131
|
+
<b>Progress (PR pending).</b> The structural half shipped: <code>_write_postings</code> now
|
|
1132
|
+
interns terms into their own <code>terms(id, term, df)</code> table, with <code>postings</code>
|
|
1133
|
+
carrying an integer <code>term_id</code> instead of repeating the term string on every row —
|
|
1134
|
+
exactly the "structure first" change this card calls the bigger win, and it bumps
|
|
1135
|
+
<code>INDEX_VERSION</code> so every store picks it up on its next rebuild.
|
|
1136
|
+
<code>stem_expansions</code> now reads the precomputed <code>df</code> column directly instead of
|
|
1137
|
+
a <code>GROUP BY COUNT(*)</code> over <code>postings</code> on every prefix lookup. Not done: the
|
|
1138
|
+
delta/varint doc-id encoding, and the full raw/interned/delta+varint ×
|
|
1139
|
+
none/gzip/zstd comparison table with import-side decode times on a real multi-hundred-MB store —
|
|
1140
|
+
this sandbox has no such store to measure against, only a small synthetic one (interning alone cut
|
|
1141
|
+
a 1.8M-posting/20k-term synthetic store from 63.6 MB to 47.9 MB, directionally consistent
|
|
1142
|
+
with the real-store estimate above but not a substitute for it). Left as follow-on work before this
|
|
1143
|
+
card can be called shipped.</p>
|
|
1130
1144
|
<div class="meta">
|
|
1131
1145
|
<span class="m">Complexity <b>M</b></span>
|
|
1132
1146
|
<span class="m">Impact <b>Med</b></span>
|
|
@@ -5325,15 +5339,16 @@ row has at least one referent.</p></details>
|
|
|
5325
5339
|
</article>
|
|
5326
5340
|
|
|
5327
5341
|
<article class="cap rcard" id="audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as">
|
|
5328
|
-
<div class="head"><span class="pill
|
|
5342
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">CLI · Bug</span></div>
|
|
5329
5343
|
<h3><code>adapt</code> renders every sibling of a flat <code>agents/</code>-dir workflow as a 138-agent crew</h3>
|
|
5344
|
+
<details class="cardbody"><summary>Write-up</summary>
|
|
5330
5345
|
<p><code>adapt actix-expert --to crewai -o x.py</code> prints <em>“✓ adapted actix-expert → x.py (crew of 138 · claude-haiku-4-5-20251001)”</em> and writes a <b>383 KB</b> render containing <b>138 <code>Agent()</code> + 138 <code>Task()</code></b> — <code>actix_expert</code>, then <code>actix_expert_1</code> (the item itself, again), then android-expert, angular-expert, … every sibling in the registry's <code>agents/</code> directory. <code>--to agents-sdk</code> announces <em>“note: actix-expert declares 137 subagent(s)”</em>. The item is one flat frontmatter file declaring nothing.
|
|
5331
5346
|
|
|
5332
5347
|
The mechanism: <code>cmd_adapt</code> (<code>boost_cli/commands/pkg.py:1737</code>) passes <code>skill_md.parent</code> to <code>discover_subagents</code> (<code>boost_cli/core/adapters.py:157-186</code>). For a SKILL.md-rooted skill that parent is the skill's own directory and the feature works as shipped (<code>adapt brainstorming --to crewai</code> renders a single agent). For a flat <code>agents/<x>.md</code> workflow the parent <em>is</em> the registry-wide <code>agents/</code> dir, so all 137 siblings become a fabricated crew — and since the exclusion at <code>adapters.py:170-173</code> skips only <code>SKILL.md</code>, the adapted item is re-included as one of its own subagents.
|
|
5333
5348
|
|
|
5334
5349
|
Fix per the verified recommendation: run <code>discover_subagents</code> only when the resolved item is SKILL.md-rooted (<code>skill_md.name == 'SKILL.md'</code>), and harden <code>discover_subagents</code> to skip the entry's own file and require the <code>agents/</code>/<code>subagents/</code> dir to be strictly beneath <code>skill_dir</code>. Add a unit test adapting a bare <code>agents/<x>.md</code> item that asserts a single-<code>Agent()</code> render. Update <code>docs/adapters.html</code> (subagent-discovery wording).
|
|
5335
5350
|
|
|
5336
|
-
Found by the 2026-08 CLI audit (cluster <code>adapt-subagent-misdetect</code>); repro in the audit log. Verified 2026-08-31: reproduced, defect in the shipped multi-agent adapter feature (whose design intended skill-declared subagents only), not a duplicate of it.</p>
|
|
5351
|
+
Found by the 2026-08 CLI audit (cluster <code>adapt-subagent-misdetect</code>); repro in the audit log. Verified 2026-08-31: reproduced, defect in the shipped multi-agent adapter feature (whose design intended skill-declared subagents only), not a duplicate of it.</p></details>
|
|
5337
5352
|
<div class="meta">
|
|
5338
5353
|
<span class="m">Complexity <b>S</b></span>
|
|
5339
5354
|
<span class="m hi">Impact <b>High</b></span>
|
|
@@ -5614,6 +5629,20 @@ repro run needed. Absolute date of verification: 2026-08-31.</p></details>
|
|
|
5614
5629
|
<span class="m">a quickstart rerun re-downloads every shard the store already holds at that commit</span>
|
|
5615
5630
|
</div>
|
|
5616
5631
|
</article>
|
|
5632
|
+
|
|
5633
|
+
<article class="cap rcard" id="concurrent-rag-builds-delete-each-others-temp-index">
|
|
5634
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Reliability · Bug</span></div>
|
|
5635
|
+
<h3>Two concurrent <code>rag.build()</code> runs delete each other's temp index</h3>
|
|
5636
|
+
<details class="cardbody"><summary>Write-up</summary>
|
|
5637
|
+
<p>Observed on a real 464-tap install during <code>boost update --shards</code>, at boost 1.2.80:
|
|
5638
|
+
<code>FileNotFoundError: [Errno 2] No such file or directory: '~/.boost/cache/rag_postings.sqlite.tmp' -> '~/.boost/cache/rag_postings.sqlite'</code>, raised from <code>tmp.replace(final)</code> in <code>_write_postings</code>. <code>_write_postings</code> wrote every build to the <b>same</b> fixed temp path and unlinked it on entry, so a second build starting mid-flight deleted the first's <em>completed</em> file: A builds its 644 MB temp → B enters and <code>unlink()</code>s it → A crashes on the swap. Confirmed by timestamps — the crash landed at 21:25 and a fresh <code>.tmp</code> appeared at 21:26, which then swapped in cleanly, so the index was never corrupt and the loser simply threw away several minutes of work and returned a crash report. It needs no exotic setup: <code>boost search</code> builds on a cold index, so two terminals is enough, and <code>_ingest_shards</code> rebuilds the index for any tap that moved. Fixed by giving each build its own <code>tempfile.mkstemp</code> name and unlinking it on failure — the same shape <code>util.atomic_write_text</code> already uses for every other file boost must not lose.</p></details>
|
|
5639
|
+
<div class="meta">
|
|
5640
|
+
<span class="m">Complexity <b>S</b></span>
|
|
5641
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
5642
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
5643
|
+
<span class="m">two overlapping rag.build() runs share one .tmp name; the second unlinks the first's finished 644 MB file and the first dies on replace()</span>
|
|
5644
|
+
</div>
|
|
5645
|
+
</article>
|
|
5617
5646
|
<!-- /ROADMAP:cards -->
|
|
5618
5647
|
|
|
5619
5648
|
</div>
|
|
@@ -11826,8 +11855,9 @@ Found by the 2026-08 CLI audit (cluster <code>kinds-reported-as-skills</code>);
|
|
|
11826
11855
|
</article>
|
|
11827
11856
|
|
|
11828
11857
|
<article class="cap rcard" id="audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of">
|
|
11829
|
-
<div class="head"><span class="pill
|
|
11858
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">CLI · Bug</span></div>
|
|
11830
11859
|
<h3><code>install --local</code> writes the repo's <code>.mcp.json</code> silently — the 'recorded N servers' report never runs</h3>
|
|
11860
|
+
<details class="cardbody"><summary>Write-up</summary>
|
|
11831
11861
|
<p>Installing a skill that declares an MCP server with <code>--local</code> prints
|
|
11832
11862
|
<em>“✓ copied into this repo → claude-code · windsurf · cursor ·
|
|
11833
11863
|
gemini / ✓ project lock updated (.boost/skill-lock.json) / commit .boost/ to share these with
|
|
@@ -11853,7 +11883,7 @@ asserting the <em>“recorded 1 MCP server in .mcp.json”</em> line for
|
|
|
11853
11883
|
uninstall side. Docs: fix <code>docs/roadmap/items/mcp-servers-ignore-install-scope.md</code>, which
|
|
11854
11884
|
describes the recorded-report as reachable; no flag change, so <code>docs/commands.html</code> only
|
|
11855
11885
|
needs regenerating if a summary moves. Found by the 2026-08 CLI audit (cluster
|
|
11856
|
-
<code>mcp-project-scope-report</code>); repro in the audit log.</p>
|
|
11886
|
+
<code>mcp-project-scope-report</code>); repro in the audit log.</p></details>
|
|
11857
11887
|
<div class="meta">
|
|
11858
11888
|
<span class="m">Complexity <b>S</b></span>
|
|
11859
11889
|
<span class="m hi">Impact <b>High</b></span>
|
|
@@ -11982,15 +12012,16 @@ Found by the 2026-08 CLI audit (cluster <code>qualifier-rejected-elsewhere</code
|
|
|
11982
12012
|
</article>
|
|
11983
12013
|
|
|
11984
12014
|
<article class="cap rcard" id="audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def">
|
|
11985
|
-
<div class="head"><span class="pill
|
|
12015
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Safety · Bug</span></div>
|
|
11986
12016
|
<h3><code>tap --dry-run</code> is silently ignored outside <code>--catalog</code>: SPEC and <code>--defaults</code> clone for real</h3>
|
|
12017
|
+
<details class="cardbody"><summary>Write-up</summary>
|
|
11987
12018
|
<p>On a pristine HOME, <code>boost tap --dry-run expo/skills</code> printed <code>✓ Tapped expo/skills (26 items)</code>, exit 0 in 1.56 s — and the clone exists and <code>config.json</code> gained the row. <code>tap --defaults --dry-run</code> cloned five registries (<code>✓ tapped trailofbits/skills (124 items) …</code>) and grew the config from 21 to 26 taps. The multi-spec path is the same: <code>tap --dry-run expo/skills anthropics/skills</code> answered with <code>already tapped</code> lines, proving registry code ran. Help does say <em>“with --catalog: print what would be tapped, tap nothing”</em> — documented-narrow, but a flag literally named <code>--dry-run</code> that clones repos and writes config is a safety hole regardless of wording.
|
|
11988
12019
|
|
|
11989
12020
|
The source confirms the shape: <code>taps.py</code> consults <code>args.dry_run</code> only inside <code>_tap_catalog</code> (<code>boost_cli/commands/taps.py:38</code>); <code>cmd_tap</code>'s defaults, single-spec and multi-spec branches (<code>taps.py:144-166</code>) never read it. Not a duplicate of the roadmap's <em>dry-run-promised-a-link-nobody-makes</em>, which is about <code>install --dry-run</code>.
|
|
11990
12021
|
|
|
11991
12022
|
Fix, per the verified recommendation: in <code>cmd_tap</code>, when <code>args.dry_run</code> and (<code>args.spec</code> or <code>args.defaults</code>), print the parsed <code>(name, url)</code> per spec — or the <code>DEFAULT_TAPS</code> list — and return 0 <em>before</em> <code>registry.add</code>/<code>_tap_all</code>; update the <code>--dry-run</code> help text; add a unit test that <code>--dry-run SPEC</code> writes nothing. Docs: regenerate <code>docs/commands.html</code> after the help-text change.
|
|
11992
12023
|
|
|
11993
|
-
Found by the 2026-08 CLI audit (cluster <code>tap-dry-run-ignored</code>); repro in the audit log. Verified against source 2026-08-31.</p>
|
|
12024
|
+
Found by the 2026-08 CLI audit (cluster <code>tap-dry-run-ignored</code>); repro in the audit log. Verified against source 2026-08-31.</p></details>
|
|
11994
12025
|
<div class="meta">
|
|
11995
12026
|
<span class="m">Complexity <b>S</b></span>
|
|
11996
12027
|
<span class="m hi">Impact <b>High</b></span>
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
"""Functional tests: `boost adapt` — render a skill as framework source."""
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
import subprocess
|
|
7
|
+
|
|
6
8
|
|
|
7
9
|
def test_adapt_installed_skill_to_crewai_stdout(boost, installed):
|
|
8
10
|
r = boost("adapt", installed, "--to", "crewai")
|
|
@@ -130,3 +132,41 @@ def test_multi_agent_target_without_crew_falls_back_with_note(boost, installed):
|
|
|
130
132
|
assert "reviewer = Agent(" not in r.out
|
|
131
133
|
assert "declares 2 subagent" in r.err
|
|
132
134
|
compile(r.out, "<sdk>", "exec")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
# --- flat agents/-dir workflow item: not a multi-agent skill --------------
|
|
138
|
+
|
|
139
|
+
def _flat_agents_tap(tmp_path):
|
|
140
|
+
"""A registry whose agents/ directory holds one Markdown file per
|
|
141
|
+
stand-alone workflow item, no SKILL.md anywhere — the shape that made
|
|
142
|
+
`adapt` mistake every sibling workflow for a subagent of the one being
|
|
143
|
+
adapted."""
|
|
144
|
+
tap = tmp_path / "flat-tap"
|
|
145
|
+
agents = tap / "agents"
|
|
146
|
+
agents.mkdir(parents=True)
|
|
147
|
+
(agents / "actix-expert.md").write_text(
|
|
148
|
+
"---\nname: actix-expert\ndescription: Actix web framework expert\n---\n"
|
|
149
|
+
"Body for actix.\n", encoding="utf-8")
|
|
150
|
+
(agents / "android-expert.md").write_text(
|
|
151
|
+
"---\nname: android-expert\ndescription: Android expert\n---\n"
|
|
152
|
+
"Body for android.\n", encoding="utf-8")
|
|
153
|
+
run = lambda *a: subprocess.run(a, cwd=tap, check=True, capture_output=True)
|
|
154
|
+
run("git", "init", "-q")
|
|
155
|
+
run("git", "config", "user.email", "fixture@boost.test")
|
|
156
|
+
run("git", "config", "user.name", "Boost Fixture")
|
|
157
|
+
run("git", "add", "-A")
|
|
158
|
+
run("git", "commit", "-qm", "flat agents fixture")
|
|
159
|
+
return tap
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def test_flat_agents_dir_workflow_adapts_as_single_agent(boost, tmp_path):
|
|
163
|
+
tap = _flat_agents_tap(tmp_path)
|
|
164
|
+
boost("tap", str(tap))
|
|
165
|
+
r = boost("adapt", "actix-expert", "--to", "crewai", "--model", "none")
|
|
166
|
+
assert "actix_expert = Agent(" in r.out
|
|
167
|
+
# the sibling workflow in the same shared agents/ dir must not appear —
|
|
168
|
+
# neither as a rendered agent nor as a dropped-subagent note
|
|
169
|
+
assert "android_expert" not in r.out
|
|
170
|
+
assert "crew of" not in r.out
|
|
171
|
+
assert r.err == ""
|
|
172
|
+
compile(r.out, "<crewai>", "exec")
|
|
@@ -156,6 +156,35 @@ class TestDiscoverSubagents:
|
|
|
156
156
|
f.write_text("---\nname: wf\ndescription: t\n---\n", encoding="utf-8")
|
|
157
157
|
assert adapters.discover_subagents(f) == [] # not a directory
|
|
158
158
|
|
|
159
|
+
def test_shared_dir_itself_named_agents_has_no_subagents(self, tmp_path):
|
|
160
|
+
# A flat agents/<x>.md workflow item's "skill_dir" (its own file's
|
|
161
|
+
# parent) IS the registry-wide agents/ folder — siblings sitting
|
|
162
|
+
# directly inside it are not nested under an agents/subagents dir
|
|
163
|
+
# *beneath* skill_dir, so none of them count as subagents.
|
|
164
|
+
shared = tmp_path / "agents"
|
|
165
|
+
shared.mkdir()
|
|
166
|
+
(shared / "actix-expert.md").write_text(
|
|
167
|
+
"---\nname: actix-expert\ndescription: d\n---\nB\n", encoding="utf-8")
|
|
168
|
+
(shared / "android-expert.md").write_text(
|
|
169
|
+
"---\nname: android-expert\ndescription: d\n---\nB\n", encoding="utf-8")
|
|
170
|
+
assert adapters.discover_subagents(shared) == []
|
|
171
|
+
|
|
172
|
+
def test_own_file_excluded_even_when_nested(self, tmp_path):
|
|
173
|
+
# Defense in depth: the entry being adapted never counts as one of
|
|
174
|
+
# its own subagents, even if it happens to sit under a nested
|
|
175
|
+
# agents/subagents dir that legitimately holds other subagents.
|
|
176
|
+
_skill(tmp_path, {
|
|
177
|
+
"self.md": "---\nname: self\ndescription: d\n---\nB\n",
|
|
178
|
+
"helper.md": "---\nname: helper\ndescription: d\n---\nB\n",
|
|
179
|
+
})
|
|
180
|
+
own = tmp_path / "agents" / "self.md"
|
|
181
|
+
specs = adapters.discover_subagents(tmp_path, own_file=own)
|
|
182
|
+
assert [s.name for s in specs] == ["helper"]
|
|
183
|
+
|
|
184
|
+
def test_own_file_none_does_not_exclude_anything(self, tmp_path):
|
|
185
|
+
_skill(tmp_path, {"a.md": "---\nname: a\ndescription: x\n---\nB\n"})
|
|
186
|
+
assert [s.name for s in adapters.discover_subagents(tmp_path, own_file=None)] == ["a"]
|
|
187
|
+
|
|
159
188
|
|
|
160
189
|
# --- helpers: idents & tool union ----------------------------------------
|
|
161
190
|
|