diff --git a/.github/workflows/prek.yml b/.github/workflows/prek.yml
new file mode 100644
index 0000000..e330932
--- /dev/null
+++ b/.github/workflows/prek.yml
@@ -0,0 +1,25 @@
+---
+name: Run prek
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ prek:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+
+ - name: Run prek
+ uses: j178/prek-action@1382ad72dea72f9d53832f2bcb65b3e87a947204 # v3.0.1
diff --git a/.gitignore b/.gitignore
index b7faf40..09be0ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -182,9 +182,9 @@ cython_debug/
.abstra/
# Visual Studio Code
-# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
+# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
-# and can be added to the global gitignore or merged into this file. However, if you prefer,
+# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..766bb08
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,55 @@
+---
+default_stages: [pre-commit, pre-push]
+
+default_language_version:
+ # force all unspecified Python hooks to run python3
+ python: python3
+
+minimum_pre_commit_version: "3.2.0"
+
+repos:
+ - repo: meta
+ hooks:
+ - id: check-hooks-apply
+ name: run check hooks apply
+ description: useful when testing new hooks to see if they apply to the repository
+ - id: check-useless-excludes
+ name: run check useless excludes
+ description: check that the exclude pattern is not useless
+
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0
+ hooks:
+ - id: check-case-conflict
+ name: run check for case conflicts
+ description: check for files with names that would conflict on a case-insensitive filesystem like MacOS HFS+ or Windows FAT
+ - id: check-illegal-windows-names
+ name: run check for illegal windows names
+ description: check for files that cannot be created on Windows
+ - id: check-merge-conflict
+ name: run check for merge conflicts
+ description: check for files that contain merge conflict strings
+ - id: check-yaml
+ name: run check YAML
+ description: attempts to load all yaml files to verify syntax
+ - id: end-of-file-fixer
+ name: run end of file fixer
+ description: makes sure files end in a newline and only a newline
+ - id: fix-byte-order-marker
+ name: run fix byte order marker
+ description: removes UTF-8 byte order marker
+ - id: mixed-line-ending
+ name: run check for mixed line endings
+ description: replaces or checks mixed line ending
+ - id: trailing-whitespace
+ name: run check for trailing whitespace
+ description: trims trailing whitespace
+ args: [--markdown-linebreak-ext=md]
+
+ - repo: https://github.com/codespell-project/codespell
+ rev: 57b21406f092110c18776e39b0bda50d37c945c8 # frozen: v2.4.3
+ hooks:
+ - id: codespell
+ name: run codespell
+ description: check for misspelled words with codespell
+ args: ["--skip=git"]
diff --git a/profile/README.md b/profile/README.md
index a4cbde9..43b0173 100644
--- a/profile/README.md
+++ b/profile/README.md
@@ -13,7 +13,7 @@
-
+