Mailcoach logo

Mailcoach

CommunityPopular
freekmurze
mailcoach

Manage email marketing with the Mailcoach CLI — email lists, subscribers, campaigns, transactional emails, templates, automations, tags, and segments.

Overview

Publisherfreekmurze
Repositorydotfiles
Skill namemailcoach
Stars
1K
Forks
203
Bundled files
8
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 8 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by freekmurze on GitHub. Read the source before you install it.

Installation

Install the Mailcoach AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/freekmurze/dotfiles/tree/main/config/claude/skills/mailcoach
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/freekmurze/dotfiles.git /tmp/dotfiles
mkdir -p .claude/skills
cp -r /tmp/dotfiles/config/claude/skills/mailcoach .claude/skills/mailcoach
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Mailcoach in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Mailcoach on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Mailcoach is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Mailcoach CLI

Use this skill when the user wants to manage email marketing through their Mailcoach instance. This includes managing email lists, subscribers, campaigns, transactional emails, templates, automations, tags, segments, and suppressions.

Prerequisites

The mailcoach CLI must be installed and authenticated. If a command returns a 401 error, the user needs to authenticate first.

bash
# Authenticate with a Mailcoach instance
mailcoach login

# Verify authentication works
mailcoach list-email-lists

See references/authentication.md for the full login flow.

How commands work

Commands are auto-generated from the Mailcoach OpenAPI spec. Always discover commands dynamically rather than guessing names.

bash
# List all available commands
mailcoach list

# Get help for a specific command (shows all options)
mailcoach <command-name> --help

Command naming

Commands use kebab-case derived from API operation IDs:

  • list-email-lists, create-email-list, show-email-list, update-email-list, delete-email-list
  • list-subscribers, create-subscriber, show-subscriber, update-subscriber
  • list-campaigns, create-campaign, send-campaign, send-campaign-test
  • list-transactional-mails, send-transactional-mail
  • list-tags, create-tag, list-segments, create-segment
  • trigger-automation

Parameter naming

  • Path parameters like {emailList} become required options: --email-list=<uuid>
  • Query parameters like filter[search] become optional options: --filter-search=<value>
  • Both snake_case and camelCase parameter names are converted to --kebab-case (e.g., book_id and bookId both become --book-id)

Sending data

bash
# JSON body (preferred for creates/updates)
mailcoach create-email-list --input '{"name": "Newsletter", "default_from_email": "hi@example.com"}'

# Form fields (repeatable, simpler for flat data)
mailcoach create-email-list --field name="Newsletter" --field default_from_email="hi@example.com"

# File uploads (prefix path with @)
mailcoach create-subscriber-import --email-list=<uuid> --field csv=@/path/to/subscribers.csv
  • --field values are sent as JSON by default. When any field contains a file (@ prefix), the entire request switches to multipart/form-data.
  • You cannot combine --field and --input in the same command.

Output formats

bash
mailcoach list-email-lists              # Human-readable table (default)
mailcoach list-email-lists --json       # Raw JSON (useful for parsing)
mailcoach list-email-lists --yaml       # YAML output
mailcoach list-email-lists --minify     # Minified single-line JSON (implies --json)
mailcoach list-email-lists --H          # Include response headers
mailcoach list-email-lists --output-html # Show HTML response bodies (hidden by default)

Always use --json when you need to extract UUIDs or data from responses for use in subsequent commands.

Filtering, sorting, and pagination

bash
mailcoach list-subscribers --email-list=<uuid> --filter-search="john" --sort=email --filter-per-page=50 --filter-page=2
  • --filter-search: fuzzy text search
  • --sort: field name, prefix with - for descending (e.g., --sort=-created_at)
  • --filter-per-page: results per page (max 100, default 15)
  • --filter-page: page number

Error handling

  • 401: Authentication failed. Run mailcoach login to re-authenticate.
  • 422: Validation error. The response body contains details about which fields are invalid.
  • 404: Resource not found. Verify the UUID is correct.
  • Missing path parameter: The CLI tells you which --option is required.
  • All errors exit with a non-zero code, so you can chain commands with &&.
  • HTML error responses hide the body by default — add --output-html to see them.

Common workflows

Command patterns

Email lists and subscribers

Campaigns

Transactional emails

Templates and automations

Important notes

  • Mailcoach is self-hosted: each user has a unique instance URL configured during mailcoach login
  • The OpenAPI spec is cached for 24 hours. Run mailcoach clear-cache to force a refresh if commands seem outdated.
  • UUIDs are used as resource identifiers throughout the API.
  • When chaining commands (e.g., create a list then add subscribers), use --json to extract UUIDs from responses.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Mailcoach AI skill do?

Manage email marketing with the Mailcoach CLI — email lists, subscribers, campaigns, transactional emails, templates, automations, tags, and segments.

Why use Mailcoach on TypingMind?

Because you install it once and use it with any model. Mailcoach is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Mailcoach in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/freekmurze/dotfiles/tree/main/config/claude/skills/mailcoach. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Mailcoach?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Mailcoach?

As many as you like. As long as a model supports skills, you can use Mailcoach with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Mailcoach AI skill free?

It is published on GitHub by freekmurze. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇