boost-skill-cli 1.2.112__tar.gz → 1.2.114__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.112/boost_skill_cli.egg-info → boost_skill_cli-1.2.114}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/bmad.py +60 -4
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/SOURCES.txt +7 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/bmad.md +5 -1
- boost_skill_cli-1.2.114/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +75 -0
- boost_skill_cli-1.2.114/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +70 -0
- boost_skill_cli-1.2.114/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +81 -0
- boost_skill_cli-1.2.114/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +72 -0
- boost_skill_cli-1.2.114/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +76 -0
- boost_skill_cli-1.2.114/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +74 -0
- boost_skill_cli-1.2.114/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +77 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap.html +440 -1
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_bmad_core.py +87 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.gitattributes +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.gitignore +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/.vale.ini +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/DCO +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/LICENSE +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/Makefile +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/README.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/report.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/codecov.yml +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/index.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/README.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/examples/README.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/index.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/noxfile.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/setup.cfg +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/README.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/boost.css +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/boost.js +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/style/demo.html +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_bmad_personas_scope.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_json_reports.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_recommend_because_is_true.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_reports_match_reality.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_catalog_keyword_words.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_count_flags_use_positive_int.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_launcher_python_floor.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag_completeness.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_report.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_visual_harness_capture.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.112 → boost_skill_cli-1.2.114}/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.114'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 114)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -389,7 +389,54 @@ under-route than talk over someone.
|
|
|
389
389
|
"""
|
|
390
390
|
|
|
391
391
|
|
|
392
|
-
|
|
392
|
+
_NOT_INTENT = re.compile(
|
|
393
|
+
r"```.*?```" # fenced code
|
|
394
|
+
r"|`[^`\n]*`" # inline code
|
|
395
|
+
r"|\b(?:https?|ftp)://\S+|\bwww\.\S+" # URLs
|
|
396
|
+
r"|(?<!\S)--?[a-z]\S*" # --flag, -f, --flag=value
|
|
397
|
+
r"|\b(?:story|ticket|issue|epic|task|bug|card|pr)\s+"
|
|
398
|
+
r"(?:[a-z][a-z0-9]*-\d+|#\d+)\b", # story ABC-123, issue #42
|
|
399
|
+
re.IGNORECASE | re.DOTALL)
|
|
400
|
+
"""Text that names something rather than asking for anything.
|
|
401
|
+
|
|
402
|
+
A prompt of up to :data:`LONG_PROMPT_WORDS` routes on one keyword, so one match
|
|
403
|
+
anywhere decided the track — including words nobody meant as intent. "rerun the
|
|
404
|
+
installer with --scope global" went to product on `\\bscope\\b`, a link to
|
|
405
|
+
`https://example.com/docs/...` went to docs, "move story ABC-123 to in progress"
|
|
406
|
+
went to product. These spans are removed before any table is scored.
|
|
407
|
+
"""
|
|
408
|
+
|
|
409
|
+
_PATH_TOKEN = re.compile(r"\S*/\S*")
|
|
410
|
+
"""A token with a `/` in it: a path, which `build` does not score.
|
|
411
|
+
|
|
412
|
+
"tail logs/build/server.log" is not a build. The rule is build-only because a
|
|
413
|
+
path is often the object of the ask — "update docs/README.md" must stay docs —
|
|
414
|
+
and build is the catch-all whose single hits are the cheapest.
|
|
415
|
+
"""
|
|
416
|
+
|
|
417
|
+
_ADDRESSEE = re.compile(r"\b\w+\s+(?:me|us)\b", re.IGNORECASE)
|
|
418
|
+
"""A verb aimed at the user, not the code: "update me when the CI run finishes".
|
|
419
|
+
|
|
420
|
+
Build-only for the same reason as :data:`_PATH_TOKEN` — every build keyword is
|
|
421
|
+
a verb that also reads as a request to *tell* someone something.
|
|
422
|
+
"""
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
def _intent_text(text: str, root: Path | str | None) -> str:
|
|
426
|
+
"""`text` with everything that is not intent blanked out, for scoring.
|
|
427
|
+
|
|
428
|
+
The repo's own directory name goes too, whole-word: in a checkout called
|
|
429
|
+
`migrations`, "list the last three commits in migrations" is a `git log`,
|
|
430
|
+
not a migration. The hook already knows the root; this is where it counts.
|
|
431
|
+
"""
|
|
432
|
+
text = _NOT_INTENT.sub(" ", text)
|
|
433
|
+
if root is not None and Path(root).name:
|
|
434
|
+
text = re.sub(r"(?<!\w)%s(?!\w)" % re.escape(Path(root).name), " ",
|
|
435
|
+
text, flags=re.IGNORECASE)
|
|
436
|
+
return text
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
def classify(prompt: str, root: Path | str | None = None) -> str:
|
|
393
440
|
"""Name the track a prompt belongs to, or ``"trivial"`` to stay silent.
|
|
394
441
|
|
|
395
442
|
Silence is the default for anything that is not recognisably a unit of
|
|
@@ -397,6 +444,11 @@ def classify(prompt: str) -> str:
|
|
|
397
444
|
own instructions), a short informational question, an explicit opt-out
|
|
398
445
|
("no bmad"), a prompt that matches no track at all, or — past
|
|
399
446
|
:data:`LONG_PROMPT_WORDS` — one that matches only a single keyword.
|
|
447
|
+
|
|
448
|
+
Only intent is scored (:func:`_intent_text`): code spans, URLs, flags,
|
|
449
|
+
tracker IDs and the name of ``root`` — the repo the prompt was typed in —
|
|
450
|
+
never count, and ``build`` additionally ignores paths and verbs addressed
|
|
451
|
+
to the user. The threshold stays where it is; the evidence got cleaner.
|
|
400
452
|
"""
|
|
401
453
|
text = prompt.strip()
|
|
402
454
|
if not text or _SLASH.match(text) or _OPT_OUT.search(text):
|
|
@@ -407,9 +459,12 @@ def classify(prompt: str) -> str:
|
|
|
407
459
|
if (_INFO_QUESTION.match(text) and len(words) <= QUESTION_MAX_WORDS
|
|
408
460
|
and not _SECOND_SENTENCE.search(text)):
|
|
409
461
|
return TRIVIAL
|
|
462
|
+
intent = _intent_text(text, root)
|
|
463
|
+
build_intent = _ADDRESSEE.sub(" ", _PATH_TOKEN.sub(" ", intent))
|
|
410
464
|
# Distinct patterns matched, not occurrences: saying "update" twenty times
|
|
411
465
|
# is one piece of evidence, which is what keeps a repetitive log quiet.
|
|
412
|
-
scores = {t: sum(1 for rx in pats
|
|
466
|
+
scores = {t: sum(1 for rx in pats
|
|
467
|
+
if rx.search(build_intent if t == "build" else intent))
|
|
413
468
|
for t, pats in _COMPILED.items()}
|
|
414
469
|
best = max(scores.values())
|
|
415
470
|
if best == 0 or (best < 2 and len(words) > LONG_PROMPT_WORDS):
|
|
@@ -526,12 +581,13 @@ def route_lines(prompt: str, root: Path | None = None) -> list[str]:
|
|
|
526
581
|
Kept to a handful of lines on purpose — this is prepended to *every*
|
|
527
582
|
substantive prompt, so its cost is paid on each turn of every session.
|
|
528
583
|
"""
|
|
529
|
-
|
|
584
|
+
root = Path(root) if root is not None else Path.cwd()
|
|
585
|
+
track_name = classify(prompt, root)
|
|
530
586
|
if track_name == TRIVIAL:
|
|
531
587
|
return []
|
|
532
588
|
track = TRACKS[track_name]
|
|
533
589
|
lead = PERSONA_BY_SLUG[track.lead]
|
|
534
|
-
signals = project_signals(
|
|
590
|
+
signals = project_signals(root)
|
|
535
591
|
|
|
536
592
|
lines = [
|
|
537
593
|
"[BMAD autopilot] track: %s" % track_name,
|
|
@@ -329,7 +329,14 @@ docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md
|
|
|
329
329
|
docs/roadmap/items/bm25-has-no-stemming.md
|
|
330
330
|
docs/roadmap/items/bm25-index-is-one-json-blob.md
|
|
331
331
|
docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md
|
|
332
|
+
docs/roadmap/items/bmad-done-contract-ignores-the-track.md
|
|
333
|
+
docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md
|
|
332
334
|
docs/roadmap/items/bmad-hooks-all-hosts.md
|
|
335
|
+
docs/roadmap/items/bmad-personas-delegate-outside-the-router.md
|
|
336
|
+
docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md
|
|
337
|
+
docs/roadmap/items/bmad-route-ignores-autopilot-state.md
|
|
338
|
+
docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md
|
|
339
|
+
docs/roadmap/items/bmad-router-reads-each-prompt-alone.md
|
|
333
340
|
docs/roadmap/items/boost-first-carried-the-losing-trigger.md
|
|
334
341
|
docs/roadmap/items/boost-first-rule.md
|
|
335
342
|
docs/roadmap/items/boost-langchain-publishing.md
|
|
@@ -75,7 +75,11 @@ instead of being remembered afterwards.
|
|
|
75
75
|
|
|
76
76
|
The router costs a question nothing. Acknowledgements, slash commands, short
|
|
77
77
|
informational questions ("what does `scan_dir` do?") and anything containing
|
|
78
|
-
`no bmad` produce no banner at all.
|
|
78
|
+
`no bmad` produce no banner at all. A short prompt routes on a single keyword, so
|
|
79
|
+
only intent is scored: code spans, URLs, `--flags`, tracker IDs such as
|
|
80
|
+
`story ABC-123` and the name of the repo you are in never count, and the `build`
|
|
81
|
+
track also ignores paths and verbs aimed at you ("update me when CI finishes").
|
|
82
|
+
Because a `UserPromptSubmit` hook that exits
|
|
79
83
|
non-zero would erase your prompt, it degrades every failure to silence and
|
|
80
84
|
always exits 0.
|
|
81
85
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bmad-done-contract-ignores-the-track
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: next
|
|
6
|
+
category: "Agents · BMAD"
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 2
|
|
10
|
+
note: a review or research ask is told to add tests and finish a change
|
|
11
|
+
order: 321
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: "<code>boost bmad</code> gives every track the build contract, so a review is told to finish a change"
|
|
15
|
+
---
|
|
16
|
+
<code>route_lines</code> (<code>core/bmad.py:523</code>) takes the first four banner lines from the track
|
|
17
|
+
and the last two ignore it: <code>done_checklist(signals)</code> (<code>:483</code>) has no
|
|
18
|
+
track parameter, and the autonomy sentence (<code>:551</code>) is a literal. One prompt per track against
|
|
19
|
+
one fixture repo gave <b>one distinct pair of closing lines across all 9 tracks</b>:<br>
|
|
20
|
+
<code>Done means: tests: add or update coverage under `tests/`, and run them · docs: update `README.md` / `docs/` wherever the change shows · gate: `make check` green, with real output · `CLAUDE.md` is binding</code><br>
|
|
21
|
+
<code>Work autonomously through to a finished, verified change; stop to ask only when a choice would change what gets delivered.</code>
|
|
22
|
+
|
|
23
|
+
<b>Repro</b> (throwaway repo with <code>tests/</code>, <code>docs/</code>, <code>README.md</code>,
|
|
24
|
+
<code>CLAUDE.md</code>, and a <code>Makefile</code> with <code>check:</code>).
|
|
25
|
+
<code>boost bmad route "review the changes on this branch and tell me what could break" --plain</code>
|
|
26
|
+
names Murat (<code>bmad-tea</code>) as lead with <code>bmad-code-review</code>, then defines done as new
|
|
27
|
+
coverage, updated docs and a finished, verified change. <code>"compare the two caching options and recommend one"</code>,
|
|
28
|
+
<code>"write the PRD for the policy engine"</code> and <code>"prioritize the backlog for next sprint"</code>
|
|
29
|
+
get the same two lines. In an empty repo the comparison is told <code>tests: cover the change … docs: write down what changed</code>, but nothing changed.
|
|
30
|
+
The shared lines are 48% of the fixture's review banner (326 of 673 chars) and 41% in the empty repo.
|
|
31
|
+
|
|
32
|
+
<b>Against real prompts the clause seldom fits.</b> Replaying the origin/main classifier over one
|
|
33
|
+
profile's history (417 ordinary prompts over 6 active days, roughly half from tooling repos): 147 (35%)
|
|
34
|
+
would get a banner, or 109 if pasted text is not in the hook's <code>prompt</code> field (not yet
|
|
35
|
+
checked). A <em>single judge</em> (an agent) labelled 41 routed banners, sampled by track: <code>Done means</code>
|
|
36
|
+
fit <b>5 of 41</b> (11 counting partial fits).
|
|
37
|
+
|
|
38
|
+
<b>The same contract appears in three places, and one was a deliberate choice.</b> The autopilot item
|
|
39
|
+
made tests and docs unconditional (“no doc change needed” is a conclusion to reach), and
|
|
40
|
+
<code>tests/unit/test_bmad_core.py:331</code> enforces that. It is right for a change and wrong for an
|
|
41
|
+
answer. Every persona file repeats the contract (<code>_persona_text</code>,
|
|
42
|
+
<code>core/bmad.py:663–667</code>: “tests updated and actually run, documentation left true …”),
|
|
43
|
+
so the <code>bmad-analyst</code> a discovery banner hands off to brings it back. The SessionStart
|
|
44
|
+
briefing says to follow the banner (<code>:576</code>) and ends on a tests-docs-item house rule
|
|
45
|
+
(<code>:586</code>).
|
|
46
|
+
|
|
47
|
+
<b>The autonomy line competes with approval gates users add on purpose</b>, such as the
|
|
48
|
+
<code>HARD-GATE</code> in superpowers' <code>brainstorming</code> skill (no implementation until the user
|
|
49
|
+
approves) or a team rule requiring confirmation before a change that affects production. The banner is
|
|
50
|
+
<code>UserPromptSubmit</code> <code>additionalContext</code> (<code>commands/bmad.py:354</code>), added
|
|
51
|
+
again on every routed prompt. <b>Untested:</b> which instruction a model follows when they
|
|
52
|
+
conflict. Softening the line to defer to the repo guide would not cover this: the <code>is binding</code>
|
|
53
|
+
clause only appears when a guide file exists (<code>core/bmad.py:514–516</code>), and a plugin skill is not a guide file.
|
|
54
|
+
|
|
55
|
+
<b>Fix: store the kind of done on <code>Track</code></b> (<code>core/bmad.py:75</code>) and pass it to
|
|
56
|
+
<code>done_checklist(signals, done)</code>. <i>change</i> (build, quality, docs, ux): today's clauses,
|
|
57
|
+
unchanged. <i>findings</i> (review, discovery): “findings with evidence, no edits unless
|
|
58
|
+
asked”. The “unless asked” matters because the tie-break sends <code>"fix the lint
|
|
59
|
+
errors in the scanner"</code> to review and <code>"investigate why the export crashes and fix it"</code>
|
|
60
|
+
to discovery. <i>artifact</i> (product, planning, architecture): “a written artifact, no
|
|
61
|
+
code”, keeping the roadmap and guide clauses. Drop the autonomy line from
|
|
62
|
+
findings and artifact tracks. On change tracks, replace it with wording that does not depend on a
|
|
63
|
+
guide file: finish and verify, and still honour any approval step that the guide or a loaded skill
|
|
64
|
+
requires. <code>_persona_text</code> should state the contract for each kind, since
|
|
65
|
+
<code>bmad-tea</code> leads both quality and review. The house rule should name all three kinds.
|
|
66
|
+
|
|
67
|
+
<b>Tests go in <code>tests/unit/test_bmad_core.py</code>.</b> Assert every <code>TRACKS</code> entry
|
|
68
|
+
declares a kind, and that no findings or artifact banner has a <code>tests:</code> clause.
|
|
69
|
+
Add verbatim review and discovery banners next to <code>test_the_whole_banner_is_exactly_this</code>
|
|
70
|
+
(<code>:396</code>), whose build pin keeps its <code>Done means</code> line and takes the new closing line.
|
|
71
|
+
Limit <code>:331</code> to change tracks. <code>:376</code> pins <code>autonom</code> on one build banner:
|
|
72
|
+
move it to the new wording and assert the line is absent from findings and artifact banners.
|
|
73
|
+
<code>:688</code> only checks that each persona file mentions tests and docs, so pin the per-kind persona
|
|
74
|
+
contract directly. Out of scope: router accuracy (same single judge: track or lead clearly wrong on
|
|
75
|
+
21 of 41) is a separate defect.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bmad-gemini-gets-claude-hook-output
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: next
|
|
6
|
+
category: "Agents · BMAD"
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 2
|
|
10
|
+
note: gemini takes the banner but shows the briefing to the user
|
|
11
|
+
order: 324
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: On Gemini, the <code>bmad on</code> briefing reaches the user and never the model
|
|
15
|
+
---
|
|
16
|
+
<code>boost bmad on</code> installs both autopilot hooks on Claude always, and on Gemini whenever
|
|
17
|
+
<code>gemini</code> is on <code>PATH</code> <em>or</em> <code>~/.gemini/</code> exists
|
|
18
|
+
(<code>commands/bmad.py:177</code>). It has no <code>--host</code>
|
|
19
|
+
(<code>:98</code>–<code>112</code>), so Claude-only means hand-editing Gemini's settings, and the
|
|
20
|
+
next <code>bmad on</code> re-adds what was deleted. The <a href="#bmad-hooks-all-hosts">fan-out</a> translated event names and timeout
|
|
21
|
+
units, but left stdout in Claude's format. Checked against <b>Gemini CLI 0.57.0</b>: its bundled
|
|
22
|
+
hook runner was read, then imported and driven against main's hooks in a throwaway
|
|
23
|
+
<code>HOME</code> with only an empty <code>.gemini/</code>.
|
|
24
|
+
|
|
25
|
+
<b>The router works, so this is narrower than hooks that do nothing.</b> Gemini's
|
|
26
|
+
<code>BeforeAgent</code> input has <code>prompt</code> and <code>cwd</code> under the names
|
|
27
|
+
<code>_route</code> reads (<code>:341</code>–<code>342</code>), and <code>hookEventName</code> is
|
|
28
|
+
never validated, so the hardcoded <code>"UserPromptSubmit"</code> (<code>:353</code>) is harmless.
|
|
29
|
+
Measured: <b><code>outputFormat: json</code>, 643 chars of <code>additionalContext</code></b> for a
|
|
30
|
+
build-track banner.
|
|
31
|
+
|
|
32
|
+
<b>The briefing never reaches the model.</b> <code>_orient</code> prints plain text
|
|
33
|
+
(<code>:530</code>), which Claude Code adds to context. Gemini turns non-JSON stdout into
|
|
34
|
+
<code>{decision: "allow", systemMessage: text}</code> and adds only <code>additionalContext</code>
|
|
35
|
+
to history. Measured: <b><code>systemMessage</code> 1,297 chars, <code>additionalContext</code>
|
|
36
|
+
0</b>. The 26-line briefing is shown to the user as an info message instead, on
|
|
37
|
+
<code>startup</code>, <code>resume</code> and <code>/clear</code>.
|
|
38
|
+
|
|
39
|
+
<b>What does reach the model is framed as data, and names tools Gemini lacks.</b> Gemini wraps
|
|
40
|
+
<code>additionalContext</code> in <code><hook_context></code>, and its default system prompt
|
|
41
|
+
says to treat that as "<b>read-only data</b> or <b>informational context</b>". The banner is all
|
|
42
|
+
instructions. It names a <code>bmad-dev</code> subagent and spawning support personas with the Agent
|
|
43
|
+
tool (<code>core/bmad.py:538</code>, <code>:543</code>), and the briefing puts the personas in
|
|
44
|
+
<code>~/.claude/agents</code> (<code>:570</code>). Gemini's subagent tool is
|
|
45
|
+
<code>invoke_agent</code>, and boost writes no personas for it. <em>Not measured:</em> whether a
|
|
46
|
+
Gemini model follows the banner anyway, since no live model call was made. <em>Also seen:</em>
|
|
47
|
+
Gemini parses stderr when stdout is empty, so a launcher that rejects the action shows its argparse
|
|
48
|
+
error as a <code>systemMessage</code> despite <code>|| true</code> (simulated once, 330 chars).
|
|
49
|
+
|
|
50
|
+
<b>Proposed fix.</b> <i>(1)</i> <code>bmad on</code> and <code>startup on</code> take <code>--host
|
|
51
|
+
claude|gemini|auto</code>, the choices <code>boost hooks --host</code> has
|
|
52
|
+
(<code>commands/hooks.py:45</code>), with <code>auto</code> as today's evidence rule. <i>(2)</i>
|
|
53
|
+
Gemini's hooks run <code>bmad route --host gemini</code> and <code>bmad orient … --host
|
|
54
|
+
gemini</code>. Claude's commands stay byte-identical. <i>(3)</i> A pure
|
|
55
|
+
<code>hookhost.context_output(host, event, text)</code> formats stdout: Claude's is unchanged, and
|
|
56
|
+
Gemini always gets JSON, with <code>hookEventName</code> from <code>translate()</code> and the text in
|
|
57
|
+
<code>additionalContext</code>. That reaches the model on startup and resume, not after
|
|
58
|
+
<code>/clear</code>, whose Gemini path reads only <code>systemMessage</code>. <i>(4)</i>
|
|
59
|
+
<code>route_lines</code> and <code>orientation</code> take the host. On Gemini the lead is a role
|
|
60
|
+
to adopt, with no subagent, Agent tool or <code>~/.claude</code> wording.
|
|
61
|
+
|
|
62
|
+
<b>Tests.</b> <code>tests/unit/test_hookhost.py</code>: for each host and both events, Gemini output
|
|
63
|
+
passes <code>json.loads</code> with the text in <code>additionalContext</code> (plain text is the
|
|
64
|
+
regression), and Claude output matches today's bytes. <code>tests/unit/test_bmad_core.py</code>: the
|
|
65
|
+
Gemini banner and briefing name no subagent, Agent tool or <code>~/.claude</code>. Parametrize
|
|
66
|
+
<code>test_emits_the_hook_json_contract</code> by host
|
|
67
|
+
(<code>tests/functional/test_cli_bmad.py:480</code>, which pins <code>"UserPromptSubmit"</code> at
|
|
68
|
+
<code>:492</code>). In <code>tests/functional/test_bmad_all_hosts.py</code>, assert that Gemini's
|
|
69
|
+
commands carry <code>--host gemini</code> and that <code>--host claude</code> never writes
|
|
70
|
+
<code>~/.gemini/settings.json</code>.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bmad-personas-delegate-outside-the-router
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: next
|
|
6
|
+
category: "Agents · BMAD"
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: router silence is banner-only, and nobody has counted
|
|
11
|
+
order: 325
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: "Persona descriptions say <code>Use PROACTIVELY</code>, so the router's silence governs only the banner"
|
|
15
|
+
---
|
|
16
|
+
<code>boost bmad on</code> gives Claude Code two routes to a persona, and only one goes through the router.
|
|
17
|
+
The banner is gated: <code>classify</code> returns <code>trivial</code> for slash commands and
|
|
18
|
+
<code>no bmad</code> (<code>boost_cli/core/bmad.py:402</code>), short informational questions (<code>:407</code>)
|
|
19
|
+
and thin keyword evidence (<code>:415</code>). The other route is the <code>description:</code> line of the
|
|
20
|
+
seven persona files written into <code>~/.claude/agents/</code> (<code>boost_cli/commands/bmad.py:258</code>),
|
|
21
|
+
which <code>persona_description</code> renders as <code><Name>, <Title> (BMAD <module>). Use
|
|
22
|
+
PROACTIVELY for <triggers>.</code> (<code>boost_cli/core/bmad.py:594</code>). Neither that line nor the
|
|
23
|
+
persona body (<code>:642</code>) ties spawning to the router; the body's one mention has Amelia read the gate
|
|
24
|
+
command off its banner (<code>:91</code>).
|
|
25
|
+
|
|
26
|
+
<b>Claude Code reads that line as a delegation rule.</b> The sub-agents docs define <code>description</code>
|
|
27
|
+
as “When Claude should delegate to this subagent”, name it alongside the request and current
|
|
28
|
+
context as what automatic delegation is based on, and advise: “To encourage proactive delegation,
|
|
29
|
+
include phrases like ‘use proactively’ in your subagent's description field.” So the
|
|
30
|
+
router's tuned silence and the <code>no bmad</code> opt-out decide whether a banner is added, not whether a
|
|
31
|
+
persona gets spawned.
|
|
32
|
+
|
|
33
|
+
<b>The repo's own silent-prompt fixtures read like the triggers.</b> <code>what does scan_dir do?</code>,
|
|
34
|
+
<code>fix the flaky test in test_catalog, no bmad</code> and <code>/code-review fix the failing tests in the
|
|
35
|
+
catalog scanner</code> (<code>tests/unit/test_bmad_core.py:48</code>, <code>:68</code>, <code>:86</code>) all
|
|
36
|
+
classify <code>trivial</code> with a 0-char banner on origin/main, yet Paige covers “explaining a system
|
|
37
|
+
to the next person who touches it”, Murat “flaky suites” and Amelia “fixing a bug
|
|
38
|
+
… or any change that ends in edited source files” (<code>boost_cli/core/bmad.py:183</code>–<code>218</code>).
|
|
39
|
+
Replayed over one real Claude Code profile's history (318 unique non-slash prompts up to 2,000 chars, 6 active
|
|
40
|
+
days), <b>60.7%</b> classify trivial and <b>55.7%</b> match no keyword. Little pushes back. The
|
|
41
|
+
<code>SessionStart</code> briefing says “Trivial asks get no banner — answer those directly”
|
|
42
|
+
(<code>:576</code>), but also that personas “are delegated to with the Agent tool” (<code>:570</code>),
|
|
43
|
+
and its hook does not fire on compaction (matcher <code>startup|resume|clear</code>,
|
|
44
|
+
<code>boost_cli/commands/bmad.py:84</code>). A <code>no bmad</code> prompt carries its own words, but nothing
|
|
45
|
+
says they cover the personas.
|
|
46
|
+
|
|
47
|
+
<b>Unmeasured, and the measurement could close this item.</b> Nobody has counted delegations on silent
|
|
48
|
+
prompts. Banner cost is countable (mean ~650 chars, ~163 tokens on that profile), while a description-triggered
|
|
49
|
+
spawn would be a whole subagent run that no banner count sees. That is inference, but it limits the claim that
|
|
50
|
+
the router “costs a question nothing” (<code>docs/bmad.md:76</code>,
|
|
51
|
+
<code>boost_cli/commands/bmad.py:14</code>) to the banner. Measure from a HOME with no persona files or boost
|
|
52
|
+
hooks: run each router-trivial prompt (the fixtures plus the trivial slice of a real history) as
|
|
53
|
+
<code>claude -p <prompt> --output-format stream-json --verbose</code> with the briefing via
|
|
54
|
+
<code>--append-system-prompt</code>, in three arms that differ only in the session-only <code>--agents</code>
|
|
55
|
+
flag (no personas, shipped descriptions, fixed descriptions). Count <code>Agent</code> <code>tool_use</code>
|
|
56
|
+
blocks whose <code>subagent_type</code> starts with <code>bmad-</code>, in messages with a null
|
|
57
|
+
<code>parent_tool_use_id</code>. Cost is on the stream's last line. A fourth arm runs routed prompts with the
|
|
58
|
+
real hook via <code>--settings</code>, to check that the fix still delegates when the slug arrives in hook-added
|
|
59
|
+
context rather than typed by the user. If the shipped arm spawns no more <code>bmad-*</code> subagents than the
|
|
60
|
+
no-persona arm, record that here and close the item.
|
|
61
|
+
|
|
62
|
+
<b>Proposed fix: make the banner the trigger.</b> Drop <code>Use PROACTIVELY</code> and have
|
|
63
|
+
<code>persona_description</code> say when the persona applies, e.g. <code>Amelia, Senior Software Engineer
|
|
64
|
+
(BMAD bmm). Use when a [BMAD autopilot] routing banner names bmad-dev, or the user asks for it by name.
|
|
65
|
+
Covers implementing a feature, fixing a bug, …</code>. The banner already names lead and support by
|
|
66
|
+
slug, and the docs say that when you name a subagent in your prompt “Claude typically delegates”.
|
|
67
|
+
Silent prompts would then leave only the briefing's roster pointing at a persona. If the conditional wording
|
|
68
|
+
fails the measurement, fall back to plain scope descriptions with no imperative. Until the fix lands,
|
|
69
|
+
<code>permissions.deny</code> on <code>Agent(bmad-dev)</code> and the rest stops the spawns but blocks
|
|
70
|
+
banner-led delegation too. <code>docs/bmad.md:76</code>–<code>78</code> should say that the opt-out and
|
|
71
|
+
the silence apply only to the banner. That doc change needs no measurement and can land now.
|
|
72
|
+
|
|
73
|
+
<b>Tests.</b> Extend <code>tests/unit/test_bmad_core.py</code>.
|
|
74
|
+
<code>TestPersonaFiles.test_the_frontmatter_block_is_exactly_this</code> (<code>:485</code>) pins Sally's
|
|
75
|
+
description byte for byte and must take the new text. <code>test_persona_descriptions_are_delegation_triggers</code>
|
|
76
|
+
(<code>:694</code>) checks only length and that there is no newline. It should also assert that every
|
|
77
|
+
description lacks <code>proactively</code> in any case and contains its persona's slug.
|
|
78
|
+
<code>test_explicit_opt_out_is_honored</code> (<code>:71</code>) proves only that the classifier stays silent,
|
|
79
|
+
and no unit test can observe delegation, so the headless run is the acceptance check. Only re-running
|
|
80
|
+
<code>boost bmad on</code> rewrites unedited persona files (<code>boost_cli/core/bmad.py:672</code>), so the
|
|
81
|
+
release note must tell users to re-run it.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bmad-roster-drifted-from-bmad-6-12
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: next
|
|
6
|
+
category: "Agents · BMAD"
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 2
|
|
10
|
+
note: docs routes at a skill no default 6.12 install contains
|
|
11
|
+
order: 323
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: The autopilot routes docs at a skill BMAD 6.12 no longer installs, and no test would notice
|
|
15
|
+
---
|
|
16
|
+
<code>core/bmad.py</code> hard-codes upstream skill names in persona <code>skills</code> and track
|
|
17
|
+
<code>skill</code>, while <code>boost bmad install</code> fetches <code>bmad-method@latest</code>
|
|
18
|
+
(<code>commands/bmad.py:410</code>). The tests check the two tables only against <em>each other</em>
|
|
19
|
+
(<code>tests/unit/test_bmad_core.py:207</code>) and <code>orientation()</code> against a three-name
|
|
20
|
+
denylist (<code>:431</code>), so a name that goes stale in both tables passes.
|
|
21
|
+
|
|
22
|
+
<b>Against a real install, one name is gone.</b> A pinned <code>bmad-method@6.12.0</code> install
|
|
23
|
+
(<code>--tools claude-code --modules bmm</code>) wrote <b>29</b> skills, matching its
|
|
24
|
+
<code>skill-manifest.csv</code> <code>canonicalId</code> column exactly. <b>12 of the 13</b> names in
|
|
25
|
+
<code>PERSONAS</code>/<code>TRACKS</code> are present, as are all 11 in <code>orientation()</code>. The missing
|
|
26
|
+
one is <code>bmad-document-project</code>, the docs track's skill (<code>core/bmad.py:263</code>) and Paige's
|
|
27
|
+
only one (<code>:229</code>). v6.11.0 turned it into a <code>v6-shims/</code> forwarder for
|
|
28
|
+
<code>bmad-project-context</code> (#2674), and v6.12.0 made shims opt-in on fresh installs. boost passes
|
|
29
|
+
no <code>--shims</code>, so the install records <code>installShims: false</code>. Every docs banner still
|
|
30
|
+
says <code>invoke it if it is installed</code> (<code>:548</code>). Paige also supports the catch-all
|
|
31
|
+
<code>build</code> track (<code>:256</code>), so build banners also ask for a subagent whose file names that skill.
|
|
32
|
+
|
|
33
|
+
<b>The shipped item's account of Paige is half right.</b> “On hiatus” matches 6.12.0's
|
|
34
|
+
<code>removals.txt</code>, but it also says <code>bmad-agent-tech-writer</code> “never existed to
|
|
35
|
+
invoke”. <code>removals.txt</code> lists it under removed bmm agents as <em>“retired —
|
|
36
|
+
capabilities were generic LLM defaults”</em> (v6.11.0, #2658). That is the same release that shimmed
|
|
37
|
+
the one skill boost gave her.
|
|
38
|
+
|
|
39
|
+
<b><code>install --scope global</code> leaves the build skill broken.</b> Run from origin/main against a
|
|
40
|
+
throwaway HOME, it printed <code>installed 29 BMAD skill(s) globally</code>. <code>bmad-build</code> and
|
|
41
|
+
<code>bmad-build-auto</code>, the only 2 of the 29 that do this, start by running
|
|
42
|
+
<code>{project-root}/_bmad/scripts/render_skill.py</code> and HALT if it fails. In a repo without
|
|
43
|
+
<code>_bmad/</code> that is <code>uv</code> exit 2, <code>Failed to spawn … No such file or directory</code>.
|
|
44
|
+
The install prints one dim line about <code>boost bmad init</code> (<code>commands/bmad.py:448</code>)
|
|
45
|
+
that does not name those skills.
|
|
46
|
+
|
|
47
|
+
<b>The global path also hides drift.</b> On either scope, installer output is captured
|
|
48
|
+
(<code>commands/bmad.py:415</code>), and only a failure's last line is shown (<code>:422</code>). Global
|
|
49
|
+
state records no version (<code>:444</code>, unlike <code>:472</code>), and the staged
|
|
50
|
+
<code>manifest.yaml</code> that has one is deleted (<code>:496</code>). The copy replaces only directories
|
|
51
|
+
the new stage has (<code>:486</code>). Upstream's own cleanup removes what the previous manifest listed plus
|
|
52
|
+
<code>removals.txt</code> entries, but it runs inside the empty stage, never against
|
|
53
|
+
<code>~/.claude/skills</code>. With the installer stubbed to emit the real 6.12.0 output, a pre-existing
|
|
54
|
+
<code>bmad-document-project</code> survived (30 directories on disk).
|
|
55
|
+
|
|
56
|
+
<b>Fix.</b> <i>(1)</i> Add <code>BMAD_VERSION = "6.12.0"</code> in <code>core/bmad.py</code> and install that,
|
|
57
|
+
not <code>@latest</code>. <i>(2)</i> Check in that install's <code>canonicalId</code> column as a versioned
|
|
58
|
+
snapshot. Add a test in <code>tests/unit/test_bmad_core.py</code> that every persona, track and
|
|
59
|
+
<code>orientation()</code> skill is in it and that its version equals <code>BMAD_VERSION</code>. A pin bump
|
|
60
|
+
without a regenerated snapshot then fails CI, and the denylist at <code>test_bmad_core.py:431</code> is
|
|
61
|
+
redundant. <i>(3)</i> Make <code>Track.skill</code> optional, drop it for <code>docs</code> (so the banner
|
|
62
|
+
omits that line and <code>:207</code> skips the row), and give Paige <code>bmad-project-context</code> for
|
|
63
|
+
agent-instruction files only. <i>(4)</i> Have <code>install --scope global</code> name the build skills
|
|
64
|
+
that need <code>boost bmad init</code> per repo, and record the staged version and skill list. On reinstall,
|
|
65
|
+
it should remove recorded skills the new stage lacks, not every <code>bmad-*</code> directory, since some may
|
|
66
|
+
be the user's own. Extend <code>tests/functional/test_cli_bmad.py</code>, which asserts <code>@latest</code>
|
|
67
|
+
(<code>:74</code>) and reinstalls the same three skills twice (<code>:264</code>).
|
|
68
|
+
|
|
69
|
+
<b>Declined: routing <code>docs</code> at <code>bmad-project-context</code>.</b> Upstream names it as the
|
|
70
|
+
replacement, but it manages a block in <code>AGENTS.md</code> (“Use when invoked by name”), and
|
|
71
|
+
the shim says deeper docs material is “not part of that block”. Sending every README edit there
|
|
72
|
+
would trade a dead pointer for a misroute.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bmad-route-ignores-autopilot-state
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: next
|
|
6
|
+
category: Agents · BMAD
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 2
|
|
10
|
+
note: the briefing hook checks state, the router never does
|
|
11
|
+
order: 322
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: <code>bmad route</code> never checks autopilot state, so any hook <code>off</code> missed keeps routing
|
|
15
|
+
---
|
|
16
|
+
The two autopilot hooks disagree about what decides whether they speak. <code>_orient</code>
|
|
17
|
+
(<code>boost_cli/commands/bmad.py:525-531</code>) prints only when its scope's state says so, and its hook names the
|
|
18
|
+
scope (<code>:266-268</code>). <code>_route</code> (<code>:331-356</code>) reads the prompt and the payload
|
|
19
|
+
<code>cwd</code> and nothing else, and its hook is a bare <code><launcher> bmad route || true</code>
|
|
20
|
+
(<code>:269-270</code>). Only <code>status</code> reads the <code>autopilot</code> flag, and it already applies the
|
|
21
|
+
right rule: on means state <em>and</em> hook (<code>:625</code>, pinned by
|
|
22
|
+
<code>test_autopilot_reads_as_off_when_the_hook_is_gone</code>). <code>off</code> works only because it deletes the
|
|
23
|
+
hook, so any copy it misses keeps routing. Replayed once over one real prompt history, the router bannered <b>147 of
|
|
24
|
+
417</b> regular prompts (35%; 109 if pasted text is not part of the hook's <code>prompt</code> field, which was not
|
|
25
|
+
checked), averaging ~163 tokens.
|
|
26
|
+
|
|
27
|
+
<b>Copies it misses are ordinary. Two were reproduced in a throwaway HOME.</b> <i>(1) A worktree or second
|
|
28
|
+
checkout.</i> <code>on --scope project</code> writes the hook into <code>.claude/settings.json</code>, which Claude
|
|
29
|
+
Code's docs tell teams to commit, but keys state by the absolute checkout path (<code>:692-693</code>). In a copy of
|
|
30
|
+
the checkout, <code>status</code> reads <code>project autopilot=off 7 personas router=on briefing=on</code>,
|
|
31
|
+
<code>orient</code> prints <b>0 bytes</b> and <code>route</code> prints <b>711 bytes</b> of hook JSON.
|
|
32
|
+
<i>(2) The restore net.</i> Every hook write that changes the file snapshots the prior version into
|
|
33
|
+
<code>claude-settings-history/</code> (<code>boost_cli/core/claude_settings.py:19-21, 88-124</code>). <code>off</code>
|
|
34
|
+
removes the two hooks in two saves, so the last snapshot it writes holds <em>only</em> the router. Copy it back and
|
|
35
|
+
state says <code>autopilot:false</code>, no personas are on disk, the hook still sends a <b>594-char</b> banner, and
|
|
36
|
+
<code>status</code> suggests turning the autopilot on (<code>commands/bmad.py:632-633</code>).
|
|
37
|
+
|
|
38
|
+
<b>The first <code>on</code> reaches running sessions before its personas can.</b> The hooks docs say edits to hooks
|
|
39
|
+
in settings files “are normally picked up automatically by the file watcher”. The sub-agents docs say
|
|
40
|
+
the agents-directory watcher “covers only directories that existed when the session started”, and
|
|
41
|
+
<code>write_personas</code> creates <code>~/.claude/agents</code> when it is absent (<code>core/bmad.py:680</code>).
|
|
42
|
+
Read together (inferred from the docs, not observed in a live session), a first install that creates the directory
|
|
43
|
+
can start banners in open sessions before any restart, naming a lead subagent and support personas those sessions
|
|
44
|
+
cannot load. The command only says “restart your agent session to pick up the new subagents”
|
|
45
|
+
(<code>commands/bmad.py:289-291</code>), not that the banners are already live.
|
|
46
|
+
|
|
47
|
+
<b>Fix.</b> <i>(1)</i> Install <code><launcher> bmad route --scope <scope> || true</code> and pass
|
|
48
|
+
<code>args.scope</code> through (<code>commands/bmad.py:120</code>). When <code>_route</code> runs as a hook (no
|
|
49
|
+
positional prompt, no <code>--plain</code>), it returns 0 silently inside its existing <code>try</code> unless that
|
|
50
|
+
scope's state has <code>autopilot</code>. Project scope looks up the payload <code>cwd</code> with the same exact
|
|
51
|
+
key <code>_orient</code> uses (<code>:692-693</code>). A nearest-parent lookup would route in a worktree nested under
|
|
52
|
+
the repo while the briefing stays silent, which is this defect again. A hook with no <code>--scope</code>, as on
|
|
53
|
+
every current install, accepts either scope until the next <code>on</code> replaces it. A corrupt state file reads as
|
|
54
|
+
empty, so the router stays silent. <i>(2)</i> For a live autopilot whose persona files are gone, drop the Lead and Support lines when the
|
|
55
|
+
lead's <code>.md</code> is in neither <code>~/.claude/agents</code> nor the project's. Check with
|
|
56
|
+
<code>persona_state()</code> (<code>core/bmad.py:707-720</code>), not <code>installed_personas()</code>
|
|
57
|
+
(<code>:693-704</code>), which requires an unedited digest and would drop the lead for anyone who hand-edited
|
|
58
|
+
<code>bmad-dev.md</code>. <i>(3)</i>
|
|
59
|
+
<code>on</code> checks <code>agents.is_dir()</code> before writing. If the directory is new, say that banners can
|
|
60
|
+
start in open sessions immediately and a restart is needed to use the personas. If it already existed, drop the
|
|
61
|
+
restart line.
|
|
62
|
+
|
|
63
|
+
<b>Checked and left alone.</b> <code>off</code> leaves an empty agents directory. Keep it, because it lets the
|
|
64
|
+
<em>next</em> <code>on</code> reach running sessions without a restart.
|
|
65
|
+
|
|
66
|
+
<b>Tests.</b> In <code>tests/functional/test_cli_bmad.py</code>,
|
|
67
|
+
<code>TestRoute.test_emits_the_hook_json_contract</code> and
|
|
68
|
+
<code>test_uses_the_cwd_the_hook_reports_not_its_own</code> assert a banner where <code>on</code> never ran. They
|
|
69
|
+
pin the defect, so they should run <code>on</code> first. So should
|
|
70
|
+
<code>test_trivial_prompts_produce_no_output_at_all</code> and <code>test_a_project_signal_failure_still_exits_zero</code>,
|
|
71
|
+
which would otherwise pass vacuously once state gates the router. Add <code>TestRoute</code> cases for state off
|
|
72
|
+
(empty stdout, exit 0), the second-checkout repro, a corrupt state file (as in
|
|
73
|
+
<code>TestOrient.test_a_broken_state_file_never_breaks_the_session</code>), and positional or <code>--plain</code>
|
|
74
|
+
input still printing. <code>TestAutopilotOn</code> should check <code>--scope global</code> on the route hook and
|
|
75
|
+
split its <code>"restart"</code> assertion by whether the directory existed. Also add a personas-absent case to
|
|
76
|
+
<code>TestRouteContext</code> in <code>tests/unit/test_bmad_core.py</code>.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bmad-router-one-keyword-decides-the-track
|
|
3
|
+
board: code
|
|
4
|
+
section: dx
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Agents · BMAD
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 3
|
|
10
|
+
note: 89 of 143 routed prompts rode on a single keyword
|
|
11
|
+
order: 319
|
|
12
|
+
owner: loop/bmad-incidental-keywords
|
|
13
|
+
pr: 861
|
|
14
|
+
title: One incidental keyword decides the <code>boost bmad</code> track
|
|
15
|
+
---
|
|
16
|
+
<code>classify</code> counts distinct keyword patterns per track over the raw prompt and routes on
|
|
17
|
+
the best score (<code>core/bmad.py:412</code>–<code>417</code>). Two hits are required only
|
|
18
|
+
past <code>LONG_PROMPT_WORDS</code> (60, #630; <code>:415</code>), so any prompt of up to 60 words
|
|
19
|
+
that clears the question and slash gates <b>routes on one match anywhere</b> — including
|
|
20
|
+
words nobody meant as intent: a URL, a path, a flag, a ticket reference, the repo's own name.
|
|
21
|
+
Replaying the origin/main classifier over one real prompt history (417 prompts, 348 unique, 6
|
|
22
|
+
active days): <b>89 of 143 routed unique prompts were decided by exactly one keyword</b>. A single
|
|
23
|
+
judge labelling 41 routed banners found the track or lead clearly wrong in <b>21 of 41</b>.
|
|
24
|
+
|
|
25
|
+
<b>A wrong route costs more than silence.</b> The banner names a lead, asks for support subagents,
|
|
26
|
+
sets a done-contract (tests, docs, and the gate when there is one) and says to work autonomously
|
|
27
|
+
(<code>:536</code>–<code>553</code>). In a repo directory named <code>migrations</code>,
|
|
28
|
+
“list the last three commits in migrations” gets a 643-char build banner — Amelia
|
|
29
|
+
leads, Murat and Paige to be spawned, <code>make check</code> green — for a
|
|
30
|
+
<code>git log</code>. The module already chose: it “would rather under-route than talk over
|
|
31
|
+
someone” (<code>:387</code>–<code>388</code>).
|
|
32
|
+
|
|
33
|
+
<b>Five collision classes, all single hits, reproduced on origin/main with synthetic prompts</b>
|
|
34
|
+
(three spot-checked on the installed v1.2.112): <i>repo name</i> — “list the last three
|
|
35
|
+
commits in migrations” in <code>migrations/</code> → build, “list the new notebooks
|
|
36
|
+
in benchmarks” in <code>benchmarks/</code> → discovery; <i>flags</i> — “rerun
|
|
37
|
+
the installer with <code>--scope</code> global…” → product; <i>URLs, paths,
|
|
38
|
+
code</i> — <code>https://example.com/docs/…</code> → docs, <code>tail
|
|
39
|
+
logs/build/server.log</code> → build, <code>`npm run build`</code> → build; <i>tracker
|
|
40
|
+
words</i> — “move story ABC-123 to in progress” → product; <i>generic
|
|
41
|
+
verbs</i> — “update me when the CI run finishes” → build. The hook already
|
|
42
|
+
has the repo — <code>cwd</code> becomes <code>root</code>
|
|
43
|
+
(<code>commands/bmad.py:342</code>–<code>344</code>) — but <code>route_lines</code>
|
|
44
|
+
calls <code>classify(prompt)</code> bare (<code>core/bmad.py:529</code>).
|
|
45
|
+
|
|
46
|
+
<b>Fix: stop scoring text that is not intent; do not raise the threshold.</b> Before scoring,
|
|
47
|
+
<i>(1)</i> drop URLs, backtick spans, <code>--flag</code>/<code>-f</code> tokens and tracker-noun +
|
|
48
|
+
ID pairs (<code>story ABC-123</code>); <i>(2)</i> a token containing <code>/</code> stops scoring
|
|
49
|
+
for <code>build</code> but still counts for every other table, so <code>docs/README.md</code>
|
|
50
|
+
stays docs; <i>(3)</i> <code>classify(prompt, root=None)</code>, fed by <code>route_lines</code>,
|
|
51
|
+
drops whole-word matches of <code>Path(root).name</code>; <i>(4)</i> a build verb followed by
|
|
52
|
+
<em>me</em>/<em>us</em> does not score. On a stdlib prototype: all <b>46</b> distinct prompts
|
|
53
|
+
<code>test_bmad_core.py</code> sends through <code>classify</code> keep their verdict; <b>16 of
|
|
54
|
+
18</b> synthetic misroutes go silent; build asks still route — 12/12 verb-first, 8/8 not
|
|
55
|
+
(“we need to fix the crash…”), 4/4 late-verb — and 5/5 path-object asks
|
|
56
|
+
keep their track. Small hand-written sets: they show which rule does the work, not a rate.
|
|
57
|
+
|
|
58
|
+
<b>Threshold rules measured and declined.</b> Layered on <i>(1)</i>–<i>(4)</i>: two build hits
|
|
59
|
+
or a head verb silences neither of the 2 left but routes <b>2 of 8</b> non-head and <b>0 of 4</b>
|
|
60
|
+
late-verb asks; a verb in a clause's first six words routes <b>0 of 4</b> late-verb asks; making
|
|
61
|
+
<code>add</code>/<code>update</code>/<code>create</code>-class verbs need a second hit silences one
|
|
62
|
+
more but keeps only <b>6 of 12</b> short build asks and breaks <code>"update the flag"</code>
|
|
63
|
+
(<code>test_bmad_core.py:142</code>). Stripping paths outright flips 3 of 5 path-object asks.
|
|
64
|
+
<b>Residue:</b> “add the meeting notes to my summary” stays build; “pull the
|
|
65
|
+
comments on story ABC-123…” goes docs on <code>\bcomments?\b</code>; a sibling repo's
|
|
66
|
+
name still routes; and a cwd named after a keyword loses that word — in <code>tests/</code>,
|
|
67
|
+
“add tests for catalog.scan_dir” flips quality → build.
|
|
68
|
+
|
|
69
|
+
<b>Tests:</b> add <code>TestIncidentalKeywords</code> beside <code>TestClassifyTracks</code>
|
|
70
|
+
(<code>tests/unit/test_bmad_core.py:173</code>): one <code>(prompt, repo_dirname, expected)</code>
|
|
71
|
+
table with every repro as <code>trivial</code> except the two residues (pinned at today's track,
|
|
72
|
+
so a later fix shows as a diff), the non-head, late-verb and path-object asks at their tracks,
|
|
73
|
+
plus a <code>route_lines</code> case rooted at <code>tmp_path / "migrations"</code> so the name
|
|
74
|
+
must reach <code>classify</code>.
|