default_language_version: python: python3 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: - id: check-added-large-files args: ['--maxkb=15000'] exclude: 'inputs.*|skyvern_demo_video\.mp4|demo_visualizer.mp4' - id: check-byte-order-marker - id: check-case-conflict - id: check-merge-conflict - id: check-symlinks - id: debug-statements - id: detect-private-key - repo: local hooks: - id: check-python-version name: Check Python Version (3.11-3.13) entry: uv run python -c "import sys; assert (3,11) <= sys.version_info[:2] <= (3,13), f'Python {sys.version_info[:2]} not supported. Use Python 3.11-3.13'" language: system pass_filenames: false always_run: true - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. rev: v0.12.1 hooks: # Run the linter. - id: ruff args: [--fix] exclude: | (?x)( ^skyvern/client/.* ) # Run the formatter. - id: ruff-format - repo: https://github.com/pycqa/isort rev: 6.0.1 hooks: - id: isort language_version: python3 exclude: | (?x)( ^skyvern/client/.*| ^skyvern/__init__.py ) - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.10.0 hooks: - id: python-check-blanket-noqa - id: python-check-mock-methods - id: python-no-log-warn - id: python-use-type-annotations - repo: https://github.com/asottile/pyupgrade rev: v3.20.0 hooks: - id: pyupgrade exclude: | (?x)( ^skyvern/client/.* ) - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.16.1 hooks: - id: mypy args: [--show-error-codes, --warn-unused-configs, --disallow-untyped-calls, --disallow-untyped-defs, --disallow-incomplete-defs, --check-untyped-defs] additional_dependencies: - requests - types-requests - types-cachetools - alembic - 'sqlalchemy[mypy]' - types-PyYAML - types-aiofiles exclude: | (?x)( ^tests.*| ^streamlit_app.*| ^alembic.*| ^skyvern/client/.* ) - repo: https://github.com/PyCQA/autoflake rev: v2.3.1 hooks: - id: autoflake name: autoflake entry: autoflake --in-place --remove-all-unused-imports --recursive --ignore-init-module-imports language: python types: [python] exclude: | (?x)( ^skyvern/client/.* ) # Mono repo has bronken this TODO: fix # - id: pytest-check # name: pytest-check # entry: pytest # language: system # pass_filenames: false # always_run: true - repo: https://github.com/pre-commit/mirrors-prettier rev: 'v4.0.0-alpha.8' # Use the sha or tag you want to point at hooks: - id: prettier types: [javascript] - repo: local hooks: - id: frontend-precommit name: Frontend Precommit (lint-staged) entry: bash -c 'cd skyvern-frontend && npm run precommit' language: system files: ^skyvern-frontend/src/ pass_filenames: false - id: vitest-type-check name: vitest entry: bash -c 'cd skyvern-frontend && ([ -d node_modules ] || npm ci) && npm run test' language: system pass_filenames: false files: ^skyvern-frontend/ - id: alembic-check name: Alembic Check entry: ./run_alembic_check.sh language: script stages: [manual] - repo: https://github.com/koalaman/shellcheck-precommit rev: v0.10.0 hooks: - id: shellcheck - repo: https://github.com/google/yamlfmt rev: v0.17.2 hooks: - id: yamlfmt