From haskell-claude
Idiomatic Haskell conventions and decision rules. Use when writing Haskell code, designing data types, or handling errors.
How this skill is triggered — by the user, by Claude, or both
Slash command
/haskell-claude:haskell-patternsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **Newtype wrappers** for domain primitives (`UserId`, `Email`) -- never raw `Int`/`Text`
UserId, Email) -- never raw Int/TextEither / ExceptT for expected, recoverable errorsthrowIO for unexpected, unrecoverable errorshead, tail, fromJust, readReaderT AppEnv IO) over deep transformer stacksText, never String (unless legacy interop)Data.Text.IO) over lazy IOSTM / TVar for shared mutable stateasync / mapConcurrently for concurrent tasksrace for timeoutsString for text dataPrelude.readFile)Guides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
npx claudepluginhub birdgg/haskell-plugin --plugin haskell-claude