ectoEcto patterns for Postgres-backed Elixir/Phoenix apps: schemas, changesets (per-operation, composition, validations), associations, cast_assoc/cast_embed, Ecto.Multi, transactions, migrations, and query performance (N+1, indexes). Use when writing or reviewing Ecto schemas, changesets, associations
elixir-anti-patternsThe official Elixir anti-pattern catalog (code, design, meta-programming, and process), each problem stated inline with a reference file holding the worked example and the refactoring that resolves it. Use when writing or reviewing Elixir and you want to name and fix a recurring smell: non-assertive
elixir-conventionsIdiomatic Elixir conventions for control flow, error handling, and code shape. Use when writing or reviewing Elixir code and judging whether it's idiomatic: error tuples vs. exceptions, raising and let-it-crash, `with`/`case`/`else` control flow, pattern-matching assertions over defensive checks, pi
elixir-testingTesting Elixir/Phoenix backends with ExUnit: DataCase/ConnCase setup, the Ecto SQL sandbox, fixtures, JSON API tests, changeset/context tests, and assertive test style. Use when writing or reviewing ExUnit tests, fixtures, or test setup: `DataCase`/`ConnCase`, the Ecto SQL sandbox, assertions, and J
obanBackground jobs with Oban: worker design, return-value semantics (:ok / :cancel / :discard / {:error}), idempotency, unique jobs, queues, cron, and testing. Use when writing or reviewing Oban workers and their `perform/1` return values, enqueuing background jobs, unique jobs, or cron, and when reaso
observabilityObservability for Elixir/Phoenix: structured (JSON) logging, :telemetry events/handlers, OpenTelemetry tracing, error reporting (e.g. Sentry), and metrics/LiveDashboard. Use when adding or reviewing logging, instrumentation, traces, or metrics (structured/JSON logs (`logger_json`), `:telemetry`, Ope
otpOTP concurrency patterns for Elixir: GenServer, Supervisor/DynamicSupervisor, Task/Task.Supervisor, Agent, Registry, ETS, and process lifecycle. Use when writing or reviewing stateful processes, supervision trees, or background concurrency: anything touching `GenServer` (`handle_call`/`handle_contin
phoenix-authorizationAuthorization / access control for Phoenix apps: server-side checks, ownership verification, scope-based queries to prevent IDOR, and policy modules. Use when writing or reviewing any code that decides whether the current user may see or change a resource: authorization and access control, ownership
phoenix-deploymentDeploying Phoenix/Elixir releases to production: runtime.exs vs config.exs, release migrations, runtime env (PHX_HOST/PHX_SERVER/SECRET_KEY_BASE), assets, health checks, and log levels. Use when configuring releases, deploys, or runtime config (`runtime.exs` vs compile-time config, `mix release`, mi
phoenix-json-apiBuilding JSON APIs with Phoenix: the :api pipeline, controllers + action_fallback, a unified error type, error rendering, pagination, versioning, and token auth. Use when writing or reviewing JSON controllers, routers, or API error handling: the `:api` pipeline, `action_fallback`/`FallbackController
phoenix-securitySecurity essentials for Elixir/Phoenix apps: atom exhaustion, SQL injection, XSS, open redirects, password hashing, constant-time token comparison, sensitive-data logging, CSRF, and dependency auditing. Use when writing or reviewing auth, input handling, queries, redirects, or token/password code, o