Back to list
m4dc4p

hoogle

by m4dc4p

0🍴 0📅 Jan 12, 2026

SKILL.md


name: hoogle description: Search Haskell APIs using Hoogle. Use this skill when working with Haskell projects to look up function signatures, find functions by type, or discover library documentation. Activate proactively when you need to understand Haskell library APIs, find the right function for a task, or look up type signatures.

Hoogle API Search

Hoogle is a Haskell API search engine. Use it to find functions by name or by type signature.

When to Use Hoogle

Use Hoogle proactively when:

  • Working with Haskell code and need to find a function
  • Looking up the type signature of a function
  • Searching for functions that match a type signature (e.g., a -> b -> a)
  • Finding which module exports a particular function
  • Looking up documentation for Haskell functions

Search Methods

Search by Function Name

${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-search.sh "map"

Returns functions named "map" or containing "map" in their name.

Search by Type Signature

${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-search.sh "a -> b -> a"

Returns functions matching that type signature. Type variables are automatically generalized.

Search with Package Filter

Include package names in the query:

${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-search.sh "+base map"
${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-search.sh "+containers Data.Map.lookup"

Get Detailed Info

Use --info for the first result's documentation:

${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-search.sh "foldl" --info

Understanding Results

The search returns JSON with this structure:

{
  "results": [
    {
      "url": "https://hackage.haskell.org/package/base/docs/Prelude.html#v:map",
      "module": {"name": "Prelude", "url": "..."},
      "package": {"name": "base", "url": "..."},
      "item": "map :: (a -> b) -> [a] -> [b]",
      "docs": "map f xs is the list obtained by applying f to each element..."
    }
  ],
  "query": "map",
  "count": 10
}

Key fields:

  • item: The function signature
  • docs: Documentation/description
  • module.name: The module that exports this function
  • package.name: The package containing this function

Database Initialization

Before searching, ensure the Hoogle database exists:

${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-init-db.sh

This checks for a valid database and generates one from Stackage if needed. Generation takes several minutes on first run.

Local Database

For project-specific searches, generate a local database:

${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-init-db.sh --local /path/to/haddock/docs

Common Search Patterns

GoalQuery Example
Find function by namehoogle-search.sh "filter"
Find by exact typehoogle-search.sh "(a -> Bool) -> [a] -> [a]"
Find in specific packagehoogle-search.sh "+lens view"
Find class methodshoogle-search.sh "Monad m => m a -> m b"
Find by partial typehoogle-search.sh "Map k v -> k -> Maybe v"

Tips

  1. Type signatures are powerful: Searching a -> a finds id, while [a] -> a finds head.
  2. Use package filters: Narrow results with +packagename.
  3. Check multiple results: The best match isn't always first.
  4. Look at the module: Tells you what to import.

Error Handling

If searches fail with database errors, run:

${CLAUDE_PLUGIN_ROOT}/scripts/hoogle-init-db.sh --force

This regenerates the database from scratch.

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