compound
Capture solved problems as searchable solution docs. Use after fixing bugs, when "that worked", or after successful /phx:review or /phx:investigate.
git clone --depth 1 https://github.com/oliver-kriska/claude-elixir-phoenix /tmp/compound && cp -r /tmp/compound/plugins/elixir-phoenix/skills/compound ~/.claude/skills/compoundSKILL.md
# Compound — Capture Solutions as Knowledge
After fixing a problem, capture the solution as searchable
institutional documentation.
## Usage
```
/phx:compound Fixed N+1 query in user listing
/phx:compound Resolved LiveView timeout in dashboard
/phx:compound # Auto-detects from recent session context
```
## Philosophy
> Each unit of engineering work should make subsequent units
> easier — not harder.
## Workflow
### Step 1: Detect Context
1. If `$ARGUMENTS` provided, use as description
2. If no args, check scratchpad DEAD-END/DECISION entries,
`git diff`, `.claude/plans/{slug}/progress.md` for recent completions
3. If unclear, ask: "What problem did you just solve?"
**Only document non-trivial problems** that required investigation.
### Step 2: Search Existing Solutions
Create `.claude/solutions/` directory if it doesn't exist (run `mkdir -p .claude/solutions`).
Then search `.claude/solutions/` for relevant keywords using Grep.
If found: **Create new** (different root cause), **Update
existing** (same root cause, new symptom), or **Skip**.
### Step 3: Gather Details and Create Solution
Extract from session context: module, symptoms, investigation
steps, root cause, solution code, and prevention advice.
Validate frontmatter against `${CLAUDE_PLUGIN_ROOT}/skills/compound-docs/references/schema.md`,
then create file using `${CLAUDE_PLUGIN_ROOT}/skills/compound-docs/references/resolution-template.md`.
**Write-blocked fallback**: if writing to `.claude/solutions/` is denied
by permissions, do NOT silently drop the solution. Output the full
solution doc inline (fenced markdown the user can paste), then suggest
`/phx:permissions` to allow `.claude/solutions/` writes for next time.
### Step 4: Decision Menu
1. **Continue** (default)
2. **Promote to Iron Law check** — Add to iron-law-judge
3. **Update skill reference** — Add to relevant skill
4. **Update CLAUDE.md** — Add prevention rule
## Auto-Trigger Phrases
When user says "that worked", "it's fixed", "problem solved",
"the fix was" — suggest `/phx:compound`.
### Supply-chain finding auto-feed (Phase 3)
When `/phx:deps-audit` produces a BLOCK-severity finding that the
user investigates and confirms is a real malicious pattern (not a
false positive), suggest:
> Caught a high-severity finding in `<pkg>@<version>`. Run
> `/phx:compound` to capture this for future audits?
If accepted, the resulting solution doc goes to
`.claude/solutions/supply-chain/<pkg>-<cve_or_pattern>.md` and
includes the exact rule-id + snippet + diff window that triggered
the finding. This compounds the audit corpus: future runs of
`/phx:deps-audit` grep `solutions/supply-chain/` for snippet
matches and pre-elevate severity on known-bad patterns.
**Always prompt; never auto-write.** Solution docs are durable and
shape future trust calls — the user reviews before committing.
## Iron Laws
1. **YAML frontmatter validates or STOP**
2. **Symptoms must be specific** — not "it broke"
3. **Root cause is WHY, not WHAT**
4. **One problem per file**
5. **NEVER document a fix before verifying it works** — run `mix compile && mix test` first; unverified solutions poison the knowledge base
## Integration with Workflow
```text
/phx:review → Complete → /phx:compound ← YOU ARE HERE
│
.claude/solutions/{category}/{fix}.md
│
/phx:investigate and /phx:plan search here
```
## References
- `${CLAUDE_SKILL_DIR}/references/compound-workflow.md` — Detailed step-by-step
- See also: `compound-docs` skill for schema and templatesAsh Framework — resources, actions, policies, aggregates, calculations,
Compatibility alias for the Elixir/Phoenix plugin's LiveView assigns audit. Invoke explicitly with /lv:assigns.
Inspect LiveView socket assigns for memory bloat — missing temporary_assigns, unused assigns, unbounded lists needing streams, memory estimates. Use when LiveView memory grows or you need to add temporary_assigns.
Project health audit and health check — architecture, performance, tests, dependencies, code quality. Use when assessing overall project health, before releases, or after refactors.
Analyze Phoenix context boundaries and module coupling via mix xref. Use when checking cross-context calls, validating dependencies, before splitting modules, or reviewing architecture.
Brainstorm Elixir/Phoenix features — explore ideas, compare approaches, gather requirements. Use when vague idea, not sure how to approach, or want to discuss before plan.
Interactive briefing of a plan file — explains reasoning, schema decisions, component choices. Use when developers need to understand a plan before approving.
Summarize and review what changed while you were away. Use after a weekend, vacation, or flight to check missed PRs, git commits, Linear tickets, and meetings — one prioritized brief, not a firehose.