diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 7d5eb66..b07a4e3 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -6,31 +6,19 @@ on:
 
 env:
   CARGO_TERM_COLOR: always
+  RUSTFLAGS: "-D warnings"
 
 jobs:
   cargo-test-and-lint:
     runs-on: ubuntu-latest
     steps:
-      - name: Checkout source
-        uses: actions/checkout@v2
+      - uses: actions/checkout@v4
         with:
           lfs: true
-
-      - uses: Swatinem/rust-cache@v1
-
-      - name: cargo test
-        uses: actions-rs/cargo@v1
-        with:
-          command: test
-
-      - name: rustfmt
-        uses: actions-rs/cargo@v1
-        with:
-          command: fmt
-          args: -p generate-api -- --check
-
-      - name: clippy
-        uses: actions-rs/clippy-check@v1
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          args: -- -D warnings
+      - uses: dtolnay/rust-toolchain@stable
+      - uses: Swatinem/rust-cache@v2
+      - run: cargo test
+      - run: cargo fmt --check
+      - run: cargo fmt -p generate-api --check
+      - run: cargo clippy
+      - run: cargo -p generate-api clippy --color=always