haskell-quality-gateslisted
Install: claude install-skill ivelten/claude-haskell-skills
# Haskell Quality Gates
This skill covers the automation that keeps a Haskell project tidy: formatter, linter, performance defaults that prevent common pitfalls, and the pre-commit / CI / done-checklist that hold the line.
## Formatter and linter
- **`ormolu`** — zero-config, opinionated. No style debates. Always run with `--mode inplace` before commits, or `--mode check` in CI.
- **`hlint`** — apply its suggestions by default unless they conflict with `effectful` patterns or clarity.
- **`cabal-gild`** — formats `.cabal` files. Keeps build configs readable and consistently structured. Prefer over `cabal-fmt`.
The conventions are not negotiable: disagreement is settled by the tool, not by review.
**Where these binaries come from.** All three must be on `PATH` before any hook or CI step can call them — the pre-commit hooks below use `language: system`, which means "already installed". On the native path `ormolu` is pinned in `mise.toml` while `hlint` comes from Homebrew and `cabal-gild` from `cabal install` (see `haskell-toolchain-mise`); the devcontainer image ships `ormolu` and `cabal-gild` but **not** `hlint` or `pre-commit`, so install those inside the container on first use. Keep the `ormolu` CLI in the series HLS bundles, or editor formatting and the CLI will disagree.
## Performance defaults
These are the type-and-strictness choices that prevent the most common Haskell performance pitfalls. Apply them by default; deviate only with a reason.
- **`Text`, never `St