boost-skill-cli 1.0.177__tar.gz → 1.0.179__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.179/.markdownlint-cli2.jsonc +32 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/CLAUDE.md +1 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/PKG-INFO +2 -2
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/README.md +1 -1
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/output.py +15 -4
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/PKG-INFO +2 -2
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/DEBUGGING.md +3 -3
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/design-roadmap.html +2 -2
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/rag-architecture.md +9 -2
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D08.md +4 -4
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +3 -3
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap.html +1 -1
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/style/README.md +1 -1
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_output.py +40 -1
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/.gitattributes +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/.gitignore +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/LICENSE +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/Makefile +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/index.html +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/examples/README.md +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/index.html +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/noxfile.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/setup.cfg +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/style/boost.css +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/style/boost.js +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/style/demo.html +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/tests/unit/test_workflows.py +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// markdownlint-cli2 — consistency for every contributor-facing Markdown
|
|
2
|
+
// surface (README, CLAUDE.md, CONTRIBUTING, SECURITY, docs/*.md, examples,
|
|
3
|
+
// style). Run locally with:
|
|
4
|
+
// npx --yes markdownlint-cli2@0.18.1
|
|
5
|
+
// CI: .github/workflows/markdownlint.yml (path-filtered).
|
|
6
|
+
{
|
|
7
|
+
"globs": ["**/*.md"],
|
|
8
|
+
"ignores": [
|
|
9
|
+
".venv/**",
|
|
10
|
+
"node_modules/**",
|
|
11
|
+
"mutants/**",
|
|
12
|
+
".eval-home/**",
|
|
13
|
+
// Agent-harness config (skills/commands), not contributor documentation.
|
|
14
|
+
".claude/**",
|
|
15
|
+
// Roadmap item bodies are HTML-in-Markdown card copy rendered by
|
|
16
|
+
// build_roadmap.py, not standalone documents — heading/inline-HTML
|
|
17
|
+
// document rules don't apply to them.
|
|
18
|
+
"docs/roadmap/items/**"
|
|
19
|
+
],
|
|
20
|
+
"config": {
|
|
21
|
+
// Long lines are fine: prose wraps in the viewer, and tables/links often
|
|
22
|
+
// can't be split without hurting readability.
|
|
23
|
+
"MD013": false,
|
|
24
|
+
// Inline HTML is deliberate (badges, <details>, <img> sizing in README).
|
|
25
|
+
"MD033": false,
|
|
26
|
+
// The README opens with a centered logo block, not an H1.
|
|
27
|
+
"MD041": false,
|
|
28
|
+
// "boost — Homebrew for AI coding skills." style headings end with
|
|
29
|
+
// punctuation on purpose; it's the product tagline idiom.
|
|
30
|
+
"MD026": false
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -33,6 +33,7 @@ is relaxed in the gate (`--regression-eps 1`) so upstream repo drift can't flake
|
|
|
33
33
|
it. Edit `taps.txt` → regenerate `tests/eval/baseline.json`. It runs in CI's
|
|
34
34
|
`lint` job (pure-stdlib BM25, no `ANTHROPIC_API_KEY`; needs network to tap). The
|
|
35
35
|
opt-in evals stay out of `check` and all degrade cleanly:
|
|
36
|
+
|
|
36
37
|
- `make eval-ai` / `eval-rec` — key-gated LLM evals (Tier 2a rerank / 2b recommend).
|
|
37
38
|
- `make eval-stats` — Tier 1b `ranx` paired-t-test between engines (`--stats`).
|
|
38
39
|
- `make eval-explain` — Tier 2c `ragas` faithfulness for `boost explain`; needs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.179
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -818,7 +818,7 @@ installed skills into one canonical store, and then symlinks them out to
|
|
|
818
818
|
whichever agents you've got — all of it tracked in a lock file so state
|
|
819
819
|
stays reproducible.
|
|
820
820
|
|
|
821
|
-
```
|
|
821
|
+
```text
|
|
822
822
|
GitHub registries ──boost update──▶ ~/.boost/repos/ (shallow clones)
|
|
823
823
|
~/.boost/cache/ (JSON catalogs)
|
|
824
824
|
──boost install─▶ ~/.agents/skills/ (canonical store)
|
|
@@ -102,7 +102,7 @@ installed skills into one canonical store, and then symlinks them out to
|
|
|
102
102
|
whichever agents you've got — all of it tracked in a lock file so state
|
|
103
103
|
stays reproducible.
|
|
104
104
|
|
|
105
|
-
```
|
|
105
|
+
```text
|
|
106
106
|
GitHub registries ──boost update──▶ ~/.boost/repos/ (shallow clones)
|
|
107
107
|
~/.boost/cache/ (JSON catalogs)
|
|
108
108
|
──boost install─▶ ~/.agents/skills/ (canonical store)
|
|
@@ -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.179'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 179)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -419,6 +419,11 @@ def table(rows, headers=None) -> None:
|
|
|
419
419
|
numeric columns are right-aligned, and when a row would overflow the
|
|
420
420
|
terminal the widest text column is shrunk (its cells clipped with an
|
|
421
421
|
ellipsis) so wide catalogs stay on one line instead of wrapping.
|
|
422
|
+
|
|
423
|
+
On a color terminal, columns are joined by a dim ``│`` separator — the
|
|
424
|
+
terminal cousin of the web stat blocks' hairline borders. Non-color output
|
|
425
|
+
(pipes, NO_COLOR, tests) keeps the plain two-space gutter byte-for-byte,
|
|
426
|
+
so scripts that parse table output never see the ornament.
|
|
422
427
|
"""
|
|
423
428
|
rows = [[str(x) for x in r] for r in rows]
|
|
424
429
|
all_rows = ([list(map(str, headers))] if headers else []) + rows
|
|
@@ -429,17 +434,23 @@ def table(rows, headers=None) -> None:
|
|
|
429
434
|
for i in range(ncols)]
|
|
430
435
|
numeric = [_numeric_col([r[i] for r in rows if i < len(r)])
|
|
431
436
|
for i in range(ncols)]
|
|
432
|
-
|
|
437
|
+
if use_color():
|
|
438
|
+
sep, sep_w = " " + DIM + "│" + RESET + " ", 3
|
|
439
|
+
else:
|
|
440
|
+
sep, sep_w = " ", 2
|
|
441
|
+
widths = _fit_widths(widths, numeric, term_width(), sep=sep_w)
|
|
433
442
|
|
|
434
443
|
def fmt(cell: str, i: int) -> str:
|
|
435
444
|
cell = _clip_visible(cell, widths[i])
|
|
436
445
|
return _rpad(cell, widths[i]) if numeric[i] else _pad(cell, widths[i])
|
|
437
446
|
|
|
438
447
|
if headers:
|
|
439
|
-
|
|
440
|
-
|
|
448
|
+
# Bold each header cell individually: a whole-line wrap would be
|
|
449
|
+
# cancelled at the first separator's RESET on color terminals.
|
|
450
|
+
cells = [c(fmt(str(h), i), BOLD) for i, h in enumerate(headers)]
|
|
451
|
+
print(sep.join(cells).rstrip())
|
|
441
452
|
for r in rows:
|
|
442
|
-
print(
|
|
453
|
+
print(sep.join(fmt(cell, i) for i, cell in enumerate(r)).rstrip())
|
|
443
454
|
|
|
444
455
|
|
|
445
456
|
def confirm(prompt: str, default: bool = False) -> bool:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: boost-skill-cli
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.179
|
|
4
4
|
Summary: boost — Homebrew for AI coding skills
|
|
5
5
|
Author: Jonathan Reyes
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -818,7 +818,7 @@ installed skills into one canonical store, and then symlinks them out to
|
|
|
818
818
|
whichever agents you've got — all of it tracked in a lock file so state
|
|
819
819
|
stays reproducible.
|
|
820
820
|
|
|
821
|
-
```
|
|
821
|
+
```text
|
|
822
822
|
GitHub registries ──boost update──▶ ~/.boost/repos/ (shallow clones)
|
|
823
823
|
~/.boost/cache/ (JSON catalogs)
|
|
824
824
|
──boost install─▶ ~/.agents/skills/ (canonical store)
|
|
@@ -25,7 +25,7 @@ a run that looked completely normal.
|
|
|
25
25
|
|
|
26
26
|
Every invocation appends to a rotating log file:
|
|
27
27
|
|
|
28
|
-
```
|
|
28
|
+
```text
|
|
29
29
|
~/.boost/logs/boost.log # current file (rotates at ~1 MB)
|
|
30
30
|
~/.boost/logs/boost.log.1 # … up to 3 older files (~4 MB ceiling total)
|
|
31
31
|
```
|
|
@@ -47,7 +47,7 @@ Every invocation is bookended by two lines — an `invoke:` at the start and a
|
|
|
47
47
|
the trail doubles as a lightweight timing record. A failing run logs its `done:`
|
|
48
48
|
line at `WARNING`, so it stands out when you scan the log:
|
|
49
49
|
|
|
50
|
-
```
|
|
50
|
+
```text
|
|
51
51
|
… INFO boost: invoke: boost install brainstorming
|
|
52
52
|
… INFO boost: done: boost install brainstorming -> rc=0 in 214ms
|
|
53
53
|
… WARNING boost: done: boost install missing -> rc=1 in 48ms
|
|
@@ -93,7 +93,7 @@ print a clean one-line message and hint), boost:
|
|
|
93
93
|
|
|
94
94
|
A crash report bundles everything needed to reproduce or file a bug:
|
|
95
95
|
|
|
96
|
-
```
|
|
96
|
+
```text
|
|
97
97
|
boost crash report
|
|
98
98
|
==================
|
|
99
99
|
time: 2026-07-18T05:23:14Z
|
|
@@ -305,11 +305,11 @@
|
|
|
305
305
|
</article>
|
|
306
306
|
|
|
307
307
|
<article class="ritem" data-track="layout" data-impact="med">
|
|
308
|
-
<div class="ritem-top"><span class="rid">BOOST-D08</span><span class="rstatus
|
|
308
|
+
<div class="ritem-top"><span class="rid">BOOST-D08</span><span class="rstatus done">Shipped</span></div>
|
|
309
309
|
<h4>Width-aware, right-aligned tables</h4>
|
|
310
310
|
<p><code>table()</code> is a naive <code>ljust</code> that ignores terminal width and left-aligns numeric columns. Make it width-aware (shrink the widest text column to fit), right-align counts with tabular figures, and add dim column separators — matching the web's <code>font-variant-numeric: tabular-nums</code> stat blocks.</p>
|
|
311
311
|
<div class="rmeta"><span class="m-cat">layout</span><span>Complexity M</span><span class="m-imp med">Impact Med</span><span class="m-wow">★★★☆☆</span></div>
|
|
312
|
-
<div class="rref"><code>core/output.py
|
|
312
|
+
<div class="rref"><code>core/output.py · table()</code></div>
|
|
313
313
|
</article>
|
|
314
314
|
|
|
315
315
|
<article class="ritem" data-track="layout" data-impact="med">
|
|
@@ -8,7 +8,8 @@ through the MCP server — without breaking boost's zero-dependency posture.
|
|
|
8
8
|
|
|
9
9
|
## 1. Goals & non-goals
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
### Goals
|
|
12
|
+
|
|
12
13
|
1. **Natural-language retrieval.** An agent asks "best skill for testing a React app" and boost returns a
|
|
13
14
|
semantically-ranked shortlist with reasons — not just keyword hits.
|
|
14
15
|
2. **Full-content search.** Rank over the *whole* skill/rule/workflow body, not only the frontmatter
|
|
@@ -18,7 +19,8 @@ through the MCP server — without breaking boost's zero-dependency posture.
|
|
|
18
19
|
4. **MCP-hub extensibility.** Position the MCP server to later call out to GitHub, a database, and other
|
|
19
20
|
dependencies as drop-in tools.
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
### Non-goals
|
|
23
|
+
|
|
22
24
|
- Forcing FastAPI/django (the MCP transport is stdio JSON-RPC, not HTTP — a web framework has nothing to
|
|
23
25
|
serve here).
|
|
24
26
|
- Making a vector database or `langchain` a *required* runtime dependency.
|
|
@@ -124,6 +126,7 @@ and `commits`.
|
|
|
124
126
|
**No third-party imports. Stays green through `make check`.**
|
|
125
127
|
|
|
126
128
|
### 6a. Engine — `boost_cli/core/rag.py`
|
|
129
|
+
|
|
127
130
|
Pure-Python **BM25** over the chunk corpus (BM25 subsumes TF-IDF and handles document-length
|
|
128
131
|
normalization, which matters when bodies vary from 3 lines to 300). Sparse term vectors are a legitimate
|
|
129
132
|
"vector" retrieval — we get semantic *recall breadth* from full-text coverage, and the LLM rerank
|
|
@@ -133,6 +136,7 @@ Scoring is standard BM25 (`k1≈1.2`, `b≈0.75`). At ~9k items / tens of thousa
|
|
|
133
136
|
dict-of-postings scan — comfortably sub-second per query in Python.
|
|
134
137
|
|
|
135
138
|
### 6b. Two-stage pipeline — upgrade `boost_search` / `catalog.search` **in place**
|
|
139
|
+
|
|
136
140
|
No parallel MCP tool (per decision). The upgraded flow:
|
|
137
141
|
|
|
138
142
|
1. **Retrieve** top-N (~60) candidate entries via `Retriever.query(task, k=60, kind=?)`.
|
|
@@ -148,12 +152,14 @@ No parallel MCP tool (per decision). The upgraded flow:
|
|
|
148
152
|
`cmd_search` (`_ai_rank`, `discovery.py:150`) is folded into / superseded by this path.
|
|
149
153
|
|
|
150
154
|
### 6c. New command — `boost reindex`
|
|
155
|
+
|
|
151
156
|
Register `("reindex", "find", "discovery", "Build/refresh the full-content search index")` in the
|
|
152
157
|
`COMMANDS` table (`boost_cli/cli.py:48`) and add `cmd_reindex(argv)` in `discovery.py`. It calls
|
|
153
158
|
`rag.build(catalog.all_entries())`, honoring commit-keyed incremental refresh, and prints doc/entry
|
|
154
159
|
counts. The search path also lazily triggers a refresh when it detects a tap commit newer than the index.
|
|
155
160
|
|
|
156
161
|
### 6d. Tests & gates (Phase 1)
|
|
162
|
+
|
|
157
163
|
- `tests/unit/test_rag.py` — chunking, BM25 scoring, incremental refresh, degradation paths. Because
|
|
158
164
|
`rag.py` lives in `core/`, it is **mutation-gated at 80%** (`scripts/mutation_gate.py`) — write tests
|
|
159
165
|
that pin the scoring math and the fallback branches.
|
|
@@ -179,6 +185,7 @@ rag = [ "..." ] # dense-embedding + vector-store stack
|
|
|
179
185
|
```
|
|
180
186
|
|
|
181
187
|
A second `Retriever` implementation (`engine="dense"`) that:
|
|
188
|
+
|
|
182
189
|
- **Embeds** each chunk into a dense vector — via a local model or an embeddings API over `urllib`
|
|
183
190
|
(note: Anthropic exposes **no** embeddings endpoint; the API options are Voyage AI, which Anthropic
|
|
184
191
|
recommends, or OpenAI). API keys follow the `core/ai.py` env-var convention.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: BOOST-D08
|
|
3
3
|
board: design
|
|
4
4
|
track: layout
|
|
5
|
-
status:
|
|
5
|
+
status: done
|
|
6
6
|
impact: med
|
|
7
7
|
complexity: M
|
|
8
8
|
wow: 3
|
|
9
9
|
category: layout
|
|
10
|
-
ref: "core/output.py
|
|
10
|
+
ref: "core/output.py · table()"
|
|
11
11
|
order: 4
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/d08-tables
|
|
13
|
+
pr: 202
|
|
14
14
|
title: Width-aware, right-aligned tables
|
|
15
15
|
---
|
|
16
16
|
<code>table()</code> is a naive <code>ljust</code> that ignores terminal width and left-aligns numeric columns. Make it width-aware (shrink the widest text column to fit), right-align counts with tabular figures, and add dim column separators — matching the web's <code>font-variant-numeric: tabular-nums</code> stat blocks.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: markdown-consistency-markdownlint-cli2
|
|
3
3
|
board: code
|
|
4
4
|
section: docsite
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Quality · Docs
|
|
7
7
|
complexity: S
|
|
8
8
|
impact: Low
|
|
9
9
|
wow: 2
|
|
10
10
|
note: every .md
|
|
11
11
|
order: 7
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/mdlint
|
|
13
|
+
pr: 201
|
|
14
14
|
title: Markdown consistency — <code>markdownlint-cli2</code>
|
|
15
15
|
---
|
|
16
16
|
Lint every Markdown surface — README, <code>CLAUDE.md</code>,
|
|
@@ -1605,7 +1605,7 @@ and the work stays visible.</p>
|
|
|
1605
1605
|
</article>
|
|
1606
1606
|
|
|
1607
1607
|
<article class="cap rcard">
|
|
1608
|
-
<div class="head"><span class="pill
|
|
1608
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
|
|
1609
1609
|
<h3>Markdown consistency — <code>markdownlint-cli2</code></h3>
|
|
1610
1610
|
<p>Lint every Markdown surface — README, <code>CLAUDE.md</code>,
|
|
1611
1611
|
<code>DEBUGGING.md</code>, <code>rag-architecture.md</code> — for
|
|
@@ -11,7 +11,7 @@ gated behind `prefers-reduced-motion`.
|
|
|
11
11
|
|
|
12
12
|
Open [`demo.html`](demo.html) to see the whole system on one page.
|
|
13
13
|
|
|
14
|
-
```
|
|
14
|
+
```text
|
|
15
15
|
style/
|
|
16
16
|
├── boost.css the design system — tokens, atmosphere, primitives, a11y
|
|
17
17
|
├── boost.js two progressive enhancements: cursor glow + reveal-on-scroll
|
|
@@ -602,16 +602,55 @@ class TestTableColor:
|
|
|
602
602
|
import re
|
|
603
603
|
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
604
604
|
# a colored cell must not push the next column out of alignment
|
|
605
|
+
# (color mode joins columns with the dim │ separator)
|
|
605
606
|
output.table([[output.aurora("ab", "cyan"), "x"], ["cd", "y"]])
|
|
606
607
|
vis = [re.sub(r"\x1b\[[0-9;]*m", "", ln)
|
|
607
608
|
for ln in capsys.readouterr().out.splitlines()]
|
|
608
|
-
assert vis == ["ab
|
|
609
|
+
assert vis == ["ab │ x", "cd │ y"]
|
|
609
610
|
|
|
610
611
|
def test_header_row_is_bold_when_forced(self, capsys, monkeypatch):
|
|
611
612
|
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
612
613
|
output.table([["x", "1"]], headers=["NAME", "N"])
|
|
613
614
|
assert capsys.readouterr().out.startswith("\033[1mNAME")
|
|
614
615
|
|
|
616
|
+
def test_every_header_cell_is_bold(self, capsys, monkeypatch):
|
|
617
|
+
# A whole-line BOLD wrap would be cancelled by the separator's RESET;
|
|
618
|
+
# each header cell must carry its own bold instead.
|
|
619
|
+
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
620
|
+
output.table([["x", "y"]], headers=["AA", "BB"])
|
|
621
|
+
header = capsys.readouterr().out.splitlines()[0]
|
|
622
|
+
assert header.count(output.BOLD) == 2
|
|
623
|
+
assert "\033[1mAA" in header and "\033[1mBB" in header
|
|
624
|
+
|
|
625
|
+
def test_separator_is_dim_pipe_in_color_mode(self, capsys, monkeypatch):
|
|
626
|
+
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
627
|
+
output.table([("a", "b")])
|
|
628
|
+
out = capsys.readouterr().out
|
|
629
|
+
assert " " + output.DIM + "│" + output.RESET + " " in out
|
|
630
|
+
|
|
631
|
+
def test_no_separator_glyph_when_color_off(self, capsys, monkeypatch):
|
|
632
|
+
monkeypatch.setenv("NO_COLOR", "1")
|
|
633
|
+
monkeypatch.delenv("CLICOLOR_FORCE", raising=False)
|
|
634
|
+
output.table([("a", "b"), ("cc", "d")], headers=["X", "Y"])
|
|
635
|
+
out = capsys.readouterr().out
|
|
636
|
+
assert "│" not in out # plain two-space gutter,
|
|
637
|
+
assert out == "X Y\na b\ncc d\n" # byte-identical to before
|
|
638
|
+
|
|
639
|
+
def test_separator_width_counts_in_fit_budget(self, capsys, monkeypatch):
|
|
640
|
+
import os as _os
|
|
641
|
+
import re
|
|
642
|
+
# 3 columns of visible width 4 + two 3-wide separators = 18 > 17,
|
|
643
|
+
# so exactly one text column must shrink; with the old 2-wide gutter
|
|
644
|
+
# (total 16) nothing would shrink. Proves sep=3 reaches _fit_widths.
|
|
645
|
+
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
646
|
+
monkeypatch.setattr(output.shutil, "get_terminal_size",
|
|
647
|
+
lambda fb: _os.terminal_size((17, 24)))
|
|
648
|
+
output.table([("aaaa", "bbbb", "cccc")])
|
|
649
|
+
vis = re.sub(r"\x1b\[[0-9;]*m", "",
|
|
650
|
+
capsys.readouterr().out.splitlines()[0])
|
|
651
|
+
assert len(vis.rstrip()) <= 17
|
|
652
|
+
assert "…" in vis # a cell was clipped
|
|
653
|
+
|
|
615
654
|
|
|
616
655
|
class TestTable:
|
|
617
656
|
@pytest.fixture(autouse=True)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.177 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|