Comprehensive Haskell CLI managing builds, tests, formatting, and dependencies through a single manifest file.
Install
mkdir -p .claude/skills/hx && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17341" && unzip -o skill.zip -d .claude/skills/hx && rm skill.zipInstalls to .claude/skills/hx
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Build, test, run, lint, format, and manage dependencies for Haskell projects using the hx toolchain CLI. Use whenever working in a Haskell project that has an hx.toml (or when setting one up), or when the user asks to build/test/run/typecheck Haskell code, manage GHC/Cabal versions, or add/remove Hackage dependencies.Key capabilities
- →Scaffold new Haskell projects
- →Build Haskell projects with options for release and parallelism
- →Type-check Haskell code quickly
- →Run tests with pattern matching
- →Format and check Haskell code formatting
- →Manage Hackage dependencies (add, remove, lock, sync)
How it works
The skill uses the `hx` CLI toolchain to manage Haskell projects, providing commands for building, testing, running, linting, formatting, and dependency management, replacing multiple individual tools.
Inputs & outputs
When to use hx
- →Build a Haskell project
- →Run tests
- →Manage Hackage dependencies
About this skill
hx — Haskell toolchain
hx is a single CLI that replaces ghcup, cabal, stack, fourmolu, hlint, and hpc. It manages GHC itself, uses an hx.toml manifest and an hx.lock lockfile, and returns meaningful exit codes.
Detecting that this skill applies
The project is an hx project if there is an hx.toml at (or above) the working directory. If the user has a .cabal/stack.yaml but no hx.toml, you can adopt it with hx init or hx import --from stack.
Core commands
| Goal | Command |
|---|---|
| Scaffold a project | hx init <name> |
| Build | hx build (--release, -j N) |
| Type-check only (fast) | hx check |
| Run tests | hx test (--pattern <p>) |
| Build & run | hx run -- <args> |
| Format / check format | hx fmt / hx fmt --check |
| Lint / autofix | hx lint / hx lint --fix |
| Add / remove a dependency | hx add <pkg> "<constraint>" / hx rm <pkg> |
| Lock / build from lock | hx lock / hx sync |
| Diagnose the environment | hx doctor |
| Install/manage GHC | hx toolchain install |
Run hx <command> --help for flags. --quiet/--verbose are global; NO_COLOR is respected.
Interpreting results — exit codes
Decide success/failure from the exit code, not by scraping output:
0success ·1general error ·2bad arguments ·3badhx.toml4toolchain error (GHC/Cabal missing or mismatched — runhx doctor)5build/test failure ·6plugin hook failure
Errors print a structured summary with a suggested fix on stderr; surface that fix to the user.
Typical workflows
# new project
hx init myapp && cd myapp && hx build && hx run
# add a dependency and rebuild
hx add aeson ">=2.0" && hx build
# pre-commit quality gate
hx fmt --check && hx lint && hx test
# reproducible build
hx lock && hx sync
Important behavior
- Toolchain auto-install: the first
hx buildmay download a GHC (hundreds of MB).hx doctorreturns exit4when a required tool is missing and tells you how to install it. hx build --nativeis experimental — a fast path for single-package,base-only projects; it falls back to cabal otherwise. Don't use it for multi-dependency projects.- Plugins require trust: project-local
.hx/plugins/*.scmscripts do not run on a freshly cloned repo. Never runhx plugins truston a project you don't trust.
Programmatic / MCP use
For tool-call access instead of shelling out, run hx mcp (an MCP server over stdio) — it exposes build/check/test/run/lock/sync/fmt/lint/doctor and dependency tools. See AGENTS.md in the repo.
When not to use it
- →When working on a Haskell project without an `hx.toml` and not intending to adopt `hx`
- →When using `hx build --native` for multi-dependency projects
Limitations
- →The `hx build --native` command is experimental for single-package, `base`-only projects.
- →Plugins require trust and do not run on freshly cloned repos without explicit action.
- →Errors print a structured summary with a suggested fix on stderr.
How it compares
This skill consolidates various Haskell development tasks into a single CLI tool, offering a unified workflow compared to using separate tools like ghcup, cabal, stack, and hlint.
Compared to similar skills
hx side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| hx (this skill) | 0 | 1mo | Review | Intermediate |
| e2e-testing-patterns | 8 | 2mo | No flags | Intermediate |
| testing-workflow | 16 | 9mo | Review | Intermediate |
| perf-lighthouse | 13 | 5mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
e2e-testing-patterns
wshobson
Master end-to-end testing with Playwright and Cypress to build reliable test suites that catch bugs, improve confidence, and enable fast deployment. Use when implementing E2E tests, debugging flaky tests, or establishing testing standards.
testing-workflow
amo-tech-ai
Comprehensive testing workflow for E2E, integration, and unit tests. Use when testing applications layer-by-layer, validating user journeys, or running test suites.
perf-lighthouse
tech-leads-club
Run Lighthouse audits locally via CLI or Node API, parse and interpret reports, set performance budgets. Use when measuring site performance, understanding Lighthouse scores, setting up budgets, or integrating audits into CI. Triggers on: lighthouse, run lighthouse, lighthouse score, performance audit, performance budget.
xcodebuildmcp
cameroncooke
Official skill for XcodeBuildMCP. Use when doing iOS/macOS/watchOS/tvOS/visionOS work (build, test, run, debug, log, UI automation).
verify
Use when you want to validate changes before committing, or when you need to check all React contribution requirements.
playwright-pro
alirezarezvani
Production-grade Playwright testing toolkit. Use when the user mentions Playwright tests, end-to-end testing, browser automation, fixing flaky tests, test migration, CI/CD testing, or test suites. Generate tests, fix flaky failures, migrate from Cypress/Selenium, sync with TestRail, run on BrowserStack. 55 templates, 3 agents, smart reporting.