From elixir-phoenix
Captures lessons from bug fixes and corrections in Phoenix/Elixir projects — Ecto, LiveView, Oban, iron law mistakes. Documents rules in CLAUDE.md or MEMORY.md to prevent repeats.
npx claudepluginhub oliver-kriska/claude-elixir-phoenix --plugin elixir-phoenixThis skill uses the workspace's default tool permissions.
After fixing a bug or receiving a correction, capture the lesson
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
After fixing a bug or receiving a correction, capture the lesson to prevent future mistakes.
/phx:learn-from-fix Fixed N+1 query in user listing - was missing preload
/phx:learn-from-fix String vs atom key mismatch in params handling
/phx:learn-from-fix LiveView assign_async needs render_async in tests
Look at recent conversation context. Ask yourself:
Check if already documented:
${CLAUDE_SKILL_DIR}/references/common-mistakes.md (READ-ONLY plugin
reference — do NOT edit this file)If already documented, tell the user and stop.
CRITICAL: NEVER edit plugin files. Files under
~/.claude/plugins/ are cached and get overwritten on updates.
Always write to project or memory locations.
| Scope | Write to | Example |
|---|---|---|
| This project only | Project CLAUDE.md | "Never use raw SQL in this app" |
| All Elixir projects | Auto-memory MEMORY.md | "jsonb always uses string keys" |
| Detailed fix with context | .claude/solutions/ via /phx:compound | Complex debugging story |
For project CLAUDE.md — append a concise rule:
### [Category] Iron Laws (continued)
N. **[SHORT RULE NAME]** — Do NOT [bad pattern]. Instead [good pattern]
For auto-memory — append to
~/.claude/projects/{project-hash}/memory/MEMORY.md:
### Lesson: [Title]
- **Pattern**: Do NOT [bad] — instead [good]
- **Why**: [root cause explanation]
If the lesson is significant enough to be an Iron Law:
After capturing, confirm:
Lesson captured in [location]
Pattern: Do NOT [bad pattern] — instead [good pattern]
Category: [Ecto/LiveView/OTP/Testing/etc]
~/.claude/plugins/ are cached and overwritten on updates${CLAUDE_SKILL_DIR}/references/common-mistakes.md — Common Elixir mistakes
reference. Consult when checking for duplicates. Ships with
the plugin — NEVER modify.