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
Your team has just shipped user registration for a new Phoenix application. Currently, after a user signs up, the Accounts.register_user/1 context function creates the user record and returns. The product team wants a welcome email sent to every new user to confirm their account and introduce key features.
The engineering lead has flagged two requirements. First, the email delivery must not slow down the registration response — users should get their confirmation page immediately, and the email should happen in the background. Second, the system must be resilient to retries: if the job queue is flushed or a node restarts, no user should receive duplicate welcome emails, and missing users (already deleted) should not cause the worker to crash-loop.
Your task is to implement the full welcome email pipeline from registration through delivery. This means writing the Oban worker that sends the email, a dedicated email module that constructs the welcome message, updating the Accounts context to schedule the job when a user is registered, and a test file that covers all execution paths of the worker.
The codebase uses Phoenix with Ecto for persistence, Swoosh for email, and Oban for background job processing. The User schema has the fields :id, :email, and :name. The Swoosh mailer is already configured and accessible as MyApp.Mailer.
Write the following files:
lib/my_app/workers/send_welcome_email.ex — the Oban worker modulelib/my_app/emails/user_email.ex — the email construction modulelib/my_app/accounts.ex — the context module, including register_user/1test/my_app/workers/send_welcome_email_test.exs — ExUnit tests covering the workerThe worker should handle the case where the user no longer exists in the database gracefully (do not keep retrying). Use Oban.Worker with a queue of :mailer.
For the purpose of this implementation, you may define a minimal MyApp.Accounts.User struct or Ecto schema with the fields needed (:id, :email, :name) and a stub get_user/1 function if a full Ecto setup would be out of scope — the grader will assess the structure and patterns used, not whether the code compiles against a live database.
.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