otp-essentials

Installation
SKILL.md

OTP Essentials

Use this skill before writing ANY GenServer, Supervisor, Task, or Agent module.

RULES — Follow these with no exceptions

  1. Always use @impl true before GenServer/Agent callbacks (init, handle_call, handle_cast, handle_info, terminate)
  2. Keep init/1 fast — no blocking calls, no DB queries; use handle_continue for expensive setup
  3. Use GenServer.call for request/response, GenServer.cast for fire-and-forget — never cast when you need a result
  4. Always define a public API wrapping GenServer calls — callers should never use GenServer.call(pid, ...) directly
  5. Use Task.async/Task.await with bounded timeouts — never Task.async without a corresponding Task.await or Task.yield
  6. Name processes via Registry, not atoms — atom table is finite and never garbage collected
  7. Supervisors own process lifecycle — never start unsupervised long-running processes
  8. Handle :DOWN messages from monitored processes — don't let them go unhandled
  9. Use Task.Supervisor for fire-and-forget supervised work
  10. Prefer ETS over a bottleneck GenServer for shared read-heavy state — one GenServer serializes all access
Installs
2
First Seen
2 days ago
otp-essentials — igmarin/elixir-phoenix-skills