Agent skill

Elixir Meta Programming

by pproenca in pproenca/dot-skills

A skill your agent uses when building an Elixir macro or a declarative DSL — a schema/spec/route/workflow language in the shape of Ecto.Schema, Absinthe, Plug.Router, or ExUnit — with quote/unquote…

MITAuto-check passed

Install Elixir Meta Programming

skills CLI
$ npx skills add pproenca/dot-skills --skill elixir-meta-programming -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install pproenca/dot-skills elixir-meta-programming --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.experimental/elixir-meta-programming .claude/skills/elixir-meta-programming && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
elixir-meta-programming
GitHub stars
214
Token cost
~1.5k tokens
SKILL.md length
572 words
Files
16 (incl. references, assets)
Skills in repo
182
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when building an Elixir macro or a declarative DSL — a schema/spec/route/workflow language in the shape of Ecto.Schema, Absinthe, Plug.Router, or ExUnit — with quote/unquote…

  • Works in 4 steps: Macro Design → Quote & Hygiene → DSL Construction → …
  • Building an Elixir macro
  • SKILL.md covers First: is a macro actually…, When to Apply, Rule Categories and Quick Reference, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Elixir Meta Programming is an agent skill from pproenca/dot-skills. Use this skill when building an Elixir macro or a declarative DSL — a schema/spec/route/workflow language in the shape of Ecto.Schema, Absinthe, Plug.Router, or ExUnit — with quote/unquote, using, module attributes, and @beforecompile. It corrects the wrong defaults a model makes once it commits to metaprogramming — putting logic inside the quote block, re-evaluating unquoted expressions, forgetting Macro.escape, fighting hygiene with var!, generating code ad hoc instead of accumulating declarations, and…

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including reference files and assets (for example `AGENTS.md`, `assets/templates/_template.md` and `metadata.json`).

It works with Elixir. The repository describes itself as: A collection of AI agent skills following the Agent Skills open format. The licence is MIT.

When your agent uses it

  • Building an Elixir macro
  • A declarative DSL — a schema/spec/route/workflow language in the shape of Ecto.Schema
  • ExUnit — with quote/unquote
  • Module attributes

Example prompts

  • “/elixir-meta-programming”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Macro Design
  2. Quote & Hygiene
  3. DSL Construction
  4. Compile-Time Validation

What it can do on your machine

Read from SKILL.md and the folder at commit cf93c57. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Elixir Meta Programming loads about 1.5k tokens when it runs, and up to ~6.1k if it reads all its reference files. Until then it costs about 198 tokens; SKILL.md has 572 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~198
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from pproenca/dot-skills at commit cf93c57, republished under its MIT licence (© pproenca). 572 words, ~1,513 tokens.

Download SKILL.mdSave it as .claude/skills/elixir-meta-programming/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.
name
elixir-meta-programming
description
Use this skill when building an Elixir macro or a declarative DSL — a schema/spec/route/workflow language in the shape of Ecto.Schema, Absinthe, Plug.Router, or ExUnit — with quote/unquote, __using__, module attributes, and @before_compile. It corrects the wrong defaults a model makes once it commits to metaprogramming — putting logic inside the quote block, re-evaluating unquoted expressions, forgetting Macro.escape, fighting hygiene with var!, generating code ad hoc instead of accumulating declarations, and validating the DSL at runtime rather than at compile time. Applies to writing or reviewing macro/DSL code. NOT for deciding whether to use a macro at all — that gate belongs to staff-level-elixir and adversarial-elixir, which say prefer plain functions.

Elixir Metaprogramming & DSLs

How to build Elixir macros and declarative DSLs correctly — for the case where a macro is genuinely warranted and a plain function won't do. Each rule corrects a specific wrong default a capable model makes once it starts writing quote/unquote, __using__, and @before_compile; nothing here restates macro basics the model already knows.

First: is a macro actually warranted?

The default answer is no — reach for a higher-order function, a behaviour, or data-plus-an-interpreter first. That gate is not this skill's job; it lives in the sibling skills and you should apply it before opening this one:

  • staff-level-elixir → data-functions-over-macros (solve it with a function first)
  • adversarial-elixir → meta-functions-not-macro-dsl, meta-use-is-not-import, meta-no-compile-time-coupling

A macro earns its place only when you need something a function cannot give — new syntax, control over whether/when arguments evaluate, or code that must exist at compile time (compiling a schema, generating clauses from a declaration list). Once you've crossed that threshold, this skill is how you do it right.

When to Apply

  • Writing a macro — deciding what goes in the quote block versus a runtime function, and how arguments evaluate
  • Building a declarative DSL — a schema/spec/route/workflow block that collects declarations and generates a module
  • Wiring use MyDSL — what __using__ should inject and what belongs in @before_compile
  • Generating functions or clauses from a list of declarations at compile time
  • Making a DSL fail at mix compile with an error that points at the user's source
  • Reviewing existing macro/DSL code for evaluation, hygiene, escaping, and compile-time-validation bugs

Rule Categories

#CategoryPrefixCovers
1Macro DesignmacroThe shape of a single macro — thin macro over a runtime function; defguard for guard-safe constructs
2Quote & HygienequoteCompile-time semantics traps — multiple evaluation, Macro.escape, hygiene vs var!
3DSL ConstructiondslAssembling a block DSL — accumulating attributes + @before_compile, minimal __using__, unquote fragments, introspection
4Compile-Time ValidationvalidFailing well — validate while compiling, locate errors at the caller's line

Quick Reference

1. Macro Design
Show full SKILL.md (222 more words)Show less
2. Quote & Hygiene
3. DSL Construction
4. Compile-Time Validation

How to Use

Read a reference file when its decision comes up. Each rule names the wrong default it corrects, then shows the canonical way (with an Incorrect/Correct contrast only where the wrong way is a real trap).

  • staff-level-elixir — the broader Elixir/OTP/Ecto/Phoenix judgment skill; owns the "prefer a function over a macro" gate
  • adversarial-elixir — architecture-level review that flattens unnecessary macro DSLs; the diagnostic counterpart to this skill

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering
assets/templates/_template.mdTemplate for new rules
metadata.jsonVersion and source references

© pproenca, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 15 other files (references, assets) in skills/.experimental/elixir-meta-programming of pproenca/dot-skills.

  • SKILL.md
  • AGENTS.md
  • assets/templates/_template.md
  • metadata.json
  • references/_sections.md
  • references/dsl-accumulate-attributes.md
  • references/dsl-introspection-function.md
  • references/dsl-unquote-fragments.md
  • references/dsl-using-minimal.md
  • references/macro-defguard-for-guards.md
  • references/macro-thin-delegate-runtime.md
  • references/quote-bind-quoted-single-eval.md
  • references/quote-escape-runtime-data.md
  • references/quote-rely-on-hygiene.md
  • references/valid-fail-at-compile-time.md
  • references/valid-locate-errors-at-caller.md

Open the folder on GitHubat commit cf93c57

Compare with similar skills

Elixir Meta Programming next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Elixir Meta Programming compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Elixir Meta Programming this skillpproenca/dot-skills214—~1.5kAutomated safety check: PassMIT
Membrane Frameworkmembraneframework/membrane_core1.5k—~4.2kAutomated safety check: PassApache-2.0
Web Ng Docker Loopcarverauto/serviceradar921—~737Automated safety check: PassApache-2.0
Components Architectureoperately/operately576—~2.5kAutomated safety check: PassCustom licence
Ash Frameworkpodlove/radiator136—~2.1kAutomated safety check: PassMIT
Elixir Architectmaxim-ist/elixir-architect145—~7.6kAutomated safety check: PassMIT

Similar skills

  • Membrane Framework

    membraneframework/membrane_core

    Work with the Membrane multimedia streaming framework in Elixir.

    1.5k GitHub stars~4.2k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Web Ng Docker Loop

    carverauto/serviceradar

    Run ServiceRadar elixir/web-ng locally against the Docker Compose CNPG database with copied mTLS certs and Docker secrets, then verify dashboard UI changes with Playwright.

    921 GitHub stars~737 tokensUpdated today
    DevOps & CloudAuto-check passed
  • Components Architecture

    operately/operately

    Defines where UI components belong in Operately (TurboUI-first).

    576 GitHub stars~2.5k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Ash Framework

    podlove/radiator

    Use this skill working with Ash Framework or any of its extensions.

    136 GitHub stars~2.1k tokensUpdated 12 days ago
    AI & LLM EngineeringAuto-check passed
  • Elixir Architect

    maxim-ist/elixir-architect

    A skill your agent uses when designing or architecting Elixir/Phoenix applications, creating comprehensive project documentation, planning OTP supervision trees, defining domain models with Ash…

    145 GitHub stars~7.6k tokensUpdated 10 mo ago
    AI & LLM EngineeringAuto-check passed
  • Phoenix Framework

    podlove/radiator

    Use this skill working with Phoenix Framework. An agent skill from podlove/radiator.

    136 GitHub stars~562 tokensUpdated 12 days ago
    AI & LLM EngineeringAuto-check passed

More from pproenca/dot-skills

All 182 skills in this repo
  • Audio Voice Recovery

    pproenca/dot-skills

    Audio forensics and voice recovery guidelines for CSI-level audio analysis.

    214 GitHub stars~3.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Codemod React Pipeline

    pproenca/dot-skills

    Guided, scripted pipeline for running JSX/TSX/React codemods safely across large legacy codebases.

    214 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Dev Rfc

    pproenca/dot-skills

    Create well-structured RFCs and technical proposals for software projects.

    214 GitHub stars~3.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Dx Harness

    pproenca/dot-skills

    Developer-experience friction auditing and fixing — slow onboarding, repeated manual setup steps, missing bootstrap/reset/seed scripts, undiscoverable conventions.

    214 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Language Spec Author

    pproenca/dot-skills

    Turn a rough idea for a language into a complete, implementable specification — a DSL, query, config/data, template, or protocol language — by interviewing the author dimension by dimension until…

    214 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Python Pep Author

    pproenca/dot-skills

    Drafting Python Enhancement Proposals (PEPs) — proposing a Python language feature, a standard library change, an interoperability standard, or an informational/process document for the Python…

    214 GitHub stars~2.1k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Questions about Elixir Meta Programming

What does Elixir Meta Programming do?

A skill your agent uses when building an Elixir macro or a declarative DSL — a schema/spec/route/workflow language in the shape of Ecto.Schema, Absinthe, Plug.Router, or ExUnit — with quote/unquote…. Elixir Meta Programming is an agent skill from pproenca/dot-skills.Router, or ExUnit — with quote/unquote, using, module attributes, and @beforecompile.

When should I use Elixir Meta Programming?

Elixir Meta Programming fits situations like: building an Elixir macro; A declarative DSL — a schema/spec/route/workflow language in the shape of Ecto.Schema; exUnit — with quote/unquote; module attributes.

How do I install Elixir Meta Programming in Claude Code?

Run `npx skills add pproenca/dot-skills --skill elixir-meta-programming -a claude-code`. Or copy the skill folder (skills/.experimental/elixir-meta-programming in pproenca/dot-skills) into .claude/skills/elixir-meta-programming in your project. Claude Code loads it when a task matches its description.

How do I install Elixir Meta Programming in Codex?

Run `npx skills add pproenca/dot-skills --skill elixir-meta-programming -a codex`. Or copy the skill folder (skills/.experimental/elixir-meta-programming in pproenca/dot-skills) into .agents/skills/elixir-meta-programming in your project. Codex loads it when a task matches its description.

Can I use Elixir Meta Programming in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pproenca/dot-skills --skill elixir-meta-programming -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elixir-meta-programming, .gemini/skills/elixir-meta-programming, .github/skills/elixir-meta-programming and .opencode/skills/elixir-meta-programming in your project.

What does Elixir Meta Programming need to run?

SKILL.md names no scripts, command-line tools or credentials: Elixir Meta Programming is instructions for the agent only.

Does Elixir Meta Programming access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Elixir Meta Programming safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Elixir Meta Programming use?

Elixir Meta Programming is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Elixir Meta Programming use?

About 1.5k tokens (SKILL.md is roughly 6.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.6k tokens, read only when the agent opens those files.

What are the alternatives to Elixir Meta Programming?

Skills that share tags, products or a category with Elixir Meta Programming: Membrane Framework (membraneframework/membrane_core, 1.5k stars), Web Ng Docker Loop (carverauto/serviceradar, 921 stars), Components Architecture (operately/operately, 576 stars) and Ash Framework (podlove/radiator, 136 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Elixir Meta Programming?

pproenca (a GitHub user) maintains it in pproenca/dot-skills, which has 214 GitHub stars. The repository holds 182 skills in this directory. The repository was last updated on August 15, 2026.

Source: pproenca/dot-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.