Trace Elixir call trees from entry points via mix xref. Use when debugging data flow, planning signature changes, or understanding how a bug reaches code.
npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix --skill phx-trace
Build call trees showing how functions are reached from entry points.
mix xref callers first - It's authoritative; grep is fallback only| Condition | Why Call Tree Helps |
|-----------|---------------------|
| Unexpected nil/value at runtime | Trace where the value originates |
| Bug can't reproduce locally | See all entry points that reach the code |
| Changing function signature | Find all callers and their argument patterns |
| Incomplete stack trace | Get full path context |
| "Where does X come from?" | Visual answer to data flow question |
Run the caller query first, then inspect another function in the chain as needed:
mix xref callers MyApp.Accounts.update_user/2
mix xref callers MyApp.Accounts.get_user/1
Read the reported locations to see argument patterns.
| Pattern | Type |
|---------|------|
| def mount/3, def handle_event/3 | LiveView |
| def index/2, def show/2, def create/2 | Controller |
| def perform(%Oban.Job{}) | Oban Worker |
| def handle_call/3, def handle_cast/2 | GenServer |
Trace controller, LiveView, worker, and internal entry-point categories in this
session, starting each category with mix xref callers. Native generic workers
may handle independent categories in parallel when the runtime provides them,
but the same-session sequential path is fully supported and must produce the
same call tree. Do not require a named custom agent or Claude-specific spawn
configuration.
.claude/plans/{slug}/research/call-tree-{function}.md
For detailed patterns:
references/mix-xref-usage.md - Full mix xref commands and optionsreferences/entry-points.md - All Phoenix/OTP entry point patternsreferences/argument-extraction.md - AST parsing for argument patternsComprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
Comprehensive technology-agnostic prompt for analyzing and documenting project folder structures. Auto-detects project types (.NET, Java, React, Angular, Python, Node.js, Flutter), generates detailed blueprints with visualization options, naming conventions, file placement patterns, and extension templates for maintaining consistent code organization across diverse technology stacks.
Use when complex problems require systematic step-by-step reasoning with ability to revise thoughts, branch into alternative approaches, or dynamically adjust scope. Ideal for multi-stage analysis, design planning, problem decomposition, or tasks with initially unclear scope.
Multi-agent workflow examples to work together on the OpenServ Platform. Covers agent discovery, multi-agent workspaces, task dependencies, and workflow orchestration using the Platform Client. Read reference.md for the full API reference. Read openserv-agent-sdk and openserv-client for building and running agents.
> Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format to save input tokens. Preserves all technical substance, code, URLs, and structure. Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md.
API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.
Patterns for automating GitHub workflows with AI assistance, inspired by [Gemini CLI](https://github.com/google-gemini/gemini-cli) and modern DevOps practices.
Groups existing components into logical business domains to plan service-based architecture. Use when asking "which components belong together?", "group these into services", "organize by domain", "component-to-domain mapping", or planning service extraction from an existing codebase. Do NOT use for identifying new domains from scratch (use domain-analysis) or analyzing coupling (use coupling-analysis).
Take oliver-kriska/phx-trace from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.