boost-skill-cli 1.0.214__tar.gz → 1.0.216__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.214 → boost_skill_cli-1.0.216}/CLAUDE.md +80 -2
- {boost_skill_cli-1.0.214/boost_skill_cli.egg-info → boost_skill_cli-1.0.216}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216/boost_skill_cli.egg-info}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- boost_skill_cli-1.0.216/docs/roadmap/items/main-has-no-branch-protection.md +32 -0
- boost_skill_cli-1.0.216/docs/roadmap/items/scorecard-findings-triage.md +38 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap.html +63 -1
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.gitattributes +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.gitignore +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/.vale.ini +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/LICENSE +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/Makefile +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/README.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/index.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/examples/README.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/index.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/noxfile.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/setup.cfg +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/README.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/boost.css +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/boost.js +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/style/demo.html +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/tests/visual/visual_check.mjs +0 -0
|
@@ -4,6 +4,36 @@ boost is a "Homebrew for AI coding skills": a Python CLI (`boost_cli`) that find
|
|
|
4
4
|
installs, and governs the skill/rule/workflow files that AI coding agents run on.
|
|
5
5
|
Package name on PyPI is `boost-skill-cli`; the command is `boost`.
|
|
6
6
|
|
|
7
|
+
## Common commands
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
make venv # .venv from the hash-pinned requirements/*.txt
|
|
11
|
+
.venv/bin/pytest tests/unit/test_catalog.py -q # one test file
|
|
12
|
+
.venv/bin/pytest tests/unit/test_catalog.py::test_scan_dir -q # one test
|
|
13
|
+
.venv/bin/pytest tests/functional -q -k install # functional tests matching "install"
|
|
14
|
+
make lint # the whole static tier — see the recipe, it is 18 commands
|
|
15
|
+
make test # unit + functional with 80% coverage gate
|
|
16
|
+
make check # the full required gate — see table below
|
|
17
|
+
|
|
18
|
+
# run boost itself against a disposable HOME (never your real ~/.boost):
|
|
19
|
+
export HOME=/tmp/boost-sandbox && mkdir -p $HOME
|
|
20
|
+
python3 tests/make_fixture.py /tmp/fixture-tap
|
|
21
|
+
./boost tap /tmp/fixture-tap
|
|
22
|
+
./boost install brainstorming
|
|
23
|
+
./boost doctor
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`make venv` installs from `requirements/*.txt`, which are hash-pinned and are the
|
|
27
|
+
same files CI installs (`scripts/lock_toolchain.py --check` gates them against
|
|
28
|
+
drift) — so a dev venv and a runner resolve to identical bytes. Don't `pip
|
|
29
|
+
install` a lint or test tool by hand; add it to the right requirements file and
|
|
30
|
+
regenerate the lock, or `make lint` passes for you and fails in CI.
|
|
31
|
+
|
|
32
|
+
The functional/unit `sandbox` fixture (`tests/conftest.py`) also sets
|
|
33
|
+
`BOOST_NO_AI=1` and `BOOST_ASSUME_YES=1` so tests are deterministic and never
|
|
34
|
+
block on a confirm prompt or a real AI call — override explicitly in a test
|
|
35
|
+
that means to exercise the AI or confirmation path.
|
|
36
|
+
|
|
7
37
|
## The one gate that matters
|
|
8
38
|
|
|
9
39
|
Before calling any change done, run the full gate:
|
|
@@ -124,9 +154,57 @@ Both boards are data-driven: `docs/roadmap.html` from `board: code` items and
|
|
|
124
154
|
into the per-track sections; the filter JS and counters are computed). Same rule
|
|
125
155
|
for both — edit items, run `build_roadmap.py`, never touch the HTML by hand.
|
|
126
156
|
|
|
157
|
+
## Architecture
|
|
158
|
+
|
|
159
|
+
**CLI dispatch.** `boost_cli/cli.py` holds `COMMANDS`, the single
|
|
160
|
+
source-of-truth list of `(name, group, module, summary)` for all 78 commands.
|
|
161
|
+
Each command is implemented as `def cmd_<name_with_underscores>(argv) -> int`
|
|
162
|
+
inside `boost_cli/commands/<module>.py`, and `_dispatch` imports that module
|
|
163
|
+
lazily on invocation — so `boost --help` stays instant and command modules are
|
|
164
|
+
decoupled from each other. To add a command: add a row to `COMMANDS`, add the
|
|
165
|
+
`cmd_*` function to the named module, and it's live. `docs/commands.html` is
|
|
166
|
+
**generated** from `COMMANDS` by `scripts/build_command_reference.py`, so a new
|
|
167
|
+
row means regenerating it (`make generate`) or the `--check` gate fails.
|
|
168
|
+
|
|
169
|
+
**commands/ vs core/.** `boost_cli/commands/` is thin CLI glue — argument
|
|
170
|
+
parsing, output formatting, calling into `core/`. `boost_cli/core/` is the
|
|
171
|
+
actual engine (catalog scanning, install/link logic, the lock file, registries,
|
|
172
|
+
search) and is what the mutation gate targets — put behavior there, not in
|
|
173
|
+
the command layer, so it's covered by both the unit suite and mutation
|
|
174
|
+
testing.
|
|
175
|
+
|
|
176
|
+
**Storage layout**, all resolved at call time from `$HOME` (or `$BOOST_HOME`)
|
|
177
|
+
in `boost_cli/core/paths.py`, which is what makes `HOME=<tempdir>` sandboxing
|
|
178
|
+
work in tests and the dev loop:
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
~/.boost/repos/ shallow git clones of tapped registries
|
|
182
|
+
~/.boost/cache/ JSON catalogs built from SKILL.md/rule/workflow frontmatter
|
|
183
|
+
~/.boost/logs/ rotating diagnostic log + crash reports
|
|
184
|
+
~/.boost/state/ pins, tags, policy, profiles, pulse feed, snapshots
|
|
185
|
+
~/.boost/config.json
|
|
186
|
+
~/.agents/skills/ canonical store — single source of truth for installed skills
|
|
187
|
+
~/.agents/skills/.skill-lock.json v3 lock file
|
|
188
|
+
~/.claude/skills/ ~/.windsurf/skills/ ~/.cursor/skills/ symlinked out from the canonical store
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
`core/catalog.scan_dir` walks a tap's clone and classifies each file into one
|
|
192
|
+
of the three item kinds (see Non-obvious rules above); `core/store.py` owns
|
|
193
|
+
install, uninstall and sync — copying into the canonical store, symlinking into
|
|
194
|
+
each agent's skills dir, and updating the lock file.
|
|
195
|
+
|
|
196
|
+
**Search has two engines**, both in `core/`: `rag.py` is the always-on,
|
|
197
|
+
zero-dependency BM25 engine (full-content index, auto-builds on first
|
|
198
|
+
search — this is what the required `eval` gate floors at recall@k ≥ 0.85).
|
|
199
|
+
`dense.py` is optional dense/vector retrieval behind the `[rag]` extra plus
|
|
200
|
+
an embeddings key (`VOYAGE_API_KEY`/`OPENAI_API_KEY`); it's used when both
|
|
201
|
+
are present and falls back to BM25 otherwise. `core/ai.py` wraps the
|
|
202
|
+
opt-in LLM-assisted paths (`search --smart`, `explain`, `distill`, `infer`,
|
|
203
|
+
`absorb`, `evolve`, `simulate`, …), shelling out to the `claude` CLI or
|
|
204
|
+
`ANTHROPIC_API_KEY` when available and degrading to heuristics when not.
|
|
205
|
+
|
|
127
206
|
## Layout
|
|
128
207
|
|
|
129
|
-
- `boost_cli/commands/` — CLI command groups · `boost_cli/core/` — engine (the mutation-gated code)
|
|
130
208
|
- `boost_cli/data/` — shipped catalog data (generated) · `scripts/` — build/gate tooling
|
|
131
209
|
- `tests/unit`, `tests/functional`, `tests/smoke.sh` — the three test tiers
|
|
132
|
-
- `docs/` — `
|
|
210
|
+
- `docs/` — `index.html` (visual guide), `commands.html` (every flag, generated), `DEBUGGING.md`; `roadmap.html` is generated from `docs/roadmap/items/*.md` (see above)
|
|
@@ -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.216'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 216)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -210,6 +210,7 @@ docs/roadmap/items/localize-the-stored-bm25-snippet.md
|
|
|
210
210
|
docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md
|
|
211
211
|
docs/roadmap/items/log-timestamps-mislabeled-utc.md
|
|
212
212
|
docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md
|
|
213
|
+
docs/roadmap/items/main-has-no-branch-protection.md
|
|
213
214
|
docs/roadmap/items/make-the-roadmaps-discoverable.md
|
|
214
215
|
docs/roadmap/items/markdown-consistency-markdownlint-cli2.md
|
|
215
216
|
docs/roadmap/items/mcp-aware-skills.md
|
|
@@ -259,6 +260,7 @@ docs/roadmap/items/runtime-explain-faithfulness-guardrail.md
|
|
|
259
260
|
docs/roadmap/items/sbom-aware-scanning-osv-scanner.md
|
|
260
261
|
docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md
|
|
261
262
|
docs/roadmap/items/scan-and-sync-rules-and-workflows.md
|
|
263
|
+
docs/roadmap/items/scorecard-findings-triage.md
|
|
262
264
|
docs/roadmap/items/second-type-checker-pyright.md
|
|
263
265
|
docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md
|
|
264
266
|
docs/roadmap/items/secret-scanning-gitleaks-push-protection.md
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: main-has-no-branch-protection
|
|
3
|
+
board: code
|
|
4
|
+
section: pipeline
|
|
5
|
+
status: planned
|
|
6
|
+
category: Release safety
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 3
|
|
10
|
+
note: nothing enforces the red-merge rule
|
|
11
|
+
order: 14
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: <code>main</code> has no branch protection, so the release rules are honour-system
|
|
15
|
+
---
|
|
16
|
+
<code>GET /branches/main/protection</code> returns <b>"Branch not protected"</b>. Scorecard
|
|
17
|
+
flags it (<code>BranchProtectionID</code>, score 0), but the sharper way to see it is this:
|
|
18
|
+
CLAUDE.md says <i>"never merge onto a red release"</i> and <i>"every merge to main cuts a
|
|
19
|
+
PyPI release"</i> — and <b>nothing enforces either</b>. A merge with a red gate succeeds
|
|
20
|
+
silently, and the release workflow then ships that commit to PyPI. The rule exists only in
|
|
21
|
+
the head of whoever is merging.
|
|
22
|
+
This is a <b>decision, not a bug</b>, which is why it is filed rather than fixed. Requiring
|
|
23
|
+
status checks would have stopped the exact situation that occurred on
|
|
24
|
+
2026-07-25, when three PRs sat red on a <code>lock_toolchain --check</code> failure that
|
|
25
|
+
belonged to none of them. But protection cuts both ways here: the repo's whole working model
|
|
26
|
+
is parallel <code>loop/*</code> branches opening and merging their own PRs, so
|
|
27
|
+
<b>"require pull request reviews"</b> would deadlock every loop (there is no second
|
|
28
|
+
reviewer), and that same absence is what keeps <code>CodeReviewID</code> pinned at 0/30.
|
|
29
|
+
The shape that fits: require <b>status checks</b> to pass (at minimum <code>ci / lint</code>
|
|
30
|
+
and <code>ci / tests</code>) and require branches to be up to date, but do <b>not</b>
|
|
31
|
+
require reviews. That enforces the release rule that actually matters while leaving
|
|
32
|
+
self-merge intact. Decide before adding more concurrent loops, not after.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: scorecard-findings-triage
|
|
3
|
+
board: code
|
|
4
|
+
section: pipeline
|
|
5
|
+
status: planned
|
|
6
|
+
category: Supply chain
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 2
|
|
10
|
+
note: 15 open · 3 fixed, 4 intentional, 5 not code-fixable
|
|
11
|
+
order: 13
|
|
12
|
+
owner:
|
|
13
|
+
pr:
|
|
14
|
+
title: OpenSSF Scorecard's 15 findings, triaged into three piles
|
|
15
|
+
---
|
|
16
|
+
Scorecard files into the same code-scanning inbox as CodeQL, so its findings read like
|
|
17
|
+
code defects and get ignored alongside the false positives. They are not defects — they
|
|
18
|
+
are <b>posture metrics</b>, and they must not be dismissed as "false positive" the way the
|
|
19
|
+
<code>serve.py</code> traversal alerts legitimately were, because that misrepresents the
|
|
20
|
+
repo's security posture. Triaged 2026-07-25:
|
|
21
|
+
<b>Fixed</b> — <code>TokenPermissions</code> #26/#27/#28: <code>ci</code>,
|
|
22
|
+
<code>codeql</code> and <code>adapter-conformance</code> had no top-level
|
|
23
|
+
<code>permissions:</code> block at all, scoring 0. Added <code>contents: read</code> as the
|
|
24
|
+
least-privilege default.
|
|
25
|
+
<b>Intentional, leave</b> — <code>TokenPermissions</code> #39/#37/#25/#24:
|
|
26
|
+
<code>publish.yml</code> needs <code>contents: write</code> to create the release and tag,
|
|
27
|
+
<code>osv-scanner</code> needs <code>security-events: write</code> to upload SARIF, and
|
|
28
|
+
<code>ci.yml</code>'s <code>tests</code> job needs <code>contents: write</code> for the
|
|
29
|
+
coverage-badge push. "Fixing" these breaks the release pipeline. They should be
|
|
30
|
+
<b>dismissed as used-in-tests/acceptable-risk with a reason</b>, not left open to rot the list.
|
|
31
|
+
<b>Not code-fixable</b> — <code>MaintainedID</code> is repository age; <code>CodeReviewID</code>
|
|
32
|
+
counts approved changesets and is structurally 0 while loops self-merge;
|
|
33
|
+
<code>CIIBestPracticesID</code> is an opt-in badge programme; the four
|
|
34
|
+
<code>PinnedDependencies</code> hits are <code>npx</code> and <code>pip</code> invocations
|
|
35
|
+
inside steps, not actions, so SHA-pinning does not apply to them as written.
|
|
36
|
+
<code>BranchProtectionID</code> is tracked separately in
|
|
37
|
+
<a href="#main-has-no-branch-protection">its own card</a> — it is a workflow decision, not a
|
|
38
|
+
config oversight.
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
110
110
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
111
111
|
<div class="stat"><b>4</b><span>Planned</span></div>
|
|
112
|
-
<div class="stat"><b>
|
|
112
|
+
<div class="stat"><b>145</b><span>Loop finds</span></div>
|
|
113
113
|
<!-- /ROADMAP:stats -->
|
|
114
114
|
</div>
|
|
115
115
|
</section>
|
|
@@ -1725,6 +1725,68 @@ path is never used — that fixes the behaviour without satisfying Dependabot's
|
|
|
1725
1725
|
<span class="m">dismissed as tolerable risk, 2026-07-25</span>
|
|
1726
1726
|
</div>
|
|
1727
1727
|
</article>
|
|
1728
|
+
|
|
1729
|
+
<article class="cap rcard" id="scorecard-findings-triage">
|
|
1730
|
+
<div class="head"><span class="pill planned">Planned</span><span class="cat">Supply chain</span></div>
|
|
1731
|
+
<h3>OpenSSF Scorecard's 15 findings, triaged into three piles</h3>
|
|
1732
|
+
<p>Scorecard files into the same code-scanning inbox as CodeQL, so its findings read like
|
|
1733
|
+
code defects and get ignored alongside the false positives. They are not defects — they
|
|
1734
|
+
are <b>posture metrics</b>, and they must not be dismissed as "false positive" the way the
|
|
1735
|
+
<code>serve.py</code> traversal alerts legitimately were, because that misrepresents the
|
|
1736
|
+
repo's security posture. Triaged 2026-07-25:
|
|
1737
|
+
<b>Fixed</b> — <code>TokenPermissions</code> #26/#27/#28: <code>ci</code>,
|
|
1738
|
+
<code>codeql</code> and <code>adapter-conformance</code> had no top-level
|
|
1739
|
+
<code>permissions:</code> block at all, scoring 0. Added <code>contents: read</code> as the
|
|
1740
|
+
least-privilege default.
|
|
1741
|
+
<b>Intentional, leave</b> — <code>TokenPermissions</code> #39/#37/#25/#24:
|
|
1742
|
+
<code>publish.yml</code> needs <code>contents: write</code> to create the release and tag,
|
|
1743
|
+
<code>osv-scanner</code> needs <code>security-events: write</code> to upload SARIF, and
|
|
1744
|
+
<code>ci.yml</code>'s <code>tests</code> job needs <code>contents: write</code> for the
|
|
1745
|
+
coverage-badge push. "Fixing" these breaks the release pipeline. They should be
|
|
1746
|
+
<b>dismissed as used-in-tests/acceptable-risk with a reason</b>, not left open to rot the list.
|
|
1747
|
+
<b>Not code-fixable</b> — <code>MaintainedID</code> is repository age; <code>CodeReviewID</code>
|
|
1748
|
+
counts approved changesets and is structurally 0 while loops self-merge;
|
|
1749
|
+
<code>CIIBestPracticesID</code> is an opt-in badge programme; the four
|
|
1750
|
+
<code>PinnedDependencies</code> hits are <code>npx</code> and <code>pip</code> invocations
|
|
1751
|
+
inside steps, not actions, so SHA-pinning does not apply to them as written.
|
|
1752
|
+
<code>BranchProtectionID</code> is tracked separately in
|
|
1753
|
+
<a href="#main-has-no-branch-protection">its own card</a> — it is a workflow decision, not a
|
|
1754
|
+
config oversight.</p>
|
|
1755
|
+
<div class="meta">
|
|
1756
|
+
<span class="m">Complexity <b>M</b></span>
|
|
1757
|
+
<span class="m">Impact <b>Med</b></span>
|
|
1758
|
+
<span class="m">Wow <b class="wow">★★</b></span>
|
|
1759
|
+
<span class="m">15 open · 3 fixed, 4 intentional, 5 not code-fixable</span>
|
|
1760
|
+
</div>
|
|
1761
|
+
</article>
|
|
1762
|
+
|
|
1763
|
+
<article class="cap rcard" id="main-has-no-branch-protection">
|
|
1764
|
+
<div class="head"><span class="pill planned">Planned</span><span class="cat">Release safety</span></div>
|
|
1765
|
+
<h3><code>main</code> has no branch protection, so the release rules are honour-system</h3>
|
|
1766
|
+
<p><code>GET /branches/main/protection</code> returns <b>"Branch not protected"</b>. Scorecard
|
|
1767
|
+
flags it (<code>BranchProtectionID</code>, score 0), but the sharper way to see it is this:
|
|
1768
|
+
CLAUDE.md says <i>"never merge onto a red release"</i> and <i>"every merge to main cuts a
|
|
1769
|
+
PyPI release"</i> — and <b>nothing enforces either</b>. A merge with a red gate succeeds
|
|
1770
|
+
silently, and the release workflow then ships that commit to PyPI. The rule exists only in
|
|
1771
|
+
the head of whoever is merging.
|
|
1772
|
+
This is a <b>decision, not a bug</b>, which is why it is filed rather than fixed. Requiring
|
|
1773
|
+
status checks would have stopped the exact situation that occurred on
|
|
1774
|
+
2026-07-25, when three PRs sat red on a <code>lock_toolchain --check</code> failure that
|
|
1775
|
+
belonged to none of them. But protection cuts both ways here: the repo's whole working model
|
|
1776
|
+
is parallel <code>loop/*</code> branches opening and merging their own PRs, so
|
|
1777
|
+
<b>"require pull request reviews"</b> would deadlock every loop (there is no second
|
|
1778
|
+
reviewer), and that same absence is what keeps <code>CodeReviewID</code> pinned at 0/30.
|
|
1779
|
+
The shape that fits: require <b>status checks</b> to pass (at minimum <code>ci / lint</code>
|
|
1780
|
+
and <code>ci / tests</code>) and require branches to be up to date, but do <b>not</b>
|
|
1781
|
+
require reviews. That enforces the release rule that actually matters while leaving
|
|
1782
|
+
self-merge intact. Decide before adding more concurrent loops, not after.</p>
|
|
1783
|
+
<div class="meta">
|
|
1784
|
+
<span class="m">Complexity <b>S</b></span>
|
|
1785
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
1786
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
1787
|
+
<span class="m">nothing enforces the red-merge rule</span>
|
|
1788
|
+
</div>
|
|
1789
|
+
</article>
|
|
1728
1790
|
<!-- /ROADMAP:cards -->
|
|
1729
1791
|
|
|
1730
1792
|
</div>
|
|
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
|
|
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
|
|
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
|
{boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.214 → boost_skill_cli-1.0.216}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|