Skills migma

Generate, send, validate, and export AI-powered emails from the terminal; manage contacts, segments, tags, domains, and webhooks with Migma CLI.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/adamsey/migma" ~/.claude/skills/openclaw-skills-migma && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/adamsey/migma" ~/.openclaw/skills/openclaw-skills-migma && rm -rf "$T"
manifest: skills/adamsey/migma/SKILL.md
source content

Migma

Create and send professional, on-brand emails with AI. Your agent can design emails from a prompt, send them instantly through a managed domain, and manage an entire audience — all from the terminal.

Always pass

--json
for structured output.

First-time setup

If the user hasn't set up yet, run these steps once:

# 1. Create an instant sending domain (no DNS needed)
migma domains managed create <companyname> --json
# → Sends from: hello@<companyname>.migma.email

# 2. Set a default project (brand)
migma projects list --json
migma projects use <projectId>

Create an email

When the user asks to create, design, or generate an email:

migma generate "Welcome email for new subscribers" --wait --json

The

--wait
flag blocks until the AI finishes. The JSON response includes
conversationId
,
subject
, and
html
.

To save the HTML locally, add

--save ./email.html
. To include a reference image (screenshot, design mockup), add
--image <url>
.

Send an email

When the user asks to send an email to someone:

# Send a generated email directly
migma send --to sarah@example.com --subject "Welcome!" \
  --from-conversation <conversationId> \
  --from hello@company.migma.email --from-name "Company" --json

# Or send from a local HTML file
migma send --to sarah@example.com --subject "Hello" \
  --html ./email.html \
  --from hello@company.migma.email --from-name "Company" --json

# Send to an entire segment or tag
migma send --segment <id> --subject "Big News" --html ./email.html \
  --from hello@company.migma.email --from-name "Company" --json

# Personalize with template variables
migma send --to user@example.com --subject "Hi {{name}}" --html ./email.html \
  --from hello@company.migma.email --from-name "Company" \
  --var name=Sarah --var discount=20 --json

--from-conversation
auto-exports the HTML from a generated email — no separate export step.

Validate an email

When the user wants to check an email before sending:

migma validate all --html ./email.html --json
migma validate all --conversation <conversationId> --json

Returns an overall score plus individual checks: compatibility (30+ email clients), broken links, spelling/grammar, and deliverability/spam score. Individual checks:

migma validate compatibility
,
links
,
spelling
,
deliverability
.

Export to platforms

When the user wants to export to an ESP or download a file:

migma export html <conversationId> --output ./email.html
migma export klaviyo <conversationId> --json
migma export mailchimp <conversationId> --json
migma export hubspot <conversationId> --json
migma export pdf <conversationId> --json
migma export mjml <conversationId> --json

Manage contacts

migma contacts add --email user@example.com --firstName John --json
migma contacts list --json
migma contacts import ./contacts.csv --json
migma contacts remove <id> --json

Manage tags and segments

migma tags create --name "VIP" --json
migma tags list --json
migma segments create --name "Active Users" --description "..." --json
migma segments list --json

Import a brand

When the user wants to set up a new brand from their website:

migma projects import https://yourbrand.com --wait --json
migma projects use <projectId>

This fetches logos, colors, fonts, and brand voice automatically.

Error handling

On error,

--json
returns:

{"error": {"message": "Not found", "code": "not_found", "statusCode": 404}}