diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index f017b009bc3221028cd1983b4c4f4b22ec4cec8c..3e09da2469418517328ddab288da24613726bd5c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,68 +1,91 @@
 ---
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks.git
-    rev: v4.0.1
+    rev: v4.3.0
     hooks:
-      - id: check-added-large-files
       - id: check-executables-have-shebangs
       - id: check-json
       - id: check-merge-conflict
-      - id: check-symlinks
+      - id: check-shebang-scripts-are-executable
+      - id: check-yaml
+      - id: detect-private-key
+      - id: end-of-file-fixer
       - id: trailing-whitespace
+        exclude: \.diff$
 
-  - repo: https://github.com/Yelp/detect-secrets
-    rev: v1.1.0
+  - repo: https://github.com/codespell-project/codespell.git
+    rev: v2.1.0
     hooks:
-      - id: detect-secrets
-        exclude: settings\.json
+      - id: codespell
 
-  - repo: https://github.com/adrienverge/yamllint
-    rev: v1.26.3
+  - repo: https://github.com/Yelp/detect-secrets.git
+    rev: v1.2.0
     hooks:
-      - id: yamllint
-      - id: yamllint
-        alias: transmission-rss.conf
-        files: rss/transmission-rss.conf
-        types: [text]
+      - id: detect-secrets
+        exclude: ^daemon/settings\.json$
 
-  - repo: https://github.com/amperser/proselint/
-    rev: 0.12.0
+  - repo: https://github.com/amperser/proselint.git
+    rev: 0.10.2
     hooks:
       - id: proselint
         types: [plain-text]
         exclude: LICENSE
 
+  - repo: https://gitlab.com/devopshq/gitlab-ci-linter.git
+    rev: v1.0.3
+    hooks:
+      - id: gitlab-ci-linter
+        args:
+          - "--server"
+          - https://git.shore.co.il
+
+  - repo: https://git.shore.co.il/nimrod/yamltool.git
+    rev: v0.1.2
+    hooks:
+      - id: yamltool
+
+  - repo: https://github.com/adrienverge/yamllint.git
+    rev: v1.27.1
+    hooks:
+      - id: yamllint
+
   - repo: https://github.com/executablebooks/mdformat.git
-    rev: 0.7.10
+    rev: 0.7.14
     hooks:
       - id: mdformat
 
   - repo: https://github.com/shellcheck-py/shellcheck-py.git
-    rev: v0.7.2.1
+    rev: v0.8.0.4
     hooks:
       - id: shellcheck
 
   - repo: https://git.shore.co.il/nimrod/pre-commit-hooks.git
-    rev: v0.2.0
+    rev: v0.3.0
     hooks:
       - id: shell-validate
       - id: docker-compose
 
   - repo: https://github.com/AleksaC/hadolint-py.git
-    rev: v2.7.0
+    rev: v2.10.0
     hooks:
       - id: hadolint
 
-  - repo: https://github.com/ambv/black
-    rev: 21.9b0
+  - repo: https://github.com/ambv/black.git
+    rev: 22.6.0
     hooks:
       - id: black
         args:
           - |
-              --line-length=79
+            --line-length=79
 
-  - repo: https://github.com/PyCQA/prospector
-    rev: 1.5.1
+  - repo: https://github.com/PyCQA/isort
+    rev: 5.10.1
+    hooks:
+      - id: isort
+        args: ["--filter-files", "--profile", "black"]
+
+  - repo: https://github.com/PyCQA/prospector.git
+    rev: 1.7.7
     hooks:
       - id: prospector
         args:
@@ -97,3 +120,24 @@ repos:
             --doctests
         additional_dependencies:
           - flake8-bugbear
+          - flake8-builtins
+          - flake8-comprehensions
+          - flake8-loopy
+          - flake8-pie
+          - flake8-tuple
+          - flake8-warnings
+
+  - repo: https://github.com/asottile/pyupgrade.git
+    rev: v2.37.1
+    hooks:
+      - id: pyupgrade
+
+  - repo: https://github.com/hadialqattan/pycln.git
+    rev: v2.0.2
+    hooks:
+      - id: pycln
+
+  - repo: https://github.com/PyCQA/docformatter.git
+    rev: v1.4
+    hooks:
+      - id: docformatter
diff --git a/daemon/entrypoint b/daemon/entrypoint
index de78f347b81b61c78a029784d38728e9f0780333..6a0a26a7b708cb2b545f5b052f33f69c17e6b440 100755
--- a/daemon/entrypoint
+++ b/daemon/entrypoint
@@ -11,7 +11,7 @@ then
     uid="$(stat ./Downloads -c '%u')"
     gid="$(stat ./Downloads -c '%g')"
     chown "$uid:$gid" ./
-    eval exec gosu "$uid:$gid" "$@"
+    eval "exec gosu $uid:$gid $*"
 else
-    eval exec "$@"
+    eval "exec $*"
 fi
diff --git a/daemon/kodi_scan b/daemon/kodi_scan
index a18fec88155d6fd611050c1adb4d055e311e05f2..2b6a6af178423d375caf6aecf3d6d35771157b4c 100755
--- a/daemon/kodi_scan
+++ b/daemon/kodi_scan
@@ -1,12 +1,14 @@
 #!/usr/bin/env python3
+# noqa: D213
 """Trigger a Kodi library update on torrent completion.
+
 See:
 https://github.com/transmission/transmission/wiki/Scripts#On_Torrent_Completion
 """
 
 import json
-import pathlib
 import os
+import pathlib
 import sys
 import urllib.request
 
diff --git a/rss/entrypoint b/rss/entrypoint
index 2d93b81f382d08dc08f9d3ea1909fea9c75ff2ee..7773862fb6834dc01dd96ba0c5d48615b21487c2 100755
--- a/rss/entrypoint
+++ b/rss/entrypoint
@@ -3,4 +3,4 @@ set -eux
 
 install -d -o 1000 -g 1000 -m 755 /var/lib/transmission-rss/
 
-eval exec gosu "1000:1000" "$@"
+eval "exec gosu 1000:1000 $*"