autofix formatting during queue-main pushes

diff --git a/.github/workflows/formatting.yml b/.github/workflows/formatting.yml
index 61c5d75..1d9cc8d 100644
--- a/.github/workflows/formatting.yml
+++ b/.github/workflows/formatting.yml
@@ -1,6 +1,12 @@
 name: Code Formatting
 on:
   workflow_call:
+    inputs:
+      auto_fix:
+        description: "Automatically fix formatting issues instead of just checking"
+        required: false
+        type: boolean
+        default: false
   push:
     branches-ignore:
       - "queue-main-**"
@@ -11,6 +17,10 @@
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v4
+        with:
+          ref: ${{ github.head_ref || github.ref }}
+          # Need full history for queue-main pushes
+          fetch-depth: 0
 
       # Setup for Prettier
       - name: Setup Node.js
@@ -37,4 +47,29 @@
           echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
 
       - name: Check formatting
+        if: inputs.auto_fix != true
         run: bin/run-formatters.sh check
+
+      - name: Fix formatting
+        if: inputs.auto_fix == true
+        run: bin/run-formatters.sh fix
+
+      # Commit formatting fixes if auto_fix is true
+      - name: Commit and push formatting fixes if needed
+        if: inputs.auto_fix == true
+        run: |
+          # Only proceed if there are changes to commit
+          if [[ -z $(git status --porcelain) ]]; then
+            echo "No formatting changes detected, skipping commit"
+            exit 0
+          fi
+
+          git config --global user.name "Autoformatter"
+          git config --global user.email "bot@sketch.dev"
+          git add .
+          git commit -m "Automatic formatting fixes" -m "Applied automatic formatting with bin/run-formatters.sh"
+
+          # If this is a queue-main branch, push the changes
+          if [[ "${{ github.ref }}" == refs/heads/queue-main-* ]]; then
+            git push -f origin HEAD
+          fi
diff --git a/.github/workflows/queue-main.yml b/.github/workflows/queue-main.yml
index 120a684..c86cd87 100644
--- a/.github/workflows/queue-main.yml
+++ b/.github/workflows/queue-main.yml
@@ -11,26 +11,30 @@
 on:
   push:
     branches:
-      - "queue-main-**"
+      - "queue-main-*"
 
 permissions: read-all
 
 jobs:
+  formatting:
+    uses: ./.github/workflows/formatting.yml
+    permissions: read-all
+    with:
+      auto_fix: true
+
   go-test:
+    needs: [formatting]
     uses: ./.github/workflows/go_test.yml
     permissions: read-all
 
   ui-test:
+    needs: [formatting]
     uses: ./.github/workflows/webui_test.yml
     permissions: read-all
 
-  formatting:
-    uses: ./.github/workflows/formatting.yml
-    permissions: read-all
-
   push-to-main:
     runs-on: ubuntu-latest
-    needs: [go-test, ui-test, formatting]
+    needs: [go-test, ui-test]
     permissions:
       contents: write
     steps: