--- 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: backend/.venv/bin/ruff check --fix language: system files: ^backend/ types: [python] args: [--config=backend/pyproject.toml] # Formatter - id: ruff-format name: ruff-format entry: backend/.venv/bin/ruff format language: system files: ^backend/ types: [python] args: [--config=backend/pyproject.toml] # Python type checking with pyright - repo: local hooks: - id: pyright name: pyright entry: backend/.venv/bin/pyright language: system files: ^backend/ types: [python] args: [--pythonpath=backend/.venv/bin/python, backend] pass_filenames: false # Python docstring linting with darglint - repo: local hooks: - id: darglint name: darglint entry: backend/.venv/bin/darglint language: system files: ^backend/.*\.py$ types: [python] # 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 (basic linting only for now) - id: eslint name: eslint entry: bash -c 'cd frontend && npm run lint:fix' language: system files: ^frontend/.*\.(js|ts|vue)$ pass_filenames: false # Prettier - id: prettier name: prettier entry: bash -c 'cd frontend && npm run format' language: system files: ^frontend/.*\.(js|ts|vue|json|css|scss|md)$ pass_filenames: false # TypeScript type checking - id: typescript-check name: typescript-check entry: bash -c 'cd frontend && npm run type-check' language: system files: ^frontend/.*\.(ts|vue)$ pass_filenames: false # TSDoc linting - id: tsdoc-lint name: tsdoc-lint entry: bash -c 'cd frontend && npm run lint:tsdoc' language: system files: ^frontend/.*\.(ts|vue)$ pass_filenames: false