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 skills add framix-team/skill-email-html-mjml --skill email-html-mjmlgit clone --depth 1 https://github.com/framix-team/skill-email-html-mjmlWrote 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.
[](https://agentmods.dev/skills/framix-team/skill-email-html-mjml/email-html-mjml)<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.
<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>- Socket pass
- Snyk pass
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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00090 | $0.02719 |
| Opus 5.5 | $0.00036 | $0.01088 |
| Sonnet 5.5 | $0.00018 | $0.00544 |
| Haiku 4.5 | $0.00009 | $0.00272 |
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 1mo 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 %}`, `{ 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
- 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.
- Plan layout — Decide and announce the structure before writing code (single-column, 2-col grid, hero + content, etc.)
- Load component references — Read the relevant file(s) from the Component Index below before writing any MJML
- Generate MJML — Write complete, valid MJML starting from
<mjml>with a full<mj-head> - Compile — Follow
compilation.md. Runnpx mjmlwith--config.minify=true - Deliver both files — Always output
.mjmlsource AND compiled.html
9 Engineering Rules
- Structural Integrity — All visual content MUST be in
<mj-column>inside<mj-section>. Sections cannot be nested. - 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. - 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 bothbackground-sizeand a fallbackbackground-color. - Gmail Optimization — Use
inline="inline"on<mj-style>for custom CSS. Prefer component attributes (color,font-size) over CSS classes for critical styles. - 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.
- Accessibility — Every
<mj-image>MUST havealt. Always set<mj-title>(populatesaria-label). Maintain WCAG 2.1 AA 4.5:1 contrast. For heading roles, usemj-html-attributes— directrole/aria-levelattributes onmj-textare illegal under strict validation (see Accessibility Checklist below). - Styling Efficiency — Use
<mj-attributes>with<mj-all>, component defaults, and<mj-class>to eliminate repetitive inline styles. - 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. - Templating Support — Plain interpolations (
{{firstName}}) need no wrapping — they pass through text, attributes,mj-titleandmj-previewuntouched. 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; putmj-rawbetween sections, and keep templating tags out of<mj-style>(seecompilation.md).
What ships with it
13 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- assets/examples/basic-layout.mjml 3.7 KB
- assets/examples/newsletter.mjml 5.0 KB
- assets/examples/order-confirmation.mjml 4.1 KB
- assets/examples/partials/footer.mjml 742 B
- assets/examples/promo-sale.mjml 5.6 KB
- compilation.md 5.2 KB
- components/advanced.md 6.0 KB
- components/content.md 5.1 KB
- components/head.md 3.2 KB
- components/interactive.md 8.0 KB
- components/layout.md 4.8 KB
- LICENSE 1.0 KB
- mjml-reference.md 8.5 KB
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.
- 1mo ago First seen · 180 lines · 90 tokens per session scan C 75243d18963a
email-html-mjml is a skill published in the GitHub repository framix-team/skill-email-html-mjml (81 stars, last pushed 2mo ago), licensed MIT. It adds 90 tokens to every session and 2,719 once invoked, about $0.0004 per session on Opus 5.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.
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.
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.
color-palette
Generate complete, accessible colour palettes from a single brand hex. Produces 11-shade scale (50-950), semantic tokens, dark mode variants, Tailwind v4 CSS output, WCAG contrast checks. Use whenever the user supplies a brand hex and asks for a palette, mentions setting up a design system, wants Tailwind theme…
shiny-bslib
Build modern Shiny dashboards and applications using bslib (Bootstrap 5). Use when creating new Shiny apps, modernizing legacy apps (fluidPage, fluidRow/column, tabsetPanel, wellPanel, shinythemes), or working with bslib page layouts, grid systems, cards, value boxes, navigation, sidebars, filling layouts, theming…
design-review
Review a web app or page for visual design quality — layout, typography, spacing, colour, hierarchy, consistency, interaction patterns, and responsive behaviour. Not a UX audit (that checks usability) — this checks whether it looks professional and polished. Produces a design findings report with screenshots.…
responsiveness-check
Test website responsiveness across viewport widths using browser automation. Resizes a single session through breakpoints, screenshots each width, and detects layout transitions (column changes, nav switches, overflow). Produces comparison reports showing exactly where layouts break. Trigger with 'responsiveness…