elixir-thinking

Guide Elixir developers from OOP patterns to idiomatic module and process design.

167|14|Updated Dec 26, 2025
One-click install
npx skills add https://github.com/georgeguimaraes/claude-code-elixir --skill elixir-thinking
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: elixir-thinking
Source: https://github.com/georgeguimaraes/claude-code-elixir/tree/main/plugins/elixir/skills/elixir-thinking
Command: npx skills add https://github.com/georgeguimaraes/claude-code-elixir --skill elixir-thinking

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

The Elixir-thinking skill solves cognitive friction when designing Elixir applications by guiding developers away from OOP patterns toward idiomatic Elixir design.

Core Features & Use Cases

  • Mental models: Distinguish modules, data, and processes, and apply the Iron Law NO PROCESS WITHOUT A RUNTIME REASON.
  • Guidance on architecture: Decide when to use patterns like behaviours, protocols, and pattern matching; determine when a GenServer or supervisor is warranted.
  • Refactoring scenarios: Convert a monolithic module into smaller, cohesive modules and use idiomatic data structures like structs.

Quick Start

Ask the assistant to refactor a provided Elixir module into idiomatic Elixir by applying pattern matching, separating concerns with modules, and deciding when a GenServer or supervisor is warranted.

Frequently Asked Questions about elixir-thinking

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I refactor an Elixir module to use idiomatic pattern matching and behaviors?

Refactor Elixir modules by applying explicit pattern matching, separating concerns into cohesive modules, and utilizing behaviors or protocols to reduce OOP cognitive friction.

When do I actually need a GenServer or supervisor in Elixir?

You need a GenServer or supervisor only when there is a valid runtime reason, enforcing the Iron Law NO PROCESS WITHOUT A RUNTIME REASON to minimize unnecessary processes and ensure robust architectures.

What's the best way to model data in Elixir instead of using OOP classes?

The best way to model data in Elixir is using idiomatic data structures like structs, distinguishing modules and data from processes, and applying explicit pattern matching for maintainable code.

When should I use protocols versus behaviors for Elixir architecture?

Use behaviors and protocols when designing module architectures to separate concerns and enforce explicit contracts, which reduces cognitive friction when moving away from OOP inheritance patterns.

How do I stop writing object-oriented code in Elixir and reduce cognitive friction?

Stop writing OOP code by reframing designs toward idiomatic Elixir, distinguishing modules from data and processes, and applying pattern matching instead of object-oriented inheritance.