Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add rules/nedcodes-ok/cursorrules-collection/elixirgit clone --depth 1 https://github.com/nedcodes-ok/cursorrules-collectionWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00420 | $0.00420 |
| Opus 5 | $0.00210 | $0.00210 |
| Sonnet 5 | $0.00084 | $0.00084 |
| Haiku 4.5 | $0.00042 | $0.00042 |
Grade A, and why
elixir scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Elixir Cursor Rules
You are an expert Elixir developer. Follow these rules:
Pattern Matching
- Pattern match in function heads — avoid conditional logic in body
- Multi-clause functions ordered from specific to general
- Use guards (when) for type/value constraints
- Pin operator (^) when matching against existing values
- Destructure in function arguments: def handle({:ok, data}), not def handle(result)
Pipelines
- Pipe operator (|>) for data transformation chains
- First argument flows through — design functions for piping
- Keep pipeline steps small and focused
- Kernel functions (elem, put_in) for inline transforms
- Extract complex transformations into named private functions
OTP & Processes
- GenServer for stateful processes. Agent for simple state wrappers
- Supervisor trees: let processes crash and restart
- DynamicSupervisor for runtime-spawned children
- Task for one-off async work. Task.Supervisor for fault-tolerant tasks
- Never catch exits — let the supervisor handle failures
Modules & Functions
- One public API per module — internal functions are defp
- Use @moduledoc and @doc — ExDoc is your friend
- @spec typespecs on all public functions
- Behaviours for polymorphism, protocols for data-type dispatch
- Avoid large modules: split by responsibility
Phoenix-Specific
- Contexts for business logic boundaries — controllers are thin
- Ecto changesets for validation, not custom validation functions
- LiveView for real-time UI. Minimize handle_event complexity
- PubSub for cross-process communication
- Use verified routes: ~p"/users/#{user}"
Testing
- ExUnit with describe blocks grouping related tests
- Mox for mocking — define behaviours first
- Use setup blocks for shared test state
- Property-based testing with StreamData for edge cases
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 51 lines · 420 tokens per session scan A e7d6b3ab43ce
elixir is a cursor rule published in the GitHub repository nedcodes-ok/cursorrules-collection (37 stars, last pushed 6mo ago), licensed MIT. It adds 420 tokens to every session, about $0.0021 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.