diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 1a04744efbfdb2688e6c721c78117d204e810ca0..874f30962bffe1c700d17bfde569f5ccceabd054 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,17 +1,14 @@
 ci:
   autoupdate_branch: devel
 repos:
-- repo: https://github.com/PyCQA/isort
-  rev: 5.12.0
-  hooks:
-  - id: isort
-- repo: https://github.com/charliermarsh/ruff-pre-commit
-  rev: v0.1.4
+- repo: https://github.com/astral-sh/ruff-pre-commit
+  rev: v0.3.3
   hooks:
   - id: ruff
     args:
     - --fix
     - --exit-non-zero-on-fix
+  - id: ruff-format
 - repo: https://github.com/cheshirekow/cmake-format-precommit
   rev: v0.6.13
   hooks:
@@ -22,7 +19,7 @@ repos:
   - id: toml-sort-fix
     exclude: poetry.lock
 - repo: https://github.com/pre-commit/mirrors-clang-format
-  rev: v17.0.4
+  rev: v18.1.1
   hooks:
   - id: clang-format
     args:
@@ -45,7 +42,3 @@ repos:
   - id: fix-byte-order-marker
   - id: mixed-line-ending
   - id: trailing-whitespace
-- repo: https://github.com/psf/black
-  rev: 23.10.1
-  hooks:
-  - id: black
diff --git a/pyproject.toml b/pyproject.toml
index 48631bc724a6963396159e2b89647452cfae64e0..a5333a8b34f59be815cc36db7c829347b3b3578e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -16,5 +16,11 @@ license = "BSD-2-Clause"
 name = "hpp-manipulation"
 version = "5.0.0"
 
-[tool.isort]
-profile = "black"
+[tool.ruff]
+extend-exclude = ["cmake"]
+
+[tool.ruff.lint]
+extend-select = ["I", "NPY", "RUF", "UP", "W"]
+
+[tool.tomlsort]
+all = true