From haskell-claude
Relude conventions and safe patterns. Use when setting up relude, migrating from Prelude, or working with relude-based projects.
How this skill is triggered — by the user, by Claude, or both
Slash command
/haskell-claude:haskell-reludeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use cabal mixins for project-wide adoption (preferred over NoImplicitPrelude):
Use cabal mixins for project-wide adoption (preferred over NoImplicitPrelude):
build-depends: base >= 4.14 && < 5, relude >= 1.2 && < 1.3
mixins: base hiding (Prelude)
, relude (Relude as Prelude)
, relude
String except for legacy interopviaNonEmpty to safely bridge from listsreadMaybe/readEither -- never readordNub/hashNub -- never nub (O(n^2))Set.member/HashMap.member -- never elem on Set/HashSet (compile error in relude)whenM/unlessM -- for monadic conditionalsone -- for singleton container constructionnewIORef, readIORef, etc. directly (no liftIO wrapper needed)encodeUtf8 / decodeUtf8 -- Text <-> ByteStringtoText / toLText / toString -- between string typestoStrict / toLazy -- strict <-> lazy TextString when Text is availablehead/tail on [a] instead of NonEmpty or viaNonEmptyliftIO . readIORef instead of lifted readIORefPrelude alongside Reludetrace calls in production codeFor migration guide and complete examples:
references/relude-migration.mdnpx claudepluginhub birdgg/haskell-plugin --plugin haskell-claudeProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.