email-html-mjml

email-html-mjml is a skill for Claude Code, Codex from framix-team/skill-email-html-mjml. It costs 90 tokens per session (2,719 once invoked), scanned C, original, MIT.

A guide for creating responsive HTML email templates with MJML 5, a markup language that produces email-compatible HTML. It focuses on layouts that work across clients such as Outlook, Gmail, Apple Mail, and mobile apps.

In plain words
What is it for?
Use it to create welcome emails, newsletters, promotional messages, and transactional emails, then compile the MJML source into a production HTML file.
Why use it?
Email clients render HTML differently, so the guide provides checks for compatibility, strict validation, and Gmail's message-size limit.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions Claude Code.

Good fit Use it to create welcome emails, newsletters, promotional messages, and transactional emails, then compile the MJML source into a production HTML file.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/framix-team/skill-email-html-mjml/email-html-mjml
Install

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.

Any agent
npx skills add framix-team/skill-email-html-mjml --skill email-html-mjml
Clone the repo
git clone --depth 1 https://github.com/framix-team/skill-email-html-mjml

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for email-html-mjml

README.md
[![agentmods](https://agentmods.dev/badge/skills/framix-team/skill-email-html-mjml/email-html-mjml/github.svg)](https://agentmods.dev/skills/framix-team/skill-email-html-mjml/email-html-mjml)
Your own site
<a href="https://agentmods.dev/skills/framix-team/skill-email-html-mjml/email-html-mjml"><img src="https://agentmods.dev/badge/skills/framix-team/skill-email-html-mjml/email-html-mjml/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for email-html-mjml

Your own site · 80×15
<a href="https://agentmods.dev/skills/framix-team/skill-email-html-mjml/email-html-mjml"><img src="https://agentmods.dev/badge/skills/framix-team/skill-email-html-mjml/email-html-mjml.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 90 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,719 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • Socket pass 18 Mar 2026
  • Snyk pass 27 Feb 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What 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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00090 $0.02719
Opus 5 $0.00045 $0.01359
Sonnet 5 $0.00018 $0.00544
Haiku 4.5 $0.00009 $0.00272

Measured 10d ago against content hash 75243d18963a, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade C, and why

email-html-mjml scanned grade C with 1 finding 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 10d 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.

Hidden instructionshighPrompt injection

Directives inside HTML comments, invisible characters or bidirectional overrides are read by the model and not by the person reviewing the file.

9. **Templating Support** — Plain interpolations (`{{firstName}}`) need no wrapping — they pass through text, attributes, `mj-title` and `mj-preview` untouched. Only block tags containing `<` or `>` (`{% if x < 5 %}`, `{
email-html-mjml/SKILL.md · 180 lines

How it starts

The opening of the file, as written. The whole thing — 180 lines — stays where its author put it; the contents beside it link to each section on GitHub.

email-html-mjml — Responsive Email Developer

Generate valid, cross-client MJML 5.x templates and compile them to production-ready HTML. The primary goal is compatibility: Outlook (2013–365), Gmail (web/app), Apple Mail, and major mobile clients. Every output must be compilable with --config.validationLevel=strict and survive Gmail's 102KB clip limit.


Workflow

  1. Gather requirements — Infer email type, brand colors, and content from the user's message and conversation context. Ask only for what is genuinely missing and blocking progress (e.g., no colors provided and the layout has branded sections). Never front-load a questionnaire.
  2. Plan layout — Decide and announce the structure before writing code (single-column, 2-col grid, hero + content, etc.)
  3. Load component references — Read the relevant file(s) from the Component Index below before writing any MJML
  4. Generate MJML — Write complete, valid MJML starting from <mjml> with a full <mj-head>
  5. Compile — Follow compilation.md. Run npx mjml with --config.minify=true
  6. Deliver both files — Always output .mjml source AND compiled .html

9 Engineering Rules

  1. Structural Integrity — All visual content MUST be in <mj-column> inside <mj-section>. Sections cannot be nested.
  2. Responsive Defaults — Assume 600px width. Use <mj-group> to prevent mobile stacking for side-by-side elements (social bars, logo rows). Use <mj-section gutter="..."> for equal spacing between columns instead of padding tricks.
  3. Outlook Compatibility — Use <mj-font> for web fonts (prevents Times New Roman fallback). Always provide a fallback stack (Arial, sans-serif). For <mj-section> background images, always set both background-size and a fallback background-color.
  4. Gmail Optimization — Use inline="inline" on <mj-style> for custom CSS. Prefer component attributes (color, font-size) over CSS classes for critical styles.
  5. Dark Mode — Include dark mode support when explicitly requested or when the email has a light background that would cause harsh forced-inversion. See the Dark Mode Pattern below.
  6. Accessibility — Every <mj-image> MUST have alt. Always set <mj-title> (populates aria-label). Maintain WCAG 2.1 AA 4.5:1 contrast. For heading roles, use mj-html-attributes — direct role/aria-level attributes on mj-text are illegal under strict validation (see Accessibility Checklist below).
  7. Styling Efficiency — Use <mj-attributes> with <mj-all>, component defaults, and <mj-class> to eliminate repetitive inline styles.
  8. Hero Sections — Use <mj-hero> for full-bleed hero banners; it falls back to a regular section in unsupported clients. Avoid <mj-accordion> and <mj-carousel> — client support is too poor to be useful.
  9. Templating Support — Plain interpolations ({{firstName}}) need no wrapping — they pass through text, attributes, mj-title and mj-preview untouched. Only block tags containing < or > ({% if x < 5 %}, {{#if a<b}}) need <!-- htmlmin:ignore --> protection, or minify silently corrupts them. An <mj-raw> between content components inside a column emits its content between </tr> and <tr> — invalid markup; put mj-raw between sections, and keep templating tags out of <mj-style> (see compilation.md).

Read the full file on GitHub · 180 lines

Changes

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.

  1. 10d ago First seen · 180 lines · 90 tokens per session scan C 75243d18963a

Subscribe to this mod's changes

email-html-mjml is a skill published in the GitHub repository framix-team/skill-email-html-mjml (69 stars, last pushed 1mo ago), licensed MIT. It adds 90 tokens to every session and 2,719 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it C with 1 finding (hidden instructions). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

page-flow-cleanup-audit

A review process for cleaning up a user-facing page or feature flow by tracing where its data and states come from. It checks loading, empty, error, permission, and lifecycle behavior before removing unnecessary code.

danhuaxiansheng/claude-code-cleanup-skills · 93 tokens

wp-ux-design

WordPress UX and design enforcement — Core Web Vitals, mobile-first layout, typography, color systems, navigation, page builder patterns, image optimization, form UX, loading and error states, admin UX, and performance checklists with concrete CSS/HTML/PHP examples.

xonack/wp-ux-design-claude-skill · 59 tokens

interaction-skill

Layer A interaction-mechanics reference anchored to the beui.dev catalog. Stacks on any style skill whenever work adds or changes motion or interaction — micro-interactions, animated components, transitions, gestures, hover/press/state feedback, loading/success/error morphs, 'make it feel alive'. Mandates reading the…

code-yeongyu/oh-my-openagent · 104 tokens

layout-skill

Layer A layout-mechanics reference. Stacks on any style skill when the screen is an app shell, dashboard, settings, list-detail, mail/inbox, or any layout with fixed regions plus a scrolling body — or when a layout breaks under long, empty, or unbroken content. Owns spatial structure and scroll ownership; owns zero…

code-yeongyu/oh-my-openagent · 88 tokens

web-ui-best-practices

Signs of taste in web UI. Use when building or reviewing web interfaces, dashboards, SaaS apps, or internal tools.

jamditis/claude-skills-journalism · 32 tokens

shiny-bslib-theming

Advanced theming for Shiny apps using bslib and Bootstrap 5. Use when customizing app appearance with bstheme(), Bootswatch themes, custom colors, typography, brand.yml integration, Bootstrap Sass variables, custom Sass/CSS rules, dark mode and color modes, dynamic theme switching, real-time theming, theme inspection…

posit-dev/skills · 87 tokens