---
name: Compound Docs
slug: compound-docs
category: Writing
description: Compound Docs stores solved Elixir/Phoenix/Ecto issues as searchable docs with YAML frontmatter. Use it before debugging new problems to find prior fixes, risks, and prevention notes.
github: "https://github.com/oliver-kriska/claude-elixir-phoenix/tree/main/plugins/elixir-phoenix/skills/compound-docs"
language: Python
stars: 533
forks: 38
install: "npx degit https://github.com/oliver-kriska/claude-elixir-phoenix/tree/main/plugins/elixir-phoenix/skills/compound-docs ~/.claude/skills/compound-docs"
installs_to: ~/.claude/skills/compound-docs
source_path: plugins/elixir-phoenix/skills/compound-docs/SKILL.md
collection_size: 25
category_size: 1012
collection_url: "https://dirskills.com/collections/oliver-kriska/claude-elixir-phoenix"
added: 2026-08-26T05:11:37.260Z
last_synced: 2026-08-26T05:11:37.260Z
canonical_url: "https://dirskills.com/skills/compound-docs"
---

# Compound Docs

Compound Docs stores solved Elixir/Phoenix/Ecto issues as searchable docs with YAML frontmatter. Use it before debugging new problems to find prior fixes, risks, and prevention notes.

**Install:**

```bash
npx degit https://github.com/oliver-kriska/claude-elixir-phoenix/tree/main/plugins/elixir-phoenix/skills/compound-docs ~/.claude/skills/compound-docs
```

## README

# Compound Docs — Institutional Knowledge Base

Searchable, categorized solution documentation that makes each
debugging session easier than the last.

## Directory Structure

```
.claude/solutions/
├── ecto-issues/
├── liveview-issues/
├── oban-issues/
├── otp-issues/
├── security-issues/
├── testing-issues/
├── phoenix-issues/
├── deployment-issues/
├── performance-issues/
└── build-issues/
```

## Iron Laws

1. **ALWAYS search solutions before investigating** — Check
   `.claude/solutions/` for existing fixes before debugging
2. **YAML frontmatter is MANDATORY** — Every solution needs
   validated metadata per `${CLAUDE_SKILL_DIR}/references/schema.md`
3. **One problem per file** — Never combine multiple solutions
4. **Include prevention** — Every solution documents how to
   prevent recurrence

## Solution File Format

```markdown
---
module: "Accounts"
date: "2025-12-01"
problem_type: runtime_error
component: ecto_schema
symptoms:
  - "Ecto.Association.NotLoaded on user.posts"
root_cause: missing_preload
severity: medium
tags: [preload, association, n-plus-one]
---

# Association NotLoaded on User Posts

## Symptoms
Ecto.Association.NotLoaded raised when accessing user.posts
in UserListLive after filtering.

## Root Cause
Query in Accounts context missing preload for :posts.

## Solution
Added `Repo.preload(:posts)` to `list_users/1`.

## Prevention
Use n1-check skill before shipping list views.
```

## Searching Solutions

Use Grep to search `.claude/solutions/` by symptom (e.g., `NotLoaded`), by tag (e.g., `tags:.*preload`), or by component (e.g., `component: ecto`).

## Integration

- `/phx:compound` creates solution docs here
- `/phx:investigate` searches here before debugging
- `/phx:plan` consults for known risks
- `learn-from-fix` feeds into this system

## References

- `${CLAUDE_SKILL_DIR}/references/schema.md` — YAML frontmatter validation schema
- `${CLAUDE_SKILL_DIR}/references/resolution-template.md` — Full solution template
