boost-skill-cli 1.2.143__tar.gz → 1.2.145__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.143 → boost_skill_cli-1.2.145}/.vale/styles/config/vocabularies/boost/accept.txt +3 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/CLAUDE.md +107 -12
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/CONTRIBUTING.md +1 -1
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/PKG-INFO +15 -11
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/README.md +14 -10
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/cli.py +2 -2
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/bmad.py +95 -28
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/configuration.py +4 -2
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/hooks.py +67 -19
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/pkg.py +3 -2
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/claude_settings.py +151 -24
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/hookhost.py +199 -18
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/mcpdecl.py +2 -1
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/mcphost.py +141 -30
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/PKG-INFO +15 -11
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/commands.html +16 -14
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/index.html +2 -2
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/openssf-badge.md +1 -1
- boost_skill_cli-1.2.145/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +49 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/codex-is-not-an-mcp-host.md +15 -4
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap.html +16 -50
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/mcp.feature +12 -4
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/conftest.py +4 -2
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_bmad_all_hosts.py +191 -5
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_configuration.py +84 -13
- boost_skill_cli-1.2.145/tests/functional/test_cli_hooks_codex.py +159 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_pkg.py +12 -7
- boost_skill_cli-1.2.145/tests/unit/test_claude_settings_codex.py +376 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_hookhost.py +6 -2
- boost_skill_cli-1.2.145/tests/unit/test_hookhost_codex.py +305 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp_install_sandbox_home.py +51 -4
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcphost.py +297 -21
- boost_skill_cli-1.2.143/docs/roadmap/items/codex-hooks-timeout-units-are-unestablished.md +0 -32
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.gitattributes +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.gitignore +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/.vale.ini +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/DCO +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/LICENSE +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/Makefile +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/archive.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/cohort.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/compact.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/deps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/discovery.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/jsonstate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/report.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/typedvalue.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/codecov.yml +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a-correct-link-in-a-locked-dir-reads-as-refused.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a-new-shipped-card-always-404s-its-own-write-up-link.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a-refusal-and-its-remedy-never-wrapped.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/agent-dir-shapes-install-still-trips-on.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-absorb-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-adapt-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-adapt-renders-every-sibling-of-a-flat-agents-dir-workflow-as.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-adapt-run-stats-edit-tag-export-reject-the-tap-name-qualifie.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-ai-degrade-note-blames-path-api-keys-regardless-of-cause-sev.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-attest-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-audit-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-bmad-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-browse-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-bundle-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-catalog-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-catalog-resolve-one-s-duplicate-name-hint-advertises-path-to.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-changelog-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-chat-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-clean-counts-failed-removals-as-cleaned-journals-the-inflate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-cli-py-commands-summaries-and-parser-help-contradict-behavio.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-cohort-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-completions-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-config-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-config-policy-set-store-type-unchecked-values-consumers-cras.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-context-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-corrupt-settings-config-state-json-silently-read-as-empty-th.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-create-distill-infer-absorb-install-silently-replace-an-inst.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-create-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-declined-confirms-never-name-y-boost-assume-yes-snapshot-cle.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-deps-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-discover-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-distill-s-heuristic-merge-drops-repeated-fences-braces-writi.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-doctor-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-drift-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-dry-runs-disagree-with-the-real-run-compact-counts-bytes-it.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-edit-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-evolve-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-explain-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-export-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-export-o-cohort-create-and-profile-save-silently-overwrite-e.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-fingerprint-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-five-exit-70-crashes-on-bad-paths-data-catalog-export-serve.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-focus-profile-sideline-by-unlinking-without-recording-it-lis.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-git-operations-never-set-git-terminal-prompt-0-so-a-404-priv.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-health-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-hooks-remove-n-cannot-find-hooks-boost-itself-added-unknown.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-import-all-skips-the-injection-secret-scans-and-the-per-skil.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-import-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-index-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-info-stats-explain-render-a-different-smaller-shape-for-rule.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-install-dry-run-promises-agents-the-real-install-never-write.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-install-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-install-local-writes-empties-the-repo-s-mcp-json-silently-of.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-json-accepted-but-ignored-on-many-branches-cohort-config-pol.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-lint-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-log-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-log-simulate-changelog-headings-echo-the-raw-qualified-argum.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-mcp-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-mcp-register-s-boost-first-consent-names-only-the-registered.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-missing-json-on-doctor-test-health-changelog-trending-log-ho.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-name-miss-errors-unknown-tap-qualifier-unnamed-no-close-matc.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-onboard-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-out-table-clips-data-columns-to-an-assumed-80-columns-when-s.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-out-warn-defaults-to-stdout-infer-absorb-corrupt-skill-md-se.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-outdated-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-output-wrap-tokens-splits-punctuation-off-backtick-spans-ins.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-pinned-taps-silently-moved-to-head-by-update-re-clone-and-co.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-policy-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-preview-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-profile-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-project-scope-seams-uninstall-verify-list-info-reinstall-dis.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-protocol-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-pulse-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-quarantine-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-quarantine-pin-state-invisible-list-info-doctor-report-links.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-quickstart-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-recommend-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-reindex-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-reinstall-sync-repair-and-audit-resolve-by-name-tap-ignoring.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-replay-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-root-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-rules-workflows-reported-as-skills-uninstall-claims-a-store.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-run-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-schedule-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-search-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-simulate-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-singular-plural-misses-1-skills-1-issue-need-1-skill-pass-ac.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-six-count-flags-tap-chat-absorb-lint-changelog-hooks-skip-ut.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-skill-profile-name-slugging-is-inconsistent-distill-o-accept.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-snapshot-restore-replaces-the-lock-wholesale-orphaning-newer.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-stale-prose-after-shipped-changes-catalog-export-live-discov.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-stray-positionals-and-inapplicable-flags-silently-ignored-ac.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-sweep-positionals-json-lack-help-strings-and-no-command-help.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-sync-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-tag-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-tap-dry-run-is-silently-ignored-outside-catalog-spec-and-def.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-tap-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-taps-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-taps-outdated-decay-policy-snapshot-json-emit-display-string.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-test-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-trust-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-trust-verify-labels-a-manifest-tampered-after-signing-by-a-t.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-unpin-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-untap-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-update-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-verify-drift-say-nothing-installed-exit-0-and-doctor-says-lo.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-verify-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/audit-who-findings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bare-boost-never-names-an-entry-point.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/because-that-was-not-the-reason.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bm25-empty-tokenization-kills-catalog-fallback.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-done-contract-ignores-the-track.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-gemini-gets-claude-hook-output.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-personas-delegate-outside-the-router.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-roster-drifted-from-bmad-6-12.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-route-ignores-autopilot-state.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-router-one-keyword-decides-the-track.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bmad-router-reads-each-prompt-alone.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cache-writers-that-still-crash-on-a-read-only-cache.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/capability-policy-skips-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/catalog-categories-beyond-curated.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-summary-reports-the-wrong-coverage-gate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/claude-md-instructs-the-wrong-licence-header.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cli-audit-2026-08-full-sweep.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/compact-answers-a-named-tap-with-a-global-all-clear.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/concurrent-rag-builds-delete-each-others-temp-index.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/config-json-edge-shapes-crash-or-disagree.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/corpus-refresh-updates-data-not-prose.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/corrupt-config-reads-as-ready-to-set-up.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/count-flags-that-silently-invert.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/delay-true-defeats-the-log-suppress.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-kill-switch-has-no-reason-state.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-no-key-guard-is-unreachable.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-ready-but-embedder-cannot-run.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dense-store-holds-every-vector-once-per-copy.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/doctor-prescribes-sync-that-deletes-live-links.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/err-colour-judged-by-stdout.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/err-multiline-hint-colours-across-the-newline.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-counted-by-the-method-the-repo-disavows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-duplication-is-intra-tap-not-mirrors.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-floor-calibration-stale-after-pin-refresh.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-gate-scores-a-body-less-corpus.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/exemplar-graded-golden-set-runs-in-no-gate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/explain-outline-has-no-cap.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/free-threaded-canary-warns-about-nothing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gate-parity-test-ignores-k-and-golden.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gated-golden-set-has-zero-exemplars.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/hooks-list-drops-the-name-before-the-host.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/identifier-columns-shrink-to-a-name-no-command-accepts.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/import-budget-gate-passes-when-boost-cannot-import.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/info-deps-materialize-a-dir-they-then-reject.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-cannot-tell-a-skill-needs-another-one.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-paths-that-still-drop-the-result.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/keyed-no-store-hint-disagrees-with-shard-remedy.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lighthouse-flips-on-byte-identical-input.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/links-job-503s-its-own-write-up-links.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lock-kept-links-it-had-just-removed.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/manifest-in-prunes-only-the-root-copy.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-doctor-says-healthy-where-mcp-search-says-nothing-is-tapped.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-install-description-omits-antigravity.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-miss-reply-echoes-the-whole-query.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-registration-writes-outside-a-sandboxed-home.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-cost-overstated-on-keyless-machines.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-server-dies-on-a-valid-json-message-that-is-not-an-object.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-session-dies-on-a-deeply-nested-json-line.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-skip-list-absent-from-tool-descriptions.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mutation-shards-rerun-full-set-every-push.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/near-identical-copies-still-eat-the-slots.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-bad-agent-dir-silences-the-whole-doctor-report.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-failed-shard-job-drops-registries-from-the-manifest.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/panel-fits-data-to-an-assumed-80-in-a-pipe.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/publish-the-keyword-index.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-drops-incompatible-shard-status.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-manifest-error-drops-hint-and-misnames-cause.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-rerun-retargets-tapped-registries.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-says-ready-exit-0-after-every-tap-failed.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/quickstart-shard-download-invisible-in-preview-and-run.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/read-only-boost-home-with-no-cache-dir.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/readme-81-command-table-lists-80-omits-quickstart.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/readme-hero-installs-a-name-no-starter-registry-ships.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reclone-leaves-a-clone-on-head-when-it-cannot-reach-the-pin.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/recommend-recomputes-its-columns-per-row.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/refresh-strands-the-natural-set-baseline.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reindex-reported-a-completeness-share-it-could-not-compute.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/release-guard-fails-open-when-it-cannot-read-tags.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/required-eval-gate-still-grades-by-name.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-boards-advertise-python-39.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sandbox-fixture-does-not-sandbox-the-working-directory.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-caps-the-two-copyable-identifiers.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-drops-symbol-language-queries-silently.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-footer-not-fitted-to-the-pane-its-rows-were-fitted-to.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-footer-overflows-40-col-pane-gate-passes-by-luck.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-relevance-meter-is-constant-on-default-page.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/search-rows-use-term-width-so-piping-drops-the-tap-column.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shard-refresh-skips-processed-commits.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/shrink-the-published-index.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/stale-gate-sizes-in-readme-and-contributing.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/stale-tap-hint-dead-for-tap-only-installs.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/surface-dehyphenation-rationale-is-false.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sweep-died-at-a-page-not-at-launch.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-repairs-a-disabled-agents-row-every-run.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/table-fit-widths-floor-destroys-columns-and-still-overflows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/taps-vouches-for-a-clone-that-is-not-there.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-install-path-hands-agy-claudes-mcp-argv.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-model-back-off-mixes-two-clocks.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/tier3-ceiling-unreachable-at-default-n.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/typos-reported-as-boost-bugs.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unreadable-tap-cache-healthy-doctor-crashing-heal.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unwritable-agent-dir-has-no-remedy.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/unwritable-rule-or-workflow-dir-crashes-install.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/weekly-vectors-had-no-ingestion-path.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/README.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/examples/README.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/index.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/noxfile.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/measure_near_duplicate_bound.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/setup.cfg +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/README.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/boost.css +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/boost.js +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/style/demo.html +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/fixtures/claude_init_event.jsonl +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_bad_input_is_not_a_crash.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_bmad_personas_scope.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_identifier_columns.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_json_reports.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_context_sees_an_unborn_branch.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_count_flags_reject_nonpositive.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_keyed_no_store_hint.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_recommend_because_is_true.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_reports_match_reality.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/data/bmad-skills-6.12.0.json +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_archive.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_bot_pr_dco.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_canary_deps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_catalog_keyword_words.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_cli_update_shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_cohort.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_corpus_prose.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_count_flags_use_positive_int.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_coverage_gate_prose.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_boilerplate_cluster.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_entry_vectors.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_model_unavailable.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dense_vector_dedupe.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_deps.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_discovery.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_distill_merge.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_doctor_output_polish.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_drift_hint.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_dry_run_parity.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_corpus_bodies.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_query_sets.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_eval_tools_probe.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_first_run_pointer.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_gstack_coexistence.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_help_contracts.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_jsonstate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_launcher_python_floor.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_lighthouse_budgets.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_near_duplicate_collapse.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_output_table_drop.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_output_table_whole.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_quickstart_readiness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_completeness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_extra_hint.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_read_text_arg.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_report.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_retrieve_any_near_duplicates.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_schedule_plist.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sdist_contents.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_carry_forward.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_ingest.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sync_lost_lock.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_typedvalue.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_upstream_path.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_visual_harness_capture.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.143 → boost_skill_cli-1.2.145}/tests/visual/visual_check.mjs +0 -0
|
@@ -70,6 +70,7 @@ GTM
|
|
|
70
70
|
gzip
|
|
71
71
|
gzipped
|
|
72
72
|
hardcode
|
|
73
|
+
hardcoded
|
|
73
74
|
Helm
|
|
74
75
|
hotspots
|
|
75
76
|
Huashu
|
|
@@ -148,9 +149,11 @@ setuptools
|
|
|
148
149
|
SHAs
|
|
149
150
|
Shopify
|
|
150
151
|
Sigstore
|
|
152
|
+
snake_case
|
|
151
153
|
Snyk
|
|
152
154
|
SonarCloud
|
|
153
155
|
stderr
|
|
156
|
+
stdin
|
|
154
157
|
Stdlib
|
|
155
158
|
stdlib
|
|
156
159
|
stdout
|
|
@@ -541,10 +541,10 @@ nothing. Consequences for code you write:
|
|
|
541
541
|
finer than `skills_only` can express (which would drop rules too), so the
|
|
542
542
|
`workflows` flag exists and `agents.workflow_agents()` is the set that
|
|
543
543
|
honours it. `~/.codex/rules/*.rules` is the `execpolicy` command-approval
|
|
544
|
-
DSL, not an instructions dir — don't write there. Its MCP
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
544
|
+
DSL, not an instructions dir — don't write there. Its **MCP host is wired
|
|
545
|
+
up** (`core/mcphost.py`, fourth row — see below) and so is its **hooks**
|
|
546
|
+
host (`core/hookhost.py`, third row — the `timeout` units this file used
|
|
547
|
+
to record as unestablished are **seconds**, measured; see below).
|
|
548
548
|
- **Its dir is the one agent path that is not fixed**, hence the
|
|
549
549
|
`${CODEX_HOME:-~/.codex}/skills` default and `paths.expand`'s leading
|
|
550
550
|
`${VAR:-fallback}` syntax. Only a *leading* reference expands and nesting
|
|
@@ -599,7 +599,8 @@ nothing. Consequences for code you write:
|
|
|
599
599
|
`agents/` slot stays verbatim Markdown. Getting that backwards produces a file
|
|
600
600
|
the agent silently never loads.
|
|
601
601
|
- `core/mcphost.py` holds the per-host `mcp add`/`remove` grammar.
|
|
602
|
-
**Antigravity CLI (`agy`) is the third host
|
|
602
|
+
**Antigravity CLI (`agy`) is the third host and Codex CLI is the fourth**,
|
|
603
|
+
and one argv rule of agy's own
|
|
603
604
|
bites: flags must come *before* `<name>` (a flag after it is rejected). The
|
|
604
605
|
`--` boost also emits is agy's documented separator and, measured on 1.1.22,
|
|
605
606
|
inert — agy never consumes an argument that *follows* the command, and
|
|
@@ -609,7 +610,34 @@ nothing. Consequences for code you write:
|
|
|
609
610
|
`has_scope()` exists and the success line drops "(scope: user)" for it. Its
|
|
610
611
|
`add` **upserts** where Claude's errors on a duplicate name; that asymmetry
|
|
611
612
|
is what made `--host auto` abort on a machine already registered with
|
|
612
|
-
Claude.
|
|
613
|
+
Claude.
|
|
614
|
+
|
|
615
|
+
**Codex agrees with none of the other three outright, and the difference
|
|
616
|
+
with teeth is the flag spelling**: `--env` is long-form only — `codex mcp
|
|
617
|
+
add x -e A=1 -- cmd` exits 2 with "unexpected argument `-e` found", and its
|
|
618
|
+
own tip ("to pass `-e` as a value, use `-- -e`") is about the command, not
|
|
619
|
+
the option. So the env flag is a per-host spelling (`mcphost.ENV_FLAG`, an
|
|
620
|
+
override table whose absent rows mean `-e`) rather than one constant. It
|
|
621
|
+
takes flags on *either* side of the name (agy rejects one after it), puts
|
|
622
|
+
`--` on Claude's side, and there it is load-bearing rather than decorative:
|
|
623
|
+
with it a dash-leading command is stored verbatim, where agy rejects the
|
|
624
|
+
same input. Like agy it has **no scope** (one global
|
|
625
|
+
`$CODEX_HOME/config.toml`) and its `add` upserts. Two things about *where*
|
|
626
|
+
it writes are its own, and both are in `config_home`: the default home is
|
|
627
|
+
**`$HOME/.codex`, a subdirectory** where the other three are rooted at
|
|
628
|
+
`$HOME` itself (`CONFIG_HOME_DEFAULT_REL`), and a **relative `CODEX_HOME`
|
|
629
|
+
is honoured against the current directory** (`RELATIVE_CONFIG_HOME_CWD`) —
|
|
630
|
+
the exact opposite of Claude Code, which refuses a relative
|
|
631
|
+
`CLAUDE_CONFIG_DIR` outright. That last one is why they cannot share a
|
|
632
|
+
branch: Claude's "relative → fall back to `$HOME`" would have reported a
|
|
633
|
+
write contained when it lands wherever the user happened to be standing.
|
|
634
|
+
One more asymmetry is on the removal side: `codex mcp remove <missing>`
|
|
635
|
+
prints `No MCP server named 'boost' found.` and exits **0**, which contains
|
|
636
|
+
"found" but never "not found", so `_NOT_REGISTERED` carries a second marker
|
|
637
|
+
or `classify_result` reports a removal that never happened. All measured
|
|
638
|
+
against codex-cli 0.156.1 on 2026-09-27.
|
|
639
|
+
|
|
640
|
+
Claude and
|
|
613
641
|
Gemini disagree on name position, the `--` separator, and whether unregister
|
|
614
642
|
needs an explicit scope — all three verified against the real CLIs and pinned
|
|
615
643
|
by `tests/unit/test_mcphost.py`. **boost emits the separator for all three,
|
|
@@ -626,7 +654,7 @@ nothing. Consequences for code you write:
|
|
|
626
654
|
in a spec's args rewrites the entry as `{"url": "npx", "type": "http"}`. Emit
|
|
627
655
|
the separator unconditionally: `add x npx --` is accepted and stores
|
|
628
656
|
`args: []`. Don't "simplify" them into one shape —
|
|
629
|
-
**one function,
|
|
657
|
+
**one function, four branches**, which is what `mcphost.add_argv` is. It is
|
|
630
658
|
the only copy of the `mcp add` grammar, and it is the only copy because
|
|
631
659
|
`mcpdecl.register_argv` (the install path, registering a server a *skill*
|
|
632
660
|
declares) used to be a second one: it had a Gemini branch and a Claude
|
|
@@ -639,14 +667,14 @@ nothing. Consequences for code you write:
|
|
|
639
667
|
no-op against a user-scope entry, and Claude, which needs none, is handed one
|
|
640
668
|
so the argv cannot reach `<cwd>/.mcp.json`, the one scope outside every
|
|
641
669
|
`$HOME` and so the one `mcphost.escapes_home` cannot judge.
|
|
642
|
-
- **`core/hookhost.py` is the same idea for hooks, and
|
|
670
|
+
- **`core/hookhost.py` is the same idea for hooks, and three hosts have them.**
|
|
643
671
|
`boost hooks` writes Claude Code's `~/.claude/settings.json` (the default,
|
|
644
|
-
unchanged) or
|
|
645
|
-
|
|
672
|
+
unchanged), or behind `--host` the `~/.gemini/settings.json` that Gemini CLI
|
|
673
|
+
reads or the `$CODEX_HOME/hooks.json` that Codex CLI reads;
|
|
646
674
|
`core/claude_settings.py` takes `host=` throughout and asks the table for the
|
|
647
675
|
differences. The `hooks` key and the `{matcher, hooks: [{type, command,
|
|
648
|
-
timeout}]}` block shape are *identical*
|
|
649
|
-
makes the
|
|
676
|
+
timeout}]}` block shape are *identical* across all three, which is exactly
|
|
677
|
+
what makes the real differences easy to ship wrong. Gemini's three:
|
|
650
678
|
- **`timeout` units.** Claude's is **seconds**; Gemini's is **milliseconds**
|
|
651
679
|
(`DEFAULT_HOOK_TIMEOUT = 6e4`, fed straight to `setTimeout`). Callers pass
|
|
652
680
|
seconds and `hookhost.hook_entry` converts, so boost's `--timeout 10` is ten
|
|
@@ -673,6 +701,73 @@ nothing. Consequences for code you write:
|
|
|
673
701
|
sources are named at the top of `hookhost.py` so the next person can re-check
|
|
674
702
|
them against a newer release.
|
|
675
703
|
|
|
704
|
+
**Codex's four are different differences, and two of them are not about the
|
|
705
|
+
block at all.** Measured against Codex CLI 0.156.1 on 2026-09-27, from four
|
|
706
|
+
sources named at the top of `hookhost.py` (`codex app-server
|
|
707
|
+
generate-json-schema`; `strings` over the binary the ChatGPT app ships;
|
|
708
|
+
observed `codex app-server` `hooks/list` runs; the 23 embedded draft-07
|
|
709
|
+
schemas its `schema_loader.rs` reads):
|
|
710
|
+
- **The filename is `hooks.json`**, not `settings.json` — the only host
|
|
711
|
+
where it is not, hence `hookhost.settings_file`. A `hooks` key in a
|
|
712
|
+
`settings.json` is a file Codex never opens, and nothing says so.
|
|
713
|
+
- **The user root moves.** `$CODEX_HOME` relocates it and a *relative* value
|
|
714
|
+
is honoured against the current directory — the measured grammar lives
|
|
715
|
+
once, in `mcphost.config_home`. The **project** root does not move: it is
|
|
716
|
+
the literal `<project>/.codex` whatever `CODEX_HOME` says. Because the
|
|
717
|
+
variable is ambient, `claude_settings.escaping_path` refuses a user-scope
|
|
718
|
+
write that lands outside this `$HOME` unless `--force` comes with it —
|
|
719
|
+
the same hole `test_mcp_install_sandbox_home.py` closes for `mcp add`,
|
|
720
|
+
where a sandboxed `HOME` does not move `CODEX_HOME` and a test run wrote
|
|
721
|
+
into the developer's live `~/.codex`. The sweeps in `commands/bmad.py`
|
|
722
|
+
**skip** such a host with a warning rather than inheriting the refusal:
|
|
723
|
+
an aborted `bmad on` would leave Claude without its hooks either. So
|
|
724
|
+
`boost bmad` carries its own `--force`, and needs to: `bmad doctor` reads
|
|
725
|
+
the relocated file and reports the hook that will actually run, and
|
|
726
|
+
without the flag no `bmad` command could act on what `doctor` had just
|
|
727
|
+
reported. `_autopilot_on` resolves its host list **before** writing the
|
|
728
|
+
personas, because that resolution is the only step that can refuse and
|
|
729
|
+
refusing after `write_personas` left files on disk that
|
|
730
|
+
`_set_scope_state` never recorded.
|
|
731
|
+
- **`timeout` is in seconds**, agreeing with Claude and not Gemini. (Also
|
|
732
|
+
measured: `timeoutSec` is the *wire* spelling only — as a config key it is
|
|
733
|
+
ignored and the hook silently falls back to Codex's 600-second default.)
|
|
734
|
+
- **Event names are matched exactly, and an unknown one is dropped in
|
|
735
|
+
silence.** Twelve PascalCase events; `NotARealEvent` and `sessionstart`
|
|
736
|
+
each produced no hook, no warning and no error. So Codex is
|
|
737
|
+
`strict_events` in the table and `translate` returns `None` rather than
|
|
738
|
+
taking Gemini's warn-but-add fallthrough — the "looks installed and never
|
|
739
|
+
fires" failure this module exists to prevent. `CLAUDE_TO_CODEX` maps all
|
|
740
|
+
ten Claude events explicitly; only `Notification` has no counterpart
|
|
741
|
+
(Codex *has* both sub-agent events, which is why the refusal's "has no
|
|
742
|
+
sub-agents" clause is now a per-host `no_counterpart_note` rather than one
|
|
743
|
+
hardcoded sentence).
|
|
744
|
+
|
|
745
|
+
Two more Codex facts shape the writer rather than the block. A hook's trust
|
|
746
|
+
key is positional — `<sourcePath>:<event>:<group_index>:<handler_index>` —
|
|
747
|
+
so a re-add that drops a group and appends a new one re-keys every group
|
|
748
|
+
after it and voids the user's trust grant on each (measured: an untouched
|
|
749
|
+
neighbour moved `:0:0` -> `:1:0`). `add_hook` therefore **replaces in
|
|
750
|
+
place**, for every host: shuffling a file boost does not own was never a
|
|
751
|
+
feature, only never load-bearing. And a new hook does not run until the user
|
|
752
|
+
trusts it at startup, with project scope also needing `trust_level =
|
|
753
|
+
"trusted"` — `commands/hooks.py` says so after a Codex add, because "added"
|
|
754
|
+
alone is true and useless.
|
|
755
|
+
|
|
756
|
+
**Hook stdin and stdout are schema-validated, and both schemas were read
|
|
757
|
+
rather than assumed.** Every event has an embedded pair,
|
|
758
|
+
`<event>.command.{input,output}`, each `"additionalProperties": false`. The
|
|
759
|
+
output side carries `hookSpecificOutput` -> `<Event>HookSpecificOutputWire`
|
|
760
|
+
with `additionalContext` and a required `hookEventName` pinned to that
|
|
761
|
+
event's PascalCase `const`, so `hookhost.context_output`'s Gemini-shaped
|
|
762
|
+
JSON is what Codex wants too — Claude's plain-text `SessionStart` shortcut
|
|
763
|
+
is the one thing that does not carry over. The input side uses Claude's
|
|
764
|
+
snake_case keys (`prompt`, `session_id`, `cwd`, `hook_event_name`) plus
|
|
765
|
+
Codex's own `model`/`permission_mode`/`turn_id`, so `bmad._read_hook_stdin`
|
|
766
|
+
needs no per-host branch. Both were worth measuring rather than inferring:
|
|
767
|
+
`_host_command` ends every non-Claude hook in `2>/dev/null || true`, so a
|
|
768
|
+
key spelled wrong on either side is a router that prints nothing, on every
|
|
769
|
+
prompt, with no error anywhere.
|
|
770
|
+
|
|
676
771
|
`core/catalog.scan_dir` walks a tap's clone and classifies each file into one
|
|
677
772
|
of the three item kinds (see Non-obvious rules above); `core/store.py` owns
|
|
678
773
|
install, uninstall and sync — copying into the canonical store, symlinking into
|
|
@@ -121,7 +121,7 @@ list, and neither should be added to it.
|
|
|
121
121
|
| `make test` | unit + functional suites, **≥90% coverage** (statements + branches) |
|
|
122
122
|
| `make patch-coverage` | changed-line coverage vs `main`, **≥80% of the diff** (PRs) |
|
|
123
123
|
| `bash tests/smoke.sh` | 183 end-to-end checks through the real `./boost` shim |
|
|
124
|
-
| `make bdd` | the Gherkin suite — 11 features,
|
|
124
|
+
| `make bdd` | the Gherkin suite — 11 features, 57 scenarios (needs the `[bdd]` extra) |
|
|
125
125
|
| `make mutation` | mutmut over `boost_cli/core`, **≥80% mutants killed** |
|
|
126
126
|
| `ruff check boost_cli tests` | lint, zero findings |
|
|
127
127
|
| `mypy` | type check, zero errors |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.145
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -63,7 +63,8 @@ Antigravity CLI (`agy`) is wired up the same way: skills link into
|
|
|
63
63
|
Codex — the `codex` CLI and the ChatGPT desktop app, which is the same binary —
|
|
64
64
|
needs no symlink at all: `~/.agents/skills` is one of its own skill roots, so a
|
|
65
65
|
skill boost copies into the canonical store is already there. Rules materialize
|
|
66
|
-
into `~/.codex/AGENTS.md
|
|
66
|
+
into `~/.codex/AGENTS.md`, and `boost mcp register` reaches it through
|
|
67
|
+
`codex mcp add`.
|
|
67
68
|
|
|
68
69
|
```bash
|
|
69
70
|
pipx install boost-skill-cli
|
|
@@ -512,6 +513,7 @@ purely local operation, for CI images and air-gapped machines.
|
|
|
512
513
|
| Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
|
|
513
514
|
| Gemini CLI | `gemini` | `gemini mcp add -s user` → `~/.gemini/settings.json` |
|
|
514
515
|
| Antigravity CLI | `agy` | `agy mcp add` → `~/.gemini/config/mcp_config.json` |
|
|
516
|
+
| Codex CLI | `codex` | `codex mcp add` → `${CODEX_HOME:-~/.codex}/config.toml` |
|
|
515
517
|
|
|
516
518
|
Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
|
|
517
519
|
`boost_read`, `boost_install`, `boost_doctor` and
|
|
@@ -519,25 +521,27 @@ Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
|
|
|
519
521
|
actual text — without it, installing was the only way to read a skill.
|
|
520
522
|
|
|
521
523
|
The server also returns MCP `instructions`, telling the agent when boost is
|
|
522
|
-
relevant.
|
|
523
|
-
loads them into the system prompt. Gemini CLI appends them to its
|
|
524
|
-
alongside `GEMINI.md`, and only in a trusted folder, so outside one
|
|
525
|
-
dropped silently. Each tool's own description therefore repeats its
|
|
526
|
-
because a tool description is the only part always in context at the
|
|
527
|
-
agent chooses a tool.
|
|
524
|
+
relevant. Claude Code and Gemini CLI place those differently, and it matters.
|
|
525
|
+
Claude Code loads them into the system prompt. Gemini CLI appends them to its
|
|
526
|
+
memory tier alongside `GEMINI.md`, and only in a trusted folder, so outside one
|
|
527
|
+
they are dropped silently. Each tool's own description therefore repeats its
|
|
528
|
+
trigger, because a tool description is the only part always in context at the
|
|
529
|
+
moment the agent chooses a tool.
|
|
528
530
|
|
|
529
|
-
Verify with `claude mcp list` or `
|
|
530
|
-
Connected.
|
|
531
|
+
Verify with `claude mcp list`, `gemini mcp list` or `codex mcp list`; boost
|
|
532
|
+
should show as Connected.
|
|
531
533
|
|
|
532
534
|
## Agent hooks and BMAD
|
|
533
535
|
|
|
534
|
-
`boost hooks` manages hooks
|
|
536
|
+
`boost hooks` manages hooks for Claude Code, Gemini CLI and Codex CLI —
|
|
537
|
+
`settings.json` for the first two, `$CODEX_HOME/hooks.json` for Codex —
|
|
535
538
|
translating between their event vocabularies and timeout units. `boost bmad on`
|
|
536
539
|
uses them to put the BMAD Method's personas in charge of every task, in one
|
|
537
540
|
command with no Node and no network.
|
|
538
541
|
|
|
539
542
|
```bash
|
|
540
543
|
boost hooks add SessionStart -c 'echo hello' -n greet --scope project
|
|
544
|
+
boost hooks add SessionStart --host codex -c 'echo hello' -n greet
|
|
541
545
|
boost bmad on
|
|
542
546
|
```
|
|
543
547
|
|
|
@@ -21,7 +21,8 @@ Antigravity CLI (`agy`) is wired up the same way: skills link into
|
|
|
21
21
|
Codex — the `codex` CLI and the ChatGPT desktop app, which is the same binary —
|
|
22
22
|
needs no symlink at all: `~/.agents/skills` is one of its own skill roots, so a
|
|
23
23
|
skill boost copies into the canonical store is already there. Rules materialize
|
|
24
|
-
into `~/.codex/AGENTS.md
|
|
24
|
+
into `~/.codex/AGENTS.md`, and `boost mcp register` reaches it through
|
|
25
|
+
`codex mcp add`.
|
|
25
26
|
|
|
26
27
|
```bash
|
|
27
28
|
pipx install boost-skill-cli
|
|
@@ -470,6 +471,7 @@ purely local operation, for CI images and air-gapped machines.
|
|
|
470
471
|
| Claude Code | `claude` | `claude mcp add` → its user-scope MCP config |
|
|
471
472
|
| Gemini CLI | `gemini` | `gemini mcp add -s user` → `~/.gemini/settings.json` |
|
|
472
473
|
| Antigravity CLI | `agy` | `agy mcp add` → `~/.gemini/config/mcp_config.json` |
|
|
474
|
+
| Codex CLI | `codex` | `codex mcp add` → `${CODEX_HOME:-~/.codex}/config.toml` |
|
|
473
475
|
|
|
474
476
|
Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
|
|
475
477
|
`boost_read`, `boost_install`, `boost_doctor` and
|
|
@@ -477,25 +479,27 @@ Seven tools are exposed: `boost_search`, `boost_list`, `boost_info`,
|
|
|
477
479
|
actual text — without it, installing was the only way to read a skill.
|
|
478
480
|
|
|
479
481
|
The server also returns MCP `instructions`, telling the agent when boost is
|
|
480
|
-
relevant.
|
|
481
|
-
loads them into the system prompt. Gemini CLI appends them to its
|
|
482
|
-
alongside `GEMINI.md`, and only in a trusted folder, so outside one
|
|
483
|
-
dropped silently. Each tool's own description therefore repeats its
|
|
484
|
-
because a tool description is the only part always in context at the
|
|
485
|
-
agent chooses a tool.
|
|
482
|
+
relevant. Claude Code and Gemini CLI place those differently, and it matters.
|
|
483
|
+
Claude Code loads them into the system prompt. Gemini CLI appends them to its
|
|
484
|
+
memory tier alongside `GEMINI.md`, and only in a trusted folder, so outside one
|
|
485
|
+
they are dropped silently. Each tool's own description therefore repeats its
|
|
486
|
+
trigger, because a tool description is the only part always in context at the
|
|
487
|
+
moment the agent chooses a tool.
|
|
486
488
|
|
|
487
|
-
Verify with `claude mcp list` or `
|
|
488
|
-
Connected.
|
|
489
|
+
Verify with `claude mcp list`, `gemini mcp list` or `codex mcp list`; boost
|
|
490
|
+
should show as Connected.
|
|
489
491
|
|
|
490
492
|
## Agent hooks and BMAD
|
|
491
493
|
|
|
492
|
-
`boost hooks` manages hooks
|
|
494
|
+
`boost hooks` manages hooks for Claude Code, Gemini CLI and Codex CLI —
|
|
495
|
+
`settings.json` for the first two, `$CODEX_HOME/hooks.json` for Codex —
|
|
493
496
|
translating between their event vocabularies and timeout units. `boost bmad on`
|
|
494
497
|
uses them to put the BMAD Method's personas in charge of every task, in one
|
|
495
498
|
command with no Node and no network.
|
|
496
499
|
|
|
497
500
|
```bash
|
|
498
501
|
boost hooks add SessionStart -c 'echo hello' -n greet --scope project
|
|
502
|
+
boost hooks add SessionStart --host codex -c 'echo hello' -n greet
|
|
499
503
|
boost bmad on
|
|
500
504
|
```
|
|
501
505
|
|
|
@@ -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.145'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 145)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -128,8 +128,8 @@ COMMANDS = [
|
|
|
128
128
|
("completions", "cfg", "configuration", "Generate shell tab-completion scripts"),
|
|
129
129
|
("schedule", "cfg", "configuration", "Manage automatic skill-sync scheduling"),
|
|
130
130
|
("serve", "cfg", "configuration", "Browse the catalogue in a browser: search, facets and a tap graph"),
|
|
131
|
-
("mcp", "cfg", "configuration", "Register boost as an MCP server (Claude Code, Gemini CLI, Antigravity CLI)"),
|
|
132
|
-
("hooks", "cfg", "hooks", "Manage agent hooks (Claude Code, Gemini CLI
|
|
131
|
+
("mcp", "cfg", "configuration", "Register boost as an MCP server (Claude Code, Gemini CLI, Antigravity CLI, Codex CLI)"),
|
|
132
|
+
("hooks", "cfg", "hooks", "Manage agent hooks (Claude Code, Gemini CLI, Codex CLI)"),
|
|
133
133
|
("bmad", "cfg", "bmad", "BMAD Method autopilot — `bmad on` routes every task to a persona"),
|
|
134
134
|
("self-update", "cfg", "configuration", "Update boost itself to the latest version"),
|
|
135
135
|
# Team & Collaboration (6)
|
|
@@ -113,6 +113,10 @@ def cmd_bmad(argv) -> int:
|
|
|
113
113
|
help="enable the startup toggle right after install")
|
|
114
114
|
p.add_argument("--plain", action="store_true",
|
|
115
115
|
help="route: print the banner as text, not as hook JSON")
|
|
116
|
+
p.add_argument("--force", action="store_true",
|
|
117
|
+
help="reach hosts whose settings file lies outside this "
|
|
118
|
+
"$HOME (a relocated $CODEX_HOME), which on/off/"
|
|
119
|
+
"startup/uninstall/disable otherwise skip")
|
|
116
120
|
p.add_argument("--host", metavar="H", default=None,
|
|
117
121
|
choices=(*hookhost.hosts(), "auto"),
|
|
118
122
|
help="on/startup: hosts to hook (%s; default auto: "
|
|
@@ -121,9 +125,9 @@ def cmd_bmad(argv) -> int:
|
|
|
121
125
|
args = p.parse_args(argv)
|
|
122
126
|
|
|
123
127
|
if args.action == "on":
|
|
124
|
-
return _autopilot_on(args.scope, args.host)
|
|
128
|
+
return _autopilot_on(args.scope, args.host, args.force)
|
|
125
129
|
if args.action == "off":
|
|
126
|
-
return _autopilot_off(args.scope)
|
|
130
|
+
return _autopilot_off(args.scope, args.force)
|
|
127
131
|
if args.action == "route":
|
|
128
132
|
return _route(args.value, args.plain, args.scope, _one_host(args.host))
|
|
129
133
|
if args.action == "personas":
|
|
@@ -133,13 +137,14 @@ def cmd_bmad(argv) -> int:
|
|
|
133
137
|
if args.action == "init":
|
|
134
138
|
return _init(args.modules, args.startup)
|
|
135
139
|
if args.action == "startup":
|
|
136
|
-
return _startup(args.value or "status", args.scope, args.host
|
|
140
|
+
return _startup(args.value or "status", args.scope, args.host,
|
|
141
|
+
args.force)
|
|
137
142
|
if args.action == "orient":
|
|
138
143
|
return _orient(args.scope, _one_host(args.host))
|
|
139
144
|
if args.action == "uninstall":
|
|
140
|
-
return _uninstall(args.scope, args.yes)
|
|
145
|
+
return _uninstall(args.scope, args.yes, args.force)
|
|
141
146
|
if args.action == "disable":
|
|
142
|
-
return _disable(args.scope)
|
|
147
|
+
return _disable(args.scope, args.force)
|
|
143
148
|
if args.action == "enable":
|
|
144
149
|
return _enable(args.scope)
|
|
145
150
|
return _doctor() # doctor | status
|
|
@@ -187,7 +192,7 @@ def _one_host(host) -> str:
|
|
|
187
192
|
return hookhost.CLAUDE if host in (None, "auto") else host
|
|
188
193
|
|
|
189
194
|
|
|
190
|
-
def _hook_hosts(scope: str, requested=None) -> list[str]:
|
|
195
|
+
def _hook_hosts(scope: str, requested=None, force: bool = False) -> list[str]:
|
|
191
196
|
"""Hosts to write hooks into: Claude always, others on evidence of use.
|
|
192
197
|
|
|
193
198
|
Claude is unconditional. It is boost's primary host and the behaviour every
|
|
@@ -205,20 +210,55 @@ def _hook_hosts(scope: str, requested=None) -> list[str]:
|
|
|
205
210
|
|
|
206
211
|
``requested`` (`--host`) overrides the rule: naming one host writes that
|
|
207
212
|
host only, so Claude-only no longer means hand-editing Gemini's settings
|
|
208
|
-
after every `on`.
|
|
213
|
+
after every `on`. It does **not** override the escape guard — naming a
|
|
214
|
+
host whose file lies outside this `$HOME` raises here, before the caller
|
|
215
|
+
has written anything, rather than from `add_hook` half a command later.
|
|
216
|
+
`--force` is what gets past it, on either path.
|
|
217
|
+
|
|
218
|
+
Resolved once per command and passed around, not recomputed per hook:
|
|
219
|
+
`on` installs two hooks, and a host list that decided itself twice said
|
|
220
|
+
"skipping Codex CLI" twice for one decision.
|
|
209
221
|
"""
|
|
210
222
|
if requested not in (None, "auto"):
|
|
211
|
-
|
|
223
|
+
cs.refuse_escape(scope, str(requested), force=force)
|
|
224
|
+
return [str(requested)]
|
|
212
225
|
chosen = [hookhost.CLAUDE]
|
|
213
226
|
for host in hookhost.hosts():
|
|
214
227
|
if host == hookhost.CLAUDE:
|
|
215
228
|
continue
|
|
216
229
|
dotdir = cs.settings_path(scope, host=host).parent
|
|
217
|
-
if shutil.which(hookhost.cli(host)) or dotdir.is_dir():
|
|
218
|
-
|
|
230
|
+
if not (shutil.which(hookhost.cli(host)) or dotdir.is_dir()):
|
|
231
|
+
continue
|
|
232
|
+
# After the evidence check: warning about a host that was never a
|
|
233
|
+
# candidate is noise, and it is the only thing this warning is for.
|
|
234
|
+
if _skip_escaping(scope, host, force):
|
|
235
|
+
continue
|
|
236
|
+
chosen.append(host)
|
|
219
237
|
return chosen
|
|
220
238
|
|
|
221
239
|
|
|
240
|
+
def _skip_escaping(scope: str, host: str, force: bool = False) -> bool:
|
|
241
|
+
"""True — and says so — when `host`'s file lies outside this `$HOME`.
|
|
242
|
+
|
|
243
|
+
`bmad on`/`off` sweep every host they find, so one host boost must not
|
|
244
|
+
write is a reason to leave that host alone, not to abort the sweep: an
|
|
245
|
+
unguarded `add_hook` raises and Claude's hook never gets installed either.
|
|
246
|
+
|
|
247
|
+
The deliberate case is `--force`, on `bmad` itself and not only on `boost
|
|
248
|
+
hooks`. Without it here, `bmad doctor` could report a hook in a relocated
|
|
249
|
+
`$CODEX_HOME` — it reads what will actually run — that `bmad off` then
|
|
250
|
+
refused to remove, with nothing in the command able to reconcile the two.
|
|
251
|
+
"""
|
|
252
|
+
if force:
|
|
253
|
+
return False
|
|
254
|
+
target = cs.escaping_path(scope, host)
|
|
255
|
+
if target is None:
|
|
256
|
+
return False
|
|
257
|
+
out.warn("skipping %s — %s is outside this $HOME"
|
|
258
|
+
% (hookhost.label(host), target), wrap=True)
|
|
259
|
+
return True
|
|
260
|
+
|
|
261
|
+
|
|
222
262
|
#: (Claude event, hook name, matcher). The matcher is Claude's own
|
|
223
263
|
#: `SessionStart` source vocabulary, and `hookhost` deliberately does not
|
|
224
264
|
#: translate matchers — they pass through host-native — so it is applied only
|
|
@@ -243,11 +283,16 @@ def _host_command(host: str, command: str) -> str:
|
|
|
243
283
|
|
|
244
284
|
|
|
245
285
|
def _add_hook_everywhere(scope: str, spec: tuple, command: str,
|
|
246
|
-
|
|
247
|
-
"""Install one hook on
|
|
286
|
+
hosts: list[str], force: bool = False) -> list[str]:
|
|
287
|
+
"""Install one hook on each of `hosts`. Returns the ones written.
|
|
288
|
+
|
|
289
|
+
Takes the list rather than resolving it, because resolving it is where
|
|
290
|
+
the escape guard and its warning live and a caller installing two hooks
|
|
291
|
+
must make that decision once.
|
|
292
|
+
"""
|
|
248
293
|
event, name, matcher = spec
|
|
249
294
|
written = []
|
|
250
|
-
for host in
|
|
295
|
+
for host in hosts:
|
|
251
296
|
target = hookhost.translate(host, event)
|
|
252
297
|
if target is None:
|
|
253
298
|
# Refused out loud rather than dropped: a hook the user asked for
|
|
@@ -257,12 +302,13 @@ def _add_hook_everywhere(scope: str, spec: tuple, command: str,
|
|
|
257
302
|
continue
|
|
258
303
|
cs.add_hook(scope, target, name, _host_command(host, command),
|
|
259
304
|
matcher=matcher if host == hookhost.CLAUDE else None,
|
|
260
|
-
host=host)
|
|
305
|
+
host=host, force=force)
|
|
261
306
|
written.append(host)
|
|
262
307
|
return written
|
|
263
308
|
|
|
264
309
|
|
|
265
|
-
def _remove_hook_everywhere(scope: str, *specs: tuple
|
|
310
|
+
def _remove_hook_everywhere(scope: str, *specs: tuple,
|
|
311
|
+
force: bool = False) -> int:
|
|
266
312
|
"""Remove hooks from every host, installed or not. Returns how many were.
|
|
267
313
|
|
|
268
314
|
Unlike install this does not filter on `shutil.which`: someone who removed
|
|
@@ -273,21 +319,30 @@ def _remove_hook_everywhere(scope: str, *specs: tuple) -> int:
|
|
|
273
319
|
"""
|
|
274
320
|
removed = 0
|
|
275
321
|
for host in hookhost.hosts():
|
|
322
|
+
if _skip_escaping(scope, host, force):
|
|
323
|
+
continue
|
|
276
324
|
for event, name, _matcher in specs:
|
|
277
325
|
target = hookhost.translate(host, event)
|
|
278
326
|
if target is not None:
|
|
279
|
-
removed += cs.remove_hook(scope, target, name, host=host
|
|
327
|
+
removed += cs.remove_hook(scope, target, name, host=host,
|
|
328
|
+
force=force)
|
|
280
329
|
return removed
|
|
281
330
|
|
|
282
331
|
|
|
283
|
-
def _autopilot_on(scope, requested_host=None) -> int:
|
|
332
|
+
def _autopilot_on(scope, requested_host=None, force: bool = False) -> int:
|
|
284
333
|
"""The one command. Personas + orientation + router, in one idempotent pass.
|
|
285
334
|
|
|
286
335
|
Global by default: the point of the autopilot is that a task arriving in
|
|
287
336
|
*any* repo already knows which persona owns it, and per-project setup would
|
|
288
337
|
make that a per-repo chore.
|
|
338
|
+
|
|
339
|
+
The host list is resolved **first**, before anything is written. It is the
|
|
340
|
+
only step that can refuse — a `--host` whose settings file lies outside
|
|
341
|
+
this `$HOME` — and refusing after `write_personas` left persona files on
|
|
342
|
+
disk that `_set_scope_state` never got to record.
|
|
289
343
|
"""
|
|
290
344
|
scope = scope or "global"
|
|
345
|
+
chosen = _hook_hosts(scope, requested_host, force)
|
|
291
346
|
agents = _agents_dir(scope)
|
|
292
347
|
# Asked before writing: whether this run *creates* the directory decides
|
|
293
348
|
# what running sessions can see (see the restart line below).
|
|
@@ -302,10 +357,10 @@ def _autopilot_on(scope, requested_host=None) -> int:
|
|
|
302
357
|
launcher = shlex.quote(str(paths.launcher()))
|
|
303
358
|
hosts = _add_hook_everywhere(
|
|
304
359
|
scope, _ORIENT_HOOK, "%s bmad orient --scope %s" % (launcher, scope),
|
|
305
|
-
|
|
360
|
+
chosen, force)
|
|
306
361
|
_add_hook_everywhere(scope, _ROUTE_HOOK,
|
|
307
362
|
"%s bmad route --scope %s" % (launcher, scope),
|
|
308
|
-
|
|
363
|
+
chosen, force)
|
|
309
364
|
_set_scope_state(scope, autopilot=True, startup=True, personas=present,
|
|
310
365
|
enabled_at=util.now_iso())
|
|
311
366
|
journal.log("bmad-autopilot", "on", scope=scope, personas=present)
|
|
@@ -335,9 +390,10 @@ def _autopilot_on(scope, requested_host=None) -> int:
|
|
|
335
390
|
return 0
|
|
336
391
|
|
|
337
392
|
|
|
338
|
-
def _autopilot_off(scope) -> int:
|
|
393
|
+
def _autopilot_off(scope, force: bool = False) -> int:
|
|
339
394
|
scope = scope or "global"
|
|
340
|
-
hooks_removed = _remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK
|
|
395
|
+
hooks_removed = _remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK,
|
|
396
|
+
force=force)
|
|
341
397
|
removed = core.remove_personas(_agents_dir(scope))
|
|
342
398
|
_set_scope_state(scope, autopilot=False, startup=False, personas=0)
|
|
343
399
|
journal.log("bmad-autopilot", "off", scope=scope, personas=len(removed))
|
|
@@ -350,6 +406,15 @@ def _autopilot_off(scope) -> int:
|
|
|
350
406
|
def _read_hook_stdin() -> dict:
|
|
351
407
|
"""Claude Code's UserPromptSubmit payload, or {} for anything unreadable.
|
|
352
408
|
|
|
409
|
+
One reader for every host, because the payload keys are the same on all
|
|
410
|
+
three. Measured for Codex, not assumed: its
|
|
411
|
+
``user-prompt-submit.command.input`` schema requires ``prompt``,
|
|
412
|
+
``session_id``, ``cwd`` and ``hook_event_name`` under exactly Claude's
|
|
413
|
+
snake_case spellings (plus ``model``/``permission_mode``/``turn_id`` of
|
|
414
|
+
its own). A different spelling would have reached ``_route`` as an empty
|
|
415
|
+
prompt, classified TRIVIAL, and printed nothing — silently, because
|
|
416
|
+
``_host_command`` ends the hook in ``2>/dev/null || true``.
|
|
417
|
+
|
|
353
418
|
Accepts plain text too, so `echo "add tests for the scanner" | boost bmad
|
|
354
419
|
route` works for a human debugging the routing table. (Give it a real
|
|
355
420
|
prompt: anything under `core.MIN_WORDS` words classifies as trivial and
|
|
@@ -632,12 +697,14 @@ def _drop_retired_skills(before: dict, installed: list[str],
|
|
|
632
697
|
|
|
633
698
|
# ----------------------------------------------------------------------- toggle
|
|
634
699
|
|
|
635
|
-
def _startup(value, scope, requested_host=None) -> int:
|
|
700
|
+
def _startup(value, scope, requested_host=None, force: bool = False) -> int:
|
|
636
701
|
scope = scope or "project"
|
|
637
702
|
if value == "on":
|
|
638
703
|
cmd = "%s bmad orient --scope %s" % (
|
|
639
704
|
shlex.quote(str(paths.launcher())), scope)
|
|
640
|
-
started = _add_hook_everywhere(
|
|
705
|
+
started = _add_hook_everywhere(
|
|
706
|
+
scope, _ORIENT_HOOK, cmd,
|
|
707
|
+
_hook_hosts(scope, requested_host, force), force)
|
|
641
708
|
_set_scope_state(scope, startup=True)
|
|
642
709
|
journal.log("bmad-startup", "on", scope=scope)
|
|
643
710
|
out.ok("BMAD startup ON (%s) — new sessions get orientation" % scope)
|
|
@@ -645,7 +712,7 @@ def _startup(value, scope, requested_host=None) -> int:
|
|
|
645
712
|
out.dim(" hook → %s" % cs.settings_path(scope, host=host))
|
|
646
713
|
return 0
|
|
647
714
|
if value == "off":
|
|
648
|
-
_remove_hook_everywhere(scope, _ORIENT_HOOK)
|
|
715
|
+
_remove_hook_everywhere(scope, _ORIENT_HOOK, force=force)
|
|
649
716
|
_set_scope_state(scope, startup=False)
|
|
650
717
|
journal.log("bmad-startup", "off", scope=scope)
|
|
651
718
|
out.ok("BMAD startup OFF (%s) — skills stay installed" % scope)
|
|
@@ -692,14 +759,14 @@ def _status(scope) -> int:
|
|
|
692
759
|
|
|
693
760
|
# ------------------------------------------------------------------- teardown
|
|
694
761
|
|
|
695
|
-
def _uninstall(scope, yes) -> int:
|
|
762
|
+
def _uninstall(scope, yes, force: bool = False) -> int:
|
|
696
763
|
scope = scope or "project"
|
|
697
764
|
if not (yes or out.confirm(
|
|
698
765
|
"Remove BMAD (%s)? deletes bmad-* skills%s" % (
|
|
699
766
|
scope, " + _bmad/, _bmad-output/" if scope == "project" else ""))):
|
|
700
767
|
out.info("aborted")
|
|
701
768
|
return 1
|
|
702
|
-
_remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK)
|
|
769
|
+
_remove_hook_everywhere(scope, _ORIENT_HOOK, _ROUTE_HOOK, force=force)
|
|
703
770
|
removed = _rm_skills(_skills_dir(scope))
|
|
704
771
|
removed += len(core.remove_personas(_agents_dir(scope)))
|
|
705
772
|
if scope == "project":
|
|
@@ -714,10 +781,10 @@ def _uninstall(scope, yes) -> int:
|
|
|
714
781
|
return 0
|
|
715
782
|
|
|
716
783
|
|
|
717
|
-
def _disable(scope) -> int:
|
|
784
|
+
def _disable(scope, force: bool = False) -> int:
|
|
718
785
|
"""Quarantine: turn startup off and move skills aside (recoverable)."""
|
|
719
786
|
scope = scope or "project"
|
|
720
|
-
_remove_hook_everywhere(scope, _ORIENT_HOOK)
|
|
787
|
+
_remove_hook_everywhere(scope, _ORIENT_HOOK, force=force)
|
|
721
788
|
qdir = _quarantine_dir(scope)
|
|
722
789
|
qdir.mkdir(parents=True, exist_ok=True)
|
|
723
790
|
moved = 0
|
|
@@ -2237,8 +2237,10 @@ def cmd_mcp(argv) -> int:
|
|
|
2237
2237
|
out.info(" ".join(cmd))
|
|
2238
2238
|
|
|
2239
2239
|
for host in done:
|
|
2240
|
-
# agy
|
|
2241
|
-
# would describe a distinction
|
|
2240
|
+
# agy and Codex have no scopes — one global file each — so claiming
|
|
2241
|
+
# "(scope: user)" for either would describe a distinction their CLIs
|
|
2242
|
+
# do not have, and send anyone looking for a project-scoped entry
|
|
2243
|
+
# after something that cannot exist.
|
|
2242
2244
|
scope_note = " (scope: user)" if mcphost.has_scope(host) else ""
|
|
2243
2245
|
out.ok("%sed boost as an MCP server for %s%s"
|
|
2244
2246
|
% (verb, mcphost.label(host), scope_note))
|