# Hex Docs Search

> 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. Use when this capability is needed.

- Skill: `tomevault-io/hex-docs-search-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/hex-docs-search-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/hex-docs-search-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/hex-docs-search-2

---


# 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 detail than HTML docs

---
> Source: [bradleygolden/claude-marketplace-elixir](https://github.com/bradleygolden/claude-marketplace-elixir) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-25 -->

