---
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`