Curated library of 38 atomic skills, 7 personas, and 1 orchestrator for Elixir and Phoenix development. Organized by category: fundamentals, phoenix, database, testing, auth, infrastructure, quality, security, integrations, tooling, frameworks, personas, and orchestration. Covers core Elixir patterns, Phoenix LiveView, Ecto, OTP, Oban, testing, security, deployment, real-time, and modern tooling (Req, Swoosh, Cachex, Broadway, Ash).
91
91%
Does it follow best practices?
Impact
91%
1.37xAverage score across 56 eval scenarios
Advisory
Suggest reviewing before use
Inline setup (always applicable):
# Verify Elixir/Erlang versions match .tool-versions
elixir --version
mix deps.get
mix ecto.create
mix ecto.migrate
mix test --seed 0
mix compile --warnings-as-errors
cp .env.example .env 2>/dev/null || trueHARD GATE — Environment Check (all items must pass before Phase 2):
.tool-versions or elixir_buildpack.config)mix local.hex, mix local.rebar)mix ecto.create succeeds or DB already exists).envSECRET_KEY_BASE env var)If gate fails: Fix the failing item above before proceeding to Phase 2.
Proceed only after environment check passes.
.github/workflows/ci.ymlname: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
- uses: erlef/setup-beam@5304e04ea2b355f03681464e683d92e3b2f18451
with:
elixir-version: "1.17.x"
otp-version: "27.x"
- run: mix deps.get
- run: mix compile --warnings-as-errors
- run: mix format --check-formatted
- run: mix credo --strict
- run: mix test --cover
- run: mix dialyzer.github/workflows/cd.ymlname: CD
on:
push:
branches: [main]
jobs:
deploy-staging:
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
- uses: erlef/setup-beam@5304e04ea2b355f03681464e683d92e3b2f18451
with:
elixir-version: "1.17.x"
otp-version: "27.x"
- run: mix deps.get
- run: mix ecto.migrate
env:
MIX_ENV: staging
DATABASE_URL: ${{ secrets.STAGING_DATABASE_URL }}
- run: <DEPLOY_CLI> # operator-supplied deploy command, e.g. flyctl deploy, gigalixir releases deploy
deploy-production:
runs-on: ubuntu-latest
environment: production
needs: deploy-staging
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
- uses: erlef/setup-beam@5304e04ea2b355f03681464e683d92e3b2f18451
with:
elixir-version: "1.17.x"
otp-version: "27.x"
- run: mix deps.get
- run: mix ecto.migrate
env:
MIX_ENV: prod
DATABASE_URL: ${{ secrets.PRODUCTION_DATABASE_URL }}
- run: <DEPLOY_CLI> # operator-supplied deploy command, same CLI as staging, targeting productionFill in
<DEPLOY_CLI>with your deployment command (e.g.,flyctl deploy,gigalixir releases deploy, or a custom Docker push). Replace secret names to match your repository settings. This is adeploy-productionjob gated by GitHub'senvironment: production— a human approves the run before it executes; the agent must never bypass that gate.
Verify everything works end-to-end:
Confirm every item in the Phase 1 HARD GATE checklist is still fully passing, then additionally verify:
# Start Phoenix server
mix phx.server
# CI simulation (if using act)
act pushWrite SETUP_CHECKLIST.md recording the final state of all Phase 1 HARD GATE items plus:
When completing project setup, output a Setup Report using this template:
Environment: Elixir <ver> ✓/✗ | OTP <ver> ✓/✗ | DB <ver> <status> | Env vars: <source>
Dependencies: deps.get <N> ✓/✗ | ecto.create ✓/✗ | ecto.migrate <N> ✓/✗ | mix test <N passed>/<N failed> ✓/✗
CI/CD: ci.yml ✓/✗ | cd.yml ✓/✗ | SHAs pinned ✓/✗ | Pipeline order confirmed ✓/✗
Validation: Server port <port> ✓/✗ | Full test suite ✓/✗ | SETUP_CHECKLIST.md written ✓/✗System Modification Approval Gate (CRITICAL): Before suggesting any action that modifies the host system: explain why it is needed, ask for explicit user confirmation, and only proceed if the user approves.
Non-obvious failure pointers:
.tool-versions and ensure the correct version is active via asdf or mise before retryingpg_isready to confirm PostgreSQL is running; check config/dev.exs credentials and create any missing rolemix deps.get and mix deps.compile; check for missing system librariesgit ls-remote, replace @v4 with @<full-sha> in workflow files.tessl-plugin
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
scenario-36
scenario-37
scenario-38
scenario-39
scenario-40
scenario-41
scenario-42
scenario-43
scenario-44
scenario-45
scenario-46
scenario-47
scenario-48
scenario-49
scenario-50
scenario-51
scenario-52
scenario-53
scenario-54
scenario-55
scenario-56
skills
frameworks
ash-framework
infrastructure
orchestration
elixir-skill-router
personas
phoenix
quality
security
security-essentials
tooling
mix-tasks-generators