Use when working with Phoenix LiveView, Plug pipelines, controllers, JSON APIs, channels, streams, forms, phx-hook, authentication, or debugging Phoenix/LiveView gotchas
Generates Phoenix LiveView code following an escalation ladder from simple assigns to complex hooks and PubSub patterns.
/plugin marketplace add jeffweiss/elixir-production/plugin install elixir-production@jeffweissThis skill inherits all available tools. When active, it can use any tool Claude has access to.
escalation-ladder.mdreferences/advanced-patterns.mdreferences/authentication.mdreferences/channels.mdreferences/forms.mdreferences/hooks.mdreferences/plug-and-controllers.mdreferences/streams.mdStart with server-rendered HTML. Escalate through streams, assign_async, PubSub, and hooks only when simpler patterns can't do the job. For non-LiveView needs (APIs, mobile clients), use Plug pipelines and Channels.
| Level | Need | Pattern |
|---|---|---|
| L0 | Display data | Assigns in mount/3 |
| L1 | User interaction | phx-click, push_navigate/2 |
| L2 | Forms | to_form/2 + changeset |
| L3 | Dynamic lists | Streams (stream/3, stream_insert/4) |
| L4 | Real-time updates | PubSub, assign_async/3 |
| L5 | Browser APIs | phx-hook |
else if in HEEx — use case/cond or :if attributesid MUST match stream nameconnected?(socket) for PubSub@form[:email] not @form.emailid — element MUST have unique idphx-feedback-for removed (LV 1.0) — use used_input?/1phx-page-loading removed (LV 1.0) — use page_loading: true in JS.push/2Read the file that matches your current problem:
escalation-ladder.md — When: Deciding which LiveView pattern level to use. Full L0-L5 with code examples, auth scopes, testingreferences/streams.md — When: Rendering dynamic lists or paginating data. Stream patterns and paginationreferences/forms.md — When: Building forms, uploads, or nested inputs. Form patterns including uploads and nested formsreferences/hooks.md — When: Integrating JavaScript libraries or browser APIs. JavaScript hooks with third-party library integrationreferences/authentication.md — When: Implementing auth, sessions, or authorization. Authorization, session management, magic link authreferences/advanced-patterns.md — When: Using assign_async, attach_hook, or managing reconnection. assign_async, attach_hook widgets, reconnect state managementreferences/plug-and-controllers.md — When: Building JSON APIs or Plug pipelines (non-LiveView). Plug pipelines, JSON APIs, fallback controllers, rate limitingreferences/channels.md — When: Need WebSockets, Presence, or real-time outside LiveView. Phoenix Channels, WebSockets, Presence, when Channels vs LiveView/feature <desc> — Guided feature implementation with TDD/review [file] — Review code against production standardsActivates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.