Back to Skills

hex-docs-search

verified

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.

View on GitHub

Marketplace

elixir

bradleygolden/claude-marketplace-elixir

Plugin

elixir

Repository

bradleygolden/claude-marketplace-elixir
158stars

plugins/elixir/skills/hex-docs-search/SKILL.md

Last Verified

January 20, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/bradleygolden/claude-marketplace-elixir/blob/main/plugins/elixir/skills/hex-docs-search/SKILL.md -a claude-code --skill hex-docs-search

Installation paths:

Claude
.claude/skills/hex-docs-search/
Powered by add-skill CLI

Instructions

# 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.

```bash
# 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`.

```bash
# 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

```bash
# 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 

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
1999 chars