--- name: mjml description: This skill should be used when the user asks about MJML syntax, components, or attributes, when writing or editing MJML email templates, when creating responsive email layouts, when troubleshooting MJML rendering issues, or when asking about email client compatibility. version: 1.0.0 --- # MJML Expert MJML (Mailjet Markup Language) is a markup language designed to reduce the pain of coding responsive emails. It compiles to responsive HTML that works across email clients. ## Document Structure Every MJML document follows this hierarchy: ```xml ``` ## Component Hierarchy MJML enforces a strict nesting structure: ``` mjml ├── mj-head │ ├── mj-attributes (define defaults and classes) │ ├── mj-style (CSS styles) │ ├── mj-font (external fonts) │ ├── mj-title (document title) │ ├── mj-preview (inbox preview text) │ └── mj-breakpoint (responsive breakpoint) │ └── mj-body ├── mj-wrapper (optional: wraps multiple sections) │ └── mj-section │ └── mj-section (rows) ├── mj-group (prevents column stacking on mobile) │ └── mj-column │ └── mj-column (responsive columns) ├── mj-text ├── mj-image ├── mj-button ├── mj-divider ├── mj-spacer ├── mj-social ├── mj-navbar ├── mj-table ├── mj-raw ├── mj-accordion ├── mj-carousel └── mj-hero ``` **Critical rule:** Content blocks (text, image, button, etc.) must always be inside `mj-column`. Columns must be inside `mj-section` or `mj-group`. ## Column Sizing ### Auto Sizing By default, columns divide available width equally. Standard email width is 600px: - 2 columns = 300px each - 3 columns = 200px each - 4 columns = 150px each ### Manual Sizing Override with explicit `width` attribute: ```xml ``` Both pixel and percentage values are supported. ## Common Attributes Most components support these attributes: | Attribute | Description | Example | |-----------|-------------|---------| | `padding` | Spacing inside element | `10px 25px` | | `background-color` | Background color | `#ffffff` | | `width` | Element width | `100%` or `300px` | | `align` | Horizontal alignment | `left`, `center`, `right` | | `vertical-align` | Vertical alignment | `top`, `middle`, `bottom` | | `font-family` | Text font | `Arial, sans-serif` | | `font-size` | Text size | `14px` | | `color` | Text color | `#333333` | | `line-height` | Line spacing | `1.5` or `22px` | ## Using Classes Define reusable styles with `mj-class`: ```xml Click me Welcome ``` ## Background Images Sections and wrappers support background images: ```xml Content over image ``` ## Full-Width Sections By default, sections are constrained to 600px. Use `full-width` for edge-to-edge backgrounds: ```xml ``` ## Responsive Behavior - Columns automatically stack vertically on mobile (below breakpoint) - Use `mj-group` to prevent stacking for specific column groups - Default breakpoint is 480px; customize with `mj-breakpoint` - Images scale responsively by default ## Reference Documentation For complete component specifications with all attributes: - Body components: `${CLAUDE_SKILL_ROOT}/references/body-components.md` - Head components: `${CLAUDE_SKILL_ROOT}/references/head-components.md` - Layout patterns: `${CLAUDE_SKILL_ROOT}/references/patterns.md`