Cross-Channel Notify
Send a single message through both email (himalaya) and iMessage (bluebubbles) with consistent formatting.
Workflow
- Collect inputs:
to_email,to_imessage(E.164 or chat_guid),subject,body(markdown). - Format: Apply markdown formatting rules from config (see references/formatting.md). Strip unsupported markup for iMessage; keep full markdown for email.
- Send email: Use
himalaya template sendwith the formatted body. - Send iMessage: Use the
messagetool withchannel: "bluebubbles", passing the plain-text rendering of the formatted body. - Report: Confirm delivery on each channel; note any failures.
Formatting Rules
The skill reads formatting preferences from a config file at ~/.config/cross-channel-notify/format.yaml. If absent, defaults apply.
See references/formatting.md for the full schema and defaults.
Email Send
cat << 'EOF' | himalaya template send
From: <sender>
To: <to_email>
Subject: <subject>
Content-Type: text/markdown
<formatted_body>
EOF
iMessage Send
{
"action": "send",
"channel": "bluebubbles",
"target": "<to_imessage>",
"message": "<plain_text_body>"
}
Error Handling
- If himalaya is not configured, skip email and warn.
- If bluebubbles is not configured, skip iMessage and warn.
- If neither channel is available, abort with a clear message.
- Always report which channels succeeded/failed.
Config Location
~/.config/cross-channel-notify/format.yaml
Create it on first use if missing. See references/formatting.md for the schema.