boost-skill-cli 1.2.57__tar.gz → 1.2.59__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.57/boost_skill_cli.egg-info → boost_skill_cli-1.2.59}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/quality.py +15 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/claude_settings.py +36 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/config.py +25 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/store.py +20 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/data/registries.json +15 -3
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/gstack-tap-first-then-coexistence.md +16 -10
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +6 -1
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/tool-call-eval-tier.md +20 -3
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap.html +42 -13
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/build_registries.py +24 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_quality.py +40 -0
- boost_skill_cli-1.2.59/tests/unit/test_bot_pr_dco.py +130 -0
- boost_skill_cli-1.2.59/tests/unit/test_gstack_coexistence.py +285 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.gitattributes +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.gitignore +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.vale/styles/boost/AIWriting.yml +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/.vale.ini +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/DCO +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/GOVERNANCE.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/LICENSE +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/MAINTAINERS.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/Makefile +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/README.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/SUPPORT.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/quickstart.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/aihost.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/hookhost.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/shards.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/codecov.yml +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/bmad.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/code-review.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/commit-audit.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/dependencies.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/index.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/openssf-badge.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/BOOST-D27.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ai-backend-fanout.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/bm25-has-no-stemming.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/bmad-hooks-all-hosts.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/branch-current-gate.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/cli-command-audit.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/cli-output-ignored-the-terminal.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/cold-search-reads-the-whole-catalogue.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dense-reindex-has-no-progress-or-durability.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dense-reindex-reuses-whole-taps.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dense-search-rescans-every-vector.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/gemini-duplicate-skill-discovery.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/gemini-hooks-host-aware.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/gemini-mcp-parity.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/long-hints-overflow-narrow-panes.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/marketing-crm-domain-had-no-category.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-cannot-read-a-skill-before-installing.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/openssf-best-practices-badge.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/openssf-gold-ceiling.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/openssf-playbook.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/openssf-silver.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/osps-baseline-levels.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/pathlib-exists-is-not-total.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/published-shards-have-no-consumer.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/readme-prune-and-search-guide.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/relicence-apache-2.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/reproducible-release-artifacts.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/search-and-browse-visual-refresh.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/shard-runs-reembed-everything-weekly.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/smart-rerank-pays-per-novel-query.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/the-scale-corpus-refreshed-the-wrong-rows.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/the-shard-job-that-could-not-finish.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/two-ci-controls-that-could-not-act.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/vex-openvex-feed.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/security-design.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/semantic-search.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/verifying-releases.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/vex/meta.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/vex/openvex.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/vex/statements/gitleaks-secretscan-test-fixtures.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/vex/statements/quality-trust-fingerprint-not-sensitive.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/vex/statements/zizmor-adhoc-packages-lint-runners.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/docs/vex/statements/zizmor-dangerous-triggers-workflow-run.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/README.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/examples/README.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/index.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/noxfile.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/add_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/build_vex.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/check_branch_current.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/check_dco.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/check_reproducible.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/eval_tools.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/publish_shards.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/scripts/shard_plan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/setup.cfg +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/style/README.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/style/boost.css +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/style/boost.js +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/style/demo.html +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/eval/tool_calls.jsonl +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_bmad_all_hosts.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_hooks_gemini.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_pane_width.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_quickstart.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_tap_pins.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/10-name-too-long.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/corpus/registry/11-long-owner-repo.txt +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_aihost.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_branch_current.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_check_dco.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_check_reproducible.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_entry_reuse.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_progress.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_quantized.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_ready_order.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dense_status_cheap.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_eval_tools.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_hook_settings_hosts.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_hookhost.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mcp_read.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_normalize_sdist.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_rag_fastpath.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_registry_parallel.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_rerank_cache.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_shard_plan.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_shards.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_shards_incremental.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_spdx_headers.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_tap_pins.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_version_tags.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_vex.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.57 → boost_skill_cli-1.2.59}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.59'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 59)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -24,6 +24,7 @@ from ..core import (
|
|
|
24
24
|
agents,
|
|
25
25
|
ai,
|
|
26
26
|
catalog,
|
|
27
|
+
claude_settings,
|
|
27
28
|
complete,
|
|
28
29
|
frontmatter,
|
|
29
30
|
gitutil,
|
|
@@ -549,6 +550,20 @@ def cmd_doctor(argv):
|
|
|
549
550
|
"left alone; yours to remove or repair"
|
|
550
551
|
% (len(foreign), _s(len(foreign))))
|
|
551
552
|
|
|
553
|
+
others = claude_settings.foreign_hooks("global")
|
|
554
|
+
if others:
|
|
555
|
+
# `out.info`, not `bad`, for the same reason as the foreign symlinks
|
|
556
|
+
# above: boost did not write these and will never remove them, so
|
|
557
|
+
# counting them would leave doctor permanently red on something no
|
|
558
|
+
# boost command can clear. Naming them is still worth a line — at
|
|
559
|
+
# 130k stars gstack is now a likely second writer of this exact file,
|
|
560
|
+
# and a user debugging a hook needs to know boost is not the only one
|
|
561
|
+
# in it.
|
|
562
|
+
events = sorted({h["event"] for h in others})
|
|
563
|
+
out.info("%d hook%s in ~/.claude/settings.json not managed by boost "
|
|
564
|
+
"(%s) — left alone; `boost hooks` only touches its own"
|
|
565
|
+
% (len(others), _s(len(others)), ", ".join(events)), wrap=True)
|
|
566
|
+
|
|
552
567
|
for dup in store.duplicate_discovery():
|
|
553
568
|
# An agent that reads the canonical store natively, holding its own
|
|
554
569
|
# entry for a skill that store already carries. Boost did not put it
|
|
@@ -200,6 +200,42 @@ def has_hook(scope: str, event: str, name: str,
|
|
|
200
200
|
return False
|
|
201
201
|
|
|
202
202
|
|
|
203
|
+
def foreign_hooks(scope: str | None = None,
|
|
204
|
+
project_dir: Path | None = None,
|
|
205
|
+
host: str = hookhost.CLAUDE) -> list[dict]:
|
|
206
|
+
"""Hooks in this host's settings that boost does not own.
|
|
207
|
+
|
|
208
|
+
The complement of :func:`list_hooks`, which skips every entry without the
|
|
209
|
+
`# boost:` marker — so boost could write this file for years and never be
|
|
210
|
+
able to say who else was writing it. That matters now that a settings.json
|
|
211
|
+
routinely has more than one writer: `garrytan/gstack`'s `./setup` registers
|
|
212
|
+
its own Stop hooks here and prunes "dead gstack entries" on every run, and
|
|
213
|
+
boost prunes its own by marker. The two namespaces are disjoint and
|
|
214
|
+
`tests/unit/test_gstack_coexistence.py` pins that they stay that way.
|
|
215
|
+
|
|
216
|
+
This exists so `boost doctor` can *report* the other tenant rather than
|
|
217
|
+
discover it by deleting something. Nothing here writes: a foreign hook is
|
|
218
|
+
not a boost problem to fix, it is context for a user reading a health
|
|
219
|
+
check — which is why doctor counts it with `out.info` rather than raising
|
|
220
|
+
the issue count.
|
|
221
|
+
"""
|
|
222
|
+
scopes = (scope,) if scope else SCOPES
|
|
223
|
+
rows: list[dict] = []
|
|
224
|
+
for sc in scopes:
|
|
225
|
+
data = load(sc, project_dir, host)
|
|
226
|
+
for event, blocks in (data.get("hooks") or {}).items():
|
|
227
|
+
for block in blocks or []:
|
|
228
|
+
if not isinstance(block, dict):
|
|
229
|
+
continue
|
|
230
|
+
for h in block.get("hooks") or []:
|
|
231
|
+
raw = str(h.get("command", ""))
|
|
232
|
+
if _hook_name(raw) is not None:
|
|
233
|
+
continue # ours
|
|
234
|
+
rows.append({"scope": sc, "event": event, "command": raw,
|
|
235
|
+
"matcher": block.get("matcher", "")})
|
|
236
|
+
return rows
|
|
237
|
+
|
|
238
|
+
|
|
203
239
|
def list_hooks(scope: str | None = None,
|
|
204
240
|
project_dir: Path | None = None,
|
|
205
241
|
host: str = hookhost.CLAUDE) -> list[dict]:
|
|
@@ -131,6 +131,31 @@ def load_registry_catalog() -> list:
|
|
|
131
131
|
return data.get("registries", [])
|
|
132
132
|
|
|
133
133
|
|
|
134
|
+
def self_installing_command(tap: str) -> str | None:
|
|
135
|
+
"""The repo's own install command, when boost must not copy its items.
|
|
136
|
+
|
|
137
|
+
Some registries are real catalogues of Markdown and some are programs that
|
|
138
|
+
happen to ship Markdown entry points. For the second kind boost's install —
|
|
139
|
+
copy the item's directory into the canonical store, symlink it out — yields
|
|
140
|
+
a skill that *looks* installed and cannot run, because the step that makes
|
|
141
|
+
it work is the repo's own build, not a fetch. Returns the upstream command
|
|
142
|
+
so the caller can name it instead of pretending; None for every other tap.
|
|
143
|
+
|
|
144
|
+
The tap may be addressed by full ``owner/repo`` or by the bare repo name a
|
|
145
|
+
clone directory carries, so both resolve.
|
|
146
|
+
"""
|
|
147
|
+
if not tap:
|
|
148
|
+
return None
|
|
149
|
+
for row in load_registry_catalog():
|
|
150
|
+
cmd = row.get("self_installing")
|
|
151
|
+
if not cmd:
|
|
152
|
+
continue
|
|
153
|
+
name = row.get("name") or ""
|
|
154
|
+
if tap in (name, name.split("/")[-1]):
|
|
155
|
+
return cmd
|
|
156
|
+
return None
|
|
157
|
+
|
|
158
|
+
|
|
134
159
|
def _merge(base: dict, override: dict) -> dict:
|
|
135
160
|
out = deepcopy(base)
|
|
136
161
|
# `or {}`: the only caller feeds this json.loads() of config.json, so a file
|
|
@@ -17,6 +17,7 @@ from pathlib import Path
|
|
|
17
17
|
from ..errors import BoostError
|
|
18
18
|
from . import (
|
|
19
19
|
agents,
|
|
20
|
+
config,
|
|
20
21
|
gitutil,
|
|
21
22
|
journal,
|
|
22
23
|
lockfile,
|
|
@@ -489,6 +490,24 @@ def _require_project_base(scope: str, base, what: str) -> Path | None:
|
|
|
489
490
|
return resolved
|
|
490
491
|
|
|
491
492
|
|
|
493
|
+
def _refuse_self_installing(entry: dict) -> None:
|
|
494
|
+
"""Refuse to half-copy an item whose repo installs itself.
|
|
495
|
+
|
|
496
|
+
Checked before the kind dispatch because the property belongs to the repo,
|
|
497
|
+
not the item: every kind it ships has the same missing build step. Naming
|
|
498
|
+
the upstream command is the whole point — a refusal that only says "no"
|
|
499
|
+
leaves the user exactly where `boost install` pretending would have.
|
|
500
|
+
"""
|
|
501
|
+
cmd = config.self_installing_command(entry.get("tap") or "")
|
|
502
|
+
if not cmd:
|
|
503
|
+
return
|
|
504
|
+
raise BoostError(
|
|
505
|
+
"%s comes from %s, which installs itself — boost would copy its "
|
|
506
|
+
"Markdown and leave a skill that cannot run"
|
|
507
|
+
% (entry.get("name", "?"), entry.get("tap", "?")),
|
|
508
|
+
hint="run the registry's own installer: %s" % cmd)
|
|
509
|
+
|
|
510
|
+
|
|
492
511
|
def install(entry: dict, force: bool = False,
|
|
493
512
|
only_agents: list[str] | None = None,
|
|
494
513
|
scope: str = "user", base=None) -> InstallResult:
|
|
@@ -499,6 +518,7 @@ def install(entry: dict, force: bool = False,
|
|
|
499
518
|
current repo). Every kind honors it.
|
|
500
519
|
"""
|
|
501
520
|
scopes.check_scope(scope)
|
|
521
|
+
_refuse_self_installing(entry)
|
|
502
522
|
kind = entry.get("kind", "skill")
|
|
503
523
|
if kind == "rule":
|
|
504
524
|
return _install_rule(entry, force=force, only_agents=only_agents,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"generated_note": "Curated skill/rule/workflow registries for boost. est_items are research estimates; verify by tapping. list_only repos are index/awesome lists that link out.",
|
|
3
|
-
"count":
|
|
4
|
-
"est_items_total":
|
|
5
|
-
"est_items_scannable":
|
|
3
|
+
"count": 487,
|
|
4
|
+
"est_items_total": 34901,
|
|
5
|
+
"est_items_scannable": 30480,
|
|
6
6
|
"registries": [
|
|
7
7
|
{
|
|
8
8
|
"name": "Aaronontheweb/dotnet-cursor-rules",
|
|
@@ -1621,6 +1621,18 @@
|
|
|
1621
1621
|
"list_only": false,
|
|
1622
1622
|
"curated": true
|
|
1623
1623
|
},
|
|
1624
|
+
{
|
|
1625
|
+
"name": "garrytan/gstack",
|
|
1626
|
+
"url": "https://github.com/garrytan/gstack",
|
|
1627
|
+
"type": "skill",
|
|
1628
|
+
"category": "workflow",
|
|
1629
|
+
"focus": "Sprint-workflow slash commands \u2014 /ship, /qa, /review, /plan-*, /retro, /office-hours \u2014 self-installing across ten coding agents",
|
|
1630
|
+
"est_items": 61,
|
|
1631
|
+
"confidence": "high",
|
|
1632
|
+
"list_only": false,
|
|
1633
|
+
"curated": true,
|
|
1634
|
+
"self_installing": "git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup"
|
|
1635
|
+
},
|
|
1624
1636
|
{
|
|
1625
1637
|
"name": "GDvega/super-android-kotlin-firebase-skill",
|
|
1626
1638
|
"url": "https://github.com/GDvega/super-android-kotlin-firebase-skill",
|
|
@@ -658,6 +658,7 @@ tests/unit/test_aihost.py
|
|
|
658
658
|
tests/unit/test_bmad_core.py
|
|
659
659
|
tests/unit/test_boost_first_offer.py
|
|
660
660
|
tests/unit/test_bootstrap.py
|
|
661
|
+
tests/unit/test_bot_pr_dco.py
|
|
661
662
|
tests/unit/test_branch_current.py
|
|
662
663
|
tests/unit/test_browse.py
|
|
663
664
|
tests/unit/test_builtin.py
|
|
@@ -723,6 +724,7 @@ tests/unit/test_gitleaks_config.py
|
|
|
723
724
|
tests/unit/test_gitutil.py
|
|
724
725
|
tests/unit/test_gitutil_lfs.py
|
|
725
726
|
tests/unit/test_gitutil_sparse.py
|
|
727
|
+
tests/unit/test_gstack_coexistence.py
|
|
726
728
|
tests/unit/test_hook_settings_hosts.py
|
|
727
729
|
tests/unit/test_hookhost.py
|
|
728
730
|
tests/unit/test_imperative.py
|
|
@@ -2,22 +2,24 @@
|
|
|
2
2
|
id: gstack-tap-first-then-coexistence
|
|
3
3
|
board: code
|
|
4
4
|
section: compat
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Interop · Registry
|
|
7
7
|
complexity: M
|
|
8
8
|
impact: Med
|
|
9
9
|
wow: 3
|
|
10
10
|
note: 130k stars of SKILL.md that boost can index today, and a second installer writing into the same dotdirs
|
|
11
11
|
order: 106
|
|
12
|
-
owner:
|
|
12
|
+
owner: feat/gstack-registry
|
|
13
13
|
pr:
|
|
14
14
|
title: <code>garrytan/gstack</code> — tap it first, then learn to coexist with it
|
|
15
15
|
---
|
|
16
16
|
<a href="https://github.com/garrytan/gstack">garrytan/gstack</a> is the largest thing in
|
|
17
17
|
boost's domain that boost has never heard of: <b>130,344 stars, 19,602 forks</b>, MIT, created
|
|
18
|
-
2026-03-11 and pushed the same day this was written. It ships
|
|
18
|
+
2026-03-11 and pushed the same day this was written. It ships <b>61 measured items</b> — the repo
|
|
19
|
+
<em>description</em> advertises 23 and its README lists ~35, and
|
|
20
|
+
<code>scripts/measure_registry.py</code> over a sparse clone of <code>07b59e39</code> counts 61
|
|
19
21
|
— <code>/review</code>, <code>/ship</code>, <code>/qa</code>, <code>/cso</code>,
|
|
20
|
-
<code>/autoplan</code>, <code>/office-hours</code>
|
|
22
|
+
<code>/autoplan</code>, <code>/office-hours</code> among them, each as a
|
|
21
23
|
<code><name>/SKILL.md</code> directory at the repo root, which is <em>exactly</em> the
|
|
22
24
|
layout <code>catalog.scan_dir</code> already indexes. Nothing needs building for boost to
|
|
23
25
|
catalogue it.
|
|
@@ -53,12 +55,16 @@ Boost should not own bun, Chromium, or someone else's upgrade channel.
|
|
|
53
55
|
into the same places boost does, and at 130k stars it is now the likeliest other tenant on a
|
|
54
56
|
user's machine:
|
|
55
57
|
|
|
56
|
-
<b>The canonical store.</b>
|
|
57
|
-
<code>.agents/skills/gstack</code
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
<b>The canonical store.</b> <b>Corrected on implementation:</b> this card claimed repo-local
|
|
59
|
+
gstack installs land at <code>.agents/skills/gstack</code>. They do not — gstack's README
|
|
60
|
+
installs to <code>~/.claude/skills/gstack</code>, a <em>real directory</em> inside a linking
|
|
61
|
+
agent's skills dir, and the team install bootstraps <code>.claude/</code> rather than
|
|
62
|
+
<code>.agents/</code>. The hazard is real either way and lands one path over:
|
|
63
|
+
<code>store.duplicate_discovery()</code> is already <em>topology, not ownership</em>, and
|
|
64
|
+
<code>sync_plan</code>'s stale-link sweep asks <code>is_symlink()</code> before anything else, so
|
|
65
|
+
gstack's real directories are never candidates. Neither had a test saying so, and the cost of
|
|
66
|
+
being wrong is an 8 MB working install of someone else's program deleted as "boost's stale
|
|
67
|
+
links".
|
|
62
68
|
|
|
63
69
|
<b>Host dotdirs boost does not target.</b> gstack installs to
|
|
64
70
|
<code>~/.codex/skills/gstack-*</code>, <code>~/.config/opencode/skills/gstack-*</code>,
|
|
@@ -7,7 +7,7 @@ category: Tech-debt
|
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Low
|
|
9
9
|
wow: 1
|
|
10
|
-
note: blocked
|
|
10
|
+
note: still blocked — re-checked 2026-08-30, PyPI's newest ragas is still 0.4.3
|
|
11
11
|
order: 97
|
|
12
12
|
title: unpin the <code>[eval]</code> langchain stack when ragas ships its fix
|
|
13
13
|
---
|
|
@@ -27,6 +27,11 @@ pins, and adapt <code>scripts/eval_explain.py</code> if the 0.4 scoring API move
|
|
|
27
27
|
<code>test_eval_faithfulness.py</code> stubs in the unit suite). The <code>eval-explain</code> workflow is
|
|
28
28
|
the live proof — it must stay green with real keys.
|
|
29
29
|
|
|
30
|
+
<b>Re-checked 2026-08-30.</b> <code>pip index versions ragas</code> still reports
|
|
31
|
+
<code>0.4.3</code> as the newest release, so nothing has changed and this card is still not
|
|
32
|
+
claimable. Recorded here rather than left implicit: a card that says "check before starting"
|
|
33
|
+
gives a reader no way to tell a check that came back negative from a check nobody ran.
|
|
34
|
+
|
|
30
35
|
<b>Why it stays its own card.</b> The shipped integration card documents the block but will not be
|
|
31
36
|
re-read; an unpin nobody remembers is how a workaround pin outlives its reason by years. This card
|
|
32
37
|
is the reminder, and it is deliberately not claimable until the upstream release exists.
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
id: tool-call-eval-tier
|
|
3
3
|
board: code
|
|
4
4
|
section: planned
|
|
5
|
-
status:
|
|
5
|
+
status: planned
|
|
6
6
|
category: Quality · Eval
|
|
7
7
|
complexity: L
|
|
8
8
|
impact: High
|
|
9
9
|
wow: 4
|
|
10
|
-
note:
|
|
11
|
-
owner:
|
|
10
|
+
note: Claude Code arm shipped in #616; the second host arm is unwritten and the card stays open for it
|
|
11
|
+
owner:
|
|
12
12
|
order: 96
|
|
13
13
|
title: a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions
|
|
14
14
|
---
|
|
@@ -61,6 +61,23 @@ N runs per prompt with an interval rather than a single pass/fail, the way
|
|
|
61
61
|
<code>golden-set-statistical-power</code> established for retrieval — a one-shot replay cannot tell
|
|
62
62
|
a wording regression from a sampling wobble.
|
|
63
63
|
|
|
64
|
+
<b>Where this stands (2026-08-30).</b> The Claude Code arm shipped in #616:
|
|
65
|
+
<code>scripts/eval_tools.py</code>, a 16-prompt set halved into should-call and should-NOT-call,
|
|
66
|
+
Wilson intervals over N runs, and a verdict that floors call rate <em>and</em> ceilings false
|
|
67
|
+
calls. Its first real run measured <b>3/3 false calls</b> — boost's tools fired on "What is
|
|
68
|
+
the difference between a Python list and a tuple?", which the shipped skip list excuses by name.
|
|
69
|
+
Call rate alone would have scored that a perfect 1.00, which is the whole argument for flooring
|
|
70
|
+
both directions, now with a number behind it.
|
|
71
|
+
|
|
72
|
+
<b>The card stays open because "per host, never averaged" is the binding requirement and only one
|
|
73
|
+
host has been driven.</b> Gemini CLI is not installed on the machine this was built on, and its
|
|
74
|
+
successor Antigravity CLI (<code>agy</code>, which boost already supports as its fifth agent
|
|
75
|
+
target and which has boost registered) cannot be driven from a sandbox: it starts a local
|
|
76
|
+
language server and dies on <code>listen tcp 127.0.0.1:0: bind: operation not permitted</code>.
|
|
77
|
+
Shipping an arm for a host nobody drove would put a number next to a measurement that never
|
|
78
|
+
happened — the exact unfalsifiable claim this tier exists to retire. The <code>owner</code>
|
|
79
|
+
is cleared rather than left on a merged branch, so the second arm is claimable.
|
|
80
|
+
|
|
64
81
|
<b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
|
|
65
82
|
next surface change can regress against, and a way to retire claims that survive only because
|
|
66
83
|
nobody can check them.
|
|
@@ -814,7 +814,7 @@ an oversight.</p></details>
|
|
|
814
814
|
</article>
|
|
815
815
|
|
|
816
816
|
<article class="cap rcard" id="tool-call-eval-tier">
|
|
817
|
-
<div class="head"><span class="pill
|
|
817
|
+
<div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Eval</span></div>
|
|
818
818
|
<h3>a Tier 3 eval for tool-call behaviour, floored in <b>both</b> directions</h3>
|
|
819
819
|
<p>boost's required gate floors <b>four</b> retrieval metrics — recall@k ≥ 0.78, hit@1 ≥ 0.40,
|
|
820
820
|
MRR ≥ 0.52, nDCG@k ≥ 0.58 — over a 91-query golden set and a 10,152-entry corpus, every
|
|
@@ -865,6 +865,23 @@ N runs per prompt with an interval rather than a single pass/fail, the way
|
|
|
865
865
|
<code>golden-set-statistical-power</code> established for retrieval — a one-shot replay cannot tell
|
|
866
866
|
a wording regression from a sampling wobble.
|
|
867
867
|
|
|
868
|
+
<b>Where this stands (2026-08-30).</b> The Claude Code arm shipped in #616:
|
|
869
|
+
<code>scripts/eval_tools.py</code>, a 16-prompt set halved into should-call and should-NOT-call,
|
|
870
|
+
Wilson intervals over N runs, and a verdict that floors call rate <em>and</em> ceilings false
|
|
871
|
+
calls. Its first real run measured <b>3/3 false calls</b> — boost's tools fired on "What is
|
|
872
|
+
the difference between a Python list and a tuple?", which the shipped skip list excuses by name.
|
|
873
|
+
Call rate alone would have scored that a perfect 1.00, which is the whole argument for flooring
|
|
874
|
+
both directions, now with a number behind it.
|
|
875
|
+
|
|
876
|
+
<b>The card stays open because "per host, never averaged" is the binding requirement and only one
|
|
877
|
+
host has been driven.</b> Gemini CLI is not installed on the machine this was built on, and its
|
|
878
|
+
successor Antigravity CLI (<code>agy</code>, which boost already supports as its fifth agent
|
|
879
|
+
target and which has boost registered) cannot be driven from a sandbox: it starts a local
|
|
880
|
+
language server and dies on <code>listen tcp 127.0.0.1:0: bind: operation not permitted</code>.
|
|
881
|
+
Shipping an arm for a host nobody drove would put a number next to a measurement that never
|
|
882
|
+
happened — the exact unfalsifiable claim this tier exists to retire. The <code>owner</code>
|
|
883
|
+
is cleared rather than left on a merged branch, so the second arm is claimable.
|
|
884
|
+
|
|
868
885
|
<b>What it unlocks.</b> The first honest answer to "did that description edit help", a baseline the
|
|
869
886
|
next surface change can regress against, and a way to retire claims that survive only because
|
|
870
887
|
nobody can check them.</p>
|
|
@@ -872,7 +889,7 @@ nobody can check them.</p>
|
|
|
872
889
|
<span class="m">Complexity <b>L</b></span>
|
|
873
890
|
<span class="m hi">Impact <b>High</b></span>
|
|
874
891
|
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
875
|
-
<span class="m">
|
|
892
|
+
<span class="m">Claude Code arm shipped in</span>
|
|
876
893
|
</div>
|
|
877
894
|
</article>
|
|
878
895
|
|
|
@@ -895,6 +912,11 @@ pins, and adapt <code>scripts/eval_explain.py</code> if the 0.4 scoring API move
|
|
|
895
912
|
<code>test_eval_faithfulness.py</code> stubs in the unit suite). The <code>eval-explain</code> workflow is
|
|
896
913
|
the live proof — it must stay green with real keys.
|
|
897
914
|
|
|
915
|
+
<b>Re-checked 2026-08-30.</b> <code>pip index versions ragas</code> still reports
|
|
916
|
+
<code>0.4.3</code> as the newest release, so nothing has changed and this card is still not
|
|
917
|
+
claimable. Recorded here rather than left implicit: a card that says "check before starting"
|
|
918
|
+
gives a reader no way to tell a check that came back negative from a check nobody ran.
|
|
919
|
+
|
|
898
920
|
<b>Why it stays its own card.</b> The shipped integration card documents the block but will not be
|
|
899
921
|
re-read; an unpin nobody remembers is how a workaround pin outlives its reason by years. This card
|
|
900
922
|
is the reminder, and it is deliberately not claimable until the upstream release exists.</p>
|
|
@@ -902,7 +924,7 @@ is the reminder, and it is deliberately not claimable until the upstream release
|
|
|
902
924
|
<span class="m">Complexity <b>S</b></span>
|
|
903
925
|
<span class="m">Impact <b>Low</b></span>
|
|
904
926
|
<span class="m">Wow <b class="wow">★</b></span>
|
|
905
|
-
<span class="m">blocked
|
|
927
|
+
<span class="m">still blocked — re-checked 2026-08-30, PyPI's newest ragas is still 0.4.3</span>
|
|
906
928
|
</div>
|
|
907
929
|
</article>
|
|
908
930
|
|
|
@@ -11844,13 +11866,16 @@ about 4.7× by sampling and then re-ranked by a filter the report never men
|
|
|
11844
11866
|
</article>
|
|
11845
11867
|
|
|
11846
11868
|
<article class="cap rcard" id="gstack-tap-first-then-coexistence">
|
|
11847
|
-
<div class="head"><span class="pill
|
|
11869
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Interop · Registry</span></div>
|
|
11848
11870
|
<h3><code>garrytan/gstack</code> — tap it first, then learn to coexist with it</h3>
|
|
11871
|
+
<details class="cardbody"><summary>Write-up</summary>
|
|
11849
11872
|
<p><a href="https://github.com/garrytan/gstack">garrytan/gstack</a> is the largest thing in
|
|
11850
11873
|
boost's domain that boost has never heard of: <b>130,344 stars, 19,602 forks</b>, MIT, created
|
|
11851
|
-
2026-03-11 and pushed the same day this was written. It ships
|
|
11874
|
+
2026-03-11 and pushed the same day this was written. It ships <b>61 measured items</b> — the repo
|
|
11875
|
+
<em>description</em> advertises 23 and its README lists ~35, and
|
|
11876
|
+
<code>scripts/measure_registry.py</code> over a sparse clone of <code>07b59e39</code> counts 61
|
|
11852
11877
|
— <code>/review</code>, <code>/ship</code>, <code>/qa</code>, <code>/cso</code>,
|
|
11853
|
-
<code>/autoplan</code>, <code>/office-hours</code>
|
|
11878
|
+
<code>/autoplan</code>, <code>/office-hours</code> among them, each as a
|
|
11854
11879
|
<code><name>/SKILL.md</code> directory at the repo root, which is <em>exactly</em> the
|
|
11855
11880
|
layout <code>catalog.scan_dir</code> already indexes. Nothing needs building for boost to
|
|
11856
11881
|
catalogue it.
|
|
@@ -11886,12 +11911,16 @@ Boost should not own bun, Chromium, or someone else's upgrade channel.
|
|
|
11886
11911
|
into the same places boost does, and at 130k stars it is now the likeliest other tenant on a
|
|
11887
11912
|
user's machine:
|
|
11888
11913
|
|
|
11889
|
-
<b>The canonical store.</b>
|
|
11890
|
-
<code>.agents/skills/gstack</code
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11914
|
+
<b>The canonical store.</b> <b>Corrected on implementation:</b> this card claimed repo-local
|
|
11915
|
+
gstack installs land at <code>.agents/skills/gstack</code>. They do not — gstack's README
|
|
11916
|
+
installs to <code>~/.claude/skills/gstack</code>, a <em>real directory</em> inside a linking
|
|
11917
|
+
agent's skills dir, and the team install bootstraps <code>.claude/</code> rather than
|
|
11918
|
+
<code>.agents/</code>. The hazard is real either way and lands one path over:
|
|
11919
|
+
<code>store.duplicate_discovery()</code> is already <em>topology, not ownership</em>, and
|
|
11920
|
+
<code>sync_plan</code>'s stale-link sweep asks <code>is_symlink()</code> before anything else, so
|
|
11921
|
+
gstack's real directories are never candidates. Neither had a test saying so, and the cost of
|
|
11922
|
+
being wrong is an 8 MB working install of someone else's program deleted as "boost's stale
|
|
11923
|
+
links".
|
|
11895
11924
|
|
|
11896
11925
|
<b>Host dotdirs boost does not target.</b> gstack installs to
|
|
11897
11926
|
<code>~/.codex/skills/gstack-*</code>, <code>~/.config/opencode/skills/gstack-*</code>,
|
|
@@ -11912,7 +11941,7 @@ should be able to <em>see</em> a foreign hook block and report it without touchi
|
|
|
11912
11941
|
<b>Deliberately out of scope:</b> vendoring gstack, re-implementing its skills, or having boost
|
|
11913
11942
|
run <code>./setup</code>. The proposal is one registry row, one honest "self-installing" marker
|
|
11914
11943
|
on the install path, and one coexistence test per hazard named above — scoped down on purpose,
|
|
11915
|
-
because the fit is a catalogue fit, not an engine fit.</p>
|
|
11944
|
+
because the fit is a catalogue fit, not an engine fit.</p></details>
|
|
11916
11945
|
<div class="meta">
|
|
11917
11946
|
<span class="m">Complexity <b>M</b></span>
|
|
11918
11947
|
<span class="m">Impact <b>Med</b></span>
|
|
@@ -69,6 +69,25 @@ RETIRED = {
|
|
|
69
69
|
"fails the scheduled eval-scale gate on its pinned corpus",
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
# Repos that ship their own installer and cannot be installed by copying
|
|
73
|
+
# Markdown. boost's install is "copy the item's directory into the canonical
|
|
74
|
+
# store and symlink it out"; for these the item is a thin entry point over a
|
|
75
|
+
# build step boost does not run — `garrytan/gstack`'s `./setup` renders a
|
|
76
|
+
# per-host variant from ten TypeScript configs and its `/browse` and `/qa`
|
|
77
|
+
# skills drive a real Chromium behind Bun. Copying the Markdown alone produces
|
|
78
|
+
# a skill that *looks* installed and cannot run, which is the failure mode
|
|
79
|
+
# `store.source_dir_for` and `gitutil.materialize` exist to prevent and that
|
|
80
|
+
# materializing cannot fix here: the missing step is `bun install`, not a
|
|
81
|
+
# fetch. So the catalogue carries the repo (it is real, and worth searching)
|
|
82
|
+
# and the value is the upstream command to run instead. boost does not own
|
|
83
|
+
# bun, Chromium, or someone else's upgrade channel.
|
|
84
|
+
SELF_INSTALLING = {
|
|
85
|
+
"garrytan/gstack":
|
|
86
|
+
"git clone --single-branch --depth 1 "
|
|
87
|
+
"https://github.com/garrytan/gstack.git ~/.claude/skills/gstack "
|
|
88
|
+
"&& cd ~/.claude/skills/gstack && ./setup",
|
|
89
|
+
}
|
|
90
|
+
|
|
72
91
|
# --- skills (SKILL.md registries) -------------------------------------------
|
|
73
92
|
SKILLS = [
|
|
74
93
|
("travisvn/awesome-claude-skills", "meta", "Curated awesome-list of Claude Skills, tools, and resources", 60, "high"),
|
|
@@ -497,6 +516,7 @@ SKILLS = [
|
|
|
497
516
|
("Cold-IQ/ColdIQ-s-GTM-Skills", "marketing", "Cold email sequences, ABM messaging, buying signals, list building and deliverability", 90, "high"),
|
|
498
517
|
("LeadMagic/gtm-skills", "marketing", "CRM setup and hygiene (Salesforce, HubSpot, Attio), enrichment, AI SDR, ABM and lifecycle", 206, "high"),
|
|
499
518
|
("NEON-Rutger/B2B-revops-skills", "marketing", "B2B RevOps: CRM migration, lead routing, deal desk, pipeline visibility, ICP and forecasting", 38, "high"),
|
|
519
|
+
("garrytan/gstack", "workflow", "Sprint-workflow slash commands — /ship, /qa, /review, /plan-*, /retro, /office-hours — self-installing across ten coding agents", 61, "high"),
|
|
500
520
|
]
|
|
501
521
|
|
|
502
522
|
# --- rules (Cursor .mdc / .cursorrules / Windsurf) --------------------------
|
|
@@ -649,6 +669,10 @@ def rows(pairs, typ):
|
|
|
649
669
|
"confidence": conf,
|
|
650
670
|
"list_only": name in LIST_ONLY,
|
|
651
671
|
"curated": True,
|
|
672
|
+
# Only where set: adding a null to every row would rewrite the
|
|
673
|
+
# whole generated file to say nothing about 460 registries.
|
|
674
|
+
**({"self_installing": SELF_INSTALLING[name]}
|
|
675
|
+
if name in SELF_INSTALLING else {}),
|
|
652
676
|
}
|
|
653
677
|
|
|
654
678
|
|
|
@@ -220,6 +220,46 @@ class TestDoctor:
|
|
|
220
220
|
"run `boost reinstall gone`") in r.out
|
|
221
221
|
|
|
222
222
|
|
|
223
|
+
|
|
224
|
+
class TestDoctorSeesTheOtherTenant:
|
|
225
|
+
"""boost is no longer the only writer of ~/.claude/settings.json.
|
|
226
|
+
|
|
227
|
+
`garrytan/gstack`'s `./setup` registers its own Stop hooks there and prunes
|
|
228
|
+
"dead gstack entries" on every run; boost prunes its own by the `# boost:`
|
|
229
|
+
marker. doctor must be able to *say* the other writer is present without
|
|
230
|
+
touching it — and must not count it, because boost will never remove it and
|
|
231
|
+
a health check that stays permanently red on something no command can clear
|
|
232
|
+
stops being read (the same rule as the foreign broken symlinks above it).
|
|
233
|
+
"""
|
|
234
|
+
|
|
235
|
+
THEIRS = "~/.claude/skills/gstack/bin/gstack-timeline-stop"
|
|
236
|
+
|
|
237
|
+
def _write_foreign_hook(self):
|
|
238
|
+
from boost_cli.core import claude_settings as cs
|
|
239
|
+
cs.save("global", {"hooks": {"Stop": [
|
|
240
|
+
{"matcher": "*",
|
|
241
|
+
"hooks": [{"type": "command", "command": self.THEIRS}]}]}})
|
|
242
|
+
|
|
243
|
+
def test_doctor_reports_it_and_stays_green(self, boost, tapped):
|
|
244
|
+
self._write_foreign_hook()
|
|
245
|
+
r = boost("doctor") # the fixture asserts rc == 0
|
|
246
|
+
assert "not managed by boost" in r.out
|
|
247
|
+
assert "Stop" in r.out
|
|
248
|
+
|
|
249
|
+
def test_doctor_does_not_remove_it(self, boost, tapped):
|
|
250
|
+
from boost_cli.core import claude_settings as cs
|
|
251
|
+
self._write_foreign_hook()
|
|
252
|
+
boost("doctor")
|
|
253
|
+
blocks = cs.load("global")["hooks"]["Stop"]
|
|
254
|
+
assert blocks[0]["hooks"][0]["command"] == self.THEIRS
|
|
255
|
+
|
|
256
|
+
def test_a_clean_settings_file_says_nothing(self, boost, tapped):
|
|
257
|
+
# The line must be absent, not merely zero — doctor's output is read
|
|
258
|
+
# top to bottom and a "0 hooks not managed by boost" line is noise.
|
|
259
|
+
r = boost("doctor")
|
|
260
|
+
assert "not managed by boost" not in r.out
|
|
261
|
+
|
|
262
|
+
|
|
223
263
|
# ── lint ─────────────────────────────────────────────────────────────────
|
|
224
264
|
|
|
225
265
|
class TestLint:
|