boost-skill-cli 1.0.71__tar.gz → 1.0.73__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.71 → boost_skill_cli-1.0.73}/CONTRIBUTING.md +20 -16
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/gitutil.py +13 -1
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- boost_skill_cli-1.0.73/docs/roadmap/items/end-of-options-guard-on-git-commands.md +26 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap.html +23 -12
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_gitutil.py +27 -1
- boost_skill_cli-1.0.71/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -16
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/.gitattributes +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/.gitignore +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/LICENSE +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/Makefile +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/README.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/index.html +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/index.html +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/setup.cfg +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/style/README.md +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/style/boost.css +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/style/boost.js +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/style/demo.html +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/unit/test_version.py +0 -0
|
@@ -67,24 +67,28 @@ also keeps line-adjacent conflicts rare.
|
|
|
67
67
|
Branch from `main`, keep PRs focused, and write the PR description in the
|
|
68
68
|
commit message (it becomes the release notes via release-drafter).
|
|
69
69
|
|
|
70
|
-
##
|
|
70
|
+
## Release safety — require branches be up to date
|
|
71
71
|
|
|
72
72
|
Every merge to `main` cuts a PyPI release, and two PRs that are each green in
|
|
73
|
-
isolation can still land a broken *combination*.
|
|
74
|
-
|
|
75
|
-
queued PR is re-tested against the current tip before it lands — no broken
|
|
76
|
-
combination ships. `merge_group` runs on a `gh-readonly-queue/*` ref, so it does
|
|
77
|
-
**not** trigger the release; publish still fires only on the real push to `main`.
|
|
78
|
-
|
|
79
|
-
Enable it once (repo admin), **Settings → Branches → Add branch ruleset for
|
|
80
|
-
`main`**:
|
|
73
|
+
isolation can still land a broken *combination*. Guard against it in the `main`
|
|
74
|
+
branch ruleset (**Settings → Rules → Rulesets**):
|
|
81
75
|
|
|
82
76
|
- **Require a pull request before merging.**
|
|
83
77
|
- **Require status checks to pass** — select `lint`, every `tests (…)` matrix job,
|
|
84
|
-
`mutation`, and `CodeQL
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
78
|
+
`mutation`, and `CodeQL`, and tick **Require branches to be up to date before
|
|
79
|
+
merging**. This is the key one: it forces each PR to be rebased onto the latest
|
|
80
|
+
`main` and re-pass the full gate before it can merge, so an incompatible pair
|
|
81
|
+
can't both land — the second PR must include the first and re-run CI.
|
|
82
|
+
|
|
83
|
+
Then land PRs with `gh pr merge --squash` once green (never onto a red release).
|
|
84
|
+
|
|
85
|
+
### Merge queue (organization-owned repos only)
|
|
86
|
+
|
|
87
|
+
GitHub's **merge queue** auto-batches and re-tests queued PRs against the current
|
|
88
|
+
tip — a stronger, hands-off version of the "up to date" rule above. It is only
|
|
89
|
+
available on **organization-owned** repositories, so it does **not** appear in the
|
|
90
|
+
ruleset for this user-owned repo. The CI workflow already listens for the
|
|
91
|
+
`merge_group` event (it runs on a `gh-readonly-queue/*` ref and never triggers the
|
|
92
|
+
release), so if this repo is ever transferred to an org, enable **Require merge
|
|
93
|
+
queue** in the ruleset and it activates with no code changes — then merge with
|
|
94
|
+
`gh pr merge --squash --auto`.
|
|
@@ -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.73'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 73)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -31,9 +31,21 @@ def run(args: List[str], cwd: Optional[Path] = None, check: bool = True,
|
|
|
31
31
|
return proc
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
# git's remote-helper transports run arbitrary commands straight from the URL
|
|
35
|
+
# (notably `ext::sh -c …`), so refuse them outright — boost only ever clones
|
|
36
|
+
# real http(s)/ssh/git remotes.
|
|
37
|
+
_UNSAFE_TRANSPORTS = ("ext::", "file::", "fd::")
|
|
38
|
+
|
|
39
|
+
|
|
34
40
|
def clone_shallow(url: str, dest: Path) -> None:
|
|
41
|
+
if url.lstrip().lower().startswith(_UNSAFE_TRANSPORTS):
|
|
42
|
+
raise BoostError(
|
|
43
|
+
"refusing to clone via unsafe git transport: %s" % url,
|
|
44
|
+
hint="use an https://, ssh://, or git@ remote")
|
|
35
45
|
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
36
|
-
|
|
46
|
+
# `--` ends option parsing so a URL beginning with `-` cannot be read as a
|
|
47
|
+
# git flag — argument-injection defense-in-depth beside registry.parse_spec.
|
|
48
|
+
run(["clone", "--depth", "1", "--quiet", "--", url, str(dest)], timeout=600)
|
|
37
49
|
|
|
38
50
|
|
|
39
51
|
def pull(repo: Path) -> str:
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: end-of-options-guard-on-git-commands
|
|
3
|
+
board: code
|
|
4
|
+
section: shipped
|
|
5
|
+
status: shipped
|
|
6
|
+
category: Security
|
|
7
|
+
complexity: S
|
|
8
|
+
impact: Med
|
|
9
|
+
wow: 3
|
|
10
|
+
note: transport allow-list + -- guard
|
|
11
|
+
order: 8
|
|
12
|
+
owner: loop/gitutil-transport-guard
|
|
13
|
+
pr:
|
|
14
|
+
title: End-of-options <code>--</code> guard on git commands
|
|
15
|
+
---
|
|
16
|
+
<code>clone_shallow</code> passed the clone URL as a positional with no
|
|
17
|
+
<code>--</code> separator, so a value beginning with <code>-</code>
|
|
18
|
+
could be read as a git flag, and git's remote-helper transports
|
|
19
|
+
(<code>ext::sh -c …</code>, <code>file::</code>, <code>fd::</code>)
|
|
20
|
+
can execute arbitrary commands straight from a URL. Now it refuses
|
|
21
|
+
those transports outright and passes <code>--</code> before the URL
|
|
22
|
+
so option parsing can't be hijacked — argument-injection
|
|
23
|
+
defense-in-depth beside <code>registry.parse_spec</code>. Kept scoped
|
|
24
|
+
to the one primitive that takes a user-influenced URL (the refs in
|
|
25
|
+
<code>pull</code>/<code>reset</code> are constants, and <code>--</code>
|
|
26
|
+
there would wrongly mean a pathspec). Six tests, mutation-verified.
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
<section class="block reveal">
|
|
116
116
|
<div class="stats">
|
|
117
117
|
<!-- ROADMAP:stats -->
|
|
118
|
-
<div class="stat"><b>
|
|
118
|
+
<div class="stat"><b>8</b><span>Shipped</span></div>
|
|
119
119
|
<div class="stat"><b>3</b><span>Next up</span></div>
|
|
120
120
|
<div class="stat"><b>4</b><span>Planned</span></div>
|
|
121
121
|
<div class="stat"><b>83</b><span>Loop finds</span></div>
|
|
@@ -248,6 +248,28 @@
|
|
|
248
248
|
<span class="m">broken headline command, now works</span>
|
|
249
249
|
</div>
|
|
250
250
|
</article>
|
|
251
|
+
|
|
252
|
+
<article class="cap rcard">
|
|
253
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Security</span></div>
|
|
254
|
+
<h3>End-of-options <code>--</code> guard on git commands</h3>
|
|
255
|
+
<p><code>clone_shallow</code> passed the clone URL as a positional with no
|
|
256
|
+
<code>--</code> separator, so a value beginning with <code>-</code>
|
|
257
|
+
could be read as a git flag, and git's remote-helper transports
|
|
258
|
+
(<code>ext::sh -c …</code>, <code>file::</code>, <code>fd::</code>)
|
|
259
|
+
can execute arbitrary commands straight from a URL. Now it refuses
|
|
260
|
+
those transports outright and passes <code>--</code> before the URL
|
|
261
|
+
so option parsing can't be hijacked — argument-injection
|
|
262
|
+
defense-in-depth beside <code>registry.parse_spec</code>. Kept scoped
|
|
263
|
+
to the one primitive that takes a user-influenced URL (the refs in
|
|
264
|
+
<code>pull</code>/<code>reset</code> are constants, and <code>--</code>
|
|
265
|
+
there would wrongly mean a pathspec). Six tests, mutation-verified.</p>
|
|
266
|
+
<div class="meta">
|
|
267
|
+
<span class="m">Complexity <b>S</b></span>
|
|
268
|
+
<span class="m">Impact <b>Med</b></span>
|
|
269
|
+
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
270
|
+
<span class="m">transport allow-list + -- guard</span>
|
|
271
|
+
</div>
|
|
272
|
+
</article>
|
|
251
273
|
<!-- /ROADMAP:cards -->
|
|
252
274
|
|
|
253
275
|
</div>
|
|
@@ -431,17 +453,6 @@
|
|
|
431
453
|
</div>
|
|
432
454
|
</article>
|
|
433
455
|
|
|
434
|
-
<article class="cap rcard">
|
|
435
|
-
<div class="head"><span class="pill next">Next</span><span class="cat">Security</span></div>
|
|
436
|
-
<h3>End-of-options <code>--</code> guard on git commands</h3>
|
|
437
|
-
<p><code>clone_shallow</code>/<code>fetch</code>/<code>reset</code> pass the URL & ref as positionals with no <code>--</code> separator (<code>core/gitutil.py:34–46</code>), so a value starting with <code>-</code> is parsed as a git option. <code>parse_spec</code> constrains most URL shapes, but adding <code>--</code> before positionals and rejecting <code>ext::</code>/<code>file::</code>/<code>fd::</code> transports closes the argument-injection surface as defense-in-depth.</p>
|
|
438
|
-
<div class="meta">
|
|
439
|
-
<span class="m">Complexity <b>S</b></span>
|
|
440
|
-
<span class="m">Impact <b>Med</b></span>
|
|
441
|
-
<span class="m">Wow <b class="wow">★★★</b></span>
|
|
442
|
-
</div>
|
|
443
|
-
</article>
|
|
444
|
-
|
|
445
456
|
<article class="cap rcard">
|
|
446
457
|
<div class="head"><span class="pill planned">Planned</span><span class="cat">Robustness</span></div>
|
|
447
458
|
<h3>Atomic skill install (temp-dir swap)</h3>
|
|
@@ -145,10 +145,36 @@ class TestCloneAndInspect:
|
|
|
145
145
|
calls = _record_run(monkeypatch)
|
|
146
146
|
gitutil.clone_shallow("git@example:x.git", tmp_path / "d")
|
|
147
147
|
(args, kw), = calls
|
|
148
|
-
assert args == ["clone", "--depth", "1", "--quiet",
|
|
148
|
+
assert args == ["clone", "--depth", "1", "--quiet", "--",
|
|
149
149
|
"git@example:x.git", str(tmp_path / "d")]
|
|
150
150
|
assert kw.get("timeout") == 600 # long clone timeout, not the 300 default
|
|
151
151
|
|
|
152
|
+
def test_clone_shallow_puts_end_of_options_before_url(self, tmp_path,
|
|
153
|
+
monkeypatch):
|
|
154
|
+
# a URL beginning with `-` must be a positional, never a git flag
|
|
155
|
+
calls = _record_run(monkeypatch)
|
|
156
|
+
gitutil.clone_shallow("--upload-pack=evil", tmp_path / "d")
|
|
157
|
+
(args, _kw), = calls
|
|
158
|
+
assert "--" in args and args.index("--") < args.index("--upload-pack=evil")
|
|
159
|
+
|
|
160
|
+
@pytest.mark.parametrize("bad", [
|
|
161
|
+
"ext::sh -c evil", "file::/etc/passwd", "fd::7",
|
|
162
|
+
"EXT::sh -c evil", # case-insensitive
|
|
163
|
+
" ext::sh -c evil", # leading whitespace stripped first
|
|
164
|
+
])
|
|
165
|
+
def test_clone_shallow_rejects_unsafe_transports(self, tmp_path, monkeypatch,
|
|
166
|
+
bad):
|
|
167
|
+
calls = _record_run(monkeypatch)
|
|
168
|
+
with pytest.raises(BoostError) as ei:
|
|
169
|
+
gitutil.clone_shallow(bad, tmp_path / "d")
|
|
170
|
+
assert "unsafe git transport" in ei.value.message
|
|
171
|
+
assert calls == [] # git is never invoked for a rejected URL
|
|
172
|
+
|
|
173
|
+
def test_clone_shallow_allows_ordinary_https(self, tmp_path, monkeypatch):
|
|
174
|
+
calls = _record_run(monkeypatch)
|
|
175
|
+
gitutil.clone_shallow("https://github.com/o/r", tmp_path / "d")
|
|
176
|
+
assert len(calls) == 1 # a normal remote clones, not rejected
|
|
177
|
+
|
|
152
178
|
def test_head_commit_argv_is_rev_parse_head(self, tmp_path, monkeypatch):
|
|
153
179
|
calls = _record_run(monkeypatch, stdout="c0ffee\n")
|
|
154
180
|
assert gitutil.head_commit(tmp_path / "r") == "c0ffee"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: end-of-options-guard-on-git-commands
|
|
3
|
-
board: code
|
|
4
|
-
section: internals
|
|
5
|
-
status: next
|
|
6
|
-
category: Security
|
|
7
|
-
complexity: S
|
|
8
|
-
impact: Med
|
|
9
|
-
wow: 3
|
|
10
|
-
note:
|
|
11
|
-
order: 6
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
14
|
-
title: End-of-options <code>--</code> guard on git commands
|
|
15
|
-
---
|
|
16
|
-
<code>clone_shallow</code>/<code>fetch</code>/<code>reset</code> pass the URL & ref as positionals with no <code>--</code> separator (<code>core/gitutil.py:34–46</code>), so a value starting with <code>-</code> is parsed as a git option. <code>parse_spec</code> constrains most URL shapes, but adding <code>--</code> before positionals and rejecting <code>ext::</code>/<code>file::</code>/<code>fd::</code> transports closes the argument-injection surface as defense-in-depth.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.71 → boost_skill_cli-1.0.73}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/command-reference-docs-site.md
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
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/layering-guard-import-linter.md
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
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/one-command-every-env-nox.md
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
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/reconcile-the-theme-drift.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/robust-tag-argument-parsing.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/second-type-checker-pyright.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/single-tech-stack-prober.md
RENAMED
|
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.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/typo-detection-codespell.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/update-diff-before-apply.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/windows-in-the-ci-matrix.md
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/workflow-linting-actionlint.md
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/docs/roadmap/items/workflow-sast-zizmor.md
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
|
{boost_skill_cli-1.0.71 → boost_skill_cli-1.0.73}/tests/functional/test_cli_configuration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|