# pre-commit workflow (pallets/click)

> The pre-commit workflow from pallets/click, explained and optimized by Latchkey.

Source: https://latchkey.dev/workflows/pallets-click-pre-commit  
Upstream: [pallets/click](https://github.com/pallets/click/blob/main/.github/workflows/pre-commit.yaml) (.github/workflows/pre-commit.yaml), licence BSD-3-Clause

## What it does

This is the pre-commit workflow from the pallets/click repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-3-Clause license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

## The workflow

```yaml
name: pre-commit
on:
  pull_request:
  push:
    branches: [main, stable]
permissions: {}
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
jobs:
  main:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false
      - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
        with:
          enable-cache: true
          prune-cache: false
      - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
        id: setup-python
        with:
          python-version-file: pyproject.toml
      - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
        with:
          path: ~/.cache/pre-commit
          key: pre-commit|${{ hashFiles('pyproject.toml', '.pre-commit-config.yaml') }}
      - run: uv run --locked --no-default-groups --group pre-commit pre-commit run --show-diff-on-failure --color=always --all-files
```

## FAQ

### What does the pre-commit workflow (pallets/click) workflow do?

This is the pre-commit workflow from the pallets/click repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-3-Clause license.

### What CI health grade does this workflow get?

This Python workflow grades C. Paste your own workflow into the Latchkey grader to see its grade and the exact fixes.

### How can I improve this Python workflow?

Add caching and job timeouts. Latchkey applies these automatically on managed runners when you point runs-on at Latchkey.

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
