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
Orchestrates code quality checks, safe refactoring, and documentation updates across three phases.
Proceed to Phase 2 if any threshold is exceeded:
| Metric | Threshold | Action |
|---|---|---|
| Function Length | > 20 lines | Extract function or private helper |
| Parameter Count | > 4 | Use keyword list or map |
| Module Length | > 400 lines | Extract bounded context or sub-module |
| Nesting Depth | > 3 levels | Extract function or use with |
| Pipe Chain | > 5 pipes | Extract into named function |
Run the following tools and address all violations:
mix format --check-formatted # Formatting
mix credo --strict # Linting and complexity
mix dialyzer # Type checking
mix hex.audit # Dependency auditHARD GATE — NEVER open a PR before all four checks above pass, plus mix test (full suite green) and @doc/@spec annotations on all public APIs (completed in Phase 3). Fix any failure before proceeding.
If gate fails: Fix the failing check — formatter, credo, dialyzer, hex.audit, or a red test — before doing anything else; do not open the PR until every command exits 0.
Decision Gate — Proceed if any threshold above is exceeded; otherwise skip to Phase 3.
TDD Enforcement — Before any code change:
mix test test/path/to/file_test.exs.with chain, replace positional args with a keyword list).mix test test/path/to/file_test.exs must still be green.Error Recovery — If tests go red after a change:
Goal — All public API functions have @doc and @spec before merge.
_, not defp) in the changed modules.@doc:
## Examples block with a iex> doctest where practical.@spec:
@spec immediately above the function head.mix dialyzer once more to confirm new typespecs are consistent.mix test to verify doctests pass.Before opening a PR, confirm every item is green:
| Check | Command | Must Pass |
|---|---|---|
| Formatting | mix format --check-formatted | ✅ |
| Linting | mix credo --strict | ✅ |
| Type checking | mix dialyzer | ✅ |
| Dependency audit | mix hex.audit | ✅ |
| Full test suite | mix test | ✅ |
| Doc/spec coverage | All public APIs annotated | ✅ |
Do not open the PR until every row is ✅.
When completing a quality pass, output a report using this template:
# Quality Report — [Module / Scope]
## Conventions
- mix format --check-formatted: ✓/✗
- mix credo --strict: ✓/✗ (<n> issues)
- mix dialyzer: ✓/✗
- mix hex.audit: ✓/✗
## Refactoring
- Thresholds exceeded: <list or none>
- Extractions applied: <list>, each re-validated green
## Documentation
- Public functions annotated: <n>/<n> @doc, <n>/<n> @spec
- Doctests passing: ✓/✗
## Full Suite
- mix test: ✓/✗ (<n> tests, 0 failures)
Verdict: <READY FOR PR / NOT READY — blocking check>Tests go red after a refactoring extraction:
Credo flags an issue you believe is a false positive:
# credo:disable-for-next-line with a justifying comment.Dialyzer reports a contract or type error after you add an @spec:
mix hex.audit reports a vulnerable dependency:
.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