From elixir-phoenix
Guides Phoenix context design: creating/splitting contexts, Scope (1.8+), Ecto.Multi, PubSub, routers, plugs, controllers. Use when editing contexts, routers, or designing boundaries.
How this skill is triggered — by the user, by Claude, or both
Slash command
/elixir-phoenix:phoenix-contextsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Reference for designing and implementing Phoenix contexts (bounded contexts).
Reference for designing and implementing Phoenix contexts (bounded contexts).
Ecto.Multi for transactions with side effectslib/my_app/
├── accounts/ # Context directory
│ ├── user.ex # Schema
│ ├── scope.ex # Scope struct (Phoenix 1.8+)
├── accounts.ex # Context module (public API)
All context functions MUST accept scope as first parameter:
def list_posts(%Scope{} = scope) do
from(p in Post, where: p.user_id == ^scope.user.id)
|> Repo.all()
end
def create_post(%Scope{} = scope, attrs) do
%Post{user_id: scope.user.id}
|> Post.changeset(attrs)
|> Repo.insert()
|> broadcast(scope, :created)
end
# ✅ Reference by ID, convert at boundary
def create_order(%Scope{} = scope, user_id, product_ids) do
with {:ok, user} <- Accounts.fetch_user(scope, user_id) do
do_create_order(scope, user.id, product_ids)
end
end
# ❌ Reaching into other context's internals
alias MyApp.Accounts.User # Don't do this
Repo.all(from o in Order, join: u in User, ...) # Don't query other schemas
| Wrong | Right |
|---|---|
Service objects (UserCreationService) | Context functions (Accounts.create_user/2) |
| Repository pattern wrapping Repo | Repo IS the repository |
| Direct Repo calls in controllers | Delegate to context |
| Schema callbacks with side effects | Use Ecto.Multi |
%Scope{} struct for authorization context${CLAUDE_SKILL_DIR}/references/scopes-auth.md "Pre-Scopes Patterns")For detailed patterns, see:
${CLAUDE_SKILL_DIR}/references/context-patterns.md - Full context module, PubSub, Multi, cross-boundary${CLAUDE_SKILL_DIR}/references/scopes-auth.md - Scope struct, multi-tenant, authorization, plugs${CLAUDE_SKILL_DIR}/references/routing-patterns.md - Verified routes, pipelines, API auth${CLAUDE_SKILL_DIR}/references/plug-patterns.md - Function/module plugs, placement, guards${CLAUDE_SKILL_DIR}/references/json-api-patterns.md - JSON controllers, FallbackController, API authnpx claudepluginhub oliver-kriska/claude-elixir-phoenix --plugin elixir-phoenixImplements Phoenix Framework patterns for context design, controller actions, fallback handling, and plug pipelines when building Elixir web applications.
Reviews Phoenix apps for controller patterns, context boundaries, routing, plugs, and JSON APIs. Use when auditing controllers, contexts, routers, or error handling.
Guides Phoenix web app development in Elixir: LiveView lifecycle and components, context design and generation, channels, routers, plugs, project structure, and troubleshooting.