boost-skill-cli 1.0.375__tar.gz → 1.0.376__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.375 → boost_skill_cli-1.0.376}/CLAUDE.md +1 -1
- {boost_skill_cli-1.0.375/boost_skill_cli.egg-info → boost_skill_cli-1.0.376}/PKG-INFO +4 -4
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/README.md +3 -3
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/cli.py +0 -1
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/pkg.py +2 -84
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/store.py +1 -1
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376/boost_skill_cli.egg-info}/PKG-INFO +4 -4
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel.html +2 -2
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/commands.html +2 -15
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/index.html +4 -5
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_pkg.py +2 -94
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_everyday_loop.py +1 -1
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/smoke.sh +0 -1
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_errors_and_cli_table.py +6 -6
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_store.py +1 -1
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.gitattributes +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.gitignore +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/.vale.ini +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/LICENSE +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/Makefile +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/codecov.yml +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/chat.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/demo.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/docs/roadmap.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/README.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/examples/README.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/index.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/noxfile.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/setup.cfg +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/style/README.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/style/boost.css +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/style/boost.js +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/style/demo.html +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.375 → boost_skill_cli-1.0.376}/tests/visual/visual_check.mjs +0 -0
|
@@ -199,7 +199,7 @@ for both — edit items, run `build_roadmap.py`, never touch the HTML by hand.
|
|
|
199
199
|
## Architecture
|
|
200
200
|
|
|
201
201
|
**CLI dispatch.** `boost_cli/cli.py` holds `COMMANDS`, the single
|
|
202
|
-
source-of-truth list of `(name, group, module, summary)` for all
|
|
202
|
+
source-of-truth list of `(name, group, module, summary)` for all 78 commands.
|
|
203
203
|
Each command is implemented as `def cmd_<name_with_underscores>(argv) -> int`
|
|
204
204
|
inside `boost_cli/commands/<module>.py`, and `_dispatch` imports that module
|
|
205
205
|
lazily on invocation — so `boost --help` stays instant and command modules are
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.376
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -927,7 +927,7 @@ boost doctor # sanity check: broken links, lock drift, stale taps
|
|
|
927
927
|
boost bundle dump > Boostfile # everyone else runs: boost bundle install
|
|
928
928
|
```
|
|
929
929
|
|
|
930
|
-
##
|
|
930
|
+
## 78 commands, organized into 8 groups
|
|
931
931
|
|
|
932
932
|
`boost --help` prints the full grouped command list; for a visual tour see
|
|
933
933
|
[`docs/index.html`](docs/index.html), and for every flag of every command see
|
|
@@ -939,7 +939,7 @@ install path — see [`docs/architecture/`](docs/architecture/README.md).
|
|
|
939
939
|
|
|
940
940
|
| Group | Commands |
|
|
941
941
|
|---|---|
|
|
942
|
-
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import ·
|
|
942
|
+
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import · pin · unpin · snapshot · export · adapt · run |
|
|
943
943
|
| **Discovery & Search** | search · reindex · discover · recommend · browse · index · trending · stats · count |
|
|
944
944
|
| **Skill Information** | list · info · cat · edit · preview · explain · log · home · deps · tag |
|
|
945
945
|
| **Registry (Taps)** | tap · untap · taps · outdated |
|
|
@@ -1082,7 +1082,7 @@ Four layers, all enforced (`make check` runs the full set; CI runs the same thin
|
|
|
1082
1082
|
|
|
1083
1083
|
| Layer | What it does | Gate |
|
|
1084
1084
|
|---|---|---|
|
|
1085
|
-
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all
|
|
1085
|
+
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all 78 commands in-process against sandboxed homes) | **≥80% line coverage** of `boost_cli` (`fail_under` in pyproject.toml) |
|
|
1086
1086
|
| `make smoke` | `tests/smoke.sh` — 170 checks run through the actual `./boost` shim (`--online` also hits real registries) | all pass |
|
|
1087
1087
|
| `make mutation` | [mutmut] mutates `boost_cli/core` (~9,900 mutants) and reruns the unit suite against each one | **≥80% killed** (`scripts/mutation_gate.py`) |
|
|
1088
1088
|
| `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`) |
|
|
@@ -209,7 +209,7 @@ boost doctor # sanity check: broken links, lock drift, stale taps
|
|
|
209
209
|
boost bundle dump > Boostfile # everyone else runs: boost bundle install
|
|
210
210
|
```
|
|
211
211
|
|
|
212
|
-
##
|
|
212
|
+
## 78 commands, organized into 8 groups
|
|
213
213
|
|
|
214
214
|
`boost --help` prints the full grouped command list; for a visual tour see
|
|
215
215
|
[`docs/index.html`](docs/index.html), and for every flag of every command see
|
|
@@ -221,7 +221,7 @@ install path — see [`docs/architecture/`](docs/architecture/README.md).
|
|
|
221
221
|
|
|
222
222
|
| Group | Commands |
|
|
223
223
|
|---|---|
|
|
224
|
-
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import ·
|
|
224
|
+
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import · pin · unpin · snapshot · export · adapt · run |
|
|
225
225
|
| **Discovery & Search** | search · reindex · discover · recommend · browse · index · trending · stats · count |
|
|
226
226
|
| **Skill Information** | list · info · cat · edit · preview · explain · log · home · deps · tag |
|
|
227
227
|
| **Registry (Taps)** | tap · untap · taps · outdated |
|
|
@@ -364,7 +364,7 @@ Four layers, all enforced (`make check` runs the full set; CI runs the same thin
|
|
|
364
364
|
|
|
365
365
|
| Layer | What it does | Gate |
|
|
366
366
|
|---|---|---|
|
|
367
|
-
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all
|
|
367
|
+
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all 78 commands in-process against sandboxed homes) | **≥80% line coverage** of `boost_cli` (`fail_under` in pyproject.toml) |
|
|
368
368
|
| `make smoke` | `tests/smoke.sh` — 170 checks run through the actual `./boost` shim (`--online` also hits real registries) | all pass |
|
|
369
369
|
| `make mutation` | [mutmut] mutates `boost_cli/core` (~9,900 mutants) and reruns the unit suite against each one | **≥80% killed** (`scripts/mutation_gate.py`) |
|
|
370
370
|
| `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, 0,
|
|
21
|
+
__version__ = version = '1.0.376'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 376)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -56,7 +56,6 @@ COMMANDS = [
|
|
|
56
56
|
("reinstall", "pkg", "pkg", "Reinstall a skill or all skills (force)"),
|
|
57
57
|
("bundle", "pkg", "pkg", "Export/install skill sets via a Boostfile"),
|
|
58
58
|
("import", "pkg", "pkg", "Import skills from a GitHub URL or local path"),
|
|
59
|
-
("migrate", "pkg", "pkg", "Migrate skills between agents or from Skills CLI"),
|
|
60
59
|
("pin", "pkg", "pkg", "Pin a skill to its current version"),
|
|
61
60
|
("unpin", "pkg", "pkg", "Allow a pinned skill to update again"),
|
|
62
61
|
("snapshot", "pkg", "pkg", "Save & restore whole skill environments"),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"""Package Management commands (
|
|
2
|
-
reinstall, bundle, import,
|
|
1
|
+
"""Package Management commands (11): install, uninstall, sync, update,
|
|
2
|
+
reinstall, bundle, import, pin, unpin, snapshot, export."""
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import io
|
|
@@ -1018,88 +1018,6 @@ def _import_root(root: Path, name: Optional[str], do_all: bool,
|
|
|
1018
1018
|
hint="add `--name NAME` or `--all`")
|
|
1019
1019
|
|
|
1020
1020
|
|
|
1021
|
-
# ── migrate ──────────────────────────────────────────────────────────────
|
|
1022
|
-
|
|
1023
|
-
def cmd_migrate(argv: List[str]) -> int:
|
|
1024
|
-
ap = cliparse.parser(
|
|
1025
|
-
prog="boost migrate",
|
|
1026
|
-
description="Migrate skills between agents or from Skills CLI")
|
|
1027
|
-
ap.add_argument("--from", dest="src", metavar="AGENT",
|
|
1028
|
-
help="agent migrating away from")
|
|
1029
|
-
ap.add_argument("--to", dest="dst", metavar="AGENT",
|
|
1030
|
-
help="agent to link every installed skill into")
|
|
1031
|
-
ap.add_argument("--from-skills-cli", action="store_true",
|
|
1032
|
-
help="import skills installed by the Skills CLI")
|
|
1033
|
-
ap.add_argument("--path", metavar="DIR",
|
|
1034
|
-
help="Skills CLI directory (default ~/.skills)")
|
|
1035
|
-
args = ap.parse_args(argv)
|
|
1036
|
-
|
|
1037
|
-
if args.from_skills_cli:
|
|
1038
|
-
root = paths.expand(args.path) if args.path else paths.home() / ".skills"
|
|
1039
|
-
if not root.is_dir():
|
|
1040
|
-
out.info("nothing to migrate — %s does not exist" % _tilde(root))
|
|
1041
|
-
return 0
|
|
1042
|
-
entries = catalog.scan_dir(root)
|
|
1043
|
-
if not entries:
|
|
1044
|
-
out.info("no skills found under %s" % _tilde(root))
|
|
1045
|
-
return 0
|
|
1046
|
-
migrated, refused = 0, 0
|
|
1047
|
-
for e in entries:
|
|
1048
|
-
d = root if e["rel_dir"] == "." else root / e["rel_dir"]
|
|
1049
|
-
# A refusal partway through must not leave a silently half-done
|
|
1050
|
-
# migration with no summary.
|
|
1051
|
-
try:
|
|
1052
|
-
res = store.install_from_path(d)
|
|
1053
|
-
except BoostError as err:
|
|
1054
|
-
out.warn("%s: %s" % (e["name"], err.message))
|
|
1055
|
-
refused += 1
|
|
1056
|
-
continue
|
|
1057
|
-
out.ok("imported %s v%s" % (res.name, e["version"]))
|
|
1058
|
-
migrated += 1
|
|
1059
|
-
out.info("Migrated %s from %s" % (_plural(migrated, "skill"),
|
|
1060
|
-
_tilde(root)))
|
|
1061
|
-
return 1 if refused else 0
|
|
1062
|
-
|
|
1063
|
-
if not (args.src and args.dst):
|
|
1064
|
-
raise BoostError("nothing to do",
|
|
1065
|
-
hint="use `--from AGENT --to AGENT` or `--from-skills-cli`")
|
|
1066
|
-
known = agents.known_agents()
|
|
1067
|
-
for a in (args.src, args.dst):
|
|
1068
|
-
if a not in known:
|
|
1069
|
-
raise BoostError("unknown agent: %s" % a,
|
|
1070
|
-
hint="known agents: %s" % ", ".join(known))
|
|
1071
|
-
if args.src == args.dst:
|
|
1072
|
-
raise BoostError("--from and --to are the same agent")
|
|
1073
|
-
if args.dst not in agents.enabled_agents():
|
|
1074
|
-
raise BoostError("agent %s is disabled in config" % args.dst,
|
|
1075
|
-
hint="`boost config set agents.%s.enabled true`" % args.dst)
|
|
1076
|
-
skills = sorted(lockfile.installed())
|
|
1077
|
-
if not skills:
|
|
1078
|
-
out.info("no skills installed — nothing to migrate")
|
|
1079
|
-
return 0
|
|
1080
|
-
linked = []
|
|
1081
|
-
for name in skills:
|
|
1082
|
-
res = store.link_agents(name, only=[args.dst])
|
|
1083
|
-
if args.dst in res.linked:
|
|
1084
|
-
out.ok("linked %s → %s" % (name, args.dst))
|
|
1085
|
-
linked.append(name)
|
|
1086
|
-
for pth in res.conflicts:
|
|
1087
|
-
out.warn("%s: %s exists and is not managed by boost" % (name, _tilde(pth)))
|
|
1088
|
-
lock = lockfile.read()
|
|
1089
|
-
changed = False
|
|
1090
|
-
for name in linked:
|
|
1091
|
-
ent = lock["skills"].get(name)
|
|
1092
|
-
if ent is not None and args.dst not in ent.get("agents", []):
|
|
1093
|
-
ent["agents"] = sorted(set(ent.get("agents", [])) | {args.dst})
|
|
1094
|
-
changed = True
|
|
1095
|
-
if changed:
|
|
1096
|
-
lockfile.write(lock)
|
|
1097
|
-
journal.log("migrate", "%s→%s" % (args.src, args.dst), skills=len(linked))
|
|
1098
|
-
out.info("Migrated %s to %s" % (_plural(len(linked), "skill"),
|
|
1099
|
-
agents.display_name(args.dst)))
|
|
1100
|
-
return 0
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
1021
|
# ── pin / unpin ──────────────────────────────────────────────────────────
|
|
1104
1022
|
|
|
1105
1023
|
def cmd_pin(argv: List[str]) -> int:
|
|
@@ -914,7 +914,7 @@ def install_from_path(src_dir: Path, name: Optional[str] = None,
|
|
|
914
914
|
|
|
915
915
|
Enforces the same pin, policy and capability gates as ``install``. It used
|
|
916
916
|
to enforce none of them, so every local path in — ``import``, ``create
|
|
917
|
-
--install``, ``
|
|
917
|
+
--install``, ``distill/infer/absorb --install`` — was a way
|
|
918
918
|
around a blocklist, ``pin_only``, ``max_skills`` and ``denied_capabilities``.
|
|
919
919
|
|
|
920
920
|
Deliberately *not* adopted from ``install``: its "already installed" refusal.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.376
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -927,7 +927,7 @@ boost doctor # sanity check: broken links, lock drift, stale taps
|
|
|
927
927
|
boost bundle dump > Boostfile # everyone else runs: boost bundle install
|
|
928
928
|
```
|
|
929
929
|
|
|
930
|
-
##
|
|
930
|
+
## 78 commands, organized into 8 groups
|
|
931
931
|
|
|
932
932
|
`boost --help` prints the full grouped command list; for a visual tour see
|
|
933
933
|
[`docs/index.html`](docs/index.html), and for every flag of every command see
|
|
@@ -939,7 +939,7 @@ install path — see [`docs/architecture/`](docs/architecture/README.md).
|
|
|
939
939
|
|
|
940
940
|
| Group | Commands |
|
|
941
941
|
|---|---|
|
|
942
|
-
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import ·
|
|
942
|
+
| **Package Management** | install · uninstall · sync · update · reinstall · bundle · import · pin · unpin · snapshot · export · adapt · run |
|
|
943
943
|
| **Discovery & Search** | search · reindex · discover · recommend · browse · index · trending · stats · count |
|
|
944
944
|
| **Skill Information** | list · info · cat · edit · preview · explain · log · home · deps · tag |
|
|
945
945
|
| **Registry (Taps)** | tap · untap · taps · outdated |
|
|
@@ -1082,7 +1082,7 @@ Four layers, all enforced (`make check` runs the full set; CI runs the same thin
|
|
|
1082
1082
|
|
|
1083
1083
|
| Layer | What it does | Gate |
|
|
1084
1084
|
|---|---|---|
|
|
1085
|
-
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all
|
|
1085
|
+
| `make test` | pytest across `tests/unit/` (every core module) and `tests/functional/` (drives all 78 commands in-process against sandboxed homes) | **≥80% line coverage** of `boost_cli` (`fail_under` in pyproject.toml) |
|
|
1086
1086
|
| `make smoke` | `tests/smoke.sh` — 170 checks run through the actual `./boost` shim (`--online` also hits real registries) | all pass |
|
|
1087
1087
|
| `make mutation` | [mutmut] mutates `boost_cli/core` (~9,900 mutants) and reruns the unit suite against each one | **≥80% killed** (`scripts/mutation_gate.py`) |
|
|
1088
1088
|
| `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`) |
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
<div class="wrap hero">
|
|
120
120
|
<p class="crumbs"><a href="index.html">boost</a> / docs / carousel</p>
|
|
121
121
|
<span class="badge">8 command groups · recorded live with VHS</span>
|
|
122
|
-
<h1>
|
|
122
|
+
<h1>78 commands. <span class="grad-text">One flagship each.</span></h1>
|
|
123
123
|
<p class="lede">boost's command surface spans 8 groups, from package management to team
|
|
124
124
|
collaboration. Rather than 78 near-identical recordings, this page tours <b>one
|
|
125
125
|
representative command per group</b> — the one that shows what that group is actually
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
<code>uninstall</code><code>sync</code><code>update</code><code>bundle</code>
|
|
169
169
|
<code>import</code><code>pin</code><code>snapshot</code><code>export</code>
|
|
170
170
|
</div>
|
|
171
|
-
<p class="group-note">
|
|
171
|
+
<p class="group-note">13 commands in this group.</p>
|
|
172
172
|
<p class="regen">regenerate: <code>vhs docs/carousel/tapes/install.tape</code></p>
|
|
173
173
|
</div>
|
|
174
174
|
</div>
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
<aside>
|
|
99
99
|
<div class="brand"><b>✦ boost</b><span>commands</span></div>
|
|
100
100
|
<a class="home" href="index.html">← back to overview</a>
|
|
101
|
-
<input id="q" type="search" placeholder="Filter
|
|
101
|
+
<input id="q" type="search" placeholder="Filter 78 commands…" autocomplete="off" aria-label="Filter commands">
|
|
102
102
|
<div class="group" data-group="pkg">
|
|
103
103
|
<div class="group-h">Install & lifecycle</div>
|
|
104
104
|
<a class="cmd-link" href="#cmd-install" data-search="install install a skill from a tap registry --force --agent a --scope {user,project} --local --global --dry-run --no-deps --no-mcp name">install</a>
|
|
@@ -108,7 +108,6 @@
|
|
|
108
108
|
<a class="cmd-link" href="#cmd-reinstall" data-search="reinstall reinstall a skill or all skills (force) --all name">reinstall</a>
|
|
109
109
|
<a class="cmd-link" href="#cmd-bundle" data-search="bundle export/install skill sets via a boostfile {dump,install} file">bundle</a>
|
|
110
110
|
<a class="cmd-link" href="#cmd-import" data-search="import import skills from a github url or local path --name n --all --agent a url_or_path">import</a>
|
|
111
|
-
<a class="cmd-link" href="#cmd-migrate" data-search="migrate migrate skills between agents or from skills cli --from agent --to agent --from-skills-cli --path dir">migrate</a>
|
|
112
111
|
<a class="cmd-link" href="#cmd-pin" data-search="pin pin a skill to its current version --commit name">pin</a>
|
|
113
112
|
<a class="cmd-link" href="#cmd-unpin" data-search="unpin allow a pinned skill to update again name">unpin</a>
|
|
114
113
|
<a class="cmd-link" href="#cmd-snapshot" data-search="snapshot save & restore whole skill environments --json {save,list,restore} label|id">snapshot</a>
|
|
@@ -206,7 +205,7 @@
|
|
|
206
205
|
</aside>
|
|
207
206
|
<main id="top">
|
|
208
207
|
<h1>boost <b>command reference</b></h1>
|
|
209
|
-
<p class="lead">All <b>
|
|
208
|
+
<p class="lead">All <b>78</b> commands, generated from the CLI itself —
|
|
210
209
|
run <code>boost <command> --help</code> for the same in your terminal.</p>
|
|
211
210
|
<h2 class="group-h" id="grp-pkg">Install & lifecycle</h2>
|
|
212
211
|
<section class="cmd" id="cmd-install" data-search="install install a skill from a tap registry --force --agent a --scope {user,project} --local --global --dry-run --no-deps --no-mcp name">
|
|
@@ -305,18 +304,6 @@
|
|
|
305
304
|
<div class="arg"><code>--agent A</code><span>link only into this agent (repeatable)</span></div>
|
|
306
305
|
</div>
|
|
307
306
|
</section>
|
|
308
|
-
<section class="cmd" id="cmd-migrate" data-search="migrate migrate skills between agents or from skills cli --from agent --to agent --from-skills-cli --path dir">
|
|
309
|
-
<h3><span class="cname">migrate</span><span class="gtag">pkg</span></h3>
|
|
310
|
-
<p class="summary">Migrate skills between agents or from Skills CLI</p>
|
|
311
|
-
<pre class="syn">boost migrate [--from AGENT] [--to AGENT] [--from-skills-cli] [--path DIR]</pre>
|
|
312
|
-
<div class="args-h">Options</div>
|
|
313
|
-
<div class="args">
|
|
314
|
-
<div class="arg"><code>--from AGENT</code><span>agent migrating away from</span></div>
|
|
315
|
-
<div class="arg"><code>--to AGENT</code><span>agent to link every installed skill into</span></div>
|
|
316
|
-
<div class="arg"><code>--from-skills-cli</code><span>import skills installed by the Skills CLI</span></div>
|
|
317
|
-
<div class="arg"><code>--path DIR</code><span>Skills CLI directory (default ~/.skills)</span></div>
|
|
318
|
-
</div>
|
|
319
|
-
</section>
|
|
320
307
|
<section class="cmd" id="cmd-pin" data-search="pin pin a skill to its current version --commit name">
|
|
321
308
|
<h3><span class="cname">pin</span><span class="gtag">pkg</span></h3>
|
|
322
309
|
<p class="summary">Pin a skill to its current version</p>
|
|
@@ -494,11 +494,11 @@
|
|
|
494
494
|
</p>
|
|
495
495
|
<div class="cta-row">
|
|
496
496
|
<a class="btn btn-grad" href="#workflow">See how it works →</a>
|
|
497
|
-
<a class="btn btn-ghost" href="#commands">Explore all
|
|
497
|
+
<a class="btn btn-ghost" href="#commands">Explore all 78 commands</a>
|
|
498
498
|
</div>
|
|
499
499
|
<div class="stats">
|
|
500
500
|
<div class="stat reveal"><b>10,000+</b><span>Discoverable skills</span></div>
|
|
501
|
-
<div class="stat reveal"><b>
|
|
501
|
+
<div class="stat reveal"><b>78</b><span>Commands · 8 groups</span></div>
|
|
502
502
|
<div class="stat reveal"><b>5</b><span>Pre-tapped registries</span></div>
|
|
503
503
|
<div class="stat reveal"><b>4</b><span>AI agents supported</span></div>
|
|
504
504
|
</div>
|
|
@@ -685,7 +685,7 @@ facilitate structured divergent thinking:
|
|
|
685
685
|
<section id="commands">
|
|
686
686
|
<div class="wrap">
|
|
687
687
|
<span class="eyebrow">What It Can Do</span>
|
|
688
|
-
<h2 class="sec-title">
|
|
688
|
+
<h2 class="sec-title">78 commands, 8 groups</h2>
|
|
689
689
|
<p class="sec-sub">From basic install/update to AI-powered authoring, governance,
|
|
690
690
|
and team rollouts. Filter live to find what you need.</p>
|
|
691
691
|
|
|
@@ -757,7 +757,7 @@ facilitate structured divergent thinking:
|
|
|
757
757
|
one-click installs.</li>
|
|
758
758
|
<li>Serve a catalog over HTTP, or auto-sync on a schedule.</li>
|
|
759
759
|
</ul>
|
|
760
|
-
<div class="tags"><code>
|
|
760
|
+
<div class="tags"><code>mcp</code><code>protocol</code><code>serve</code><code>schedule</code></div>
|
|
761
761
|
</div>
|
|
762
762
|
<div class="cap reveal" style="--ic-bg: rgba(64,203,227,.12); --ic-fg: #7dd3fc;">
|
|
763
763
|
<div class="ic">∿</div>
|
|
@@ -943,7 +943,6 @@ const COMMANDS = [
|
|
|
943
943
|
["reinstall","pkg","Reinstall a skill or all skills (force)"],
|
|
944
944
|
["bundle","pkg","Export/install skill sets via a Boostfile"],
|
|
945
945
|
["import","pkg","Import skills from a GitHub URL or local path"],
|
|
946
|
-
["migrate","pkg","Migrate skills between agents or from Skills CLI"],
|
|
947
946
|
["pin","pkg","Pin a skill to its current version"],
|
|
948
947
|
["unpin","pkg","Allow a pinned skill to update again"],
|
|
949
948
|
["snapshot","pkg","Save & restore whole skill environments"],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""Functional tests: package-management commands — install, uninstall, sync,
|
|
2
|
-
update, reinstall, pin/unpin, bundle, import,
|
|
2
|
+
update, reinstall, pin/unpin, bundle, import, snapshot, export."""
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import io
|
|
@@ -590,39 +590,6 @@ class TestImport:
|
|
|
590
590
|
assert "no such directory" in r.err
|
|
591
591
|
|
|
592
592
|
|
|
593
|
-
# ── migrate ──────────────────────────────────────────────────────────────
|
|
594
|
-
|
|
595
|
-
class TestMigrate:
|
|
596
|
-
def test_agent_to_agent_relinks(self, boost, tapped):
|
|
597
|
-
boost("install", "brainstorming", "--agent", "claude-code")
|
|
598
|
-
r = boost("migrate", "--from", "claude-code", "--to", "cursor")
|
|
599
|
-
assert "linked brainstorming → cursor" in r.out
|
|
600
|
-
assert "Migrated 1 skill to Cursor" in r.out
|
|
601
|
-
link = paths.home() / ".cursor" / "skills" / "brainstorming"
|
|
602
|
-
assert link.is_symlink() and link.exists()
|
|
603
|
-
assert _lock()["brainstorming"]["agents"] == ["claude-code", "cursor"]
|
|
604
|
-
|
|
605
|
-
def test_unknown_agent_rc1(self, boost, sandbox):
|
|
606
|
-
r = boost("migrate", "--from", "claude-code", "--to", "emacs", expect=1)
|
|
607
|
-
assert "unknown agent: emacs" in r.err
|
|
608
|
-
|
|
609
|
-
def test_same_agent_rc1(self, boost, sandbox):
|
|
610
|
-
r = boost("migrate", "--from", "cursor", "--to", "cursor", expect=1)
|
|
611
|
-
assert "--from and --to are the same agent" in r.err
|
|
612
|
-
|
|
613
|
-
def test_from_skills_cli_crafted_dir(self, boost, sandbox, tmp_path):
|
|
614
|
-
root = tmp_path / "skills-cli"
|
|
615
|
-
_skill_dir(root, "legacy-skill")
|
|
616
|
-
r = boost("migrate", "--from-skills-cli", "--path", root)
|
|
617
|
-
assert "imported legacy-skill v0.1.0" in r.out
|
|
618
|
-
assert "Migrated 1 skill from" in r.out
|
|
619
|
-
assert _lock()["legacy-skill"]["tap"] == "local"
|
|
620
|
-
|
|
621
|
-
def test_from_skills_cli_missing_dir(self, boost, sandbox):
|
|
622
|
-
r = boost("migrate", "--from-skills-cli")
|
|
623
|
-
assert "nothing to migrate — ~/.skills does not exist" in r.out
|
|
624
|
-
|
|
625
|
-
|
|
626
593
|
# ── snapshot ─────────────────────────────────────────────────────────────
|
|
627
594
|
|
|
628
595
|
class TestSnapshot:
|
|
@@ -903,7 +870,7 @@ class TestBundleEdges:
|
|
|
903
870
|
assert "check the path exists and is writable" in r.err
|
|
904
871
|
|
|
905
872
|
|
|
906
|
-
# ── edge coverage: import
|
|
873
|
+
# ── edge coverage: import ───────────────────────────────────────────────
|
|
907
874
|
|
|
908
875
|
class TestImportEdges:
|
|
909
876
|
def test_git_url_clone(self, boost, sandbox, tmp_path, monkeypatch):
|
|
@@ -927,35 +894,6 @@ class TestImportEdges:
|
|
|
927
894
|
assert "available: alpha, beta" in r.err
|
|
928
895
|
|
|
929
896
|
|
|
930
|
-
class TestMigrateEdges:
|
|
931
|
-
def test_no_args_rc1(self, boost, sandbox):
|
|
932
|
-
r = boost("migrate", expect=1)
|
|
933
|
-
assert "nothing to do" in r.err
|
|
934
|
-
assert "--from AGENT --to AGENT" in r.err
|
|
935
|
-
|
|
936
|
-
def test_skills_cli_dir_without_skills(self, boost, sandbox, tmp_path):
|
|
937
|
-
root = tmp_path / "sk"
|
|
938
|
-
root.mkdir()
|
|
939
|
-
(root / "readme.txt").write_text("not a skill\n", encoding="utf-8")
|
|
940
|
-
r = boost("migrate", "--from-skills-cli", "--path", root)
|
|
941
|
-
assert "no skills found under" in r.out
|
|
942
|
-
|
|
943
|
-
def test_nothing_installed(self, boost, sandbox):
|
|
944
|
-
r = boost("migrate", "--from", "claude-code", "--to", "cursor")
|
|
945
|
-
assert "no skills installed — nothing to migrate" in r.out
|
|
946
|
-
|
|
947
|
-
def test_disabled_target_rc1(self, boost, tapped):
|
|
948
|
-
cfg = json.loads(paths.config_path().read_text(encoding="utf-8"))
|
|
949
|
-
cfg["agents"] = {"cursor": {"enabled": False}}
|
|
950
|
-
paths.config_path().write_text(json.dumps(cfg), encoding="utf-8")
|
|
951
|
-
r = boost("migrate", "--from", "claude-code", "--to", "cursor",
|
|
952
|
-
expect=1)
|
|
953
|
-
assert "agent cursor is disabled in config" in r.err
|
|
954
|
-
assert "boost config set agents.cursor.enabled true" in r.err
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
# ── edge coverage: snapshot ──────────────────────────────────────────────
|
|
958
|
-
|
|
959
897
|
class TestSnapshotEdges:
|
|
960
898
|
def test_restore_without_id_rc1(self, boost, sandbox):
|
|
961
899
|
r = boost("snapshot", "restore", expect=1)
|
|
@@ -1277,33 +1215,3 @@ class TestLocalInstallGates:
|
|
|
1277
1215
|
skills = json.loads(boost("list", "--json").out)["skills"]
|
|
1278
1216
|
assert skills["pinned-local"]["pinned"] is True
|
|
1279
1217
|
|
|
1280
|
-
def test_migrate_from_skills_cli_keeps_going_past_a_refusal(
|
|
1281
|
-
self, boost, sandbox, tmp_path, monkeypatch):
|
|
1282
|
-
"""One blocked skill must not abandon the rest of the migration.
|
|
1283
|
-
|
|
1284
|
-
`cmd_migrate` grew the same per-item guard as `import --all`, but its
|
|
1285
|
-
refusal arm was the only one with no test — a `continue` that silently
|
|
1286
|
-
stopped continuing would have looked identical to a clean run.
|
|
1287
|
-
"""
|
|
1288
|
-
skills_root = tmp_path / "dot-skills"
|
|
1289
|
-
for n in ("mig-aaa", "mig-bbb", "mig-ccc"):
|
|
1290
|
-
self._skill(skills_root, n)
|
|
1291
|
-
boost("policy", "set", "blocked_skills", "mig-bbb")
|
|
1292
|
-
|
|
1293
|
-
r = boost("migrate", "--from-skills-cli", "--path", skills_root, expect=1)
|
|
1294
|
-
assert "mig-bbb" in (r.out + r.err) # the refusal is named
|
|
1295
|
-
assert "Migrated" in r.out # and the summary still prints
|
|
1296
|
-
|
|
1297
|
-
out = boost("list").out
|
|
1298
|
-
assert "mig-aaa" in out and "mig-ccc" in out # the others landed
|
|
1299
|
-
assert "mig-bbb" not in out
|
|
1300
|
-
|
|
1301
|
-
def test_migrate_from_skills_cli_counts_only_what_landed(
|
|
1302
|
-
self, boost, sandbox, tmp_path):
|
|
1303
|
-
# The summary counts migrated, not attempted: 2 of 3 here.
|
|
1304
|
-
skills_root = tmp_path / "counted"
|
|
1305
|
-
for n in ("cnt-aaa", "cnt-bbb", "cnt-ccc"):
|
|
1306
|
-
self._skill(skills_root, n)
|
|
1307
|
-
boost("policy", "set", "blocked_skills", "cnt-bbb")
|
|
1308
|
-
r = boost("migrate", "--from-skills-cli", "--path", skills_root, expect=1)
|
|
1309
|
-
assert "2 skills" in r.out
|
|
@@ -62,7 +62,7 @@ def test_unknown_command_suggests_closest(boost):
|
|
|
62
62
|
def test_version_and_help(boost):
|
|
63
63
|
assert re.match(r"boost \S+", boost("--version").out)
|
|
64
64
|
r = boost("--help")
|
|
65
|
-
assert "
|
|
65
|
+
assert "78 commands · 8 groups" in r.out
|
|
66
66
|
for group in ("Package Management", "Discovery & Search", "Intelligence",
|
|
67
67
|
"Quality & Health", "Team & Collaboration"):
|
|
68
68
|
assert group in r.out
|
|
@@ -29,13 +29,13 @@ class TestBoostError:
|
|
|
29
29
|
raise BoostError("x")
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
EXPECTED_GROUP_SIZES = {"pkg":
|
|
32
|
+
EXPECTED_GROUP_SIZES = {"pkg": 13, "find": 9, "info": 10, "tap": 4,
|
|
33
33
|
"ai": 9, "chk": 15, "cfg": 12, "team": 6}
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class TestCommandTable:
|
|
37
|
-
def
|
|
38
|
-
assert len(cli.COMMANDS) ==
|
|
37
|
+
def test_exactly_78_commands(self):
|
|
38
|
+
assert len(cli.COMMANDS) == 78
|
|
39
39
|
|
|
40
40
|
def test_exactly_8_groups(self):
|
|
41
41
|
assert len(cli.GROUPS) == 8
|
|
@@ -49,7 +49,7 @@ class TestCommandTable:
|
|
|
49
49
|
names = [n for n, _g, _m, _s in cli.COMMANDS]
|
|
50
50
|
dupes = [n for n, k in Counter(names).items() if k > 1]
|
|
51
51
|
assert dupes == []
|
|
52
|
-
assert len(cli._BY_NAME) ==
|
|
52
|
+
assert len(cli._BY_NAME) == 78
|
|
53
53
|
|
|
54
54
|
def test_every_command_group_exists(self):
|
|
55
55
|
for name, group, _module, _summary in cli.COMMANDS:
|
|
@@ -126,7 +126,7 @@ class TestMainDispatch:
|
|
|
126
126
|
def test_no_args_prints_help(self, sandbox, capsys):
|
|
127
127
|
assert cli.main([]) == 0
|
|
128
128
|
out = capsys.readouterr().out
|
|
129
|
-
assert "
|
|
129
|
+
assert "78 commands · 8 groups" in out
|
|
130
130
|
assert "Homebrew for AI coding skills" in out
|
|
131
131
|
|
|
132
132
|
def test_help_flag_lists_every_command(self, sandbox, capsys):
|
|
@@ -139,7 +139,7 @@ class TestMainDispatch:
|
|
|
139
139
|
|
|
140
140
|
def test_help_word(self, sandbox, capsys):
|
|
141
141
|
assert cli.main(["help"]) == 0
|
|
142
|
-
assert "
|
|
142
|
+
assert "78 commands · 8 groups" in capsys.readouterr().out
|
|
143
143
|
|
|
144
144
|
def test_help_for_command(self, sandbox, capsys):
|
|
145
145
|
rc = run_main(["help", "install"])
|
|
@@ -319,7 +319,7 @@ class TestInstallFromPath:
|
|
|
319
319
|
return src
|
|
320
320
|
|
|
321
321
|
# ── gates: install_from_path used to enforce NONE of these, so every local
|
|
322
|
-
# path in (import, create --install,
|
|
322
|
+
# path in (import, create --install, distill/infer/absorb --install)
|
|
323
323
|
# was a way around the blocklist, pin_only, max_skills and denied_capabilities.
|
|
324
324
|
|
|
325
325
|
def test_refuses_a_pinned_skill(self, sandbox, tmp_path):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|