Claude-skill-registry hackage-read-docs
Retrieve documentation from Hackage. Use this Skill when you need a reference for Haskell packages, classes, or want to query package versions. (project)
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/hackage-read-docs" ~/.claude/skills/majiayu000-claude-skill-registry-hackage-read-docs && rm -rf "$T"
manifest:
skills/data/hackage-read-docs/SKILL.mdsource content
Hackage Read Docs
A CLI tool to query Hackage package documentation with filtering and display options.
Instructions
- use
to discover what package versions are therebazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- <package_name> --list-versions - then use
to discover the modules that are in the packagebazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- <package_name> --version <version> - If the hackage tool isn't finding modules, then use web fetch to https://hackage.haskell.org/package/<package_name> to discover directly the modules
- And follow up with one of:
- bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- <package_name> --module <module> --filter-functions --with-comments --version <version>
- bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- <package_name> --module <module> --filter-types --with-comments --version <version>
- bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- <package_name> --module <module> --filter-classes --with-comments --version <version>
Quick Start
List all available versions
bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --list-versions
Query a specific version (shows tree view)
bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --version 2.2.3.0
Deep dive into a module
bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson
Filter Options
Show only specific types of exports:
# Show only functions bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-functions # Show only types bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-types # Show only type classes bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-classes # Combine filters (e.g., show functions and types, exclude classes) bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-functions --filter-types
Documentation Display
Include Haddock documentation text alongside signatures:
# Show functions with their documentation bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-functions --with-comments # Show types with their documentation bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-types --with-comments # Show type classes with their documentation bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-classes --with-comments
Common Patterns
Research a specific function
# Find a function and see its documentation bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-functions --with-comments | grep -A 3 "decode"
Explore all types in a module
# See all type definitions with documentation bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- containers --module Data.Map --filter-types --with-comments
Find available type classes
# List type classes with their documentation bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-classes --with-comments
Workflow
-
Start with version listing: Always list versions first, pick the latest if unclear
bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- PACKAGE --list-versions -
Query package tree: View the package structure and available modules
bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- PACKAGE --version X.Y.Z -
Explore specific module: Deep dive into a module with filters as needed
bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- PACKAGE --module MODULE.NAME -
Apply filters: Use
flags to focus on specific export types--filter-* -
Include documentation: Add
to see Haddock documentation--with-comments
Available Flags
: Query specific package version--version, -v VERSION
: List all available versions--list-versions, -l
: Query specific module (e.g., Data.Aeson)--module, -m MODULE
: Show only exported functions--filter-functions
: Show only exported types--filter-types
: Show only exported type classes--filter-classes
: Include Haddock documentation text alongside signatures--with-comments
Examples
# Research the aeson package's FromJSON class bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- aeson --module Data.Aeson --filter-classes --with-comments | grep -A 10 "FromJSON" # Find all functions in Data.List bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- base --module Data.List --filter-functions # Explore container types with documentation bazel run //haskell/app/hackage-doc-cli:hackage-doc-cli -- containers --module Data.Map --filter-types --with-comments
Notes
- Default behavior (no filters): Shows functions, types, and type classes
- Documentation is extracted from Haddock HTML pages
- Supports both PVP and Semantic Versioning formats
- Results are cached for performance (24h for metadata, 7d for versions)