boost-skill-cli 1.0.80__tar.gz → 1.0.82__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.80 → boost_skill_cli-1.0.82}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/catalog.py +46 -44
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +3 -3
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap.html +1 -1
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_catalog.py +21 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/.gitattributes +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/.gitignore +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/LICENSE +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/Makefile +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/README.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/design-roadmap.html +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/index.html +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D08.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/index.html +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/setup.cfg +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/style/README.md +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/style/boost.css +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/style/boost.js +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/style/demo.html +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/tests/unit/test_version.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.82'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 82)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -18,9 +18,10 @@ that ship in the same GitHub registries:
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
20
|
import json
|
|
21
|
+
import os
|
|
21
22
|
import re
|
|
22
23
|
from pathlib import Path
|
|
23
|
-
from typing import List, Optional, Tuple
|
|
24
|
+
from typing import List, Optional, Set, Tuple
|
|
24
25
|
|
|
25
26
|
from ..errors import BoostError
|
|
26
27
|
from . import frontmatter, gitutil, paths, registry, util
|
|
@@ -42,10 +43,6 @@ DOC_STEMS = {"readme", "contributing", "license", "changelog", "security",
|
|
|
42
43
|
"code_of_conduct", "index", "_index", "authors", "notice"}
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
def _ignored(path: Path) -> bool:
|
|
46
|
-
return any(part in util.IGNORED for part in path.parts)
|
|
47
|
-
|
|
48
|
-
|
|
49
46
|
def _read(path: Path) -> Optional[Tuple[dict, str]]:
|
|
50
47
|
try:
|
|
51
48
|
return frontmatter.parse(path.read_text(encoding="utf-8", errors="replace"))
|
|
@@ -107,46 +104,51 @@ def _classify_workflow(path: Path, meta: dict) -> bool:
|
|
|
107
104
|
def scan_dir(root: Path, tap_name: str = "local", curated: bool = False) -> List[dict]:
|
|
108
105
|
root = Path(root)
|
|
109
106
|
entries: List[dict] = []
|
|
110
|
-
skill_dirs:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if not is_rule and not is_md:
|
|
133
|
-
continue
|
|
134
|
-
parsed = _read(path)
|
|
135
|
-
if parsed is None:
|
|
136
|
-
continue
|
|
137
|
-
meta, body = parsed
|
|
138
|
-
if is_rule:
|
|
139
|
-
kind = KIND_RULE
|
|
140
|
-
elif _classify_workflow(path, meta):
|
|
141
|
-
kind = KIND_WORKFLOW
|
|
142
|
-
else:
|
|
107
|
+
skill_dirs: Set[Path] = set()
|
|
108
|
+
# One top-down walk instead of two rglob passes: prune ignored dirs in place
|
|
109
|
+
# so we never descend into .git/__pycache__, and test skill-dir membership
|
|
110
|
+
# against a set via each dir's own ancestor chain rather than O(files × dirs).
|
|
111
|
+
# Top-down order guarantees a file's governing SKILL.md dir is seen first, and
|
|
112
|
+
# the final entries.sort() normalizes output order regardless of walk order.
|
|
113
|
+
for dirpath, dirnames, filenames in os.walk(root):
|
|
114
|
+
dirnames[:] = [d for d in dirnames if d not in util.IGNORED]
|
|
115
|
+
here = Path(dirpath)
|
|
116
|
+
# A directory holding a SKILL.md is a skill: index it and remember the
|
|
117
|
+
# dir so its other files are not re-indexed as loose rules/workflows.
|
|
118
|
+
if "SKILL.md" in filenames:
|
|
119
|
+
parsed = _read(here / "SKILL.md")
|
|
120
|
+
if parsed is not None:
|
|
121
|
+
meta, body = parsed
|
|
122
|
+
default = here.name if here != root else root.name
|
|
123
|
+
entries.append(_make_entry(root, here / "SKILL.md", KIND_SKILL,
|
|
124
|
+
default, tap_name, curated,
|
|
125
|
+
meta, body))
|
|
126
|
+
skill_dirs.add(here)
|
|
127
|
+
# Files inside any skill directory belong to that skill, never re-indexed.
|
|
128
|
+
if here in skill_dirs or any(a in skill_dirs for a in here.parents):
|
|
143
129
|
continue
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
130
|
+
for name in filenames:
|
|
131
|
+
path = here / name
|
|
132
|
+
is_rule = _classify_rule(path)
|
|
133
|
+
is_md = path.suffix.lower() == ".md" and path.name != "SKILL.md"
|
|
134
|
+
if not is_rule and not is_md:
|
|
135
|
+
continue
|
|
136
|
+
parsed = _read(path)
|
|
137
|
+
if parsed is None:
|
|
138
|
+
continue
|
|
139
|
+
meta, body = parsed
|
|
140
|
+
if is_rule:
|
|
141
|
+
kind = KIND_RULE
|
|
142
|
+
elif _classify_workflow(path, meta):
|
|
143
|
+
kind = KIND_WORKFLOW
|
|
144
|
+
else:
|
|
145
|
+
continue
|
|
146
|
+
if path.name in RULE_FILENAMES:
|
|
147
|
+
default = path.parent.name if path.parent != root else root.name
|
|
148
|
+
else:
|
|
149
|
+
default = path.stem
|
|
150
|
+
entries.append(_make_entry(root, path, kind, default,
|
|
151
|
+
tap_name, curated, meta, body))
|
|
150
152
|
|
|
151
153
|
entries.sort(key=lambda e: (e["skill_md"], e["name"]))
|
|
152
154
|
return entries
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: prune-ignored-dirs-during-scan-dir-walk
|
|
3
3
|
board: code
|
|
4
4
|
section: internals
|
|
5
|
-
status:
|
|
5
|
+
status: shipped
|
|
6
6
|
category: Performance
|
|
7
7
|
complexity: M
|
|
8
8
|
impact: Low-Med
|
|
9
9
|
wow: 2
|
|
10
10
|
note:
|
|
11
11
|
order: 12
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/prune-scan-dir
|
|
13
|
+
pr: 92
|
|
14
14
|
title: Prune ignored dirs during <code>scan_dir</code> walk
|
|
15
15
|
---
|
|
16
16
|
Two full <code>rglob</code> passes descend <b>into</b> <code>.git</code>/<code>node_modules</code> and only filter afterward, and the skill-dir membership test is O(files × skill_dirs) (<code>catalog.py:106,119–123</code>). Switch to an <code>os.walk</code> that prunes ignored dirs in place; index skill dirs in a set.
|
|
@@ -528,7 +528,7 @@
|
|
|
528
528
|
</article>
|
|
529
529
|
|
|
530
530
|
<article class="cap rcard">
|
|
531
|
-
<div class="head"><span class="pill
|
|
531
|
+
<div class="head"><span class="pill shipped">Shipped</span><span class="cat">Performance</span></div>
|
|
532
532
|
<h3>Prune ignored dirs during <code>scan_dir</code> walk</h3>
|
|
533
533
|
<p>Two full <code>rglob</code> passes descend <b>into</b> <code>.git</code>/<code>node_modules</code> and only filter afterward, and the skill-dir membership test is O(files × skill_dirs) (<code>catalog.py:106,119–123</code>). Switch to an <code>os.walk</code> that prunes ignored dirs in place; index skill dirs in a set.</p>
|
|
534
534
|
<div class="meta">
|
|
@@ -239,6 +239,27 @@ class TestScanRulesAndWorkflows:
|
|
|
239
239
|
assert [e["name"] for e in entries] == ["s"]
|
|
240
240
|
assert entries[0]["kind"] == "skill"
|
|
241
241
|
|
|
242
|
+
def test_rule_entry_carries_tap_and_curated(self, tmp_path):
|
|
243
|
+
root = tmp_path / "tap"
|
|
244
|
+
(root / "nextjs").mkdir(parents=True)
|
|
245
|
+
(root / "nextjs" / ".cursorrules").write_text("Next.js expert.\n")
|
|
246
|
+
(e,) = catalog.scan_dir(root, "mytap", curated=True)
|
|
247
|
+
assert e["kind"] == "rule"
|
|
248
|
+
assert e["tap"] == "mytap"
|
|
249
|
+
assert e["curated"] is True
|
|
250
|
+
|
|
251
|
+
def test_ignored_dirs_pruned_for_loose_rules_and_workflows(self, tmp_path):
|
|
252
|
+
root = tmp_path / "tap"
|
|
253
|
+
(root / ".git").mkdir(parents=True)
|
|
254
|
+
(root / "sub" / "__pycache__").mkdir(parents=True)
|
|
255
|
+
(root / ".git" / "hook.mdc").write_text("---\ndescription: x\n---\n")
|
|
256
|
+
(root / "sub" / "__pycache__" / "commands").mkdir()
|
|
257
|
+
(root / "sub" / "__pycache__" / "commands" / "c.md").write_text(
|
|
258
|
+
"---\ndescription: y\n---\nx\n")
|
|
259
|
+
(root / "real").mkdir()
|
|
260
|
+
(root / "real" / ".cursorrules").write_text("real rule\n")
|
|
261
|
+
assert [e["name"] for e in catalog.scan_dir(root)] == ["real"]
|
|
262
|
+
|
|
242
263
|
def test_unreadable_rule_file_skipped(self, tmp_path):
|
|
243
264
|
root = tmp_path / "tap"
|
|
244
265
|
(root / "a").mkdir(parents=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
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/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
|
|
File without changes
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/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.80 → boost_skill_cli-1.0.82}/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
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/reconcile-the-theme-drift.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/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.80 → boost_skill_cli-1.0.82}/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.80 → boost_skill_cli-1.0.82}/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.80 → boost_skill_cli-1.0.82}/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.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/update-diff-before-apply.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/windows-in-the-ci-matrix.md
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/docs/roadmap/items/workflow-linting-actionlint.md
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.80 → boost_skill_cli-1.0.82}/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.80 → boost_skill_cli-1.0.82}/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
|