diff --git a/.editorconfig b/.editorconfig
index 5542b65a..3e6104a9 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -27,5 +27,15 @@ indent_size = 2
 [resources/settings.xml]
 indent_style = tab
 
+[resources/skins/**.xml]
+indent_style = tab
+
+
 [jellyfin_kodi/objects/obj_map.json]
 indent_style = tab
+
+[.devcontainer/Python 3.11/devcontainer.json]
+indent_style = tab
+
+[README.md]
+indent_size = 2
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 00000000..ff4759d7
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,42 @@
+# 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
+      - id: check-yaml
+      - id: check-added-large-files
+      - id: no-commit-to-branch
+
+  # - repo: https://github.com/editorconfig-checker/editorconfig-checker.python
+  #   rev: "2.7.3"
+  #   hooks:
+  #     - id: editorconfig-checker
+  #       exclude: '^LICENSE\.txt$'
+
+  # - repo: https://github.com/psf/black
+  #   rev: "24.4.2"
+  #   hooks:
+  #     - id: black
+
+  # - repo: https://github.com/pycqa/flake8
+  #   rev: 7.0.0
+  #   hooks:
+  #     - id: flake8
+
+  # - repo: https://github.com/pre-commit/mirrors-mypy
+  #   rev: v1.9.0
+  #   hooks:
+  #     - id: mypy
+  #       exclude: ^(docs/conf.py|scripts/generate_schema.py)$
+  #       args: []
+  #       additional_dependencies: &mypy_deps
+  #         - pytest
+  #         - types-requests >= 2.31
+  #         - types-PyYAML >= 6.0
+  #         - types-six >= 1.13
+  #         - types-python-dateutil >= 2.8.1
+  #         - types-setuptools >= 44.1.1
+  #         - types-Pygments
+  #         - types-colorama