Recherche Documentation Hex

Recherchez la documentation des packages Elixir (Sobelow, Phoenix, Ecto, etc.) en priorité localement, avec récupération automatique si nécessaire. Accédez aux sources, exemples d'utilisation et intégration.

Spar Skills Guide Bot
DeveloppementIntermédiaire
22009/03/2026
Claude CodeCursorWindsurfCopilot
#elixir#package-management#documentation-search#hex-ecosystem#code-exploration

name: hex-docs-search description: Research Hex packages (Sobelow, Phoenix, Ecto, Credo, Ash, etc). Use when investigating packages, understanding integration patterns, or finding module/function docs and usage examples. Automatically fetches missing documentation and source code locally. allowed-tools: Read, Grep, Glob, Bash, WebSearch, AskUserQuestion model: haiku context: fork agent: Explore user-invocable: true

Hex Documentation Search

Search Elixir package documentation. Prioritize local sources, fetch if needed.

Search Locations (in order)

  1. Project deps: deps/<package>/lib/ (source with @moduledoc/@doc), deps/<package>/doc/ (HTML if generated)
  2. Fetched docs cache: .hex-docs/docs/hexpm/<package>/<version>/
  3. Fetched source cache: .hex-packages/<package>-<version>/
  4. HexDocs API: Programmatic search (see below)
  5. Web search: Last resort with site:hexdocs.pm

Fetching Locally

Determine version from mix.lock, mix.exs, or prompt user if ambiguous.

# Fetch documentation (stores in .hex-docs/)
HEX_HOME=.hex-docs mix hex.docs fetch <package> <version>

# Fetch source code (if docs insufficient or unavailable)
mix hex.package fetch <package> <version> --unpack --output .hex-packages/<package>-<version>

Mention adding .hex-docs/ and .hex-packages/ to .gitignore once per session when fetching occurs.

HexDocs Search API

Powered by Typesense at search.hexdocs.pm.

# Search within a specific package
curl -s "https://search.hexdocs.pm/?q=<query>&filter_by=package:=[<package>-<version>]" \
  | jq '.hits[].document | {title, doc, url}'

# Search across all packages
curl -s "https://search.hexdocs.pm/?q=<query>" \
  | jq '.hits[].document | {package, title, doc}'

Response fields:

  • package: Package name
  • title: Module/function name
  • doc: Documentation text
  • url: Path to append to https://hexdocs.pm

Version Resolution

# From mix.lock
grep '"<package>"' mix.lock | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'

# Latest from hex.pm
curl -s "https://hex.pm/api/packages/<package>" | jq -r '.releases[0].version'

Key Behaviors

  • Prefer local/cached results (version matches project)
  • Show real usage examples from project codebase when relevant
  • Include file:line references for source code
  • Prompt user before fetching external packages
  • Source code @moduledoc/@doc often has more detail than HTML docs
Skills similaires