boost-skill-cli 1.2.4__tar.gz → 1.2.6__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.4 → boost_skill_cli-1.2.6}/PKG-INFO +1 -1
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/registry.py +44 -4
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/data/registries.json +3 -25
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_skill_cli.egg-info/SOURCES.txt +5 -0
- boost_skill_cli-1.2.6/docs/roadmap/items/pathlib-exists-is-not-total.md +48 -0
- boost_skill_cli-1.2.6/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md +47 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap.html +90 -1
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/build_registries.py +82 -2
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/eval/taps-scale.txt +44 -42
- boost_skill_cli-1.2.6/tests/fuzz/corpus/registry/09-nul.txt +0 -0
- boost_skill_cli-1.2.6/tests/fuzz/corpus/registry/10-name-too-long.txt +1 -0
- boost_skill_cli-1.2.6/tests/fuzz/corpus/registry/11-long-owner-repo.txt +1 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_registry_categories.py +30 -0
- boost_skill_cli-1.2.6/tests/unit/test_registry_control_chars.py +233 -0
- boost_skill_cli-1.2.4/tests/unit/test_registry_control_chars.py +0 -113
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.gitattributes +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.gitignore +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.lycheeignore +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/.vale.ini +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/CLAUDE.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/LICENSE +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/MANIFEST.in +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/Makefile +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/README.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/SECURITY.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/browse.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/codecov.yml +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/adapters.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/carousel.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/chat.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/commands.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/demo.gif +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/demo.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/demo.tape +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/eval.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/index.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/langchain.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/browse-could-not-search-two-words.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/catalogue-entries-carry-no-content-identity.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/completions-install-could-eat-your-rc-file.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/crash-reports-leak-api-keys.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sweep-died-at-launch-not-at-a-page.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/taps-check-out-freight-they-never-index.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/docs/superpowers/specs/2026-08-16-catalogue-content-identity-design.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/README.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/__init__.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/baseline.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/metrics.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/examples/README.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/index.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/noxfile.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/pyproject.toml +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/setup.cfg +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/sonar-project.properties +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/style/README.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/style/boost.css +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/style/boost.js +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/style/demo.html +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/conftest.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_browse.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_clean_internal_cache.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_compact.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_complete_rc_block.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_content_identity.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_crash_redaction.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense_embed_dedupe.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_embed_truncated_response.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_gitutil_lfs.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_gitutil_sparse.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_install_permission_error.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_store_materialize.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_sync_blocked_links.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_visual_harness_flags.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.2.4 → boost_skill_cli-1.2.6}/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.6'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 6)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -37,6 +37,29 @@ class Tap:
|
|
|
37
37
|
return self.path.is_dir()
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
# One path component, in BYTES. ext4, APFS and NTFS all stop at 255, and
|
|
41
|
+
# `Tap.safe_name` maps "/" to "__" — so the whole tap name becomes exactly one
|
|
42
|
+
# component under `~/.boost/repos` and this is its ceiling. A GitHub owner/repo
|
|
43
|
+
# maxes out at 140 (39 + 1 + 100), so nothing real comes near it.
|
|
44
|
+
MAX_NAME_BYTES = 255
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _looks_like_a_directory(p: Path) -> bool:
|
|
48
|
+
"""True if `p` is an existing directory, False if the OS will not say.
|
|
49
|
+
|
|
50
|
+
`Path.exists()` is not total. pathlib swallows ENOENT, ENOTDIR, EBADF and
|
|
51
|
+
ELOOP — ENAMETOOLONG is *not* in that set, so a long enough component makes
|
|
52
|
+
`os.stat` raise straight out of `parse_spec` as a bare OSError, which is not
|
|
53
|
+
a BoostError and so is never framed by the CLI's error handling. A path the
|
|
54
|
+
OS refuses to look at is not a directory we can tap; that is a "no", not a
|
|
55
|
+
crash.
|
|
56
|
+
"""
|
|
57
|
+
try:
|
|
58
|
+
return p.is_dir()
|
|
59
|
+
except OSError:
|
|
60
|
+
return False
|
|
61
|
+
|
|
62
|
+
|
|
40
63
|
def parse_spec(spec: str):
|
|
41
64
|
"""Resolve a tap spec -> (name, url).
|
|
42
65
|
|
|
@@ -61,18 +84,35 @@ def parse_spec(spec: str):
|
|
|
61
84
|
# own home-dir lookup (USERPROFILE on Windows), which ignores the $HOME
|
|
62
85
|
# override the whole test suite (and BOOST_HOME sandboxing) relies on.
|
|
63
86
|
p = paths.expand(spec)
|
|
64
|
-
if
|
|
65
|
-
return (p.resolve().name, str(p.resolve()))
|
|
87
|
+
if _looks_like_a_directory(p):
|
|
88
|
+
return _checked(p.resolve().name, str(p.resolve()), spec)
|
|
66
89
|
if spec.startswith(("http://", "https://", "git@", "ssh://")):
|
|
67
90
|
tail = spec.split(":")[-1] if spec.startswith("git@") else spec
|
|
68
91
|
parts = [x for x in tail.replace(".git", "").split("/") if x][-2:]
|
|
69
|
-
return ("/".join(parts), spec)
|
|
92
|
+
return _checked("/".join(parts), spec, spec)
|
|
70
93
|
if "/" in spec and " " not in spec:
|
|
71
|
-
return (spec, "https://github.com/%s" % spec)
|
|
94
|
+
return _checked(spec, "https://github.com/%s" % spec, spec)
|
|
72
95
|
raise BoostError("cannot parse tap spec %r" % spec,
|
|
73
96
|
hint="use owner/repo, a git URL, or a local directory")
|
|
74
97
|
|
|
75
98
|
|
|
99
|
+
def _checked(name: str, url: str, spec: str) -> tuple[str, str]:
|
|
100
|
+
"""The derived pair, or a BoostError if the name cannot be a directory.
|
|
101
|
+
|
|
102
|
+
The rule is on the *name*, never on the spec: a deep local path with a short
|
|
103
|
+
basename is a perfectly good tap, and its own length says nothing about the
|
|
104
|
+
component we are about to create. Caught here rather than at clone time,
|
|
105
|
+
where it surfaces as git's own ENAMETOOLONG on a path the user never typed.
|
|
106
|
+
"""
|
|
107
|
+
if len(name.encode("utf-8")) > MAX_NAME_BYTES:
|
|
108
|
+
raise BoostError(
|
|
109
|
+
"tap name is too long (%d bytes, limit %d): %r"
|
|
110
|
+
% (len(name.encode("utf-8")), MAX_NAME_BYTES, spec[:80]),
|
|
111
|
+
hint="the name becomes one directory under ~/.boost/repos, and "
|
|
112
|
+
"no filesystem accepts a longer component")
|
|
113
|
+
return (name, url)
|
|
114
|
+
|
|
115
|
+
|
|
76
116
|
def list_taps() -> list[Tap]:
|
|
77
117
|
"""Configured taps from config.json.
|
|
78
118
|
|
|
@@ -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": 470,
|
|
4
|
+
"est_items_total": 32628,
|
|
5
|
+
"est_items_scannable": 28207,
|
|
6
6
|
"registries": [
|
|
7
7
|
{
|
|
8
8
|
"name": "Aaronontheweb/dotnet-cursor-rules",
|
|
@@ -2534,17 +2534,6 @@
|
|
|
2534
2534
|
"list_only": false,
|
|
2535
2535
|
"curated": true
|
|
2536
2536
|
},
|
|
2537
|
-
{
|
|
2538
|
-
"name": "MikroJit-Technologies/claude-skills",
|
|
2539
|
-
"url": "https://github.com/MikroJit-Technologies/claude-skills",
|
|
2540
|
-
"type": "skill",
|
|
2541
|
-
"category": "infra",
|
|
2542
|
-
"focus": "13 skills for infra engineers - MikroTik RouterOS Proxmox K3s... (21 skills)",
|
|
2543
|
-
"est_items": 21,
|
|
2544
|
-
"confidence": "med",
|
|
2545
|
-
"list_only": false,
|
|
2546
|
-
"curated": true
|
|
2547
|
-
},
|
|
2548
2537
|
{
|
|
2549
2538
|
"name": "minhnv0807/ai-business-skills",
|
|
2550
2539
|
"url": "https://github.com/minhnv0807/ai-business-skills",
|
|
@@ -4954,17 +4943,6 @@
|
|
|
4954
4943
|
"list_only": false,
|
|
4955
4944
|
"curated": true
|
|
4956
4945
|
},
|
|
4957
|
-
{
|
|
4958
|
-
"name": "pcliangx/AppGenesisForge",
|
|
4959
|
-
"url": "https://github.com/pcliangx/AppGenesisForge",
|
|
4960
|
-
"type": "workflow",
|
|
4961
|
-
"category": "meta",
|
|
4962
|
-
"focus": "AI Agent Team scaffold for Claude Code - 19 roles collaborate through... (19 skills, 29 workflows)",
|
|
4963
|
-
"est_items": 48,
|
|
4964
|
-
"confidence": "high",
|
|
4965
|
-
"list_only": false,
|
|
4966
|
-
"curated": true
|
|
4967
|
-
},
|
|
4968
4946
|
{
|
|
4969
4947
|
"name": "piomin/claude-ai-spring-boot",
|
|
4970
4948
|
"url": "https://github.com/piomin/claude-ai-spring-boot",
|
|
@@ -335,6 +335,7 @@ docs/roadmap/items/one-shared-atomic-write-helper.md
|
|
|
335
335
|
docs/roadmap/items/package-metadata-validation-twine-check-friends.md
|
|
336
336
|
docs/roadmap/items/patch-coverage-gate-diff-cover.md
|
|
337
337
|
docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md
|
|
338
|
+
docs/roadmap/items/pathlib-exists-is-not-total.md
|
|
338
339
|
docs/roadmap/items/pep585-604-modernization-sweep.md
|
|
339
340
|
docs/roadmap/items/performance-regression-gate-pytest-benchmark.md
|
|
340
341
|
docs/roadmap/items/pin-the-lint-toolchain.md
|
|
@@ -410,6 +411,7 @@ docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md
|
|
|
410
411
|
docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md
|
|
411
412
|
docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md
|
|
412
413
|
docs/roadmap/items/taps-check-out-freight-they-never-index.md
|
|
414
|
+
docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md
|
|
413
415
|
docs/roadmap/items/theme-asset-linting-stylelint-eslint.md
|
|
414
416
|
docs/roadmap/items/tool-call-eval-tier.md
|
|
415
417
|
docs/roadmap/items/two-crashes-that-should-have-been-messages.md
|
|
@@ -564,6 +566,9 @@ tests/fuzz/corpus/registry/05-empty.txt
|
|
|
564
566
|
tests/fuzz/corpus/registry/06-space.txt
|
|
565
567
|
tests/fuzz/corpus/registry/07-slash.txt
|
|
566
568
|
tests/fuzz/corpus/registry/08-bare-host.txt
|
|
569
|
+
tests/fuzz/corpus/registry/09-nul.txt
|
|
570
|
+
tests/fuzz/corpus/registry/10-name-too-long.txt
|
|
571
|
+
tests/fuzz/corpus/registry/11-long-owner-repo.txt
|
|
567
572
|
tests/langchain/conftest.py
|
|
568
573
|
tests/langchain/test_graph.py
|
|
569
574
|
tests/langchain/test_loader.py
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: pathlib-exists-is-not-total
|
|
3
|
+
board: code
|
|
4
|
+
section: internals
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Medium
|
|
9
|
+
wow: 4
|
|
10
|
+
note: the weekly fuzzer has now found two crashes in one function, three weeks apart, and been ignored both times
|
|
11
|
+
order: 118
|
|
12
|
+
owner: fix/tap-spec-name-too-long
|
|
13
|
+
pr: 528
|
|
14
|
+
title: <code>Path.exists()</code> looks total, and is not
|
|
15
|
+
---
|
|
16
|
+
<b><code>boost tap <anything long enough></code> died with a raw traceback on Linux.</b>
|
|
17
|
+
<code>parse_spec</code> probes whether the spec names an existing directory, and
|
|
18
|
+
<code>pathlib</code> swallows only <b>ENOENT, ENOTDIR, EBADF and ELOOP</b> —
|
|
19
|
+
<b>ENAMETOOLONG is not in that set</b>. So on any filesystem with a 255-byte component limit, which
|
|
20
|
+
is to say ext4 and therefore every Linux runner and most users, <code>os.stat</code> raises straight
|
|
21
|
+
out through <code>parse_spec</code> as a bare <code>OSError</code>. Not a <code>BoostError</code>,
|
|
22
|
+
so the CLI's error handling never got to frame it.
|
|
23
|
+
|
|
24
|
+
<b>macOS does not reproduce it.</b> That is the whole reason it shipped: the only thing that ever saw
|
|
25
|
+
it was the scheduled Linux fuzz job.
|
|
26
|
+
|
|
27
|
+
<b>Which had been reporting it for three weeks.</b> <code>fuzz.yml</code> runs libFuzzer over
|
|
28
|
+
<code>parse_spec</code> weekly and has now failed <b>four scheduled runs out of four</b>. The first
|
|
29
|
+
three were one bug — an embedded NUL — found on 2026-07-25, 08-01 and 08-08 and fixed
|
|
30
|
+
after the third. The fourth, on 08-15, is this one, minimised to 91 bytes: <code>0x38</code>
|
|
31
|
+
followed by ninety <code>0xff</code>, each un-decodable and so each becoming U+FFFD, which is
|
|
32
|
+
<b>three</b> UTF-8 bytes apiece — <b>271 bytes</b> from an input only 91 characters long.
|
|
33
|
+
|
|
34
|
+
<b>The limit is on bytes, and on the derived name.</b> Measuring characters would have let exactly
|
|
35
|
+
this input through. Measuring the <em>spec</em> would have turned away a legitimate deep local path
|
|
36
|
+
whose basename is short, so the rule applies to the name that is about to become one directory under
|
|
37
|
+
<code>~/.boost/repos</code>, caught at the parse boundary rather than at clone time where it
|
|
38
|
+
resurfaces as git's own ENAMETOOLONG on a path the user never typed.
|
|
39
|
+
|
|
40
|
+
<b>Rejecting is only half of it.</b> A path the OS refuses to <em>look at</em> is a “no”,
|
|
41
|
+
not a crash, so the probe is now total by construction — and pinned by a test on every
|
|
42
|
+
platform, not only the one where it fails, because a test that needs a real over-long path proves
|
|
43
|
+
nothing on the machine most of this is written on.
|
|
44
|
+
|
|
45
|
+
<b>Both reproducers are now seeds.</b> The NUL one was fixed and never added to the corpus, so
|
|
46
|
+
the fuzzer was free to spend runs rediscovering it. <code>tests/fuzz/corpus/registry/</code> carries
|
|
47
|
+
both, which means the no-atheris seed smoke — the path that runs without the fuzzer installed
|
|
48
|
+
— is now a regression test for both.
|
boost_skill_cli-1.2.6/docs/roadmap/items/the-catalogue-advertised-repos-that-no-longer-exist.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: the-catalogue-advertised-repos-that-no-longer-exist
|
|
3
|
+
board: code
|
|
4
|
+
section: internals
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Bug
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Medium
|
|
9
|
+
wow: 3
|
|
10
|
+
note: a scheduled gate had never once passed, and the reason was one deleted upstream in its pinned corpus
|
|
11
|
+
order: 117
|
|
12
|
+
owner: fix/retire-dead-registries
|
|
13
|
+
pr: 527
|
|
14
|
+
title: a convention that said "verify the repo is real" verified nothing
|
|
15
|
+
---
|
|
16
|
+
<b>The <code>eval-scale</code> workflow has run once and failed once.</b> Not a retrieval
|
|
17
|
+
regression — the gate refused to score, correctly, because it could not materialise its
|
|
18
|
+
corpus: <code>pcliangx/AppGenesisForge</code> returns 404, so the clone falls through to
|
|
19
|
+
<code>could not read Username for 'https://github.com'</code> and the whole 183-repo corpus is
|
|
20
|
+
unavailable. The gate exits 75 rather than scoring the 182 that <em>are</em> reachable, and it is
|
|
21
|
+
right to: measured, dropping the largest repo alone moves recall@10 from 0.852 to 0.885 and hit@1
|
|
22
|
+
from 0.473 to 0.593, so a partial corpus clears the floors <em>more</em> easily than the real one.
|
|
23
|
+
|
|
24
|
+
<b>The dead repo was not only in the corpus — it was in the shipped catalogue.</b> Auditing all
|
|
25
|
+
<b>470</b> registries in <code>registries.json</code> against GitHub found <b>two</b> that no longer
|
|
26
|
+
exist. The other one, <code>MikroJit-Technologies/claude-skills</code>, is already famous here: it is
|
|
27
|
+
the tap that broke <code>boost update</code> for every other tap on the maintainer's machine. That
|
|
28
|
+
bug was fixed by making the update loop survive a dead tap — and the catalogue went on
|
|
29
|
+
recommending the repo to everyone else.
|
|
30
|
+
|
|
31
|
+
<b>Deleting the rows is not the fix.</b> The catalogue is assembled from research batches, and a
|
|
32
|
+
batch written before a repo vanished still names it, so the next sweep re-adds it from the same
|
|
33
|
+
stale source. <code>RETIRED</code> is the record that survives the sweep: name plus the reason, with
|
|
34
|
+
a test that fails if any of them reappears in a source tuple, in <code>LIST_ONLY</code>, or in the
|
|
35
|
+
generated payload.
|
|
36
|
+
|
|
37
|
+
<b>And the convention that should have caught this is now runnable.</b> CLAUDE.md has said
|
|
38
|
+
“verify a repo is real before adding it” for a long time; six stale rows are what a
|
|
39
|
+
convention with no command behind it is worth. <code>build_registries.py --verify-live</code> asks
|
|
40
|
+
GitHub about every shipped registry and prints what it finds. It is deliberately <em>not</em> a gate:
|
|
41
|
+
a required check over 470 third-party repos goes red the day any one of them is deleted, which is a
|
|
42
|
+
fact about GitHub and not about the commit under test — the same reasoning that pins every row
|
|
43
|
+
of <code>taps.txt</code> to a SHA.
|
|
44
|
+
|
|
45
|
+
<b>Archived is not gone.</b> Four registries are archived upstream and stay: they still clone and
|
|
46
|
+
still ship their items, and frozen is a different thing from deleted. The audit reports them
|
|
47
|
+
separately for the same reason.
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
134
134
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
135
135
|
<div class="stat"><b>7</b><span>Planned</span></div>
|
|
136
|
-
<div class="stat"><b>
|
|
136
|
+
<div class="stat"><b>256</b><span>Loop finds</span></div>
|
|
137
137
|
<!-- /ROADMAP:stats -->
|
|
138
138
|
</div>
|
|
139
139
|
</section>
|
|
@@ -4076,6 +4076,95 @@ a hash.</p></details>
|
|
|
4076
4076
|
<span class="m">42.9% of 750,416 embedded chunks are duplicates — one was embedded 1,464 times</span>
|
|
4077
4077
|
</div>
|
|
4078
4078
|
</article>
|
|
4079
|
+
|
|
4080
|
+
<article class="cap rcard" id="the-catalogue-advertised-repos-that-no-longer-exist">
|
|
4081
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Bug</span></div>
|
|
4082
|
+
<h3>a convention that said "verify the repo is real" verified nothing</h3>
|
|
4083
|
+
<details class="cardbody"><summary>Write-up</summary>
|
|
4084
|
+
<p><b>The <code>eval-scale</code> workflow has run once and failed once.</b> Not a retrieval
|
|
4085
|
+
regression — the gate refused to score, correctly, because it could not materialise its
|
|
4086
|
+
corpus: <code>pcliangx/AppGenesisForge</code> returns 404, so the clone falls through to
|
|
4087
|
+
<code>could not read Username for 'https://github.com'</code> and the whole 183-repo corpus is
|
|
4088
|
+
unavailable. The gate exits 75 rather than scoring the 182 that <em>are</em> reachable, and it is
|
|
4089
|
+
right to: measured, dropping the largest repo alone moves recall@10 from 0.852 to 0.885 and hit@1
|
|
4090
|
+
from 0.473 to 0.593, so a partial corpus clears the floors <em>more</em> easily than the real one.
|
|
4091
|
+
|
|
4092
|
+
<b>The dead repo was not only in the corpus — it was in the shipped catalogue.</b> Auditing all
|
|
4093
|
+
<b>470</b> registries in <code>registries.json</code> against GitHub found <b>two</b> that no longer
|
|
4094
|
+
exist. The other one, <code>MikroJit-Technologies/claude-skills</code>, is already famous here: it is
|
|
4095
|
+
the tap that broke <code>boost update</code> for every other tap on the maintainer's machine. That
|
|
4096
|
+
bug was fixed by making the update loop survive a dead tap — and the catalogue went on
|
|
4097
|
+
recommending the repo to everyone else.
|
|
4098
|
+
|
|
4099
|
+
<b>Deleting the rows is not the fix.</b> The catalogue is assembled from research batches, and a
|
|
4100
|
+
batch written before a repo vanished still names it, so the next sweep re-adds it from the same
|
|
4101
|
+
stale source. <code>RETIRED</code> is the record that survives the sweep: name plus the reason, with
|
|
4102
|
+
a test that fails if any of them reappears in a source tuple, in <code>LIST_ONLY</code>, or in the
|
|
4103
|
+
generated payload.
|
|
4104
|
+
|
|
4105
|
+
<b>And the convention that should have caught this is now runnable.</b> CLAUDE.md has said
|
|
4106
|
+
“verify a repo is real before adding it” for a long time; six stale rows are what a
|
|
4107
|
+
convention with no command behind it is worth. <code>build_registries.py --verify-live</code> asks
|
|
4108
|
+
GitHub about every shipped registry and prints what it finds. It is deliberately <em>not</em> a gate:
|
|
4109
|
+
a required check over 470 third-party repos goes red the day any one of them is deleted, which is a
|
|
4110
|
+
fact about GitHub and not about the commit under test — the same reasoning that pins every row
|
|
4111
|
+
of <code>taps.txt</code> to a SHA.
|
|
4112
|
+
|
|
4113
|
+
<b>Archived is not gone.</b> Four registries are archived upstream and stay: they still clone and
|
|
4114
|
+
still ship their items, and frozen is a different thing from deleted. The audit reports them
|
|
4115
|
+
separately for the same reason.</p></details>
|
|
4116
|
+
<div class="meta">
|
|
4117
|
+
<span class="m">Complexity <b>S</b></span>
|
|
4118
|
+
<span class="m">Impact <b>Medium</b></span>
|
|
4119
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
4120
|
+
<span class="m">a scheduled gate had never once passed, and the reason was one deleted upstream in its pinned corpus</span>
|
|
4121
|
+
</div>
|
|
4122
|
+
</article>
|
|
4123
|
+
|
|
4124
|
+
<article class="cap rcard" id="pathlib-exists-is-not-total">
|
|
4125
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Bug</span></div>
|
|
4126
|
+
<h3><code>Path.exists()</code> looks total, and is not</h3>
|
|
4127
|
+
<details class="cardbody"><summary>Write-up</summary>
|
|
4128
|
+
<p><b><code>boost tap <anything long enough></code> died with a raw traceback on Linux.</b>
|
|
4129
|
+
<code>parse_spec</code> probes whether the spec names an existing directory, and
|
|
4130
|
+
<code>pathlib</code> swallows only <b>ENOENT, ENOTDIR, EBADF and ELOOP</b> —
|
|
4131
|
+
<b>ENAMETOOLONG is not in that set</b>. So on any filesystem with a 255-byte component limit, which
|
|
4132
|
+
is to say ext4 and therefore every Linux runner and most users, <code>os.stat</code> raises straight
|
|
4133
|
+
out through <code>parse_spec</code> as a bare <code>OSError</code>. Not a <code>BoostError</code>,
|
|
4134
|
+
so the CLI's error handling never got to frame it.
|
|
4135
|
+
|
|
4136
|
+
<b>macOS does not reproduce it.</b> That is the whole reason it shipped: the only thing that ever saw
|
|
4137
|
+
it was the scheduled Linux fuzz job.
|
|
4138
|
+
|
|
4139
|
+
<b>Which had been reporting it for three weeks.</b> <code>fuzz.yml</code> runs libFuzzer over
|
|
4140
|
+
<code>parse_spec</code> weekly and has now failed <b>four scheduled runs out of four</b>. The first
|
|
4141
|
+
three were one bug — an embedded NUL — found on 2026-07-25, 08-01 and 08-08 and fixed
|
|
4142
|
+
after the third. The fourth, on 08-15, is this one, minimised to 91 bytes: <code>0x38</code>
|
|
4143
|
+
followed by ninety <code>0xff</code>, each un-decodable and so each becoming U+FFFD, which is
|
|
4144
|
+
<b>three</b> UTF-8 bytes apiece — <b>271 bytes</b> from an input only 91 characters long.
|
|
4145
|
+
|
|
4146
|
+
<b>The limit is on bytes, and on the derived name.</b> Measuring characters would have let exactly
|
|
4147
|
+
this input through. Measuring the <em>spec</em> would have turned away a legitimate deep local path
|
|
4148
|
+
whose basename is short, so the rule applies to the name that is about to become one directory under
|
|
4149
|
+
<code>~/.boost/repos</code>, caught at the parse boundary rather than at clone time where it
|
|
4150
|
+
resurfaces as git's own ENAMETOOLONG on a path the user never typed.
|
|
4151
|
+
|
|
4152
|
+
<b>Rejecting is only half of it.</b> A path the OS refuses to <em>look at</em> is a “no”,
|
|
4153
|
+
not a crash, so the probe is now total by construction — and pinned by a test on every
|
|
4154
|
+
platform, not only the one where it fails, because a test that needs a real over-long path proves
|
|
4155
|
+
nothing on the machine most of this is written on.
|
|
4156
|
+
|
|
4157
|
+
<b>Both reproducers are now seeds.</b> The NUL one was fixed and never added to the corpus, so
|
|
4158
|
+
the fuzzer was free to spend runs rediscovering it. <code>tests/fuzz/corpus/registry/</code> carries
|
|
4159
|
+
both, which means the no-atheris seed smoke — the path that runs without the fuzzer installed
|
|
4160
|
+
— is now a regression test for both.</p></details>
|
|
4161
|
+
<div class="meta">
|
|
4162
|
+
<span class="m">Complexity <b>S</b></span>
|
|
4163
|
+
<span class="m">Impact <b>Medium</b></span>
|
|
4164
|
+
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
4165
|
+
<span class="m">the weekly fuzzer has now found two crashes in one function, three weeks apart, and been ignored both times</span>
|
|
4166
|
+
</div>
|
|
4167
|
+
</article>
|
|
4079
4168
|
<!-- /ROADMAP:cards -->
|
|
4080
4169
|
|
|
4081
4170
|
</div>
|
|
@@ -46,6 +46,26 @@ LIST_ONLY = {
|
|
|
46
46
|
"langgptai/awesome-claude-prompts",
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
# Repos that were curated here and have since been deleted or made private.
|
|
50
|
+
# They are recorded rather than merely deleted because the catalogue is
|
|
51
|
+
# assembled from research batches: a batch written before the repo vanished
|
|
52
|
+
# still names it, so dropping the row alone lets the next sweep re-add it from
|
|
53
|
+
# the same stale source. Verified with `--verify-live`, which is the runnable
|
|
54
|
+
# form of CLAUDE.md's "verify a repo is real before adding it" — a convention
|
|
55
|
+
# that six dead rows proved does not enforce itself.
|
|
56
|
+
#
|
|
57
|
+
# Archived-but-reachable repos are deliberately NOT here. They still clone and
|
|
58
|
+
# still ship their items; frozen is not gone.
|
|
59
|
+
RETIRED = {
|
|
60
|
+
"MikroJit-Technologies/claude-skills":
|
|
61
|
+
"404 since 2026-08 — the tap that broke `boost update` for every "
|
|
62
|
+
"other tap on the maintainer's machine (see roadmap "
|
|
63
|
+
"one-dead-tap-broke-every-update)",
|
|
64
|
+
"pcliangx/AppGenesisForge":
|
|
65
|
+
"404 since 2026-08 — clone prompts for credentials, which is what "
|
|
66
|
+
"fails the scheduled eval-scale gate on its pinned corpus",
|
|
67
|
+
}
|
|
68
|
+
|
|
49
69
|
# --- skills (SKILL.md registries) -------------------------------------------
|
|
50
70
|
SKILLS = [
|
|
51
71
|
("travisvn/awesome-claude-skills", "meta", "Curated awesome-list of Claude Skills, tools, and resources", 60, "high"),
|
|
@@ -291,7 +311,6 @@ SKILLS = [
|
|
|
291
311
|
("anmolnagpal/devops-skills", "infra", "Multi-tool DevOps skills for Claude Code, Cursor, and Codex... (18 skills, 17 rules)", 35, "med"),
|
|
292
312
|
("kcns008/cluster-skills", "infra", "A collection of skills for AI coding agents working with Kubernetes... (19 skills, 13 workflows)", 32, "med"),
|
|
293
313
|
("oci-ai-architects/cline-oci-ai-architect-skills", "infra", "Cline skills, rules, and workflows for AI Architects. Cross-platform... (14 skills, 2 rules, 11 workflows)", 27, "med"),
|
|
294
|
-
("MikroJit-Technologies/claude-skills", "infra", "13 skills for infra engineers - MikroTik RouterOS Proxmox K3s... (21 skills)", 21, "med"),
|
|
295
314
|
("qwedsazxc78/devops-ai-skill", "infra", "Cross-platform DevOps AI Skill Pack - Horus (IaC) + Zeus (GitOps)... (14 skills, 7 workflows)", 21, "med"),
|
|
296
315
|
("foxj77/claude-code-skills", "infra", "Claude Code skills for Kubernetes platform engineering, GitOps, and... (19 skills)", 19, "med"),
|
|
297
316
|
("pulumi/agent-skills", "infra", "15 skills", 15, "high"),
|
|
@@ -581,7 +600,6 @@ WORKFLOWS = [
|
|
|
581
600
|
("composio-community/awesome-claude-plugins", "meta", "A curated list of Plugins that let you extend Claude Code with custom... (23 skills, 38 workflows)", 61, "high"),
|
|
582
601
|
("anthropics/claude-plugins-official", "meta", "Official, Anthropic-managed directory of high quality Claude Code Plugins (60 workflows)", 60, "high"),
|
|
583
602
|
("glittercowboy/taches-cc-resources", "meta", "A collection of my favorite custom Claude Code resources to make life... (12 skills, 42 workflows)", 54, "high"),
|
|
584
|
-
("pcliangx/AppGenesisForge", "meta", "AI Agent Team scaffold for Claude Code - 19 roles collaborate through... (19 skills, 29 workflows)", 48, "high"),
|
|
585
603
|
("anthropics/claude-cookbooks", "meta", "A collection of notebooks/recipes showcasing some fun and effective... (4 skills, 11 workflows)", 15, "high"),
|
|
586
604
|
# --- end 2026-07 batch ---
|
|
587
605
|
]
|
|
@@ -659,6 +677,57 @@ def _summary(payload: dict) -> None:
|
|
|
659
677
|
print(" %-9s %3d repos ~%d items" % (typ, n, est))
|
|
660
678
|
|
|
661
679
|
|
|
680
|
+
def verify_live(names: list[str], token: str | None = None) -> int:
|
|
681
|
+
"""Report which of ``names`` no longer resolve on GitHub.
|
|
682
|
+
|
|
683
|
+
Deliberately NOT part of `--check` or any required gate. The lesson
|
|
684
|
+
`tests/eval/taps.txt` already records — pin third-party repos, never let
|
|
685
|
+
someone else's push decide whether our build is green — applies here twice
|
|
686
|
+
over: a required check that queries 470 repos would go red the day any one
|
|
687
|
+
of them is deleted, which is a fact about GitHub rather than about this
|
|
688
|
+
commit. Run it when curating, and record what it finds in RETIRED.
|
|
689
|
+
|
|
690
|
+
Returns the number of repos that could not be resolved.
|
|
691
|
+
"""
|
|
692
|
+
import http.client
|
|
693
|
+
import urllib.error
|
|
694
|
+
import urllib.request
|
|
695
|
+
|
|
696
|
+
missing, archived = [], []
|
|
697
|
+
for i, name in enumerate(names, 1):
|
|
698
|
+
req = urllib.request.Request( # noqa: S310 the https prefix is a literal
|
|
699
|
+
"https://api.github.com/repos/%s" % name,
|
|
700
|
+
headers={"Accept": "application/vnd.github+json",
|
|
701
|
+
"User-Agent": "boost-registry-audit"})
|
|
702
|
+
if token:
|
|
703
|
+
req.add_header("Authorization", "token %s" % token)
|
|
704
|
+
try:
|
|
705
|
+
with urllib.request.urlopen(req, timeout=30) as fh: # noqa: S310 same
|
|
706
|
+
if json.loads(fh.read().decode("utf-8")).get("archived"):
|
|
707
|
+
archived.append(name)
|
|
708
|
+
except urllib.error.HTTPError as exc:
|
|
709
|
+
if exc.code in (404, 451):
|
|
710
|
+
missing.append(name)
|
|
711
|
+
else: # rate limit, transient 5xx — not a verdict
|
|
712
|
+
print(" ? %-50s HTTP %s" % (name, exc.code), file=sys.stderr)
|
|
713
|
+
except (OSError, http.client.HTTPException,
|
|
714
|
+
json.JSONDecodeError) as exc:
|
|
715
|
+
# A truncated response is a fact about the network, not about the
|
|
716
|
+
# repo — 470 sequential requests will hit one, and a sweep that
|
|
717
|
+
# aborts on it reports "clean" for everything it never reached.
|
|
718
|
+
print(" ? %-50s %s" % (name, exc), file=sys.stderr)
|
|
719
|
+
if i % 50 == 0:
|
|
720
|
+
print(" ...%d/%d" % (i, len(names)), file=sys.stderr)
|
|
721
|
+
|
|
722
|
+
for name in archived:
|
|
723
|
+
print("archived %s" % name)
|
|
724
|
+
for name in missing:
|
|
725
|
+
print("MISSING %s" % name)
|
|
726
|
+
print("%d checked: %d missing, %d archived"
|
|
727
|
+
% (len(names), len(missing), len(archived)), file=sys.stderr)
|
|
728
|
+
return len(missing)
|
|
729
|
+
|
|
730
|
+
|
|
662
731
|
def main(argv: list[str] | None = None) -> int:
|
|
663
732
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
664
733
|
parser.add_argument(
|
|
@@ -666,11 +735,22 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
666
735
|
help="verify the committed JSON matches a fresh build; exit 1 on drift "
|
|
667
736
|
"(does not write). Used in CI to catch un-regenerated edits.",
|
|
668
737
|
)
|
|
738
|
+
parser.add_argument(
|
|
739
|
+
"--verify-live", action="store_true",
|
|
740
|
+
help="ask GitHub whether every shipped registry still exists and print "
|
|
741
|
+
"the ones that do not. Needs network; never part of a gate. Set "
|
|
742
|
+
"GITHUB_TOKEN to lift the 60/hour anonymous rate limit.",
|
|
743
|
+
)
|
|
669
744
|
args = parser.parse_args(argv)
|
|
670
745
|
|
|
671
746
|
payload = build_payload()
|
|
672
747
|
fresh = render(payload)
|
|
673
748
|
|
|
749
|
+
if args.verify_live:
|
|
750
|
+
import os
|
|
751
|
+
names = [e["name"] for e in payload["registries"]]
|
|
752
|
+
return 1 if verify_live(names, os.environ.get("GITHUB_TOKEN")) else 0
|
|
753
|
+
|
|
674
754
|
if args.check:
|
|
675
755
|
current = DEST.read_text(encoding="utf-8") if DEST.exists() else ""
|
|
676
756
|
if current != fresh:
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
# fail. It is A scale, not THE scale: hit@1 decays continuously with corpus
|
|
13
13
|
# size and never plateaus, so no size here can be canonical.
|
|
14
14
|
#
|
|
15
|
-
#
|
|
15
|
+
# 165 distractor registries, 20,034 est items (the curated list's own estimate).
|
|
16
16
|
# est_items under-reports by about 2.5x against a real install, so that
|
|
17
|
-
# projects to roughly 50,
|
|
17
|
+
# projects to roughly 50,860 actual entries — a projection, not a measurement.
|
|
18
18
|
# The real counts are written in by `eval_corpus.py --refresh`, which is
|
|
19
19
|
# also what pins these rows. Regenerating KEEPS any pin already here, so
|
|
20
20
|
# --check verifies the selection, not the pins.
|
|
@@ -130,83 +130,85 @@ glittercowboy/taches-cc-resources
|
|
|
130
130
|
40RTY-ai/shopify-admin-skills
|
|
131
131
|
aiwonglab/claude_code_agents
|
|
132
132
|
guanyang/open-agent-hub
|
|
133
|
-
pcliangx/AppGenesisForge
|
|
134
|
-
phuryn/pm-skills
|
|
135
133
|
trailofbits/skills
|
|
136
|
-
|
|
134
|
+
phuryn/pm-skills
|
|
137
135
|
cloudflare/agents
|
|
138
|
-
|
|
136
|
+
glebis/claude-skills
|
|
139
137
|
pluginagentmarketplace/custom-plugin-nextjs
|
|
140
|
-
|
|
138
|
+
browser-act/skills
|
|
141
139
|
syahiidkamil/Software-Engineer-AI-Agent-Atlas
|
|
142
|
-
|
|
140
|
+
forcedotcom/sf-skills
|
|
143
141
|
alirezarezvani/claude-code-skill-factory
|
|
144
|
-
|
|
142
|
+
Orchestra-Research/AI-Research-SKILLs
|
|
145
143
|
datopian/portaljs
|
|
146
|
-
|
|
144
|
+
majiayu000/spellbook
|
|
147
145
|
dl-ezo/claude-code-sub-agents
|
|
148
|
-
|
|
146
|
+
openakita/openakita
|
|
149
147
|
humanlayer/humanlayer
|
|
150
|
-
|
|
148
|
+
Leooooooow/Awesome-eCommerce-Skills
|
|
151
149
|
anthropics/claude-code
|
|
152
|
-
|
|
150
|
+
elementalsouls/Claude-BugHunter
|
|
153
151
|
lst97/claude-code-sub-agents
|
|
154
|
-
|
|
152
|
+
full-stack-skills/t2ui-skills
|
|
155
153
|
darrenhinde/OpenAgentsControl
|
|
156
|
-
|
|
154
|
+
google/skills
|
|
157
155
|
dotnet/skills
|
|
158
|
-
|
|
156
|
+
lebsral/DSPy-Programming-not-prompting-LMs-skills
|
|
159
157
|
danielrosehill/Claude-Slash-Commands
|
|
160
|
-
|
|
158
|
+
SpaceZephyr/myskill
|
|
161
159
|
kasperjunge/agent-resources-legacy
|
|
162
|
-
|
|
160
|
+
ihlamury/design-skills
|
|
163
161
|
centminmod/my-claude-code-setup
|
|
164
|
-
|
|
162
|
+
dpearson2699/swift-ios-skills
|
|
165
163
|
pluginagentmarketplace/custom-plugin-kotlin
|
|
166
|
-
|
|
164
|
+
inference-sh/skills
|
|
167
165
|
hnaymyh123-henry/claude-dev-skill
|
|
168
|
-
|
|
166
|
+
product-on-purpose/pm-skills
|
|
169
167
|
klovaaxel/web-a11y-agent-skills
|
|
170
|
-
|
|
168
|
+
tech-leads-club/agent-skills
|
|
171
169
|
brennercruvinel/CCPlugins
|
|
172
|
-
|
|
170
|
+
zhaoxuya520/reverse-skill
|
|
173
171
|
vijaythecoder/awesome-claude-agents
|
|
174
|
-
|
|
172
|
+
ninehills/skills
|
|
175
173
|
codenamev/ai-software-architect
|
|
176
|
-
|
|
174
|
+
syncfusion/maui-ui-components-skills
|
|
177
175
|
steipete/agent-rules
|
|
178
|
-
|
|
176
|
+
ancoleman/ai-design-components
|
|
179
177
|
talknerdytome-labs/claude-agents
|
|
180
|
-
|
|
178
|
+
deanpeters/Product-Manager-Skills
|
|
181
179
|
anthropics/claude-cookbooks
|
|
182
|
-
|
|
180
|
+
jamditis/claude-skills-journalism
|
|
183
181
|
glapsfun/cnative-skills
|
|
184
|
-
|
|
182
|
+
Houseofmvps/ultraship
|
|
185
183
|
iannuttall/claude-agents
|
|
186
|
-
|
|
184
|
+
jame581/GodotPrompter
|
|
187
185
|
ducpm2303/claude-java-plugins
|
|
188
|
-
|
|
186
|
+
BuilderIO/agent-native
|
|
189
187
|
piomin/claude-ai-spring-boot
|
|
190
|
-
|
|
188
|
+
SamurAIGPT/Generative-Media-Skills
|
|
191
189
|
anthropics/claude-code-action
|
|
192
|
-
|
|
190
|
+
tradermonty/claude-trading-skills
|
|
193
191
|
anthropics/financial-services
|
|
194
|
-
|
|
192
|
+
LambdaTest/agent-skills
|
|
195
193
|
hikarubw/claude-commands
|
|
196
|
-
|
|
194
|
+
anbeime/skill
|
|
197
195
|
anthropics/claude-agent-sdk-demos
|
|
198
|
-
|
|
196
|
+
internet-court/internet-court-skill
|
|
199
197
|
comet-ml/opik-claude-code-plugin
|
|
200
|
-
|
|
198
|
+
TheGoat395/Codex-Skills
|
|
201
199
|
docker/claude-plugins
|
|
202
|
-
|
|
200
|
+
daymade/claude-code-skills
|
|
203
201
|
langchain-ai/deepagents
|
|
204
|
-
|
|
202
|
+
JasonColapietro/suede-creator-skills
|
|
205
203
|
zenml-io/skills
|
|
206
|
-
|
|
204
|
+
bergside/awesome-design-skills
|
|
207
205
|
DavidROliverBA/Daves-Claude-Code-Skills
|
|
208
|
-
|
|
206
|
+
air-gapped/skills
|
|
209
207
|
anthropics/claude-agent-sdk-typescript
|
|
210
|
-
|
|
208
|
+
jeffallan/claude-skills
|
|
211
209
|
anthropics/claude-code-security-review
|
|
210
|
+
spencerpauly/awesome-cursor-skills
|
|
211
|
+
anthropics/cwc-long-running-agents
|
|
212
212
|
chaterm/terminal-skills
|
|
213
|
+
jeremylongshore/claude-code-plugins-plus-skills
|
|
214
|
+
wondelai/skills
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8������������������������������������������������������������������������������������������
|