Author and edit custom-coded Mailchimp email templates using Mailchimp Template Language (MCTL). Use this skill when the user mentions Mailchimp templates, mc:edit, mc:repeatable, mc:variant, mc:hideable, merge tags like *|FNAME|* or *|UNSUB|*, conditional blocks like *|IF:...|*, importing custom HTML into Mailchimp, MCTL, or building responsive email templates for Mailchimp campaigns. Also use when the user wants to add editable regions, repeatable blocks, or block design variants to an HTML email destined for Mailchimp. Do NOT use for generic transactional email, Mandrill/Handlebars templates, or non-Mailchimp ESPs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mailchimp-claude-skills:mailchimp-template-languageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Authoring **custom-coded HTML email templates** for Mailchimp's "Code your own" template flow: the template language that turns a flat HTML file into a Mailchimp-editable template with drag-and-drop regions, repeatable blocks, block design variants, and conditional content.
Authoring custom-coded HTML email templates for Mailchimp's "Code your own" template flow: the template language that turns a flat HTML file into a Mailchimp-editable template with drag-and-drop regions, repeatable blocks, block design variants, and conditional content.
Two distinct concerns are merged in MCTL and you must keep them separate:
mc:edit, mc:repeatable, mc:variant, mc:hideable, mc:allowdesignmodule) — XML-ish attributes added to HTML tags. They control what the Mailchimp editor can do with a template. They are evaluated once, at template import time.*|FNAME|*, *|UNSUB|*, *|IF:...|*…*|END:IF|*) — string substitution syntax inside the HTML body and subject. Evaluated at send time, per recipient.A template can use either, both, or neither. Custom-coded templates almost always use both.
Trigger this skill when:
mc:edit, mc:repeatable, mc:variant, mc:hideable, or merge tags.Do not use this skill for:
mc: attributes).damientilman/mailchimp-mcp-server), not a template skill.When asked to build or modify a Mailchimp template, work through these phases. Each phase points to the reference file that owns its concern — load only what's relevant to the current request.
What is being requested? A brand-new template, edits to an existing one, conversion of static HTML to MCTL, or refactor of an existing Mailchimp template? Confirm with the user before assuming.
For new templates, load references/blueprints.md and pick the archetype that matches the campaign type (newsletter, promotional, transactional, announcement, re-engagement). The blueprint defines section order, the mc:edit taxonomy, and which blocks should be repeatable or hideable.
Load references/structure.md before generating any HTML. It contains the doctype, the head block, the Outlook MSO conditionals, and the three-table body nest. Do not improvise — email HTML is unforgiving and the head block has client-specific requirements you can't infer.
Then start from assets/skeleton.html as the structural baseline. Copy it, don't recreate it.
Load references/typography.md to set up the token slots (colors, fonts, type scale, line-height ratios). Fill in the brand's actual values — the skill does not impose a default palette or font.
Load references/patterns.md when assembling sections: the eyebrow→headline→subhead rhythm, repeatable card grids with hideable filler, multi-column footer, contact blocks, pull quotes, stat rows, dividers, button variants, feature lists.
Load references/mc-attributes.md alongside, to confirm placement rules for mc:edit (containers like <td>/<div> plus the documented inline exception for <img>), mc:repeatable (block-level elements like <tr>/<table>/<div>/<p> or inline elements like <img>/<a>/<span> per the docs), mc:variant, and mc:hideable. Naming conventions matter for Switch-Template compatibility.
Load references/merge-tags.md when the user mentions personalization, conditional sections, dynamic content, or required compliance tags (*|UNSUB|*, *|LIST:ADDRESS|*). Includes operator support, IFNOT, conditional nesting, and the escape syntax for displaying literal merge tags.
Load references/responsive.md when the template needs to render across viewports: fluid hybrid pattern, media-query mobile rules, dark mode (Apple Mail + Outlook.com auto-inversion mitigation), bulletproof buttons, retina images, web font loading.
Load references/accessibility.md for any template that will ship to a real audience. Covers WCAG 2.2 AA targets (contrast, target size minimum), alt text patterns (decorative vs informative), lang attribute, semantic heading order, role="presentation" on layout tables, link text, and email-specific patterns (preview text, view-in-browser, plain-text alternative). Not optional for professional output.
Load references/inliner.md if the template uses complex selectors or will be sent through multiple ESPs. Mailchimp's built-in inliner is sufficient for most cases; pre-inline with Juice or Premailer when you need a deterministic artifact.
Run scripts/validate.py before declaring the template ready. It catches the structural mistakes that silently break Mailchimp imports — mc:edit on text-level inline elements (with <img> correctly excluded per Mailchimp's documented exception), mc:edit on <table>, nested mc:edit, duplicate names, missing compliance tags, oversized HTML.
After generating, briefly summarize the editable regions, repeatable blocks, hideable sections, and merge tags used. The user needs to know what the Mailchimp editor will expose before they hand the template to a non-technical editor.
Things that will silently break a template if violated. Memorize these:
mc:edit goes on a container (<td>, <div>, <th>) or on an <img>. Per Mailchimp's docs: "mc:edit should be used on a div, table cell, or any other element that can be considered a 'container'" plus the documented inline exception "mc:edit can be placed on an <img> element." Never on <span>, <a>, <strong>, or other text-level inline elements. Never on <table> itself — use the containing <td>.mc:edit names must be unique within a template AND should be consistent across templates if the user might switch templates on an existing campaign. header, header_image, body, sidebar, footer are the names Mailchimp's docs show in examples — use these where applicable so Switch Template works.mc:edit regions. Mailchimp's docs: "You shouldn't nest editable elements within other editable elements."mc:repeatable blocks require a unique mc:repeatable value (the "block type" name) and every editable region inside them needs an mc:edit name. Mailchimp scopes the editable names per instance automatically. Per the docs, mc:repeatable goes on block-level elements like <div> and <p> (and <tr>/<table> for table-based layouts), or on inline elements like <img>, <a>, <span>. Avoid list elements (<ul>, <ol>, <li>).*|UNSUB|* plus the audience address via either *|LIST:ADDRESS|* (plain text) or *|HTML:LIST_ADDRESS_HTML|* (HTML version — note the underscore, not colon, between LIST and ADDRESS). Omit them and Mailchimp will inject its own footer, which clients hate.*|MC_PREVIEW_TEXT|* in the body, not just rely on hidden preheader text. Mailchimp pulls preview text from this tag for the inbox preview.<img> needs width, height, and style="display:block". Outlook will mis-size images sent without explicit attribute dimensions.style="" attributes on the element. Mailchimp's CSS Inliner is opt-in, not automatic — see references/inliner.md for when to pre-inline with Juice or Premailer rather than rely on the toggle. The reason it matters: Gmail web has size limits and sanitization on <style> blocks and the Gmail mobile apps remap class names internally, so any visual rule that has to render reliably in Gmail must already be inlined.When generating a template:
*|LIST:ADDRESS|* and *|UNSUB|*.*|MC_PREVIEW_TEXT|* as the first child of <body>, hidden via styling.mc:edit regions on conventional names (header, body, footer, etc.) so the template survives a "Switch template" operation.<!--[if mso]>...<![endif]--> conditionals where needed for VML buttons, MSO line-height fixes, or font fallbacks.This skill is the authoring half. Pair it with:
damientilman/mailchimp-mcp-server (MCP) — to upload the resulting HTML to Mailchimp via /3.0/templates, list existing templates, or create a campaign from the template. Don't reinvent the upload flow.Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub michtio/mailchimp-claude-skills --plugin mailchimp-claude-skills