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
{
"context": "Tests whether the agent follows Phoenix/ExUnit testing conventions: using fixtures for shared test data, DataCase/ConnCase setup modules, LiveView structural assertions, authorization coverage, and safe timestamp handling.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Fixture file exists",
"description": "A fixture module is created under test/support/fixtures/ (e.g., blog_fixtures.ex) with at least one function for creating blog test data",
"max_score": 10
},
{
"name": "No inline data duplication",
"description": "Test data (posts, users) is NOT built inline with the same attribute map repeated in two or more separate test cases — it is referenced via the fixture module instead",
"max_score": 10
},
{
"name": "Context tests use DataCase",
"description": "The Blog context test module uses DataCase (not ConnCase or no case at all) in its `use` or `ExUnit.Case` call",
"max_score": 10
},
{
"name": "LiveView tests use ConnCase",
"description": "The PostLive.Index test module uses ConnCase in its `use` or `ExUnit.Case` call",
"max_score": 10
},
{
"name": "has_element?/2 used in LiveView tests",
"description": "At least one LiveView structural assertion uses has_element?/2 (e.g., assert has_element?(view, \"#post-123\")) rather than html =~ \"some text\" for structure checks",
"max_score": 10
},
{
"name": "No html =~ for structure checks",
"description": "Does NOT use html =~ \"...\" as an assertion for checking the presence of HTML elements or structure (string contains checks on rendered HTML); plain text content checks with =~ are acceptable but structural/element checks must use has_element?/2",
"max_score": 8
},
{
"name": "Unauthorized case tested",
"description": "At least one test case covers an unauthenticated or unauthorized user attempting to access the LiveView index page or a protected action (e.g., delete), asserting a redirect or error response",
"max_score": 10
},
{
"name": "No hardcoded dates",
"description": "No hardcoded date/datetime literals (e.g., ~U[2024-01-01 00:00:00Z] or \"2024-01-01\") are used in timestamp assertions — relative checks like DateTime.diff(...) or DateTime.utc_now() comparisons are used instead",
"max_score": 10
},
{
"name": "LiveView async: false",
"description": "The LiveView test module does NOT use async: true — it either omits the async option or sets async: false",
"max_score": 10
},
{
"name": "Context async: true",
"description": "The Blog context test module uses async: true (acceptable for DB-sandbox context tests that don't share rows or use Application.put_env)",
"max_score": 6
},
{
"name": "Fixture module function names",
"description": "The fixture module in test/support/fixtures/ defines at least one public function (e.g., post_fixture/1 or blog_fixture/1) rather than bare module attributes or inline maps",
"max_score": 6
}
]
}.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