--- a
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,44 @@
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+repos:
+  - repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: v3.2.0
+    hooks:
+      - id: trailing-whitespace
+        exclude: |
+            (?x)^(
+                tests/resources/.*|
+                edsnlp/resources/.*
+            )$
+      - id: no-commit-to-branch
+      - id: end-of-file-fixer
+      - id: check-yaml
+        args: ["--unsafe"]
+      - id: check-toml
+      - id: check-json
+      - id: check-symlinks
+      - id: check-added-large-files
+      - id: detect-private-key
+  # ruff
+  - repo: https://github.com/charliermarsh/ruff-pre-commit
+    # Ruff version.
+    rev: 'v0.9.6'
+    hooks:
+      - id: ruff
+        args: ['--config', 'pyproject.toml', '--fix', '--show-fixes']
+      - id: ruff-format
+        args: ['--config', 'pyproject.toml', '--diff']
+      - id: ruff-format
+        args: ['--config', 'pyproject.toml']
+  - repo: https://github.com/asottile/blacken-docs
+    rev: v1.10.0
+    hooks:
+      - id: blacken-docs
+        additional_dependencies: [black==20.8b1]
+        exclude: notebooks/
+  - repo: https://github.com/econchick/interrogate
+    rev: 237be78
+    hooks:
+      - id: interrogate
+        args: ["--config=pyproject.toml"]
+        pass_filenames: false