boost-skill-cli 1.0.385__tar.gz → 1.0.387__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.385 → boost_skill_cli-1.0.387}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/index.html +22 -4
- boost_skill_cli-1.0.387/docs/roadmap/items/langchain-integration-explainer-page.md +66 -0
- boost_skill_cli-1.0.387/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +89 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap.html +153 -2
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/boost.css +6 -1
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.gitattributes +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.gitignore +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.lighthouserc.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.lycheeignore +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.stylelintrc.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.vale/styles/boost/Terminology.yml +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.vale.ini +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/CODE_OF_CONDUCT.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/LICENSE +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/Makefile +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/README.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/_common.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/run.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/safety.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/capabilities.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/chat.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/complete.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/ed25519.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/faithfulness.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/installscan.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/integrity.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/localembed.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/mcpdecl.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/mcphost.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/minisign.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/projectlock.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/provenance.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/resolve.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/scopes.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/selfupdate.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/trustaudit.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/codecov.yml +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/README.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-components-core.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-containers.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-context.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-dynamic-install.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/distill.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/doctor.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/explain.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/hooks.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/install.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/pulse.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/search.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/tap.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/distill.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/doctor.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/explain.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/hooks.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/install.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/pulse.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/search.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/tap.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/chat.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo-index.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/eval-latest.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/command-carousel-page.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/github-community-health-files.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/license-compliance-scanning.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-aware-skills.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/required-checks-config-drift.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/eslint.config.mjs +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/README.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/__init__.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/baseline.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/faithfulness.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/golden_set.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/make_corpus.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/make_golden.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/metrics.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/run_evals.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/examples/README.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/index.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/noxfile.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/coverage-tools.in +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/coverage-tools.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/lint-tools.in +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/lint-tools.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/mutation-tools.in +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/mutation-tools.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/platform-pins.lock +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/release-tools.in +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/release-tools.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/test-tools.in +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/test-tools.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/a11y_check.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_demo_index.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_scale_corpus.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/check_anchors.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/check_licenses.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/check_required_checks.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_corpus.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_gate.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/lock_toolchain.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/mutation_shards.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/mutation_weights.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/page_budget.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/perf_gate.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/publish_eval_json.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/release_guard.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/release_preflight.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/setup.cfg +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/sonar-project.properties +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/README.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/boost.js +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/demo.html +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/golden-natural.jsonl +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/taps-scale.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_capabilities_policy.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_chat.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_integrity_enforce.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_run.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_tap_signing.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_workspace_scope.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/README.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/02-https.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/06-space.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/fuzz_frontmatter.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/fuzz_registry.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_a11y_check.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_adapters_multi.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_adapters_runner.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_capabilities.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_chat.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_check_anchors.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_check_licenses.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_codeql_analysis_key.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_community_health_files.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_complete.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_content_dedupe.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dedup_trust.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_demo_index.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_fix_hint.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_shards.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_status.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dependabot_config.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_docsite_chrome.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_ed25519.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_embed_local.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_entry_key.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_baseline.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_corpus.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_faithfulness.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_gate.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_grading.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_metrics.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_faithfulness.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_fuzz_targets.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_installscan.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_integrity.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_localembed.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_localembed_e2e.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_marketing_counts.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcp_install_scan.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcpdecl.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcphost.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_minisign.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutation_shards.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutation_subfile_shards.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutmut_source_paths.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_page_budget.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_perf_gate.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_platform_pins.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_post_deploy_smoke.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_project_mcp_sidecar.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_projectlock.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_provenance.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_rag_fusion.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_registry_categories.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_release_guard.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_release_preflight.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_required_checks.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_resolve.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_scale_corpus.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_scopes.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_selfupdate.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_toolchain_lock.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_trustaudit.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_workflow_concurrency.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_workflow_timeouts.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_workflows.py +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/a11y_check.mjs +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/console_check.mjs +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/package-lock.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/package.json +0 -0
- {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/visual_check.mjs +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.387'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 387)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -248,6 +248,8 @@ docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md
|
|
|
248
248
|
docs/roadmap/items/journal-rotation-race-and-handle-leak.md
|
|
249
249
|
docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md
|
|
250
250
|
docs/roadmap/items/keyless-semantic-search-for-everyone.md
|
|
251
|
+
docs/roadmap/items/langchain-integration-explainer-page.md
|
|
252
|
+
docs/roadmap/items/langchain-langgraph-langsmith-integration.md
|
|
251
253
|
docs/roadmap/items/layering-guard-import-linter.md
|
|
252
254
|
docs/roadmap/items/license-compliance-scanning.md
|
|
253
255
|
docs/roadmap/items/lighthouse-ci-on-the-pages-site.md
|
|
@@ -64,17 +64,25 @@
|
|
|
64
64
|
font-size: 14px; color: var(--text-2); text-decoration: none; white-space: nowrap;
|
|
65
65
|
}
|
|
66
66
|
header .nav ul a:hover { color: var(--text); background: var(--panel); }
|
|
67
|
-
|
|
67
|
+
/* var(--bg), not var(--text): this pill's background is the light Aurora
|
|
68
|
+
gradient, so near-white text measures 1.38:1 against its cyan stop — a
|
|
69
|
+
3x WCAG AA failure. No gate caught it: axe cannot evaluate contrast over
|
|
70
|
+
a gradient and files it as "incomplete" rather than a violation, and
|
|
71
|
+
scripts/a11y_check.py only grades solid token pairs. style/boost.css:479
|
|
72
|
+
already had this right; this inline rule was overriding it on cascade
|
|
73
|
+
order. Matches .btn-grad in the hero, which measures ~8:1. */
|
|
74
|
+
header .nav ul a.cta { color: var(--bg); font-weight: 600; }
|
|
68
75
|
|
|
69
76
|
/* Small screens: the fourteen links get their own full-width row and scroll,
|
|
70
77
|
with 40px tap targets — mirrors the .site-nav rules in style/boost.css.
|
|
71
78
|
Stated here because this page's inline nav styling would otherwise win
|
|
72
79
|
against the shared sheet on cascade order. */
|
|
73
80
|
@media (max-width: 720px) {
|
|
74
|
-
header .nav { flex-wrap: wrap; gap: 6px 18px; padding: 8px
|
|
81
|
+
header .nav { flex-wrap: wrap; gap: 6px 18px; padding: 8px 24px 6px; }
|
|
75
82
|
header .nav ul {
|
|
76
83
|
width: 100%; margin-left: 0; flex-wrap: nowrap; gap: 6px;
|
|
77
84
|
-webkit-overflow-scrolling: touch; scroll-snap-type: x proximity;
|
|
85
|
+
scroll-padding-inline-start: 24px;
|
|
78
86
|
margin-inline: -24px; padding-inline: 24px; padding-bottom: 4px;
|
|
79
87
|
-webkit-mask-image: linear-gradient(90deg, #000 0 calc(100% - 26px), transparent);
|
|
80
88
|
mask-image: linear-gradient(90deg, #000 0 calc(100% - 26px), transparent);
|
|
@@ -243,6 +251,16 @@
|
|
|
243
251
|
.flow-row.one { grid-template-columns: minmax(0, 460px); justify-content: center; }
|
|
244
252
|
.flow-row.two { grid-template-columns: 1fr 1fr; }
|
|
245
253
|
.flow-row.three { grid-template-columns: 1fr 1fr 1fr; }
|
|
254
|
+
/* Four agents, four columns. The ladder only ever uses counts that divide
|
|
255
|
+
4 — any other number strands the last card alone on its own row with the
|
|
256
|
+
rest of that row empty, which is what `.three` did to Gemini CLI at every
|
|
257
|
+
width above the 620px collapse. */
|
|
258
|
+
.flow-row.four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
|
|
259
|
+
/* Below ~900px four tracks squeeze each card to 165px and the Gemini
|
|
260
|
+
caption to three lines (128px / four lines by 621px), so step to 2x2 —
|
|
261
|
+
still a divisor of 4, so still no orphan. The max-width:620px rule
|
|
262
|
+
further down takes it to a single column and wins there on source order. */
|
|
263
|
+
@media (max-width: 900px) { .flow-row.four { grid-template-columns: 1fr 1fr; } }
|
|
246
264
|
.node {
|
|
247
265
|
background: var(--surface-1);
|
|
248
266
|
box-shadow: inset 0 1px 0 0 rgba(255,255,255,.06), inset 0 -1px 0 0 rgba(0,0,0,.3);
|
|
@@ -425,7 +443,7 @@
|
|
|
425
443
|
@media (max-width: 620px) {
|
|
426
444
|
section { padding: 84px 0 10px; }
|
|
427
445
|
.cards, .caps, .mini { grid-template-columns: 1fr; }
|
|
428
|
-
.flow-row.two, .flow-row.three { grid-template-columns: 1fr; }
|
|
446
|
+
.flow-row.two, .flow-row.three, .flow-row.four { grid-template-columns: 1fr; }
|
|
429
447
|
.stats { gap: 10px; }
|
|
430
448
|
.stat { padding: 18px 10px; }
|
|
431
449
|
}
|
|
@@ -616,7 +634,7 @@ facilitate structured divergent thinking:
|
|
|
616
634
|
<svg width="14" height="26" viewBox="0 0 14 26" fill="none" aria-hidden="true"><path d="M7 0v22m0 0l-5.5-6M7 22l5.5-6" stroke="currentColor" stroke-width="2"/></svg>
|
|
617
635
|
<span>symlinks</span>
|
|
618
636
|
</div>
|
|
619
|
-
<div class="flow-row
|
|
637
|
+
<div class="flow-row four reveal">
|
|
620
638
|
<div class="node agent">
|
|
621
639
|
<span class="tag">Agent</span>
|
|
622
640
|
<h3>Claude Code</h3>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: langchain-integration-explainer-page
|
|
3
|
+
board: code
|
|
4
|
+
section: docsite
|
|
5
|
+
status: planned
|
|
6
|
+
category: Docs · Interop
|
|
7
|
+
complexity: M
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 4
|
|
10
|
+
note: the eval.html genre, pointed at the LangChain stack — and it can only document what has shipped
|
|
11
|
+
order: 89
|
|
12
|
+
title: an explainer page for the LangChain / LangGraph / LangSmith integration
|
|
13
|
+
---
|
|
14
|
+
A companion to <b>production-ready LangChain / LangGraph / LangSmith integration</b>: one
|
|
15
|
+
<code>docs/langchain.html</code> that shows what the integration <i>is</i> — architecture and
|
|
16
|
+
sequence diagrams, annotated code you can paste, and the reasoning behind each seam — rather than
|
|
17
|
+
an API list. The audience is a Python engineer deciding whether boost's catalogue is worth wiring
|
|
18
|
+
into their agent, and that decision is made from a diagram and a twenty-line snippet, not from
|
|
19
|
+
a reference table.
|
|
20
|
+
|
|
21
|
+
<b>The genre already exists here.</b> <code>docs/eval.html</code> does exactly this job for the
|
|
22
|
+
evaluation system — architecture plus sequence diagrams plus a simple-vs-technical cheat sheet — and
|
|
23
|
+
it is the template to follow rather than reinvent. So are its mechanics: a page-specific
|
|
24
|
+
<code><style></code> block built <i>only</i> on <code>style/boost.css</code>
|
|
25
|
+
<code>:root</code> tokens, so the Aurora palette stays recolourable from one file, and diagrams as
|
|
26
|
+
<b>inline SVG on those same tokens</b> rather than a diagram library. A hardcoded hex in a diagram
|
|
27
|
+
silently opts that diagram out of every future theme change, and an external script opts the page
|
|
28
|
+
out of loading at all on a strict CSP.
|
|
29
|
+
|
|
30
|
+
<b>What the page has to cover</b>, one section per seam, each with a diagram and a runnable snippet:
|
|
31
|
+
retrieval (<code>BoostRetriever</code> over the BM25 + dense fusion, with the measured recall@k /
|
|
32
|
+
hit@1 / MRR / nDCG@k shown as numbers because they exist); a <code>SKILL.md</code> loaded as prompt
|
|
33
|
+
content with its frontmatter surviving as metadata; a LangGraph graph that pulls a procedure
|
|
34
|
+
<i>mid-run</i> instead of pre-loading every one into the system prompt; and a LangSmith trace of
|
|
35
|
+
that graph, next to a plain statement that the required gate stays offline, deterministic and
|
|
36
|
+
key-free.
|
|
37
|
+
|
|
38
|
+
<b>Three constraints that are specific to this repo</b>, all of them cheap to satisfy if known up
|
|
39
|
+
front and expensive to retrofit:
|
|
40
|
+
|
|
41
|
+
<b>No page ships unlinked.</b> <code>tests/unit/test_docsite_chrome.py</code> holds a
|
|
42
|
+
<code>_PAGES</code> tuple and asserts every page carries the footer and is reachable from all the
|
|
43
|
+
others. Adding the tenth page therefore means touching the nav and footer of the nine that exist —
|
|
44
|
+
it is a small edit, but it is not optional and it is not automatic.
|
|
45
|
+
|
|
46
|
+
<b>The budget already fits — measured, so nobody has to guess.</b>
|
|
47
|
+
<code>scripts/page_budget.py</code> allows a hand-written page 150 kB / 2,000 elements / depth 20.
|
|
48
|
+
Today <code>eval.html</code> is 35.5 kB / 528 elements / depth 10 and <code>mcp-hub.html</code>, the
|
|
49
|
+
largest hand-written page, is 50.0 kB / 607. A diagram-and-snippet page of this shape lands in the
|
|
50
|
+
same range, so it needs <b>no</b> new <code>BUDGETS</code> entry — and if it ever does, the entry
|
|
51
|
+
carries a <code>why</code> string rather than raising the default for every page.
|
|
52
|
+
|
|
53
|
+
<b>Accessibility is enforced with numbers, not vibes.</b> The axe-core sweep and
|
|
54
|
+
<code>scripts/a11y_check.py</code> gate WCAG 2.1 AA, and this genre trips it in a predictable place:
|
|
55
|
+
a diagram that encodes meaning in colour alone, or a link distinguished only by hue. The precedent
|
|
56
|
+
is already commented in <code>eval.html</code> — <code>--sky</code> on <code>--text-3</code> is
|
|
57
|
+
2.47:1 against the 3:1 that WCAG 1.4.1 requires, so its links carry an underline as the non-colour
|
|
58
|
+
cue. Diagram legends need the same treatment: shape or label, never colour by itself.
|
|
59
|
+
|
|
60
|
+
<b>Sequencing, and the one rule that keeps it honest.</b> The page cannot precede the code — a
|
|
61
|
+
demonstration of an unbuilt integration is fiction, and a snippet nobody ran is a bug with syntax
|
|
62
|
+
highlighting. So each section ships with the phase it documents (retrieval with phase 1, the graph
|
|
63
|
+
with phase 2, the trace with phase 3), and every snippet on the page should be extracted and
|
|
64
|
+
executed by a test rather than pasted in and trusted. That last part is a new discipline for this
|
|
65
|
+
docsite, not an existing one; it is worth adopting here first precisely because this page's whole
|
|
66
|
+
value is that its code runs.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: langchain-langgraph-langsmith-integration
|
|
3
|
+
board: code
|
|
4
|
+
section: planned
|
|
5
|
+
status: planned
|
|
6
|
+
category: Feature
|
|
7
|
+
complexity: L
|
|
8
|
+
impact: High
|
|
9
|
+
wow: 4
|
|
10
|
+
note: a second consumer class for the catalogue — blocked on one dependency conflict boost already owns
|
|
11
|
+
order: 88
|
|
12
|
+
title: production-ready LangChain / LangGraph / LangSmith integration
|
|
13
|
+
---
|
|
14
|
+
Every agent boost supports today is a <b>coding</b> agent that reads files off disk — Claude Code,
|
|
15
|
+
Cursor, Windsurf, Gemini CLI. The catalogue itself is not coding-specific: it is 10,000+ retrievable
|
|
16
|
+
procedures with frontmatter, provenance and a lock file. A LangChain application cannot reach any of
|
|
17
|
+
it, so the same procedure has to be re-written as a prompt string by hand. This item is about making
|
|
18
|
+
the catalogue addressable from a Python agent runtime as well as from a dotfile.
|
|
19
|
+
|
|
20
|
+
<b>Three surfaces, and they are not equally justified.</b>
|
|
21
|
+
|
|
22
|
+
<code>langchain</code> — a <code>BoostRetriever</code> implementing <code>BaseRetriever</code> over
|
|
23
|
+
the engine <code>boost search</code> already uses: BM25 (<code>core/rag.py</code>) fused with
|
|
24
|
+
optional dense retrieval (<code>core/dense.py</code>) through <code>rag.rrf_fuse</code>. The
|
|
25
|
+
retrieval quality is already measured — the required gate floors recall@k, hit@1, MRR and nDCG@k
|
|
26
|
+
against <code>tests/eval/golden.jsonl</code> — so this surface ships with numbers rather than
|
|
27
|
+
claims. Plus a document loader that turns a <code>SKILL.md</code> into prompt content with its
|
|
28
|
+
frontmatter preserved as metadata.
|
|
29
|
+
|
|
30
|
+
<code>langgraph</code> — skills as procedures a graph pulls <i>mid-run</i>: a node that retrieves
|
|
31
|
+
the right skill for the current state and injects it, rather than stuffing every procedure into the
|
|
32
|
+
system prompt. boost's <code>workflow</code> item kind is already the closest thing it has to a
|
|
33
|
+
graph node, and <code>core/workflows.py</code> already renders per-runtime formats
|
|
34
|
+
(<code>TOML_COMMAND_AGENTS</code> for Gemini), so a LangGraph renderer is a new target for existing
|
|
35
|
+
machinery, not a new concept.
|
|
36
|
+
|
|
37
|
+
<code>langsmith</code> — hosted tracing plus datasets/evaluators. boost already has a four-tier
|
|
38
|
+
eval story (Tier 1 BM25 floors, 1b <code>ranx</code> significance, 2a/2b LLM rerank and recommend,
|
|
39
|
+
2c <code>ragas</code> faithfulness) and a baseline keyed by query-set digest. LangSmith would host
|
|
40
|
+
the golden set and run online evals against real traffic. It must <b>not</b> replace the required
|
|
41
|
+
gate, which is deliberately pure-stdlib BM25 needing no API key — a required check that depends on
|
|
42
|
+
a SaaS account is a required check that fails when someone else's billing lapses.
|
|
43
|
+
|
|
44
|
+
<b>What "production ready" forces, specifically.</b>
|
|
45
|
+
|
|
46
|
+
<b>It cannot be an extra — the Python floor decides it.</b> boost is
|
|
47
|
+
<code>requires-python = ">=3.9"</code> and CI tests 3.9 / 3.12 / 3.14 across Linux, macOS and
|
|
48
|
+
Windows. Measured 2026-08-02: <code>langchain</code> 1.3.14 declares
|
|
49
|
+
<code>>=3.10.0,<4.0.0</code> and <code>langsmith</code> 0.10.15 declares <code>>=3.10</code>. So
|
|
50
|
+
an extra would either fail to resolve on the 3.9 leg or force boost to drop 3.9 for every user,
|
|
51
|
+
including those who never touch LangChain. A separately versioned distribution that depends on
|
|
52
|
+
<code>boost-skill-cli</code> keeps the floor a property of the integration.
|
|
53
|
+
|
|
54
|
+
<b>There is a dependency conflict boost already owns, and it blocks this.</b> The
|
|
55
|
+
<code>[eval]</code> extra pins <code>langchain-core<0.4</code>,
|
|
56
|
+
<code>langchain-community<0.4</code> and <code>langchain-openai<1</code>, because ragas 0.2.x
|
|
57
|
+
hard-imports a <code>ChatVertexAI</code> path that langchain ≥1.0 removed. One environment cannot
|
|
58
|
+
hold both that pin and langchain 1.x. The good news is measured: <b>ragas 0.4.3 declares
|
|
59
|
+
<code>langchain</code>, <code>langchain-core</code>, <code>langchain-community</code> and
|
|
60
|
+
<code>langchain_openai</code> with no upper bound at all</b>, and still supports Python ≥3.9. So the
|
|
61
|
+
first step is small, independently valuable, and testable on its own — move <code>[eval]</code>
|
|
62
|
+
from <code>ragas>=0.2,<0.3</code> to 0.4 and delete the three pins. Nothing else should be built
|
|
63
|
+
until that lands, or the project holds two incompatible langchain majors.
|
|
64
|
+
|
|
65
|
+
<b>The existing rules still apply.</b> Nothing in the integration may be imported by the CLI or by
|
|
66
|
+
the required gate — the discipline <code>[eval]</code> already follows. It must degrade cleanly
|
|
67
|
+
without an API key, the way <code>embed.py</code> falls back Voyage → OpenAI → local
|
|
68
|
+
<code>bge-small-en-v1.5</code>; a key is a quality upgrade, never the entry fee. And it carries its
|
|
69
|
+
own tests without lowering the 80% coverage or 80% mutation floors.
|
|
70
|
+
|
|
71
|
+
<b>Delivery order.</b> Each phase is independently shippable, and phase 0 is worth doing on its own
|
|
72
|
+
merits whatever happens to the rest.
|
|
73
|
+
|
|
74
|
+
<b>0 · unpin.</b> Move <code>[eval]</code> to <code>ragas>=0.4</code> and delete the three
|
|
75
|
+
langchain pins, freeing the langchain major. Contained, testable, no new surface.
|
|
76
|
+
<b>1 · retrieve.</b> A <code>boost-langchain</code> distribution carrying
|
|
77
|
+
<code>BoostRetriever</code> and the <code>SKILL.md</code> loader — the smallest thing that makes the
|
|
78
|
+
catalogue reachable from a LangChain app, and the one with measured retrieval quality behind it.
|
|
79
|
+
<b>2 · orchestrate.</b> The LangGraph node, plus a graph-shaped render target in
|
|
80
|
+
<code>core/workflows.py</code> beside the existing per-agent formats.
|
|
81
|
+
<b>3 · observe.</b> LangSmith tracing, and the golden set published as a LangSmith dataset so
|
|
82
|
+
online evals run against the same queries the offline gate uses.
|
|
83
|
+
|
|
84
|
+
<b>One scoping decision shapes phase 1's API</b> and should be settled before it starts: a LangChain
|
|
85
|
+
<i>application</i> pulling skills at runtime is the consumer all three phases serve, whereas a
|
|
86
|
+
LangChain <i>developer</i> who just wants these procedures in their editor is already served by
|
|
87
|
+
<code>boost install</code> with no langchain dependency at all. Phase 1 should be designed for the
|
|
88
|
+
former — a retriever, not an installer — and the docs should point the latter at the CLI so the new
|
|
89
|
+
package does not accumulate a second, redundant install path.
|
|
@@ -124,8 +124,8 @@
|
|
|
124
124
|
<!-- ROADMAP:stats -->
|
|
125
125
|
<div class="stat"><b>16</b><span>Shipped</span></div>
|
|
126
126
|
<div class="stat"><b>1</b><span>Next up</span></div>
|
|
127
|
-
<div class="stat"><b>
|
|
128
|
-
<div class="stat"><b>
|
|
127
|
+
<div class="stat"><b>5</b><span>Planned</span></div>
|
|
128
|
+
<div class="stat"><b>206</b><span>Loop finds</span></div>
|
|
129
129
|
<!-- /ROADMAP:stats -->
|
|
130
130
|
</div>
|
|
131
131
|
</section>
|
|
@@ -618,6 +618,93 @@ message, so routing it through the helper would change user-facing errors.</p></
|
|
|
618
618
|
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
619
619
|
</div>
|
|
620
620
|
</article>
|
|
621
|
+
|
|
622
|
+
<article class="cap rcard" id="langchain-langgraph-langsmith-integration">
|
|
623
|
+
<div class="head"><span class="pill planned">Planned</span><span class="cat">Feature</span></div>
|
|
624
|
+
<h3>production-ready LangChain / LangGraph / LangSmith integration</h3>
|
|
625
|
+
<p>Every agent boost supports today is a <b>coding</b> agent that reads files off disk — Claude Code,
|
|
626
|
+
Cursor, Windsurf, Gemini CLI. The catalogue itself is not coding-specific: it is 10,000+ retrievable
|
|
627
|
+
procedures with frontmatter, provenance and a lock file. A LangChain application cannot reach any of
|
|
628
|
+
it, so the same procedure has to be re-written as a prompt string by hand. This item is about making
|
|
629
|
+
the catalogue addressable from a Python agent runtime as well as from a dotfile.
|
|
630
|
+
|
|
631
|
+
<b>Three surfaces, and they are not equally justified.</b>
|
|
632
|
+
|
|
633
|
+
<code>langchain</code> — a <code>BoostRetriever</code> implementing <code>BaseRetriever</code> over
|
|
634
|
+
the engine <code>boost search</code> already uses: BM25 (<code>core/rag.py</code>) fused with
|
|
635
|
+
optional dense retrieval (<code>core/dense.py</code>) through <code>rag.rrf_fuse</code>. The
|
|
636
|
+
retrieval quality is already measured — the required gate floors recall@k, hit@1, MRR and nDCG@k
|
|
637
|
+
against <code>tests/eval/golden.jsonl</code> — so this surface ships with numbers rather than
|
|
638
|
+
claims. Plus a document loader that turns a <code>SKILL.md</code> into prompt content with its
|
|
639
|
+
frontmatter preserved as metadata.
|
|
640
|
+
|
|
641
|
+
<code>langgraph</code> — skills as procedures a graph pulls <i>mid-run</i>: a node that retrieves
|
|
642
|
+
the right skill for the current state and injects it, rather than stuffing every procedure into the
|
|
643
|
+
system prompt. boost's <code>workflow</code> item kind is already the closest thing it has to a
|
|
644
|
+
graph node, and <code>core/workflows.py</code> already renders per-runtime formats
|
|
645
|
+
(<code>TOML_COMMAND_AGENTS</code> for Gemini), so a LangGraph renderer is a new target for existing
|
|
646
|
+
machinery, not a new concept.
|
|
647
|
+
|
|
648
|
+
<code>langsmith</code> — hosted tracing plus datasets/evaluators. boost already has a four-tier
|
|
649
|
+
eval story (Tier 1 BM25 floors, 1b <code>ranx</code> significance, 2a/2b LLM rerank and recommend,
|
|
650
|
+
2c <code>ragas</code> faithfulness) and a baseline keyed by query-set digest. LangSmith would host
|
|
651
|
+
the golden set and run online evals against real traffic. It must <b>not</b> replace the required
|
|
652
|
+
gate, which is deliberately pure-stdlib BM25 needing no API key — a required check that depends on
|
|
653
|
+
a SaaS account is a required check that fails when someone else's billing lapses.
|
|
654
|
+
|
|
655
|
+
<b>What "production ready" forces, specifically.</b>
|
|
656
|
+
|
|
657
|
+
<b>It cannot be an extra — the Python floor decides it.</b> boost is
|
|
658
|
+
<code>requires-python = ">=3.9"</code> and CI tests 3.9 / 3.12 / 3.14 across Linux, macOS and
|
|
659
|
+
Windows. Measured 2026-08-02: <code>langchain</code> 1.3.14 declares
|
|
660
|
+
<code>>=3.10.0,<4.0.0</code> and <code>langsmith</code> 0.10.15 declares <code>>=3.10</code>. So
|
|
661
|
+
an extra would either fail to resolve on the 3.9 leg or force boost to drop 3.9 for every user,
|
|
662
|
+
including those who never touch LangChain. A separately versioned distribution that depends on
|
|
663
|
+
<code>boost-skill-cli</code> keeps the floor a property of the integration.
|
|
664
|
+
|
|
665
|
+
<b>There is a dependency conflict boost already owns, and it blocks this.</b> The
|
|
666
|
+
<code>[eval]</code> extra pins <code>langchain-core<0.4</code>,
|
|
667
|
+
<code>langchain-community<0.4</code> and <code>langchain-openai<1</code>, because ragas 0.2.x
|
|
668
|
+
hard-imports a <code>ChatVertexAI</code> path that langchain ≥1.0 removed. One environment cannot
|
|
669
|
+
hold both that pin and langchain 1.x. The good news is measured: <b>ragas 0.4.3 declares
|
|
670
|
+
<code>langchain</code>, <code>langchain-core</code>, <code>langchain-community</code> and
|
|
671
|
+
<code>langchain_openai</code> with no upper bound at all</b>, and still supports Python ≥3.9. So the
|
|
672
|
+
first step is small, independently valuable, and testable on its own — move <code>[eval]</code>
|
|
673
|
+
from <code>ragas>=0.2,<0.3</code> to 0.4 and delete the three pins. Nothing else should be built
|
|
674
|
+
until that lands, or the project holds two incompatible langchain majors.
|
|
675
|
+
|
|
676
|
+
<b>The existing rules still apply.</b> Nothing in the integration may be imported by the CLI or by
|
|
677
|
+
the required gate — the discipline <code>[eval]</code> already follows. It must degrade cleanly
|
|
678
|
+
without an API key, the way <code>embed.py</code> falls back Voyage → OpenAI → local
|
|
679
|
+
<code>bge-small-en-v1.5</code>; a key is a quality upgrade, never the entry fee. And it carries its
|
|
680
|
+
own tests without lowering the 80% coverage or 80% mutation floors.
|
|
681
|
+
|
|
682
|
+
<b>Delivery order.</b> Each phase is independently shippable, and phase 0 is worth doing on its own
|
|
683
|
+
merits whatever happens to the rest.
|
|
684
|
+
|
|
685
|
+
<b>0 · unpin.</b> Move <code>[eval]</code> to <code>ragas>=0.4</code> and delete the three
|
|
686
|
+
langchain pins, freeing the langchain major. Contained, testable, no new surface.
|
|
687
|
+
<b>1 · retrieve.</b> A <code>boost-langchain</code> distribution carrying
|
|
688
|
+
<code>BoostRetriever</code> and the <code>SKILL.md</code> loader — the smallest thing that makes the
|
|
689
|
+
catalogue reachable from a LangChain app, and the one with measured retrieval quality behind it.
|
|
690
|
+
<b>2 · orchestrate.</b> The LangGraph node, plus a graph-shaped render target in
|
|
691
|
+
<code>core/workflows.py</code> beside the existing per-agent formats.
|
|
692
|
+
<b>3 · observe.</b> LangSmith tracing, and the golden set published as a LangSmith dataset so
|
|
693
|
+
online evals run against the same queries the offline gate uses.
|
|
694
|
+
|
|
695
|
+
<b>One scoping decision shapes phase 1's API</b> and should be settled before it starts: a LangChain
|
|
696
|
+
<i>application</i> pulling skills at runtime is the consumer all three phases serve, whereas a
|
|
697
|
+
LangChain <i>developer</i> who just wants these procedures in their editor is already served by
|
|
698
|
+
<code>boost install</code> with no langchain dependency at all. Phase 1 should be designed for the
|
|
699
|
+
former — a retriever, not an installer — and the docs should point the latter at the CLI so the new
|
|
700
|
+
package does not accumulate a second, redundant install path.</p>
|
|
701
|
+
<div class="meta">
|
|
702
|
+
<span class="m">Complexity <b>L</b></span>
|
|
703
|
+
<span class="m hi">Impact <b>High</b></span>
|
|
704
|
+
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
705
|
+
<span class="m">a second consumer class for the catalogue — blocked on one dependency conflict boost already owns</span>
|
|
706
|
+
</div>
|
|
707
|
+
</article>
|
|
621
708
|
<!-- /ROADMAP:cards -->
|
|
622
709
|
|
|
623
710
|
</div>
|
|
@@ -6833,6 +6920,70 @@ here changes that — only the odds that the next step change is noticed the
|
|
|
6833
6920
|
<span class="m">main passes this budget on run-to-run luck — its own three runs are 0.810, 0.840, 0.850</span>
|
|
6834
6921
|
</div>
|
|
6835
6922
|
</article>
|
|
6923
|
+
|
|
6924
|
+
<article class="cap rcard" id="langchain-integration-explainer-page">
|
|
6925
|
+
<div class="head"><span class="pill planned">Planned</span><span class="cat">Docs · Interop</span></div>
|
|
6926
|
+
<h3>an explainer page for the LangChain / LangGraph / LangSmith integration</h3>
|
|
6927
|
+
<p>A companion to <b>production-ready LangChain / LangGraph / LangSmith integration</b>: one
|
|
6928
|
+
<code>docs/langchain.html</code> that shows what the integration <i>is</i> — architecture and
|
|
6929
|
+
sequence diagrams, annotated code you can paste, and the reasoning behind each seam — rather than
|
|
6930
|
+
an API list. The audience is a Python engineer deciding whether boost's catalogue is worth wiring
|
|
6931
|
+
into their agent, and that decision is made from a diagram and a twenty-line snippet, not from
|
|
6932
|
+
a reference table.
|
|
6933
|
+
|
|
6934
|
+
<b>The genre already exists here.</b> <code>docs/eval.html</code> does exactly this job for the
|
|
6935
|
+
evaluation system — architecture plus sequence diagrams plus a simple-vs-technical cheat sheet — and
|
|
6936
|
+
it is the template to follow rather than reinvent. So are its mechanics: a page-specific
|
|
6937
|
+
<code><style></code> block built <i>only</i> on <code>style/boost.css</code>
|
|
6938
|
+
<code>:root</code> tokens, so the Aurora palette stays recolourable from one file, and diagrams as
|
|
6939
|
+
<b>inline SVG on those same tokens</b> rather than a diagram library. A hardcoded hex in a diagram
|
|
6940
|
+
silently opts that diagram out of every future theme change, and an external script opts the page
|
|
6941
|
+
out of loading at all on a strict CSP.
|
|
6942
|
+
|
|
6943
|
+
<b>What the page has to cover</b>, one section per seam, each with a diagram and a runnable snippet:
|
|
6944
|
+
retrieval (<code>BoostRetriever</code> over the BM25 + dense fusion, with the measured recall@k /
|
|
6945
|
+
hit@1 / MRR / nDCG@k shown as numbers because they exist); a <code>SKILL.md</code> loaded as prompt
|
|
6946
|
+
content with its frontmatter surviving as metadata; a LangGraph graph that pulls a procedure
|
|
6947
|
+
<i>mid-run</i> instead of pre-loading every one into the system prompt; and a LangSmith trace of
|
|
6948
|
+
that graph, next to a plain statement that the required gate stays offline, deterministic and
|
|
6949
|
+
key-free.
|
|
6950
|
+
|
|
6951
|
+
<b>Three constraints that are specific to this repo</b>, all of them cheap to satisfy if known up
|
|
6952
|
+
front and expensive to retrofit:
|
|
6953
|
+
|
|
6954
|
+
<b>No page ships unlinked.</b> <code>tests/unit/test_docsite_chrome.py</code> holds a
|
|
6955
|
+
<code>_PAGES</code> tuple and asserts every page carries the footer and is reachable from all the
|
|
6956
|
+
others. Adding the tenth page therefore means touching the nav and footer of the nine that exist —
|
|
6957
|
+
it is a small edit, but it is not optional and it is not automatic.
|
|
6958
|
+
|
|
6959
|
+
<b>The budget already fits — measured, so nobody has to guess.</b>
|
|
6960
|
+
<code>scripts/page_budget.py</code> allows a hand-written page 150 kB / 2,000 elements / depth 20.
|
|
6961
|
+
Today <code>eval.html</code> is 35.5 kB / 528 elements / depth 10 and <code>mcp-hub.html</code>, the
|
|
6962
|
+
largest hand-written page, is 50.0 kB / 607. A diagram-and-snippet page of this shape lands in the
|
|
6963
|
+
same range, so it needs <b>no</b> new <code>BUDGETS</code> entry — and if it ever does, the entry
|
|
6964
|
+
carries a <code>why</code> string rather than raising the default for every page.
|
|
6965
|
+
|
|
6966
|
+
<b>Accessibility is enforced with numbers, not vibes.</b> The axe-core sweep and
|
|
6967
|
+
<code>scripts/a11y_check.py</code> gate WCAG 2.1 AA, and this genre trips it in a predictable place:
|
|
6968
|
+
a diagram that encodes meaning in colour alone, or a link distinguished only by hue. The precedent
|
|
6969
|
+
is already commented in <code>eval.html</code> — <code>--sky</code> on <code>--text-3</code> is
|
|
6970
|
+
2.47:1 against the 3:1 that WCAG 1.4.1 requires, so its links carry an underline as the non-colour
|
|
6971
|
+
cue. Diagram legends need the same treatment: shape or label, never colour by itself.
|
|
6972
|
+
|
|
6973
|
+
<b>Sequencing, and the one rule that keeps it honest.</b> The page cannot precede the code — a
|
|
6974
|
+
demonstration of an unbuilt integration is fiction, and a snippet nobody ran is a bug with syntax
|
|
6975
|
+
highlighting. So each section ships with the phase it documents (retrieval with phase 1, the graph
|
|
6976
|
+
with phase 2, the trace with phase 3), and every snippet on the page should be extracted and
|
|
6977
|
+
executed by a test rather than pasted in and trusted. That last part is a new discipline for this
|
|
6978
|
+
docsite, not an existing one; it is worth adopting here first precisely because this page's whole
|
|
6979
|
+
value is that its code runs.</p>
|
|
6980
|
+
<div class="meta">
|
|
6981
|
+
<span class="m">Complexity <b>M</b></span>
|
|
6982
|
+
<span class="m">Impact <b>Med</b></span>
|
|
6983
|
+
<span class="m">Wow <b class="wow">★★★★</b></span>
|
|
6984
|
+
<span class="m">the eval.html genre, pointed at the LangChain stack — and it can only document what has shipped</span>
|
|
6985
|
+
</div>
|
|
6986
|
+
</article>
|
|
6836
6987
|
<!-- /ROADMAP:cards -->
|
|
6837
6988
|
|
|
6838
6989
|
</div>
|
|
@@ -526,12 +526,17 @@ footer .foot-legal { margin-top: 13px; font-size: 12.5px; color: var(--text-3);
|
|
|
526
526
|
scrollable rather than truncated. */
|
|
527
527
|
@media (max-width: 720px) {
|
|
528
528
|
.site-nav, header .nav {
|
|
529
|
-
flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 8px
|
|
529
|
+
flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 8px 24px 6px;
|
|
530
530
|
}
|
|
531
531
|
.site-nav ul, header .nav ul {
|
|
532
532
|
width: 100%; flex-wrap: nowrap; gap: 6px;
|
|
533
533
|
overflow-x: auto; -webkit-overflow-scrolling: touch;
|
|
534
534
|
scrollbar-width: none; scroll-snap-type: x proximity;
|
|
535
|
+
/* Without this the snapport starts at the scrollport's content edge, so
|
|
536
|
+
the browser scrolls straight past the padding-inline below to satisfy
|
|
537
|
+
scroll-snap-align:start — the strip loads at scrollLeft 24 and clips the
|
|
538
|
+
first link mid-word. Inset the snapport by the same 24px instead. */
|
|
539
|
+
scroll-padding-inline-start: 24px;
|
|
535
540
|
/* bleed past .wrap's 24px gutter, then pad it back so nothing is clipped */
|
|
536
541
|
margin-inline: -24px; padding-inline: 24px; padding-bottom: 4px;
|
|
537
542
|
-webkit-mask-image: linear-gradient(90deg, #000 0 calc(100% - 26px), transparent);
|
|
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
|