--- repos: # General hooks for all files - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-merge-conflict - id: check-added-large-files - id: check-yaml - id: check-json - id: check-toml - id: mixed-line-ending # TOML linting - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks rev: v2.14.0 hooks: - id: pretty-format-toml args: [--autofix] # Python backend linting and formatting with ruff - repo: local hooks: # Linter - id: ruff name: ruff-lint entry: bash -c 'cd backend && uv run ruff check --fix . --config=pyproject.toml' language: system files: ^backend/ types: [python] pass_filenames: false # Formatter - id: ruff-format name: ruff-format entry: bash -c 'cd backend && uv run ruff format . --config=pyproject.toml' language: system files: ^backend/ types: [python] pass_filenames: false # Python type checking with pyright - repo: local hooks: - id: pyright name: pyright entry: bash -c 'cd backend && uv run pyright . --project=.' language: system files: ^backend/ types: [python] pass_filenames: false # Python docstring linting with darglint - repo: local hooks: - id: darglint name: darglint entry: bash -c 'cd backend && find . -name "*.py" -not -path "./.venv/*" -exec uv run darglint {} \;' language: system files: ^backend/.*\.py$ types: [python] pass_filenames: false # Custom hook to enforce no types in docstrings - repo: local hooks: - id: no-docstring-types name: Prohibit types in docstrings entry: python scripts/check_no_docstring_types.py language: system files: ^backend/.*\.py$ pass_filenames: true # Frontend linting and formatting - repo: local hooks: # ESLint with auto-fix for pre-commit (CI uses --no-fix) - id: eslint name: eslint entry: bash -c 'cd frontend && yarn eslint . --fix' language: system files: ^frontend/.*\.(js|ts|vue)$ pass_filenames: false # Prettier with auto-format for pre-commit (CI uses --check) - id: prettier name: prettier entry: bash -c 'cd frontend && yarn prettier --write src/' language: system files: ^frontend/.*\.(js|ts|vue|json|css|scss|md)$ pass_filenames: false # TypeScript type checking (same as CI) - id: typescript-check name: typescript-check entry: bash -c 'cd frontend && yarn vue-tsc --noEmit' language: system files: ^frontend/.*\.(ts|vue)$ pass_filenames: false # TSDoc linting with auto-fix for pre-commit (CI uses --no-fix) - id: tsdoc-lint name: tsdoc-lint entry: bash -c 'cd frontend && yarn eslint . --ext .ts,.vue --fix' language: system files: ^frontend/.*\.(ts|vue)$ pass_filenames: false