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
The platform team has identified that the MyApp.Accounts.get_user/1 function is called hundreds of times per request cycle — from authorization checks, activity feeds, and notification rendering — all hitting Postgres directly. Under normal load this isn't a problem, but traffic spikes are causing read replica lag and slowing the request pipeline measurably.
The solution is a Cachex-based caching layer that wraps get_user/1: on a cache hit the user record is returned immediately; on a miss, the database is queried, the result is stored in the cache, and subsequent callers get the cached value. The cache must also be invalidated when a user record changes, so update_user/2 should remove the stale entry.
The engineering lead has two additional concerns. First, the team needs to be able to measure whether the cache is actually helping (hit rate, miss rate) before deciding to roll it out. Second, long-lived stale data is a support headache — any cached entry should expire on its own after a reasonable interval so that even in edge cases where invalidation is missed, the data eventually refreshes.
The starter code for the project is in the inputs/ directory. You do not need to run or compile the project.
Produce the following files (you may modify existing files or add new ones as you see fit):
get_user/1 and update_user/2lib/my_app/application.ex that starts Cachex as part of the applicationmix.exs with the Cachex dependency addedDESIGN.md explaining: the TTL value you chose and why, and how to read the cache statsAll output files should be written to the working directory. You do not need to run mix deps.get or compile the project.
.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