boost-skill-cli 1.0.451__tar.gz → 1.1.0__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.0.451 → boost_skill_cli-1.1.0}/CLAUDE.md +27 -2
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/PKG-INFO +24 -7
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/README.md +23 -6
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/cli.py +6 -5
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/configuration.py +105 -1
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/pkg.py +18 -3
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/quality.py +14 -2
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/embed.py +9 -1
- boost_skill_cli-1.1.0/boost_cli/core/gitutil.py +300 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/logs.py +38 -1
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/paths.py +20 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/store.py +56 -7
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_skill_cli.egg-info/PKG-INFO +24 -7
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_skill_cli.egg-info/SOURCES.txt +12 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel.html +1 -1
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/commands.html +17 -2
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/index.html +4 -3
- boost_skill_cli-1.1.0/docs/roadmap/items/crash-reports-leak-api-keys.md +33 -0
- boost_skill_cli-1.1.0/docs/roadmap/items/sync-reported-success-for-a-link-it-refused.md +32 -0
- boost_skill_cli-1.1.0/docs/roadmap/items/taps-check-out-freight-they-never-index.md +112 -0
- boost_skill_cli-1.1.0/docs/roadmap/items/two-crashes-that-should-have-been-messages.md +34 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap.html +196 -1
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_pkg.py +6 -4
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_everyday_loop.py +1 -1
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/smoke.sh +1 -0
- boost_skill_cli-1.1.0/tests/unit/test_clean_internal_cache.py +108 -0
- boost_skill_cli-1.1.0/tests/unit/test_compact.py +175 -0
- boost_skill_cli-1.1.0/tests/unit/test_crash_redaction.py +58 -0
- boost_skill_cli-1.1.0/tests/unit/test_embed_truncated_response.py +68 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_errors_and_cli_table.py +6 -6
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_gitutil.py +42 -3
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_gitutil_lfs.py +4 -1
- boost_skill_cli-1.1.0/tests/unit/test_gitutil_sparse.py +293 -0
- boost_skill_cli-1.1.0/tests/unit/test_install_permission_error.py +56 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_store.py +1 -1
- boost_skill_cli-1.1.0/tests/unit/test_store_materialize.py +110 -0
- boost_skill_cli-1.1.0/tests/unit/test_sync_blocked_links.py +128 -0
- boost_skill_cli-1.0.451/boost_cli/core/gitutil.py +0 -134
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.gitattributes +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.gitignore +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/.vale.ini +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/LICENSE +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/Makefile +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/bmad.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/bootstrap.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/builtin.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/catalogbundle.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/data/rules/boost-first.mdc +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_langchain/__init__.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_langchain/_compat.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_langchain/graph.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_langchain/loader.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_langchain/py.typed +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_langchain/retriever.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/codecov.yml +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/chat.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/demo.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/langchain.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/bmad-autopilot-one-command-persona-routing.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/boost-first-carried-the-losing-trigger.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/boost-first-rule.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/boost-langchain-publishing.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/demo-workflow-cancels-other-prs.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/dependabot-splits-multi-path-action-repos.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/discover-searches-github-not-a-stale-sample.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/efficiency-registries-ponytail-caveman.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/est-items-counts-agent-mirrors-as-items.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/eval-stats-could-never-publish.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/expanded-card-bodies-overflow.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/gemini-agent-frontmatter-sanitizer.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/install-path-disambiguation.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/langchain-in-the-wheel.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/langchain-retriever-metadata-and-k-floor.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-already-covered-defeater.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mcp-zero-setup-and-three-kinds.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/pep585-604-modernization-sweep.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ragas-unpin-when-upstream-ships.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/scripts-under-the-lint-gate.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/self-update-claims-up-to-date-without-asking.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/serve-404-reflected-the-request.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/serve-is-a-searchable-catalogue.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/shards-pipeline-never-produced-a-shard.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/shareable-catalogue-bundle.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/sync-could-not-repair-a-gutted-skill.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/tool-call-eval-tier.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/unwatched-crons-hid-a-real-fuzz-crash.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/zip-strict-audit.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/zizmor-ignores-drift-and-make-lint-never-ran-it.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/README.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/examples/README.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/index.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/noxfile.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/measure_registry.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/scripts/serve_docs.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/setup.cfg +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/style/README.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/style/boost.css +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/style/boost.js +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/style/demo.html +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_catalog.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_kind_conformance.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/langchain/conftest.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/langchain/test_graph.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/langchain/test_loader.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/langchain/test_retriever.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_action_pin_lockstep.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_bmad_core.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_boost_first_offer.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_bootstrap.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_builtin.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_catalogbundle.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dense_shard_real_schema.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dense_shard_unreadable_vectors.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_failure_alerting_covers_unattended.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_gemini_agent_sanitize.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_langchain_packaging.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_link_ownership.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_measure_registry.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_publish_golden_dataset.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_registry_control_chars.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_serve_docs.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_shards_matrix.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_smoke_covers_every_command.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_sync_repairs_gutted_skill.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_workflow_concurrency_groups.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_workflow_push_has_credentials.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/unit/test_zizmor_ignores_still_anchor.py +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.451 → boost_skill_cli-1.1.0}/tests/visual/visual_check.mjs +0 -0
|
@@ -140,6 +140,31 @@ line coverage. Target `boost_cli/core` behavior with assertions, not just import
|
|
|
140
140
|
(`chain-of-thought-design`, `guardrail-design`), so it is `ai`, not `ui`.
|
|
141
141
|
`tests/unit/test_registry_categories.py::TestDesignDomain` pins both
|
|
142
142
|
directions.
|
|
143
|
+
- **A tap clone holds Markdown and nothing else.** Taps clone
|
|
144
|
+
`--filter=blob:none --sparse` with a cone covering exactly what
|
|
145
|
+
`catalog.scan_dir` opens (`gitutil.SPARSE_PATTERNS`, pinned against catalog's
|
|
146
|
+
own constants by `tests/unit/test_gitutil_sparse.py` — `gitutil` can't
|
|
147
|
+
import `catalog`, `catalog` imports `gitutil`). 458 taps held 12 GB to index
|
|
148
|
+
1.9 GB of Markdown; `Shopify/agent-skills` was 611 MB for its 30 SKILL.md
|
|
149
|
+
files and is 11 MB under the cone, with a byte-identical catalog. So
|
|
150
|
+
**anything reading a tap's real files must go through
|
|
151
|
+
`store.source_dir_for`**, which calls
|
|
152
|
+
`gitutil.materialize` first — a skill's own `scripts/`/`assets/` sit outside
|
|
153
|
+
the cone, and `_copy_skill` is a `copytree` that would copy the half of the
|
|
154
|
+
directory that exists and report success. Use `sparse-checkout add`, never
|
|
155
|
+
`set`: `set` replaces the pattern list and un-fetches every skill materialized
|
|
156
|
+
before it. `boost import` clones `sparse=False` — it reads the whole repo.
|
|
157
|
+
`boost compact` narrows clones that predate this (offline; measured 177 MB →
|
|
158
|
+
93 MB), and must `update-index --refresh` first, because git silently declines
|
|
159
|
+
to remove a path whose stat data looks dirty and otherwise reports success
|
|
160
|
+
having changed nothing.
|
|
161
|
+
- **`~/.boost/cache/` holds boost's own indexes, not just tap catalogs.**
|
|
162
|
+
`paths.INTERNAL_CACHE_FILES` names them. `boost clean` sweeps `cache/*.json`
|
|
163
|
+
whose stem is not a configured tap, which described `rag_index.json` and
|
|
164
|
+
`discovery.json` perfectly — it deleted the BM25 index on every run, and
|
|
165
|
+
rebuilding it re-parses every tap catalog on the machine (~71k items). A new
|
|
166
|
+
derived artifact goes in that set or `tests/unit/test_clean_internal_cache.py`
|
|
167
|
+
fails.
|
|
143
168
|
- **Sandbox tests via env, and export separately.** boost state lives under
|
|
144
169
|
`HOME`/`BOOST_HOME`; tests point them at a tempdir. In zsh, one-line chains
|
|
145
170
|
like `export A=$(...) B=$A/x` leave `B` broken — use separate `export`
|
|
@@ -233,7 +258,7 @@ for both — edit items, run `build_roadmap.py`, never touch the HTML by hand.
|
|
|
233
258
|
## Architecture
|
|
234
259
|
|
|
235
260
|
**CLI dispatch.** `boost_cli/cli.py` holds `COMMANDS`, the single
|
|
236
|
-
source-of-truth list of `(name, group, module, summary)` for all
|
|
261
|
+
source-of-truth list of `(name, group, module, summary)` for all 80 commands.
|
|
237
262
|
Each command is implemented as `def cmd_<name_with_underscores>(argv) -> int`
|
|
238
263
|
inside `boost_cli/commands/<module>.py`, and `_dispatch` imports that module
|
|
239
264
|
lazily on invocation — so `boost --help` stays instant and command modules are
|
|
@@ -254,7 +279,7 @@ in `boost_cli/core/paths.py`, which is what makes `HOME=<tempdir>` sandboxing
|
|
|
254
279
|
work in tests and the dev loop:
|
|
255
280
|
|
|
256
281
|
```text
|
|
257
|
-
~/.boost/repos/
|
|
282
|
+
~/.boost/repos/ blobless, sparse git clones of tapped registries
|
|
258
283
|
~/.boost/cache/ JSON catalogs built from SKILL.md/rule/workflow frontmatter
|
|
259
284
|
~/.boost/logs/ rotating diagnostic log + crash reports
|
|
260
285
|
~/.boost/state/ pins, tags, policy, profiles, pulse feed, snapshots
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.0
|
|
3
|
+
Version: 1.1.0
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -908,13 +908,30 @@ whichever agents you've got — all of it tracked in a lock file so state
|
|
|
908
908
|
stays reproducible.
|
|
909
909
|
|
|
910
910
|
```text
|
|
911
|
-
GitHub registries ──boost update──▶ ~/.boost/repos/ (
|
|
911
|
+
GitHub registries ──boost update──▶ ~/.boost/repos/ (blobless sparse clones)
|
|
912
912
|
~/.boost/cache/ (JSON catalogs)
|
|
913
913
|
──boost install─▶ ~/.agents/skills/ (canonical store)
|
|
914
914
|
.skill-lock.json (v3 lock file)
|
|
915
915
|
────symlinks───▶ ~/.claude/skills/ ~/.windsurf/skills/ ~/.cursor/skills/
|
|
916
916
|
```
|
|
917
917
|
|
|
918
|
+
A tap clone holds **only the files boost indexes** — `SKILL.md`, workflow
|
|
919
|
+
Markdown, and rule files. Everything else a registry ships (`node_modules`,
|
|
920
|
+
binary assets, bundled JS) is neither downloaded nor checked out, because the
|
|
921
|
+
catalog is built from Markdown and nothing else. `Shopify/agent-skills` is
|
|
922
|
+
611 MB as a normal clone and 11 MB as a tap, and produces an identical catalog.
|
|
923
|
+
When a skill you install owns its own `scripts/` or `assets/`, those are fetched
|
|
924
|
+
on demand at install time, so nothing is missing from what lands in the store.
|
|
925
|
+
|
|
926
|
+
If you tapped heavily before this landed, `boost compact` narrows the clones you
|
|
927
|
+
already have — offline, no re-clone, no loss of search coverage:
|
|
928
|
+
|
|
929
|
+
```bash
|
|
930
|
+
boost compact --dry-run # what it would reclaim
|
|
931
|
+
boost compact # narrow every clone in place
|
|
932
|
+
boost compact --reclone # also drop already-downloaded git objects (needs network)
|
|
933
|
+
```
|
|
934
|
+
|
|
918
935
|
Gemini CLI is the one agent that needs no symlink: it implements the
|
|
919
936
|
[Agent Skills](https://agentskills.io) standard and discovers `~/.agents/skills`
|
|
920
937
|
— boost's canonical store — directly. Linking into `~/.gemini/skills` as well
|
|
@@ -971,7 +988,7 @@ boost doctor # sanity check: broken links, lock drift, stale taps
|
|
|
971
988
|
boost bundle dump > Boostfile # everyone else runs: boost bundle install
|
|
972
989
|
```
|
|
973
990
|
|
|
974
|
-
##
|
|
991
|
+
## 80 commands, organized into 8 groups
|
|
975
992
|
|
|
976
993
|
`boost --help` prints the full grouped command list; for a visual tour see
|
|
977
994
|
[`docs/index.html`](docs/index.html), and for every flag of every command see
|
|
@@ -986,10 +1003,10 @@ install path — see [`docs/architecture/`](docs/architecture/README.md).
|
|
|
986
1003
|
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import · pin · unpin · snapshot · export · adapt · run |
|
|
987
1004
|
| **Discovery & Search** | search · reindex · discover · recommend · browse · index · trending · stats · count |
|
|
988
1005
|
| **Skill Information** | list · info · cat · edit · preview · explain · log · home · deps · tag |
|
|
989
|
-
| **Registry (Taps)** | tap · untap · taps · outdated |
|
|
990
|
-
| **Intelligence** | distill · simulate · infer · absorb · evolve · context · focus · impact |
|
|
1006
|
+
| **Registry (Taps)** | tap · untap · taps · outdated · catalog |
|
|
1007
|
+
| **Intelligence** | chat · distill · simulate · infer · absorb · evolve · context · focus · impact |
|
|
991
1008
|
| **Quality & Health** | doctor · lint · audit · verify · drift · test · fingerprint · quarantine · decay · heal · conflict · changelog · attest · health · trust |
|
|
992
|
-
| **Configuration** | config · clean · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
|
|
1009
|
+
| **Configuration** | config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
|
|
993
1010
|
| **Team & Collaboration** | cohort · profile · protocol · pulse · replay · who |
|
|
994
1011
|
|
|
995
1012
|
The AI-assisted commands (`search --smart`, `explain`, `distill`, `infer`,
|
|
@@ -1185,7 +1202,7 @@ Four layers, all enforced (`make check` runs the full set; CI runs the same thin
|
|
|
1185
1202
|
|
|
1186
1203
|
| Layer | What it does | Gate |
|
|
1187
1204
|
|---|---|---|
|
|
1188
|
-
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all
|
|
1205
|
+
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all 80 commands in-process against sandboxed homes) | **≥80% line coverage** of `boost_cli` (`fail_under` in pyproject.toml) |
|
|
1189
1206
|
| `make smoke` | `tests/smoke.sh` — 175 checks run through the actual `./boost` shim (`--online` also hits real registries) | all pass |
|
|
1190
1207
|
| `make mutation` | [mutmut] mutates `boost_cli/core` (~9,900 mutants) and reruns the unit suite against each one | **≥80% killed** (`scripts/mutation_gate.py`) |
|
|
1191
1208
|
| `make evals` | scores the search ranker on a graded golden set — recall@5/@10, MRR, nDCG@5/@10 | **metric floors + no statistically significant regression** (`scripts/eval_gate.py`) |
|
|
@@ -190,13 +190,30 @@ whichever agents you've got — all of it tracked in a lock file so state
|
|
|
190
190
|
stays reproducible.
|
|
191
191
|
|
|
192
192
|
```text
|
|
193
|
-
GitHub registries ──boost update──▶ ~/.boost/repos/ (
|
|
193
|
+
GitHub registries ──boost update──▶ ~/.boost/repos/ (blobless sparse clones)
|
|
194
194
|
~/.boost/cache/ (JSON catalogs)
|
|
195
195
|
──boost install─▶ ~/.agents/skills/ (canonical store)
|
|
196
196
|
.skill-lock.json (v3 lock file)
|
|
197
197
|
────symlinks───▶ ~/.claude/skills/ ~/.windsurf/skills/ ~/.cursor/skills/
|
|
198
198
|
```
|
|
199
199
|
|
|
200
|
+
A tap clone holds **only the files boost indexes** — `SKILL.md`, workflow
|
|
201
|
+
Markdown, and rule files. Everything else a registry ships (`node_modules`,
|
|
202
|
+
binary assets, bundled JS) is neither downloaded nor checked out, because the
|
|
203
|
+
catalog is built from Markdown and nothing else. `Shopify/agent-skills` is
|
|
204
|
+
611 MB as a normal clone and 11 MB as a tap, and produces an identical catalog.
|
|
205
|
+
When a skill you install owns its own `scripts/` or `assets/`, those are fetched
|
|
206
|
+
on demand at install time, so nothing is missing from what lands in the store.
|
|
207
|
+
|
|
208
|
+
If you tapped heavily before this landed, `boost compact` narrows the clones you
|
|
209
|
+
already have — offline, no re-clone, no loss of search coverage:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
boost compact --dry-run # what it would reclaim
|
|
213
|
+
boost compact # narrow every clone in place
|
|
214
|
+
boost compact --reclone # also drop already-downloaded git objects (needs network)
|
|
215
|
+
```
|
|
216
|
+
|
|
200
217
|
Gemini CLI is the one agent that needs no symlink: it implements the
|
|
201
218
|
[Agent Skills](https://agentskills.io) standard and discovers `~/.agents/skills`
|
|
202
219
|
— boost's canonical store — directly. Linking into `~/.gemini/skills` as well
|
|
@@ -253,7 +270,7 @@ boost doctor # sanity check: broken links, lock drift, stale taps
|
|
|
253
270
|
boost bundle dump > Boostfile # everyone else runs: boost bundle install
|
|
254
271
|
```
|
|
255
272
|
|
|
256
|
-
##
|
|
273
|
+
## 80 commands, organized into 8 groups
|
|
257
274
|
|
|
258
275
|
`boost --help` prints the full grouped command list; for a visual tour see
|
|
259
276
|
[`docs/index.html`](docs/index.html), and for every flag of every command see
|
|
@@ -268,10 +285,10 @@ install path — see [`docs/architecture/`](docs/architecture/README.md).
|
|
|
268
285
|
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import · pin · unpin · snapshot · export · adapt · run |
|
|
269
286
|
| **Discovery & Search** | search · reindex · discover · recommend · browse · index · trending · stats · count |
|
|
270
287
|
| **Skill Information** | list · info · cat · edit · preview · explain · log · home · deps · tag |
|
|
271
|
-
| **Registry (Taps)** | tap · untap · taps · outdated |
|
|
272
|
-
| **Intelligence** | distill · simulate · infer · absorb · evolve · context · focus · impact |
|
|
288
|
+
| **Registry (Taps)** | tap · untap · taps · outdated · catalog |
|
|
289
|
+
| **Intelligence** | chat · distill · simulate · infer · absorb · evolve · context · focus · impact |
|
|
273
290
|
| **Quality & Health** | doctor · lint · audit · verify · drift · test · fingerprint · quarantine · decay · heal · conflict · changelog · attest · health · trust |
|
|
274
|
-
| **Configuration** | config · clean · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
|
|
291
|
+
| **Configuration** | config · clean · compact · create · policy · onboard · completions · schedule · serve · mcp · hooks · bmad · self-update |
|
|
275
292
|
| **Team & Collaboration** | cohort · profile · protocol · pulse · replay · who |
|
|
276
293
|
|
|
277
294
|
The AI-assisted commands (`search --smart`, `explain`, `distill`, `infer`,
|
|
@@ -467,7 +484,7 @@ Four layers, all enforced (`make check` runs the full set; CI runs the same thin
|
|
|
467
484
|
|
|
468
485
|
| Layer | What it does | Gate |
|
|
469
486
|
|---|---|---|
|
|
470
|
-
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all
|
|
487
|
+
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all 80 commands in-process against sandboxed homes) | **≥80% line coverage** of `boost_cli` (`fail_under` in pyproject.toml) |
|
|
471
488
|
| `make smoke` | `tests/smoke.sh` — 175 checks run through the actual `./boost` shim (`--online` also hits real registries) | all pass |
|
|
472
489
|
| `make mutation` | [mutmut] mutates `boost_cli/core` (~9,900 mutants) and reruns the unit suite against each one | **≥80% killed** (`scripts/mutation_gate.py`) |
|
|
473
490
|
| `make evals` | scores the search ranker on a graded golden set — recall@5/@10, MRR, nDCG@5/@10 | **metric floors + no statistically significant regression** (`scripts/eval_gate.py`) |
|
|
@@ -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.0
|
|
22
|
-
__version_tuple__ = version_tuple = (1,
|
|
21
|
+
__version__ = version = '1.1.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 1, 0)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""boost CLI dispatcher —
|
|
1
|
+
"""boost CLI dispatcher — 80 commands across 8 groups.
|
|
2
2
|
|
|
3
3
|
Each command lives in boost_cli/commands/<module>.py as
|
|
4
4
|
def cmd_<name_with_underscores>(argv: list[str]) -> int
|
|
@@ -47,7 +47,7 @@ GROUPS = {
|
|
|
47
47
|
# (name, group, module, summary) — the single source of truth for the
|
|
48
48
|
# command surface. docs/overview.html mirrors this list.
|
|
49
49
|
COMMANDS = [
|
|
50
|
-
# Package Management (
|
|
50
|
+
# Package Management (13)
|
|
51
51
|
("install", "pkg", "pkg", "Install a skill from a tap registry"),
|
|
52
52
|
("uninstall", "pkg", "pkg", "Remove an installed skill, rule, workflow, or config"),
|
|
53
53
|
("sync", "pkg", "pkg", "Reconcile installed skills & symlinks against the lock file"),
|
|
@@ -82,13 +82,13 @@ COMMANDS = [
|
|
|
82
82
|
("home", "info", "info", "Open a skill's GitHub page in the browser"),
|
|
83
83
|
("deps", "info", "info", "Show dependency & conflict relationships"),
|
|
84
84
|
("tag", "info", "info", "Custom labels for organizing skills"),
|
|
85
|
-
# Registry (Taps) (
|
|
85
|
+
# Registry (Taps) (5)
|
|
86
86
|
("tap", "tap", "taps", "Add a GitHub repo as a skill registry"),
|
|
87
87
|
("untap", "tap", "taps", "Remove a registry tap"),
|
|
88
88
|
("taps", "tap", "taps", "List all configured registry taps"),
|
|
89
89
|
("outdated", "tap", "taps", "Show skills with available updates"),
|
|
90
90
|
("catalog", "tap", "taps", "Share the tapped catalogue so others skip the clone"),
|
|
91
|
-
# Intelligence (
|
|
91
|
+
# Intelligence (9)
|
|
92
92
|
("chat", "ai", "intelligence", "Ask about skills in plain language (RAG-grounded)"),
|
|
93
93
|
("distill", "ai", "intelligence", "Merge multiple skills into one deduplicated skill"),
|
|
94
94
|
("simulate", "ai", "intelligence", "Preview how a skill would change Claude's behavior"),
|
|
@@ -114,9 +114,10 @@ COMMANDS = [
|
|
|
114
114
|
("attest", "chk", "safety", "Display/verify the install record for skills"),
|
|
115
115
|
("health", "chk", "quality", "Dashboard of skill-environment health"),
|
|
116
116
|
("trust", "chk", "quality", "Manage signing keys & verify tap provenance"),
|
|
117
|
-
# Configuration (
|
|
117
|
+
# Configuration (13)
|
|
118
118
|
("config", "cfg", "configuration", "Display or modify boost configuration"),
|
|
119
119
|
("clean", "cfg", "configuration", "Clear stale caches & broken symlinks"),
|
|
120
|
+
("compact", "cfg", "configuration", "Shrink tap clones to the files boost indexes"),
|
|
120
121
|
("create", "cfg", "configuration", "Scaffold a new skill from a template"),
|
|
121
122
|
("policy", "cfg", "configuration", "Manage & enforce skill governance policies"),
|
|
122
123
|
("onboard", "cfg", "configuration", "Add skill-tracker telemetry to a repo & open a PR"),
|
|
@@ -141,10 +141,14 @@ def cmd_clean(argv) -> int:
|
|
|
141
141
|
|
|
142
142
|
configured = {t.safe_name for t in registry.list_taps()}
|
|
143
143
|
if paths.cache_dir().is_dir():
|
|
144
|
+
# Skip boost's own derived artifacts. They live in the same directory and
|
|
145
|
+
# end in .json, but no tap is named `rag_index` or `discovery`, so the
|
|
146
|
+
# stem test alone called both stale and deleted them every run — see
|
|
147
|
+
# paths.INTERNAL_CACHE_FILES.
|
|
144
148
|
items.extend(
|
|
145
149
|
(f, "stale tap cache", f.stat().st_size)
|
|
146
150
|
for f in sorted(paths.cache_dir().glob("*.json"))
|
|
147
|
-
if f.stem not in configured
|
|
151
|
+
if f.stem not in configured and f.name not in paths.INTERNAL_CACHE_FILES
|
|
148
152
|
)
|
|
149
153
|
|
|
150
154
|
if paths.lock_history_dir().is_dir():
|
|
@@ -199,6 +203,106 @@ def cmd_clean(argv) -> int:
|
|
|
199
203
|
return 0
|
|
200
204
|
|
|
201
205
|
|
|
206
|
+
def _freight_bytes(tap_path: Path, keep_dirs: list[str]) -> int:
|
|
207
|
+
"""Bytes that would leave `tap_path`'s working tree when the cone applies.
|
|
208
|
+
|
|
209
|
+
Mirrors what `gitutil.SPARSE_PATTERNS` keeps rather than approximating it,
|
|
210
|
+
so the dry run does not promise back the provenance files or the assets of
|
|
211
|
+
an already-installed skill — both of which survive and neither of which is
|
|
212
|
+
freed.
|
|
213
|
+
"""
|
|
214
|
+
kept = tuple("%s/" % d.strip("/") for d in keep_dirs)
|
|
215
|
+
total = 0
|
|
216
|
+
for f in tap_path.rglob("*"):
|
|
217
|
+
if not f.is_file():
|
|
218
|
+
continue
|
|
219
|
+
# Relative to the tap, never absolute: every clone lives *under*
|
|
220
|
+
# ~/.boost, so testing the absolute parts for ".boost" excluded every
|
|
221
|
+
# file in every tap and reported that nothing could be freed.
|
|
222
|
+
rel = f.relative_to(tap_path)
|
|
223
|
+
if ".git" in rel.parts or ".boost" in rel.parts:
|
|
224
|
+
continue
|
|
225
|
+
if (f.suffix.lower() in (".md", ".mdc")
|
|
226
|
+
or f.name in catalog.RULE_FILENAMES):
|
|
227
|
+
continue
|
|
228
|
+
if kept and rel.as_posix().startswith(kept):
|
|
229
|
+
continue
|
|
230
|
+
total += f.stat().st_size
|
|
231
|
+
return total
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def cmd_compact(argv) -> int:
|
|
235
|
+
"""boost compact [--dry-run] [--reclone] [TAP ...]"""
|
|
236
|
+
p = cliparse.parser(
|
|
237
|
+
prog="boost compact",
|
|
238
|
+
description="Shrink tap clones to the files boost indexes")
|
|
239
|
+
p.add_argument("tap", nargs="*",
|
|
240
|
+
help="taps to compact (default: all cloned taps)")
|
|
241
|
+
p.add_argument("--dry-run", action="store_true",
|
|
242
|
+
help="show what would be reclaimed without touching anything")
|
|
243
|
+
p.add_argument("--reclone", action="store_true",
|
|
244
|
+
help="re-clone blobless for the smallest result (needs network)")
|
|
245
|
+
args = p.parse_args(argv)
|
|
246
|
+
|
|
247
|
+
taps = [registry.get(n) for n in args.tap] if args.tap else registry.list_taps()
|
|
248
|
+
taps = [t for t in taps if t.is_cloned]
|
|
249
|
+
if not taps:
|
|
250
|
+
out.ok("no cloned taps to compact")
|
|
251
|
+
return 0
|
|
252
|
+
|
|
253
|
+
# source_dir keeps an installed skill's own assets on disk, so routine
|
|
254
|
+
# hashing (`outdated`, `doctor`) stays offline after the freight is gone.
|
|
255
|
+
keep: dict[str, list[str]] = {}
|
|
256
|
+
for section in lockfile.all_installed().values():
|
|
257
|
+
for entry in section.values():
|
|
258
|
+
if entry.get("source_dir"):
|
|
259
|
+
keep.setdefault(entry.get("tap", ""), []).append(entry["source_dir"])
|
|
260
|
+
|
|
261
|
+
freed = 0
|
|
262
|
+
changed = 0
|
|
263
|
+
for tap in taps:
|
|
264
|
+
before = util.dir_size(tap.path)
|
|
265
|
+
if args.dry_run:
|
|
266
|
+
loose = _freight_bytes(tap.path, keep.get(tap.name, []))
|
|
267
|
+
if loose:
|
|
268
|
+
changed += 1
|
|
269
|
+
freed += loose
|
|
270
|
+
out.info("would free %s from %s"
|
|
271
|
+
% (util.human_size(loose), tap.name))
|
|
272
|
+
continue
|
|
273
|
+
try:
|
|
274
|
+
if args.reclone:
|
|
275
|
+
util.rmtree(tap.path)
|
|
276
|
+
gitutil.clone_shallow(tap.url, tap.path)
|
|
277
|
+
else:
|
|
278
|
+
gitutil.narrow(tap.path)
|
|
279
|
+
for rel in keep.get(tap.name, []):
|
|
280
|
+
gitutil.materialize(tap.path, rel)
|
|
281
|
+
except BoostError as e:
|
|
282
|
+
out.warn("could not compact %s: %s" % (tap.name, e))
|
|
283
|
+
continue
|
|
284
|
+
after = util.dir_size(tap.path)
|
|
285
|
+
if after < before:
|
|
286
|
+
changed += 1
|
|
287
|
+
freed += before - after
|
|
288
|
+
out.info("%s %s → %s" % (tap.name, util.human_size(before),
|
|
289
|
+
util.human_size(after)))
|
|
290
|
+
|
|
291
|
+
if args.dry_run:
|
|
292
|
+
out.dim(" %d tap(s) · %s would be freed"
|
|
293
|
+
% (changed, util.human_size(freed)))
|
|
294
|
+
return 0
|
|
295
|
+
journal.log("compact", "%d taps" % changed, freed=util.human_size(freed))
|
|
296
|
+
if not changed:
|
|
297
|
+
out.ok("every tap is already compact")
|
|
298
|
+
return 0
|
|
299
|
+
out.ok("compacted %d tap(s) · %s freed" % (changed, util.human_size(freed)))
|
|
300
|
+
if not args.reclone:
|
|
301
|
+
out.dim(" `boost compact --reclone` also drops already-downloaded "
|
|
302
|
+
"git objects")
|
|
303
|
+
return 0
|
|
304
|
+
|
|
305
|
+
|
|
202
306
|
# ---------------------------------------------------------------- create
|
|
203
307
|
|
|
204
308
|
_CREATE_BODY = """# %(title)s
|
|
@@ -568,6 +568,7 @@ def cmd_uninstall(argv: list[str]) -> int:
|
|
|
568
568
|
_PLAN_LABELS = [
|
|
569
569
|
("missing_store", "missing from store"),
|
|
570
570
|
("missing_links", "missing agent links"),
|
|
571
|
+
("blocked_links", "agent links blocked by a foreign file"),
|
|
571
572
|
("stale_links", "stale links"),
|
|
572
573
|
("orphaned_store", "orphaned store dirs"),
|
|
573
574
|
("missing_materializations", "missing rule/workflow files"),
|
|
@@ -651,9 +652,11 @@ def cmd_sync(argv: list[str]) -> int:
|
|
|
651
652
|
journal.log("prune", name)
|
|
652
653
|
pruned.append(name)
|
|
653
654
|
left = [n for n in orphans if n not in pruned]
|
|
655
|
+
blocked = plan["blocked_links"]
|
|
654
656
|
if args.json:
|
|
655
657
|
print(json.dumps({"actions": actions, "pruned": pruned,
|
|
656
|
-
"orphaned_store": left, "out_of_scope_links": oos
|
|
658
|
+
"orphaned_store": left, "out_of_scope_links": oos,
|
|
659
|
+
"blocked_links": blocked}))
|
|
657
660
|
return 0
|
|
658
661
|
for a in actions:
|
|
659
662
|
out.ok(a)
|
|
@@ -668,7 +671,17 @@ def cmd_sync(argv: list[str]) -> int:
|
|
|
668
671
|
"`boost install <skill> --force` naming every `--agent`"
|
|
669
672
|
% (_plural(len(oos), "link"),
|
|
670
673
|
", ".join("%s → %s" % (n, a) for n, a in oos)))
|
|
671
|
-
|
|
674
|
+
# Before this, a blocked link produced no action and no warning, so the
|
|
675
|
+
# branch below reported "everything in sync" for a repair that had just
|
|
676
|
+
# been refused — and `boost doctor` went on prescribing this command.
|
|
677
|
+
if blocked:
|
|
678
|
+
out.warn("%s could not be created: %s. boost will not delete a file it "
|
|
679
|
+
"does not own — move or delete the path, then re-run `boost "
|
|
680
|
+
"sync`"
|
|
681
|
+
% (_plural(len(blocked), "agent link"),
|
|
682
|
+
", ".join("%s → %s (%s in the way)"
|
|
683
|
+
% (n, a, _tilde(Path(p))) for n, a, p in blocked)))
|
|
684
|
+
if not actions and not pruned and not left and not oos and not blocked:
|
|
672
685
|
out.ok("everything in sync")
|
|
673
686
|
return 0
|
|
674
687
|
|
|
@@ -1180,7 +1193,9 @@ def cmd_import(argv: list[str]) -> int:
|
|
|
1180
1193
|
tmp = Path(tempfile.mkdtemp(prefix="boost-import-"))
|
|
1181
1194
|
root = tmp / "repo"
|
|
1182
1195
|
out.info("cloning %s …" % args.source)
|
|
1183
|
-
|
|
1196
|
+
# Full checkout, not a tap's Markdown cone: import reads whatever the
|
|
1197
|
+
# repo ships and copies it verbatim, assets included.
|
|
1198
|
+
gitutil.clone_shallow(args.source, root, sparse=False)
|
|
1184
1199
|
else:
|
|
1185
1200
|
root = paths.expand(args.source)
|
|
1186
1201
|
if not root.is_dir():
|
|
@@ -427,9 +427,21 @@ def cmd_doctor(argv):
|
|
|
427
427
|
if adir is None:
|
|
428
428
|
continue
|
|
429
429
|
link = adir / name
|
|
430
|
-
|
|
430
|
+
# Two different failures wore one message. `boost sync` creates a
|
|
431
|
+
# link where nothing is in the way and replaces a boost-owned one
|
|
432
|
+
# that dangles — but it will not delete a real file or directory
|
|
433
|
+
# another installer put there, so prescribing it for that case sent
|
|
434
|
+
# the reader in a circle: sync answers "everything in sync", doctor
|
|
435
|
+
# repeats itself. Name the thing in the way instead.
|
|
436
|
+
if link.is_symlink() and link.exists():
|
|
437
|
+
continue
|
|
438
|
+
if not link.is_symlink() and link.exists():
|
|
439
|
+
bad("skill %s not linked for %s — %s exists and is not a boost "
|
|
440
|
+
"link; move or delete it, then run `boost sync`"
|
|
441
|
+
% (name, agent, paths.tilde(link)))
|
|
442
|
+
else:
|
|
431
443
|
bad("skill %s not linked for %s — run `boost sync`" % (name, agent))
|
|
432
|
-
|
|
444
|
+
skill_issues += 1
|
|
433
445
|
# The other direction. `agents` records what is linked and `only_agents`
|
|
434
446
|
# what was asked for, so a link the declaration excludes is pure lock
|
|
435
447
|
# arithmetic here — no second walk of the agent dirs. Doctor has to say
|
|
@@ -33,6 +33,7 @@ index.
|
|
|
33
33
|
from __future__ import annotations
|
|
34
34
|
|
|
35
35
|
import contextlib
|
|
36
|
+
import http.client
|
|
36
37
|
import json
|
|
37
38
|
import os
|
|
38
39
|
import urllib.error
|
|
@@ -253,7 +254,14 @@ def _post(url: str, key: str, payload: dict, timeout: int) -> dict | None:
|
|
|
253
254
|
try:
|
|
254
255
|
with nethttp.urlopen(req, timeout=timeout) as resp:
|
|
255
256
|
return json.loads(resp.read())
|
|
256
|
-
|
|
257
|
+
# http.client.HTTPException is the gap this list used to have. A connection
|
|
258
|
+
# cut mid-body raises IncompleteRead, which subclasses HTTPException and
|
|
259
|
+
# *neither* OSError nor ValueError — so it went straight through and out of
|
|
260
|
+
# `boost search` as a traceback, for a network hiccup whose right answer is
|
|
261
|
+
# to fall back to BM25. (RemoteDisconnected was already covered only by
|
|
262
|
+
# accident: it also subclasses ConnectionResetError.)
|
|
263
|
+
except (urllib.error.URLError, OSError, ValueError,
|
|
264
|
+
http.client.HTTPException):
|
|
257
265
|
return None
|
|
258
266
|
|
|
259
267
|
|