Create and edit rich text message drafts for Gmail, Outlook, and WhatsApp. Writes Markdown fragments and assembles platform-specific HTML via build script. Use when writing emails, drafting emails, composing replies, sending messages, writing WhatsApp messages, sending Gmail messages, replying via email, or when user mentions Gmail, Outlook, WhatsApp, email client, "email to", "reply to", "draft an email", "write an email", "send a message", "message to", "WhatsApp to", or professional correspondence.
Create rich text messages that paste perfectly into Gmail, Outlook, or convert to WhatsApp-formatted text. Fragments are written in Markdown - the build script converts to platform-specific HTML automatically.
Claude writes Build script assembles Output (separate file)
name.fragment.md ---> Markdown -> HTML name.html
(10-30 lines) Gmail transform (tags) (self-contained preview
Outlook transform (styles) with three body versions)
Inject into shell.html
The fragment is the source of truth. The assembled HTML is a derived output. Never edit the .html output directly.
.fragment.md file to data/writing/email_drafts/--serve to produce the preview HTML and launch the serveruv run .claude/skills/message/scripts/assemble.py /path/to/name.fragment.md --serve
Run with run_in_background: true. The server picks a random free port and prints the URL. The preview auto-refreshes when the HTML file changes - no manual browser refresh needed.
When editing an existing email (argument provided, or user asks to change something):
.fragment.md file--serve to rebuild the previewuv run .claude/skills/message/scripts/assemble.py /path/to/name.fragment.md
The preview server is still running in the background from the create step. The assembler overwrites the HTML file atomically, and the browser auto-refreshes within 2 seconds. Do not re-launch the server on edits - the user keeps the same URL.
Fragments are Markdown files with YAML frontmatter:
---