{
  "slug": "email-html-mjml",
  "category": "skill",
  "name": "The Email Template",
  "domaene": "Design & Kreativ",
  "typTags": [
    "ausführbar",
    "gestaltend",
    "prüfend"
  ],
  "teaser": "Builds responsive MJML 4.x email templates and compiles them to production-ready HTML, checked against the quirks of Outlook, Gmail, and mobile clients.",
  "hat": {
    "schritte": true,
    "beispiel_szenario": true,
    "ausgabebeispiel": false,
    "konfiguration": false,
    "betrieb": false,
    "arbeitsprompts": false,
    "einrichtung": true,
    "umsetzung": true,
    "export": false,
    "staerken": false,
    "ki_funktionen": false,
    "einschraenkungen": false,
    "weniger_geeignet_fuer": false
  },
  "sections": [
    {
      "id": "description",
      "title": "Description",
      "html": "<p>Email HTML is one of the most unforgiving target formats on the web: every major client brings its own rendering quirks, from Outlook&#39;s VML backgrounds to Gmail&#39;s clipping limit. The Email Template works with the MJML 4.x framework, which hides these quirks behind a clean component language, and always delivers both files in the end: the editable .mjml source and the compiled, ready-to-send .html.</p>\n<p>The skill is built for welcome emails, promotional emails, order confirmations, and newsletters, anywhere an email needs to look reliable in real inboxes, not just in a design preview. Nine fixed technical rules, covering everything from structure to accessibility to dark mode support, plus a collection of known pitfalls per client, mean fewer surprises once the email reaches a real inbox.</p>\n<p>The honest limit: the skill compiles locally via Node.js and npx, a working Node environment version 14 or higher is required. It checks structure, validation, and the 102 KB clipping limit, not the actual dispatch through your email service, and not whether the content itself is compelling.</p>\n"
    },
    {
      "id": "skill-text",
      "title": "Skill Text",
      "html": "<p>This is an openly attributed external skill from Framix. Source: <a href=\"https://github.com/framix-team/skill-email-html-mjml\">https://github.com/framix-team/skill-email-html-mjml</a></p>\n<p>This skill requires Node.js version 14 or higher and an environment with terminal and file access, since it compiles MJML locally via npx. Copy the instructions below into your own skill environment if you want to set up this skill yourself. As a file: <a href=\"/ai-library/email-html-mjml.en.json\">email-html-mjml.en.json</a></p>\n"
    }
  ],
  "schritte": [
    {
      "nr": 1,
      "titel": "Clarify requirements",
      "beschreibung": "Email type, brand colors, and content are named or derived from the conversation so far, and the layout is defined upfront.",
      "rolle": "mensch"
    },
    {
      "nr": 2,
      "titel": "Load component references",
      "beschreibung": "The reference files matching the chosen layout are loaded before the MJML structure is written.",
      "rolle": "automatisch"
    },
    {
      "nr": 3,
      "titel": "Build the MJML",
      "beschreibung": "A complete MJML document with a full head section is created, built from the matching components.",
      "rolle": "automatisch"
    },
    {
      "nr": 4,
      "titel": "Compile and validate",
      "beschreibung": "The MJML is compiled to HTML with minification enabled and strict validation.",
      "rolle": "automatisch"
    },
    {
      "nr": 5,
      "titel": "Deliver both files",
      "beschreibung": "The MJML source and the compiled, ready-to-send HTML are ready.",
      "rolle": "ergebnis"
    },
    {
      "nr": 6,
      "titel": "Check the result",
      "beschreibung": "The compiled HTML file is checked in a preview or a real inbox before sending, especially in Outlook and with dark mode enabled.",
      "rolle": "freigabe"
    }
  ],
  "herausgeber": "Voyage Digital",
  "version": "2.0",
  "stand": "2026-07-26",
  "umsetzung": [
    {
      "titel": "Provide a Node environment",
      "text": "The skill needs an environment with terminal and file access, plus a locally installed MJML version, with Node.js version 14 or higher."
    },
    {
      "titel": "Start with a single email type",
      "text": "The best way in is a single, clearly scoped template, for example a welcome email, to get familiar with the layout and rules."
    },
    {
      "titel": "Use it for recurring templates",
      "text": "The skill is particularly suited to email types that get refilled regularly, such as order confirmations or seasonal promotional emails."
    },
    {
      "titel": "Use dark mode deliberately",
      "text": "The dark mode pattern is most worthwhile when a light background would otherwise result in a harsh forced inversion."
    },
    {
      "titel": "Check the result in real inboxes",
      "text": "Before sending, it is worth a look in a preview or a real inbox, especially in Outlook and with dark mode enabled."
    }
  ],
  "zutaten": [
    "Email type",
    "Brand colors",
    "Content",
    "Dark mode"
  ],
  "beispielSzenario": "A marketing team is planning a promotional email for a time-limited price offer that starts in a week. The email type, the two brand colors, the core content with a discount code and a deadline, and the request for dark mode support are provided, since part of the audience reads in dark mode. The Email Template builds the structure with a hero section, a button, and a fallback background color for Outlook, compiles the result with strict validation, and delivers the MJML source together with the finished HTML, which stays under Gmail's clipping limit and can be handed straight to the delivery service.",
  "eingaben": [
    {
      "feld": "Email type, e.g. welcome email, promotional email, order confirmation, newsletter",
      "pflicht": true
    },
    {
      "feld": "Brand colors and content, from context or stated directly",
      "pflicht": true
    },
    {
      "feld": "Dark mode support wanted or not",
      "pflicht": false
    },
    {
      "feld": "Existing MJML template, if an existing template is being edited",
      "pflicht": false
    }
  ],
  "ausgabe": "The MJML source file and the compiled, production-ready HTML file, checked against Outlook, Gmail, and mobile rendering pitfalls, with alt text and WCAG-compliant contrast.",
  "prompt": "# ROLE\nYou create valid, cross-client MJML 4.x templates and compile them to production-ready HTML. The top priority is compatibility: Outlook (2013 to 365), Gmail (web and app), Apple Mail, and the major mobile clients. Every output must compile with --config.validationLevel=strict and stay within Gmail's 102 KB clipping limit.\n\n# WORKFLOW\n1. Capture requirements: derive email type, brand colors, and content from the message and the conversation so far. Only ask about what is genuinely missing and blocking progress, for example missing colors for brand-bound sections. Never front-load a full questionnaire.\n2. Plan the layout: define and name the structure before writing code, for example single column, two-column grid, hero with content below.\n3. Load component references: before writing MJML, read the matching files from the component index.\n4. Generate MJML: complete MJML starting from <mjml> with a full <mj-head>.\n5. Compile: run npx mjml with --config.minify=true.\n6. Deliver both files: always the .mjml source and the compiled .html.\n\n# NINE TECHNICAL RULES\n1. Structural integrity: all visible content belongs inside <mj-column> within <mj-section>. Sections must not be nested.\n2. Responsive default width: 600 pixels. Use <mj-group> so that elements placed side by side (social bar, logo row) do not stack on top of each other on mobile devices.\n3. Outlook compatibility: embed web fonts via <mj-font> (prevents the fallback to Times New Roman), always specify a fallback stack (Arial, sans-serif). For background images in <mj-section>, always set background-size and a fallback background color.\n4. Gmail optimization: use <mj-style> with inline=\"inline\" for custom CSS. Set critical styles via component attributes (color, font-size) instead of CSS classes.\n5. Dark mode: add support when explicitly requested, or when a light background would otherwise result in a harsh forced inversion. See the dark mode pattern below.\n6. Accessibility: every <mj-image> needs alt text, always set <mj-title> (fills aria-label), maintain WCAG 2.1 AA contrast of at least 4.5 to 1. Set heading roles via mj-html-attributes, never role or aria-level directly on mj-text, that is not permitted under strict validation.\n7. Efficient formatting: use <mj-attributes> with <mj-all>, component defaults, and <mj-class> to avoid repeated inline styles.\n8. Hero sections: use <mj-hero> for full-bleed hero banners, it falls back automatically to a regular section in unsupported clients. Avoid <mj-accordion> and <mj-carousel>, client support is too weak.\n9. Templating support: embed dynamic tags (Handlebars, Liquid) inside <mj-raw> so the MJML parser does not touch them.\n\n# CRITICAL PITFALLS\nOutlook: background images are generated via VML only for <mj-section> and <mj-hero>, nowhere else. Positioning only via keywords (top, center, bottom), pixel values are ignored. Always combine background-repeat=\"no-repeat\" with an explicit background-size. <mj-font> hides @font-face from Outlook using MSO comments.\n\nGmail: set critical layout via component attributes, CSS classes can be stripped. Always compile with --config.minify=true because of the 102 KB clipping limit.\n\niOS and Android: always compile with --config.minify=true, it removes whitespace between inline-block columns. Whitespace between tags causes wrapping on mobile devices even within <mj-group>.\n\nVertical align: if one column in a section sets vertical-align, all columns in that section must set it explicitly.\n\nJavaScript: completely blocked in all email clients (Gmail, Outlook, Apple Mail, iOS Mail). No onclick, no clipboard API, no interactivity. Elements that look interactive, such as copy buttons or toggles, are purely decorative.\n\n# DARK MODE PATTERN\n```xml\n<mj-head>\n  <mj-raw>\n    <meta name=\"color-scheme\" content=\"light dark\">\n    <meta name=\"supported-color-schemes\" content=\"light dark\">\n  </mj-raw>\n  <mj-style inline=\"inline\">\n    .dark-logo { display: none !important; }\n  </mj-style>\n  <mj-style>\n    @media (prefers-color-scheme: dark) {\n      .light-logo { display: none !important; }\n      .dark-logo  { display: block !important; }\n    }\n  </mj-style>\n</mj-head>\n```\nSafe neutral tones: #121212 instead of #000000 and #F1F1F1 instead of #FFFFFF, this avoids a harsh-looking forced inversion.\n\n# ACCESSIBILITY CHECKLIST\n<mj-title> set (screen reader label and aria-label), lang attribute on the root <mjml> element, alt on every <mj-image> and <mj-social-element>, heading role set via mj-html-attributes instead of a direct attribute on mj-text, contrast ratio of at least 4.5 to 1 on all text-background pairs, no text as image, always real <mj-text> blocks.\n\n# COMPONENT INDEX\nBefore writing any MJML line, read the matching file: head section (mj-attributes, mj-font, mj-style, mj-preview, mj-breakpoint, mj-html-attributes), layout (mj-body, mj-section, mj-column, mj-group, mj-wrapper), content (mj-text, mj-image, mj-button, mj-divider, mj-spacer, mj-table), interactive (mj-accordion, mj-carousel, mj-social, mj-navbar), advanced (mj-hero, mj-raw, mj-include). A general reference on hierarchy, closing tags, validation, width calculation, and Gmail clipping rounds out the index.\n\n# COMPILATION\n```bash\nnpx mjml template.mjml -o dist/template.html --config.minify=true --config.validationLevel=strict\n```\nFixed rules: never npm install -g mjml. Always use npx or ./node_modules/.bin/mjml. If mjml is not in package.json, suggest npm install -D mjml.\n\n# OUTPUT\nAlways deliver both files: <name>.mjml as the editable, version-controllable source, <name>.html as the production-ready output that can be sent through your email delivery service. Name files after the email type, for example welcome.mjml, promo-sale.mjml, order-confirmation.mjml.\n\n# DEFINITION OF DONE\n[ ] Compiles with --config.validationLevel=strict without errors\n[ ] Stays under the 102 KB clipping limit for Gmail\n[ ] All nine technical rules followed\n[ ] Accessibility checklist fully satisfied\n[ ] Dark mode pattern added with safe neutral tones where needed\n[ ] Both files delivered: .mjml source and compiled .html\n\n# DEPENDENCIES\nNode.js version 14 or higher, MJML installed locally per project (npm install -D mjml), never globally.",
  "einrichtung": {
    "intro": "Step-by-step guides for ChatGPT, Claude, Copilot Studio and Langdock.",
    "plattformen": [
      {
        "plattform": "ChatGPT",
        "anbieter": "OpenAI",
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Click your profile picture and select \"Skills\".",
          "Click \"Create skill\" and paste the copied text as the instruction.",
          "Adjust inputs, outputs and format where your case requires it.",
          "Save the skill. It is available in all chats from that point on."
        ],
        "doku": {
          "label": {
            "de": "OpenAI Dokumentation: Skills in ChatGPT",
            "en": "OpenAI documentation: Skills in ChatGPT"
          },
          "url": "https://help.openai.com/de-de/articles/20001066-skills-in-chatgpt"
        }
      },
      {
        "plattform": "Claude",
        "anbieter": "Anthropic",
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Open claude.ai and go to \"Skills\" in your profile.",
          "Create a new skill and paste the copied text as the instruction.",
          "The skill works in claude.ai, in Claude Code and through the API.",
          "Available on the Pro, Max, Team and Enterprise plans."
        ],
        "doku": {
          "label": {
            "de": "Anthropic Dokumentation: Benutzerdefinierte Skills erstellen",
            "en": "Anthropic documentation: Creating custom skills"
          },
          "url": "https://support.claude.com/de/articles/12512198-benutzerdefinierte-skills-erstellen"
        }
      },
      {
        "plattform": "Copilot Studio",
        "anbieter": "Microsoft",
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Open Copilot Studio and create a new agent.",
          "Paste the copied text as the instruction.",
          "Connect knowledge sources and tools where needed.",
          "Publish the agent for yourself or for your organisation."
        ],
        "doku": {
          "label": {
            "de": "Microsoft Dokumentation: Einen Agent erstellen und bereitstellen",
            "en": "Microsoft documentation: Create and deploy an agent"
          },
          "url": "https://learn.microsoft.com/de-de/microsoft-copilot-studio/fundamentals-get-started"
        }
      },
      {
        "plattform": "Langdock",
        "anbieter": null,
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Open the sidebar and click \"Add skill\".",
          "Paste the copied text directly as the instruction.",
          "Connect the skill to integrations such as Gmail or Slack where needed.",
          "Save the skill and release it for yourself or your team."
        ],
        "doku": {
          "label": {
            "de": "Langdock Dokumentation: Skills",
            "en": "Langdock documentation: Skills"
          },
          "url": "https://docs.langdock.com/de/product/chat/skills"
        }
      }
    ]
  },
  "itemIcon": "mails",
  "recommended": [
    {
      "slug": "ux-designer",
      "category": "tool",
      "name": "ux-designer-skill",
      "teaser": "An external skill repository that gives Claude Code curated, working knowledge of UX/UI design, covering layout, typography, color, and WCAG 2.2 AA conformance, for designing new interfaces and reviewing existing ones.",
      "domaene": "Design & Kreativ"
    },
    {
      "slug": "canvas-design",
      "category": "skill",
      "name": "The Artwork",
      "teaser": "Develops a standalone design philosophy from a single cue, then turns it into a museum-quality visual piece in PDF or PNG.",
      "domaene": "Design & Kreativ",
      "itemIcon": "palette"
    },
    {
      "slug": "design-extract",
      "category": "tool",
      "name": "design-extract",
      "teaser": "design-extract reads a website's complete design system straight from the DOM and returns it as tokens, themes and component anatomy.",
      "domaene": "Design & Kreativ"
    },
    {
      "slug": "flowbite",
      "category": "tool",
      "name": "Flowbite",
      "teaser": "Open source ecosystem of Tailwind CSS UI components with standalone React, Vue, and Svelte libraries alongside the core HTML variant, complemented by a Figma design system and paid page-section add-ons.",
      "domaene": "Design & Kreativ",
      "logoFile": "flowbite.svg",
      "logoEinzug": 1
    },
    {
      "slug": "frameblox",
      "category": "tool",
      "name": "Frameblox",
      "teaser": "Framer-native UI kit with over 1,400 sections, seven CMS collections, and four website templates that drops directly into a Framer project through a plugin or one-click copy, but does not provide a standalone code export outside Framer.",
      "domaene": "Design & Kreativ",
      "logoFile": "frameblox.svg",
      "logoEinzug": 1
    },
    {
      "slug": "framer",
      "category": "tool",
      "name": "Framer",
      "teaser": "Framer is a no-code website builder with an integrated CMS and a visual design editor that publishes directly to a live site.",
      "domaene": "Design & Kreativ",
      "logoFile": "framer.png",
      "logoEinzug": 0.78
    },
    {
      "slug": "framify",
      "category": "tool",
      "name": "Framify",
      "teaser": "A Framer-native component and template plugin with over 1,600 sections, UI building blocks, and templates for direct insertion into the Framer canvas, without export to clean React code.",
      "domaene": "Design & Kreativ"
    },
    {
      "slug": "freepik",
      "category": "tool",
      "name": "Freepik",
      "teaser": "An all-in-one platform that bundles AI image, video and audio generation with a large, commercially licensed stock library under a single interface.",
      "domaene": "Design & Kreativ",
      "logoFile": "freepik.svg",
      "logoEinzug": 0.78
    },
    {
      "slug": "fulldev-ui",
      "category": "tool",
      "name": "Fulldev UI",
      "teaser": "Open source library of Astro-native UI components and ready-made marketing sections in the Shadcn registry format, with props-based customization instead of a React runtime or plain HTML copy-paste.",
      "domaene": "Design & Kreativ",
      "logoFile": "fulldev-ui.svg",
      "logoEinzug": 0.78
    },
    {
      "slug": "hyperui",
      "category": "tool",
      "name": "HyperUI",
      "teaser": "Framework-neutral collection of 523 copy-paste-ready Tailwind CSS snippets for application, marketing, and neobrutalism interfaces, open source under the MIT license.",
      "domaene": "Design & Kreativ",
      "logoFile": "hyperui.png",
      "logoEinzug": 0.78
    },
    {
      "slug": "krea",
      "category": "tool",
      "name": "Krea",
      "teaser": "Web platform and API that bundles more than 40 third-party AI image and video models, including Flux, Veo 3, and Kling, in one interface for generation, editing, upscaling, and LoRA training.",
      "domaene": "Design & Kreativ",
      "logoFile": "krea.svg",
      "logoEinzug": 1
    },
    {
      "slug": "launch-ui",
      "category": "tool",
      "name": "Launch UI",
      "teaser": "Component library for landing pages and marketing sections built on React, Next.js, and Tailwind, directly compatible with shadcn/ui and Radix, with full code ownership in your own project instead of a page-builder subscription.",
      "domaene": "Design & Kreativ",
      "logoFile": "launch-ui.svg",
      "logoEinzug": 1
    },
    {
      "slug": "liquid-glass-js",
      "category": "tool",
      "name": "liquid-glass-js",
      "teaser": "Open source vanilla JavaScript library for WebGL-based glass effects in the style of Apple's Liquid Glass, delivering genuine multi-layer light refraction instead of CSS blur for buttons and containers.",
      "domaene": "Design & Kreativ"
    },
    {
      "slug": "liquid-logo",
      "category": "tool",
      "name": "Liquid Logo",
      "teaser": "Free open source browser tool that turns an uploaded logo into a flowing liquid metal animation via WebGL shaders, exportable as PNG or MP4.",
      "domaene": "Design & Kreativ"
    },
    {
      "slug": "magicui",
      "category": "tool",
      "name": "MagicUI",
      "teaser": "MagicUI is a library of open source, animated React and Tailwind components that gives marketing and product teams production ready motion effects without building them from scratch.",
      "domaene": "Design & Kreativ",
      "logoFile": "magicui.svg",
      "logoEinzug": 1
    },
    {
      "slug": "magnific",
      "category": "tool",
      "name": "Magnific",
      "teaser": "Node-based creative platform with roughly 30 AI tools for image, video, audio, and 3D, a connected library of more than 250 million licensed assets, and MCP access for AI assistants.",
      "domaene": "Design & Kreativ",
      "logoFile": "magnific.svg",
      "logoEinzug": 0.78
    },
    {
      "slug": "meraki-ui",
      "category": "tool",
      "name": "Meraki UI",
      "teaser": "Free, open source collection of 228 Tailwind CSS HTML components with built-in dark mode and RTL support, where interactive building blocks ship with ready-wired Alpine.js state.",
      "domaene": "Design & Kreativ",
      "logoFile": "meraki-ui.svg",
      "logoEinzug": 1
    },
    {
      "slug": "midjourney",
      "category": "tool",
      "name": "Midjourney",
      "teaser": "Midjourney is an AI platform for image and video generation valued for its visual quality, best suited as a peripheral tool for moodboards and concept exploration rather than a core building block for SME workflows.",
      "domaene": "Design & Kreativ",
      "logoFile": "midjourney.png",
      "logoEinzug": 0.78
    },
    {
      "slug": "blog-seo-spur",
      "category": "workflow",
      "name": "The Blog SEO Track",
      "teaser": "The Blog SEO Track automatically checks every blog draft for SEO issues as soon as it enters review and leaves a prioritized list of optimization suggestions directly in the CMS.",
      "domaene": "SEO & KI-Sichtbarkeit",
      "itemIcon": "search"
    },
    {
      "slug": "hausstil-lektor",
      "category": "assistent",
      "name": "The House Style Editor",
      "teaser": "Checks German texts for spelling, grammar and punctuation and flags every deviation from the mandatory house style rules of formal address and zero dashes in a clear, traceable correction table.",
      "domaene": "Content & Redaktion",
      "itemIcon": "spell-check"
    }
  ]
}