diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml
new file mode 100644
index 0000000..95ded35
--- /dev/null
+++ b/.github/workflows/ruff.yml
@@ -0,0 +1,26 @@
+name: Ruff
+on: push
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      # Download the source code
+      - uses: actions/checkout@v4
+
+      # https://docs.astral.sh/uv/
+      - name: Install uv
+        uses: astral-sh/setup-uv@v4
+
+      # Set up our GitHub Actions workflow with the Python version specified in the .python-version file
+      - name: "Set up Python"
+        uses: actions/setup-python@v5
+        with:
+          python-version-file: ".python-version"
+
+      # Install dependencies
+      - name: "Install dependencies"
+        run: uv sync --all-extras --dev
+
+      # Run tests
+      - name: Run tests
+        run: uv run pytest -vv