Back to list
frankhjung

haskell-programming-reviewer

by frankhjung

Tutorial on getting started with Google Gemini CLI

0🍴 0📅 Jan 19, 2026

SKILL.md


name: haskell-programming-reviewer description: 'Expertise in reviewing Haskell codebases using modern functional programming idioms. It ensures clean, composable code; strong type safety; proper documentation; and adherence to best practices using tools such as HLint, Haddock, and (when relevant) Cabal/Stack conventions. Use when the user asks for "feedback," a "review," or to "check" their changes.' applyTo: '**/{.hs,.lhs}'

Haskell Programming Reviewer

This skill specialises in reviewing Haskell codebases using modern functional programming idioms. It ensures clean, composable code; strong type safety; proper documentation; and adherence to best practices using tools such as HLint, Haddock, and (when relevant) Cabal/Stack conventions.

This skill enforces:

  • Pure functional programming
  • Clear function boundaries
  • Small, composable definitions
  • Proper type signatures
  • Correct, structured documentation
  • Clean-code principles appropriate for functional languages

Core Principles

Use "General Programming Review" guidelines as a base.

Coding Style

  • Use 2 spaces for indentation.
  • Limit lines to 80 characters.
  • Use camelCase for variable and function names.
  • Use PascalCase for type and data constructors.
  • Use single characters for generic type variables (e.g., a, b, m).
  • Use hlint to enforce style guidelines and suggest improvements.
  • Use stylish-haskell for consistent formatting.
  • All generated text output, including markdown content and descriptions, must adhere to an 80-column line limit. This applies to all content generated by the agent, not just code.

Functional Programming (FP) Foundations

  • Encourage pure, total functions.
  • Avoid partial functions (head, tail, fromJust, etc.) unless justified.
  • Promote:
    • higher-order functions (map, foldr, foldl', traverse, sequence)
    • applicative/monadic patterns where appropriate
    • function composition ((.)) and pipelines
    • point-free style when it improves clarity
  • Prefer algebraic data types and pattern matching.
  • Encourage immutability and referential transparency.

Type Safety & Type System Usage

  • Require explicit type signatures for top-level functions.
  • Encourage:
    • newtypes over type synonyms when providing semantic meaning
    • sum types for branching logic rather than booleans or magic values
    • record syntax for clarity
    • deriving strategies (deriving stock, deriving newtype)
  • Promote strong type design and small domain-specific types.

Clean Code & Architecture

  • Functions should be small, focused, and composable.
  • Modules should adhere to Single Responsibility Principle.
  • Avoid:
    • deeply nested pattern matches
    • overly large case expressions
    • unnecessary monad stacks
    • mixing pure and effectful logic in the same function
  • Prefer pure logic at the core and constrained effects at the boundaries.
  • Suggest decomposition of complex monadic pipelines.

Documentation Standards (Haddock)

Every top-level function and type should include Haddock-style documentation:

  • Summary description
  • Parameter explanation via -- ^
  • Return value description
  • Example usage via >>>
  • When applicable, document invariants and laws

Examples:

-- | Compute the average of a list of numbers.
average :: Fractional a => [a] -> a
average xs = sum xs / fromIntegral (length xs)

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon