← ClaudeAtlas

haskell-project-setuplisted

Set up a new Haskell project with the opinionated cabal stack, independent of how the toolchain was provisioned. Covers GHC pinning, cabal.project, .cabal templates, project layout, and language-extension policy. Use when bootstrapping a Haskell repo, configuring the build system, deciding where files go, or choosing which language extensions to enable.
ivelten/claude-haskell-skills · ★ 0 · Data & Documents · score 60
Install: claude install-skill ivelten/claude-haskell-skills
# Haskell Project Setup This skill encodes the build, layout, and language-extension defaults for a Haskell project. ## Development environment (first step) Before anything else, the project needs a toolchain. The choice is made in the `haskell` router skill, which weighs the two options: - **Native on the host** — `mise` pins ghcup/cabal/ormolu, ghcup provides GHC and HLS. See `haskell-toolchain-mise`. - **Pre-built devcontainer** (`ivelten/haskell-devcontainer`) — see `haskell-devcontainer`. This skill is agnostic to that choice: everything below applies once a toolchain is on `PATH`. ## The Stack (non-negotiable defaults) Unless the user explicitly asks for something different, use: - **Build tool**: `cabal` (with GHCup-provisioned GHC). Never `stack`, never Nix shells, unless requested. - **GHC version**: 9.10.3 (pinned in `mise.toml`/`.tool-versions` and `cabal.project`). It is the only 9.10.x with an HLS 2.14 bindist — moving to 9.10.1 or 9.10.2 would break the language server. - **Effects**: [`effectful`](https://hackage.haskell.org/package/effectful) — see `haskell-effectful` skill. - **Testing**: `hspec` + `QuickCheck` + `hspec-discover` — see `haskell-testing`. - **Logging**: `log-effectful` — see `haskell-logging`. - **Formatter**: `ormolu` (zero-config, opinionated — no style debates) — see `haskell-quality-gates`. - **Linter**: `hlint` — apply its suggestions by default unless they conflict with effectful/clarity. - **Language server**: HLS, installed via