phoenix-framework
2
总安装量
2
周安装量
#75156
全站排名
安装命令
npx skills add https://github.com/spjoshis/claude-code-plugins --skill phoenix-framework
Agent 安装分布
opencode
2
gemini-cli
2
claude-code
2
github-copilot
2
codex
2
kimi-cli
2
Skill 文档
Phoenix Framework
Build real-time web applications with Phoenix, LiveView, channels, and Elixir’s concurrent architecture.
Core Patterns
LiveView
defmodule MyAppWeb.UserLive.Index do
use MyAppWeb, :live_view
alias MyApp.Accounts
def mount(_params, _session, socket) do
{:ok, assign(socket, users: Accounts.list_users())}
end
def handle_event("delete", %{"id" => id}, socket) do
user = Accounts.get_user!(id)
{:ok, _} = Accounts.delete_user(user)
{:noreply, assign(socket, users: Accounts.list_users())}
end
end
Controller
defmodule MyAppWeb.UserController do
use MyAppWeb, :controller
alias MyApp.Accounts
def index(conn, _params) do
users = Accounts.list_users()
render(conn, :index, users: users)
end
def create(conn, %{"user" => user_params}) do
case Accounts.create_user(user_params) do
{:ok, user} ->
conn
|> put_status(:created)
|> render(:show, user: user)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(:error, changeset: changeset)
end
end
end
Context
defmodule MyApp.Accounts do
alias MyApp.Accounts.User
alias MyApp.Repo
def list_users do
Repo.all(User)
end
def create_user(attrs) do
%User{}
|> User.changeset(attrs)
|> Repo.insert()
end
end
Best Practices
- Use contexts for domain logic
- Leverage LiveView for interactivity
- Use Ecto changesets for validation
- Implement proper error handling
- Use channels for real-time features
- Write ExUnit tests
- Use telemetry for monitoring