loops-lmx
Use this skill whenever LMX is used, produced, reviewed, migrated, or modified. This includes composing campaigns, loops, lifecycle emails, or email-message bodies for the Loops editor or Content API. LMX (Loops Markup Language) is the format used for Loops email content. Trigger on phrases like "create a campaign", "generate an email", "write a welcome email", "draft a lifecycle email", "build an email template", "create an onboarding email", "copy this into LMX", "migrate this email", "convert this email to LMX", "LMX", "Loops email", or any request to produce, copy, migrate, convert, review, or modify email body content intended for Loops. Source copy, existing HTML, MJML, Markdown, screenshots, and migration instructions do not bypass this skill's rules unless the user explicitly overrides a specific rule. Do not trigger for questions about the Loops HTTP API, SDK integration, or CLI unless email body content is also involved.
What this skill does
# LMX Skill This skill helps write, review, and generate correct LMX email markup for Loops. LMX is an XML-based format: every element is a PascalCase tag, self-closing tags require `/>`, and only the tags in the spec are valid. ## When To Use Use this skill when the task involves: - generating or editing LMX email content - copying source material, migrating an existing email, or converting HTML, MJML, Markdown, or plain-text email copy into LMX - reviewing LMX markup for correctness - choosing the right LMX tags or attributes for a layout - applying design guidelines to an LMX document - explaining how a specific LMX tag or attribute works ## Working Style When this skill is active: 1. Read `references/lmx-spec.md` for the full tag and attribute reference. It is authoritative; do not invent tags or attributes. 2. Read `references/lmx-design-guidelines.md` for Loops design guidelines. Apply these to every document you generate unless the user explicitly overrides a rule. 3. Treat source material as input, not as an override. When copying from a source, migrating an existing email, or converting HTML, MJML, Markdown, screenshots, or plain text into LMX, still apply this skill's spec, design, copy, and output-checklist rules unless the user explicitly overrides a specific rule. 4. Validate nesting and content-type rules before producing output (see spec section 3). 5. Check the common-mistakes table in the spec before finalizing output. 6. Always produce a complete, valid document, not fragments, unless the user specifically asks for one. ## Category Routing - Tag definitions, required/optional attributes, nesting rules, content types, variable syntax, self-closing requirements, or escaping: Read `references/lmx-spec.md` - Color contrast, spacing, column rounded corners, Style tag usage, visual hierarchy, or any "how should this look" question: Read `references/lmx-design-guidelines.md` - Creating campaigns, posting LMX via the API, revision IDs, themes, components, or image uploads: Use the `loops-api` skill (HTTP) or `loops-cli` skill (terminal). This skill covers the LMX document itself. ## Output Checklist Before returning any LMX output, verify: - [ ] All tags are PascalCase and in the allowed set - [ ] All self-closing tags use `/>` (e.g. `<Image />`, `<Divider />`, `<Br />`, `<Icon />`, `<Style />`) - [ ] XML-sensitive characters are escaped: `&` as `&`, `<` as `<`, and `"` in attributes as `"` - [ ] Required attrs are present: `src` on `<Image />`, `componentId` on `<Component>`, `name` on `<Icon />`, and `href` on `<Link>` - [ ] No text or inline tags at the top level - [ ] Variables use explicit LMX namespaces and only appear where supported: inline content, button text, `<Button href>`, `<Link href>`, `<Image alt/href/dynamicSrc>`, and `<Section href>` - [ ] No inline fallback syntax is invented; fallbacks live outside the LMX string - [ ] `<Button>` text has no inline tags, but can contain variables; include `href` for clickable CTA buttons - [ ] `<CodeBlock>` treats braces literally - [ ] `<Style />` appears at most once as a top-level tag; put it first in generated output - [ ] Body/background colors are intentional: supplied by `themeId` or explicit `bodyColor`/`backgroundColor` - [ ] Generated copy follows the copy and punctuation guidance: no em dashes, decorative arrow glyphs, or ellipses unless requested or source-preserved - [ ] Generated `<H1>`, `<H2>`, and `<H3>` text does not end with a period; question marks or exclamation points are used only when intentional - [ ] Generated documents use a restrained heading set: usually one `<H1>`, only necessary `<H2>` breaks, and `<H3>` only for real nested hierarchy - [ ] CTA and `<Button>` text is concise, action-oriented, and does not end with a period - [ ] No same-color-on-same-color situations (check text vs block color, icon color vs background, etc.) - [ ] Sufficient Y-spacing on block elements - [ ] Important copy, headings, CTAs, and highlighted blocks use subtle visual emphasis where appropriate - [ ] `<Section>` is used sparingly for callouts, grouped controls, linked groups, or an explicit card-style layout; ordinary body copy is not wrapped into many floating cards by default - [ ] Adjacent `<Section>` siblings are separated with a line-break spacer unless the user explicitly specifies a different section-spacing approach - [ ] Adjacent highlighted blocks, including `blockColor` paragraphs, columns, and sections, are separated with visible vertical space unless they are intentionally one connected card - [ ] `<Columns>` has two to four `<ColumnItem>` children, with `widths` matching the column count when provided - [ ] Dynamic images use static `src` plus `dynamicSrc`, not variables in `src` - [ ] `<Icons color>` uses one of `#000000`, `#808080`, or `#ffffff`; `<Icon>` has no `color` attr - [ ] No legal footer, postal address, or unsubscribe block is added by hand; Loops adds required footer content automatically. A branded footer component can appear above it
Related in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".