boost-skill-cli 1.2.65__tar.gz → 1.2.67__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.65/boost_skill_cli.egg-info → boost_skill_cli-1.2.67}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/bmad.py +22 -2
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +12 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/tool-call-eval-tier.md +24 -3
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap.html +35 -2
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_tools.py +61 -9
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_bmad_core.py +55 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_tools.py +62 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.gitattributes +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.gitignore +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale.ini +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/DCO +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/LICENSE +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/Makefile +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/README.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/codecov.yml +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/index.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/README.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/examples/README.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/index.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/noxfile.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/setup.cfg +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/README.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/boost.css +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/boost.js +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/style/demo.html +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/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.67'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 67)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -371,6 +371,23 @@ is pure noise. A 45-word paragraph that happens to begin "how should we…" is a
|
|
|
371
371
|
design brief, so length is what separates them.
|
|
372
372
|
"""
|
|
373
373
|
|
|
374
|
+
LONG_PROMPT_WORDS = 60
|
|
375
|
+
"""Past this, one keyword is not enough evidence to route on.
|
|
376
|
+
|
|
377
|
+
The other trivial gates all key on *shape* — a question, a slash command, too
|
|
378
|
+
few words — and a pasted terminal session is none of those. The day the
|
|
379
|
+
autopilot shipped, a user pasted ~90 words of their own shell output back into
|
|
380
|
+
the chat and got a full delegation banner because `\\bupdate\\b` matched inside
|
|
381
|
+
"boost self-update": one weak hit in a wall of text.
|
|
382
|
+
|
|
383
|
+
Density is the missing signal. In a short prompt every word is deliberate, so a
|
|
384
|
+
single keyword is strong evidence; in a long one it is easily incidental, while
|
|
385
|
+
a genuine long request names its work more than once ("refactor … and update
|
|
386
|
+
…"). Requiring two distinct hits above this length costs real requests nothing
|
|
387
|
+
and silences pastes, which is the right way round: this module would rather
|
|
388
|
+
under-route than talk over someone.
|
|
389
|
+
"""
|
|
390
|
+
|
|
374
391
|
|
|
375
392
|
def classify(prompt: str) -> str:
|
|
376
393
|
"""Name the track a prompt belongs to, or ``"trivial"`` to stay silent.
|
|
@@ -378,7 +395,8 @@ def classify(prompt: str) -> str:
|
|
|
378
395
|
Silence is the default for anything that is not recognisably a unit of
|
|
379
396
|
work: empty input, an acknowledgement, a slash command (which carries its
|
|
380
397
|
own instructions), a short informational question, an explicit opt-out
|
|
381
|
-
("no bmad"),
|
|
398
|
+
("no bmad"), a prompt that matches no track at all, or — past
|
|
399
|
+
:data:`LONG_PROMPT_WORDS` — one that matches only a single keyword.
|
|
382
400
|
"""
|
|
383
401
|
text = prompt.strip()
|
|
384
402
|
if not text or _SLASH.match(text) or _OPT_OUT.search(text):
|
|
@@ -389,10 +407,12 @@ def classify(prompt: str) -> str:
|
|
|
389
407
|
if (_INFO_QUESTION.match(text) and len(words) <= QUESTION_MAX_WORDS
|
|
390
408
|
and not _SECOND_SENTENCE.search(text)):
|
|
391
409
|
return TRIVIAL
|
|
410
|
+
# Distinct patterns matched, not occurrences: saying "update" twenty times
|
|
411
|
+
# is one piece of evidence, which is what keeps a repetitive log quiet.
|
|
392
412
|
scores = {t: sum(1 for rx in pats if rx.search(text))
|
|
393
413
|
for t, pats in _COMPILED.items()}
|
|
394
414
|
best = max(scores.values())
|
|
395
|
-
if best == 0:
|
|
415
|
+
if best == 0 or (best < 2 and len(words) > LONG_PROMPT_WORDS):
|
|
396
416
|
return TRIVIAL
|
|
397
417
|
return next(t for t in TRACK_ORDER if scores[t] == best)
|
|
398
418
|
|
|
@@ -84,6 +84,18 @@ from the transcript, so every message the user typed would vanish until they fou
|
|
|
84
84
|
The guard has to sit outside any version of boost, so the installed command ends
|
|
85
85
|
<code>|| true</code>.
|
|
86
86
|
|
|
87
|
+
<b>First production tuning: evidence has to scale with prompt length.</b> Within an hour of
|
|
88
|
+
release, the first real-world false positive arrived — a user pasted their own terminal session
|
|
89
|
+
back into the chat (~90 words of <code>boost self-update</code> output) and got a full delegation
|
|
90
|
+
banner, because <code>\bupdate\b</code> matches inside “self-<b>update</b>”. One weak
|
|
91
|
+
hit in a wall of text. Every existing trivial gate keys on <em>shape</em> — a question, a
|
|
92
|
+
slash command, too few words — and a pasted log is none of those, so none of them could
|
|
93
|
+
fire. The missing signal was density: in a short prompt every word is deliberate, so one keyword
|
|
94
|
+
is strong evidence; in a long one it is easily incidental, while a genuine long request names its
|
|
95
|
+
work more than once (“refactor … and update …”). Past
|
|
96
|
+
<code>LONG_PROMPT_WORDS</code> (60) the router now needs two distinct keyword hits. Verified
|
|
97
|
+
against the real paste and against 80- and 69-word genuine requests, which still route.
|
|
98
|
+
|
|
87
99
|
<b>Two keyword-table defects, found by routing real prompts rather than by reading.</b>
|
|
88
100
|
<code>\bfix\w*\b</code> matches “fixture” and <code>\bchange\w*\b</code> matches
|
|
89
101
|
“changelog” — the exact words the quality and docs tables claim — so “add
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
id: tool-call-eval-tier
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: inflight
|
|
6
6
|
category: Quality · Eval
|
|
7
7
|
complexity: L
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
|
-
note:
|
|
11
|
-
owner:
|
|
10
|
+
note: probe fixed; --strict-mcp-config shipped for the surface confound; second host (Gemini CLI) still unwritten
|
|
11
|
+
owner: loop/eval-tools-strict-mcp
|
|
12
12
|
order: 96
|
|
13
13
|
title: a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions
|
|
14
14
|
---
|
|
@@ -100,6 +100,27 @@ one this card argues about.
|
|
|
100
100
|
<code>--strict-mcp-config</code> with a boost-only config cuts that sharply and controls the
|
|
101
101
|
surface confound in the same move.
|
|
102
102
|
|
|
103
|
+
<b>2026-08-31: <code>--strict-mcp-config</code> shipped.</b> <code>eval_tools.py</code> now takes
|
|
104
|
+
a <code>--strict-mcp-config</code> flag: it writes a boost-only <code>mcpServers</code> config
|
|
105
|
+
(the same <code><launcher> mcp --stdio</code> invocation and fork-safety <code>env</code>
|
|
106
|
+
<code>core.mcphost.register_argv</code> uses for a real registration — confirmed against an actual
|
|
107
|
+
<code>claude mcp add-json</code> write, not guessed at the schema) to a temp file and passes
|
|
108
|
+
<code>--strict-mcp-config --mcp-config <path></code> to every <code>claude -p</code> call,
|
|
109
|
+
cleaning the file up afterward. This session's sandbox had no network path to PyPI, so the pinned
|
|
110
|
+
toolchain (<code>pytest</code>, <code>ruff</code>, <code>mypy</code>, …) could not be installed and
|
|
111
|
+
<code>make check</code> could not be run here; the change was verified by hand instead — direct
|
|
112
|
+
<code>python3.12</code> import of the module, the new unit tests executed by eye against the
|
|
113
|
+
interpreter, <code>py_compile</code>, a manual line-length check against ruff's 88-column default,
|
|
114
|
+
and an end-to-end dry run with <code>subprocess.run</code> mocked that confirms the flags land on
|
|
115
|
+
the argv and the temp file is created and removed. CI runs the real gate on the PR.
|
|
116
|
+
|
|
117
|
+
<b>Still unwritten: the second host arm (Gemini CLI).</b> No <code>gemini</code> CLI was reachable
|
|
118
|
+
in this sandbox to capture a real stream from, and building that arm on an invented model of
|
|
119
|
+
Gemini's non-interactive output format is the exact mistake this card's own probe fix (2026-08-30)
|
|
120
|
+
already paid for once — "a fixture the author invented cannot catch the author's wrong model of the
|
|
121
|
+
input." That arm stays a placeholder until it can be built against a captured real stream, on a
|
|
122
|
+
machine with the <code>gemini</code> CLI installed.
|
|
123
|
+
|
|
103
124
|
<b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
|
|
104
125
|
next surface change can regress against, and a way to retire claims that survive only because
|
|
105
126
|
nobody can check them.
|
|
@@ -814,7 +814,7 @@ an oversight.</p></details>
|
|
|
814
814
|
</article>
|
|
815
815
|
|
|
816
816
|
<article class="cap rcard" id="tool-call-eval-tier">
|
|
817
|
-
<div class="head"><span class="pill
|
|
817
|
+
<div class="head"><span class="pill inflight">In flight</span><span class="cat">Quality · Eval</span></div>
|
|
818
818
|
<h3>a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions</h3>
|
|
819
819
|
<p>boost's required gate floors <b>four</b> retrieval metrics — recall@k ≥ 0.78, hit@1 ≥ 0.40,
|
|
820
820
|
MRR ≥ 0.52, nDCG@k ≥ 0.58 — over a 91-query golden set and a 10,152-entry corpus, every
|
|
@@ -904,6 +904,27 @@ one this card argues about.
|
|
|
904
904
|
<code>--strict-mcp-config</code> with a boost-only config cuts that sharply and controls the
|
|
905
905
|
surface confound in the same move.
|
|
906
906
|
|
|
907
|
+
<b>2026-08-31: <code>--strict-mcp-config</code> shipped.</b> <code>eval_tools.py</code> now takes
|
|
908
|
+
a <code>--strict-mcp-config</code> flag: it writes a boost-only <code>mcpServers</code> config
|
|
909
|
+
(the same <code><launcher> mcp --stdio</code> invocation and fork-safety <code>env</code>
|
|
910
|
+
<code>core.mcphost.register_argv</code> uses for a real registration — confirmed against an actual
|
|
911
|
+
<code>claude mcp add-json</code> write, not guessed at the schema) to a temp file and passes
|
|
912
|
+
<code>--strict-mcp-config --mcp-config <path></code> to every <code>claude -p</code> call,
|
|
913
|
+
cleaning the file up afterward. This session's sandbox had no network path to PyPI, so the pinned
|
|
914
|
+
toolchain (<code>pytest</code>, <code>ruff</code>, <code>mypy</code>, …) could not be installed and
|
|
915
|
+
<code>make check</code> could not be run here; the change was verified by hand instead — direct
|
|
916
|
+
<code>python3.12</code> import of the module, the new unit tests executed by eye against the
|
|
917
|
+
interpreter, <code>py_compile</code>, a manual line-length check against ruff's 88-column default,
|
|
918
|
+
and an end-to-end dry run with <code>subprocess.run</code> mocked that confirms the flags land on
|
|
919
|
+
the argv and the temp file is created and removed. CI runs the real gate on the PR.
|
|
920
|
+
|
|
921
|
+
<b>Still unwritten: the second host arm (Gemini CLI).</b> No <code>gemini</code> CLI was reachable
|
|
922
|
+
in this sandbox to capture a real stream from, and building that arm on an invented model of
|
|
923
|
+
Gemini's non-interactive output format is the exact mistake this card's own probe fix (2026-08-30)
|
|
924
|
+
already paid for once — "a fixture the author invented cannot catch the author's wrong model of the
|
|
925
|
+
input." That arm stays a placeholder until it can be built against a captured real stream, on a
|
|
926
|
+
machine with the <code>gemini</code> CLI installed.
|
|
927
|
+
|
|
907
928
|
<b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
|
|
908
929
|
next surface change can regress against, and a way to retire claims that survive only because
|
|
909
930
|
nobody can check them.</p>
|
|
@@ -911,7 +932,7 @@ nobody can check them.</p>
|
|
|
911
932
|
<span class="m">Complexity <b>L</b></span>
|
|
912
933
|
<span class="m hi">Impact <b>High</b></span>
|
|
913
934
|
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
914
|
-
<span class="m">
|
|
935
|
+
<span class="m">probe fixed; --strict-mcp-config shipped for the surface confound; second host (Gemini CLI) still unwritten</span>
|
|
915
936
|
</div>
|
|
916
937
|
</article>
|
|
917
938
|
|
|
@@ -8665,6 +8686,18 @@ from the transcript, so every message the user typed would vanish until they fou
|
|
|
8665
8686
|
The guard has to sit outside any version of boost, so the installed command ends
|
|
8666
8687
|
<code>|| true</code>.
|
|
8667
8688
|
|
|
8689
|
+
<b>First production tuning: evidence has to scale with prompt length.</b> Within an hour of
|
|
8690
|
+
release, the first real-world false positive arrived — a user pasted their own terminal session
|
|
8691
|
+
back into the chat (~90 words of <code>boost self-update</code> output) and got a full delegation
|
|
8692
|
+
banner, because <code>\bupdate\b</code> matches inside “self-<b>update</b>”. One weak
|
|
8693
|
+
hit in a wall of text. Every existing trivial gate keys on <em>shape</em> — a question, a
|
|
8694
|
+
slash command, too few words — and a pasted log is none of those, so none of them could
|
|
8695
|
+
fire. The missing signal was density: in a short prompt every word is deliberate, so one keyword
|
|
8696
|
+
is strong evidence; in a long one it is easily incidental, while a genuine long request names its
|
|
8697
|
+
work more than once (“refactor … and update …”). Past
|
|
8698
|
+
<code>LONG_PROMPT_WORDS</code> (60) the router now needs two distinct keyword hits. Verified
|
|
8699
|
+
against the real paste and against 80- and 69-word genuine requests, which still route.
|
|
8700
|
+
|
|
8668
8701
|
<b>Two keyword-table defects, found by routing real prompts rather than by reading.</b>
|
|
8669
8702
|
<code>\bfix\w*\b</code> matches “fixture” and <code>\bchange\w*\b</code> matches
|
|
8670
8703
|
“changelog” — the exact words the quality and docs tables claim — so “add
|
|
@@ -51,6 +51,7 @@ Usage:
|
|
|
51
51
|
python3 scripts/eval_tools.py --dry-run # show the plan, call nothing
|
|
52
52
|
python3 scripts/eval_tools.py --runs 3 # 3 runs per prompt
|
|
53
53
|
python3 scripts/eval_tools.py --floor-call 0.60 --ceiling-false-call 0.20
|
|
54
|
+
python3 scripts/eval_tools.py --strict-mcp-config # only boost on the MCP surface
|
|
54
55
|
"""
|
|
55
56
|
from __future__ import annotations
|
|
56
57
|
|
|
@@ -61,11 +62,15 @@ import os
|
|
|
61
62
|
import shutil
|
|
62
63
|
import subprocess
|
|
63
64
|
import sys
|
|
65
|
+
import tempfile
|
|
64
66
|
from pathlib import Path
|
|
65
67
|
|
|
66
68
|
ROOT = Path(__file__).resolve().parent.parent
|
|
67
69
|
DEFAULT_SET = ROOT / "tests" / "eval" / "tool_calls.jsonl"
|
|
68
70
|
|
|
71
|
+
sys.path.insert(0, str(ROOT))
|
|
72
|
+
from boost_cli.core import mcphost # noqa: E402
|
|
73
|
+
|
|
69
74
|
#: Tool names that count as "the agent asked boost". Prefixed forms are matched
|
|
70
75
|
#: too — hosts namespace MCP tools differently (`mcp__boost__boost_search`,
|
|
71
76
|
#: `mcp_boost_boost_search`), and matching the bare suffix keeps one list
|
|
@@ -267,15 +272,43 @@ def claude_available() -> bool:
|
|
|
267
272
|
return shutil.which("claude") is not None
|
|
268
273
|
|
|
269
274
|
|
|
270
|
-
def
|
|
275
|
+
def strict_mcp_config(launcher: str) -> dict:
|
|
276
|
+
"""The boost-only `--mcp-config` payload for a `claude -p` run.
|
|
277
|
+
|
|
278
|
+
Claude Code's own `mcpServers` shape (`{"mcpServers": {name: {"command",
|
|
279
|
+
"args", "env"}}}` — confirmed against a real `claude mcp add-json` write,
|
|
280
|
+
not guessed) with exactly one entry: boost, launched the same way
|
|
281
|
+
`core.mcphost.register_argv` registers it (`<launcher> mcp --stdio`, plus
|
|
282
|
+
`LAUNCH_ENV` — the fork-safety env a real registration always carries, and
|
|
283
|
+
whose absence is a macOS SIGABRT, not a cosmetic gap). Kept a plain
|
|
284
|
+
function, not a file write, so a test can assert the shape without
|
|
285
|
+
touching disk.
|
|
286
|
+
"""
|
|
287
|
+
return {"mcpServers": {mcphost.SERVER_NAME: {
|
|
288
|
+
"command": launcher, "args": ["mcp", "--stdio"],
|
|
289
|
+
"env": dict(mcphost.LAUNCH_ENV)}}}
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def run_claude(prompt: str, timeout: int,
|
|
293
|
+
mcp_config: Path | None = None) -> str | None:
|
|
271
294
|
"""One `claude -p` run, returning its raw event stream (or None).
|
|
272
295
|
|
|
273
296
|
`--output-format stream-json` is what makes the probe honest: it emits a
|
|
274
297
|
`tool_use` block per call, so the observation is the host's record of what
|
|
275
298
|
happened rather than the model's account of it.
|
|
299
|
+
|
|
300
|
+
`mcp_config`, when given, adds `--strict-mcp-config --mcp-config <path>` —
|
|
301
|
+
the card's own fix for the confound `_report_surface` can only report, not
|
|
302
|
+
prevent: a machine with several MCP servers registered offers every one of
|
|
303
|
+
their tools to every prompt, which moves the call rate far more than any
|
|
304
|
+
wording edit and costs real tokens describing tools this eval never asked
|
|
305
|
+
about. `--strict-mcp-config` replaces the host's merged configuration with
|
|
306
|
+
only what this file names, so the run sees boost and nothing else.
|
|
276
307
|
"""
|
|
277
308
|
cmd = ["claude", "-p", prompt, "--output-format", "stream-json",
|
|
278
309
|
"--verbose", "--max-turns", "2"]
|
|
310
|
+
if mcp_config is not None:
|
|
311
|
+
cmd += ["--strict-mcp-config", "--mcp-config", str(mcp_config)]
|
|
279
312
|
try:
|
|
280
313
|
proc = subprocess.run(cmd, capture_output=True, text=True,
|
|
281
314
|
timeout=timeout)
|
|
@@ -365,6 +398,10 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
365
398
|
p.add_argument("--report-context", action="store_true", default=True,
|
|
366
399
|
help="name the installed rules in scope (default on); a "
|
|
367
400
|
"rate read without them is not attributable to wording")
|
|
401
|
+
p.add_argument("--strict-mcp-config", action="store_true",
|
|
402
|
+
help="run with only boost on the MCP surface (--strict-mcp-config "
|
|
403
|
+
"--mcp-config), so a crowded machine's other servers don't "
|
|
404
|
+
"move the call rate or the token bill")
|
|
368
405
|
args = p.parse_args(argv)
|
|
369
406
|
|
|
370
407
|
rows = load_set(args.set)
|
|
@@ -392,16 +429,31 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
392
429
|
if args.report_context:
|
|
393
430
|
_print_context()
|
|
394
431
|
|
|
432
|
+
mcp_config_path = None
|
|
433
|
+
if args.strict_mcp_config:
|
|
434
|
+
from boost_cli.core import paths
|
|
435
|
+
config = strict_mcp_config(str(paths.launcher()))
|
|
436
|
+
fd, name = tempfile.mkstemp(suffix=".json", prefix="boost-eval-mcp-")
|
|
437
|
+
with os.fdopen(fd, "w", encoding="utf-8") as fh:
|
|
438
|
+
json.dump(config, fh)
|
|
439
|
+
mcp_config_path = Path(name)
|
|
440
|
+
print("context: --strict-mcp-config on — this run sees only boost's "
|
|
441
|
+
"own MCP server, not whatever else is registered on this machine.")
|
|
442
|
+
|
|
395
443
|
observed: dict[str, list[bool]] = {}
|
|
396
444
|
surface = (0, 0)
|
|
397
|
-
|
|
398
|
-
for
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
surface
|
|
404
|
-
|
|
445
|
+
try:
|
|
446
|
+
for r in rows:
|
|
447
|
+
for _ in range(max(1, args.runs)):
|
|
448
|
+
events = run_claude(r["prompt"], args.timeout, mcp_config_path)
|
|
449
|
+
if events is None:
|
|
450
|
+
continue
|
|
451
|
+
if surface == (0, 0):
|
|
452
|
+
surface = session_surface(events)
|
|
453
|
+
observed.setdefault(r["id"], []).append(called_boost(events))
|
|
454
|
+
finally:
|
|
455
|
+
if mcp_config_path is not None:
|
|
456
|
+
mcp_config_path.unlink(missing_ok=True)
|
|
405
457
|
if args.report_context:
|
|
406
458
|
_report_surface(*surface)
|
|
407
459
|
|
|
@@ -106,6 +106,61 @@ class TestClassifyTrivial:
|
|
|
106
106
|
"""`SKILL.md` and `store.install` must not read as end-of-sentence."""
|
|
107
107
|
assert bmad.classify("what does store.install do with SKILL.md?") == "trivial"
|
|
108
108
|
|
|
109
|
+
|
|
110
|
+
class TestEvidenceScalesWithLength:
|
|
111
|
+
"""One keyword is strong signal in a short prompt and noise in a long one.
|
|
112
|
+
|
|
113
|
+
Found in production on the day the autopilot shipped: a user pasted their
|
|
114
|
+
terminal session back into the chat and got a full delegation banner, on the
|
|
115
|
+
strength of `\\bupdate\\b` matching inside "boost self-update". ~90 words,
|
|
116
|
+
one weak hit. The shape gates could not catch it — it is not a question, not
|
|
117
|
+
a slash command, and far past the word floor — so the missing rule is about
|
|
118
|
+
evidence density, not shape.
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
# the actual paste, trimmed of ANSI and the shell prompt lines
|
|
122
|
+
PASTE = """boost self-update
|
|
123
|
+
updating via pipx: /opt/homebrew/bin/pipx upgrade boost-skill-cli
|
|
124
|
+
boost v1.0.419 -> v1.0.420
|
|
125
|
+
boost bmad on
|
|
126
|
+
BMAD autopilot ON (global) - 7 persona subagent(s) + prompt router
|
|
127
|
+
personas -> ~/.claude/agents
|
|
128
|
+
hooks -> ~/.claude/settings.json (SessionStart + UserPromptSubmit)
|
|
129
|
+
every substantive prompt now names its lead persona and its definition of
|
|
130
|
+
done; trivial asks are left alone
|
|
131
|
+
restart your agent session to pick up the new subagents
|
|
132
|
+
full BMAD workflow skills (needs Node): boost bmad install
|
|
133
|
+
boost bmad install
|
|
134
|
+
installed BMAD in /Users/cassandragaston/IdeaProjects/boost (46 skills)"""
|
|
135
|
+
|
|
136
|
+
def test_the_paste_that_prompted_this_rule_is_silent(self):
|
|
137
|
+
assert len(self.PASTE.split()) > bmad.LONG_PROMPT_WORDS
|
|
138
|
+
assert bmad.classify(self.PASTE) == "trivial"
|
|
139
|
+
|
|
140
|
+
def test_it_is_the_length_that_silences_it_not_the_words(self):
|
|
141
|
+
"""The same weak evidence in a short prompt must still route."""
|
|
142
|
+
assert bmad.classify("update the flag") == "build"
|
|
143
|
+
|
|
144
|
+
def test_a_long_prompt_with_real_evidence_still_routes(self):
|
|
145
|
+
"""Two hits is enough — genuine long asks name the work more than once."""
|
|
146
|
+
prompt = (
|
|
147
|
+
"I have been going back and forth on this for a while and I think "
|
|
148
|
+
"the cleanest thing is to refactor the retrieval layer so that the "
|
|
149
|
+
"dense engine and the BM25 engine share one index build path, "
|
|
150
|
+
"because right now they diverge in ways that are hard to reason "
|
|
151
|
+
"about and it keeps biting us whenever somebody touches either "
|
|
152
|
+
"one of them, so please update the module boundary as well while "
|
|
153
|
+
"you are in there and leave it tidy for the next person"
|
|
154
|
+
)
|
|
155
|
+
assert len(prompt.split()) > bmad.LONG_PROMPT_WORDS
|
|
156
|
+
assert bmad.classify(prompt) == "build"
|
|
157
|
+
|
|
158
|
+
def test_repeating_one_keyword_is_not_more_evidence(self):
|
|
159
|
+
"""Scoring counts distinct patterns, not occurrences — so a long log
|
|
160
|
+
that says "update" twenty times still scores 1 and stays silent."""
|
|
161
|
+
wordy = ("please update it " * 20) + ("blah " * bmad.LONG_PROMPT_WORDS)
|
|
162
|
+
assert bmad.classify(wordy) == "trivial"
|
|
163
|
+
|
|
109
164
|
def test_a_question_of_exactly_the_cutoff_length_is_trivial(self):
|
|
110
165
|
"""The boundary itself is inclusive — 30 words is still a question."""
|
|
111
166
|
prompt = ("how should we handle the case where a tap has no SKILL.md at "
|
|
@@ -314,3 +314,65 @@ class TestTheRateIsNeverReadWithoutItsContext:
|
|
|
314
314
|
monkeypatch.setattr(lockfile, "all_installed", boom)
|
|
315
315
|
MOD._print_context()
|
|
316
316
|
assert "could not read" in capsys.readouterr().out
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
class TestStrictMcpConfigControlsTheSurfaceConfound:
|
|
320
|
+
"""`--strict-mcp-config` is the card's own fix for the confound
|
|
321
|
+
`_report_surface` can only report: a crowded machine's other MCP servers
|
|
322
|
+
move the call rate far more than any wording edit under test.
|
|
323
|
+
"""
|
|
324
|
+
|
|
325
|
+
def test_the_config_names_only_boost(self):
|
|
326
|
+
from boost_cli.core import mcphost
|
|
327
|
+
cfg = MOD.strict_mcp_config("/usr/local/bin/boost")
|
|
328
|
+
assert set(cfg["mcpServers"]) == {mcphost.SERVER_NAME}
|
|
329
|
+
|
|
330
|
+
def test_the_entry_launches_boost_as_an_mcp_stdio_server(self):
|
|
331
|
+
# Mirrors core.mcphost.register_argv's own invocation of boost, so a
|
|
332
|
+
# config built here starts the exact same server a real registration
|
|
333
|
+
# would — confirmed against a real `claude mcp add-json` write, not
|
|
334
|
+
# guessed at.
|
|
335
|
+
cfg = MOD.strict_mcp_config("/usr/local/bin/boost")
|
|
336
|
+
entry = cfg["mcpServers"]["boost"]
|
|
337
|
+
assert entry["command"] == "/usr/local/bin/boost"
|
|
338
|
+
assert entry["args"] == ["mcp", "--stdio"]
|
|
339
|
+
|
|
340
|
+
def test_the_entry_carries_the_fork_safety_env(self):
|
|
341
|
+
# Without LAUNCH_ENV a real host can SIGABRT the boost subprocess
|
|
342
|
+
# post-fork on macOS — the same failure core.mcphost.LAUNCH_ENV exists
|
|
343
|
+
# to prevent for every other registration path.
|
|
344
|
+
from boost_cli.core import mcphost
|
|
345
|
+
cfg = MOD.strict_mcp_config("/usr/local/bin/boost")
|
|
346
|
+
assert cfg["mcpServers"]["boost"]["env"] == mcphost.LAUNCH_ENV
|
|
347
|
+
|
|
348
|
+
def test_run_claude_adds_no_flags_without_a_config(self, monkeypatch):
|
|
349
|
+
captured = {}
|
|
350
|
+
|
|
351
|
+
def fake_run(cmd, **kw):
|
|
352
|
+
captured["cmd"] = cmd
|
|
353
|
+
class P:
|
|
354
|
+
stdout = ""
|
|
355
|
+
return P()
|
|
356
|
+
|
|
357
|
+
monkeypatch.setattr(MOD.subprocess, "run", fake_run)
|
|
358
|
+
MOD.run_claude("hi", 5)
|
|
359
|
+
assert "--strict-mcp-config" not in captured["cmd"]
|
|
360
|
+
assert "--mcp-config" not in captured["cmd"]
|
|
361
|
+
|
|
362
|
+
def test_run_claude_adds_both_flags_with_a_config(self, monkeypatch, tmp_path):
|
|
363
|
+
captured = {}
|
|
364
|
+
|
|
365
|
+
def fake_run(cmd, **kw):
|
|
366
|
+
captured["cmd"] = cmd
|
|
367
|
+
class P:
|
|
368
|
+
stdout = ""
|
|
369
|
+
return P()
|
|
370
|
+
|
|
371
|
+
monkeypatch.setattr(MOD.subprocess, "run", fake_run)
|
|
372
|
+
cfg_path = tmp_path / "mcp.json"
|
|
373
|
+
cfg_path.write_text("{}", encoding="utf-8")
|
|
374
|
+
MOD.run_claude("hi", 5, cfg_path)
|
|
375
|
+
cmd = captured["cmd"]
|
|
376
|
+
assert "--strict-mcp-config" in cmd
|
|
377
|
+
i = cmd.index("--mcp-config")
|
|
378
|
+
assert cmd[i + 1] == str(cfg_path)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.2.65 → boost_skill_cli-1.2.67}/.vale/styles/config/vocabularies/boost/accept.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|