BlueBubbles Actions
SkillCommunicationThis skill lets an AI agent send and manage iMessages through a BlueBubbles server. Calls go through the generic message tool with channel="bluebubbles", so the agent can send texts and attachments, react with tapbacks, edit or unsend messages, reply in threads, and manage group participants, names, and icons. It requires gateway configuration for the bluebubbles channel, and some actions such as editing depend on the macOS version.
Then ask your AI: use the BlueBubbles Actions skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Have a running BlueBubbles server that the agent can reach.
What your AI can do with it
- Send iMessage texts to a phone number, email, or chat guid
- Send local file attachments by path or base64 buffer with filename
- React to a message with a tapback and remove that reaction
- Edit or unsend a previously sent message by message id
- Reply to a specific message in a thread
- Send a message with an iMessage effect such as balloons
Getting started
- Have a running BlueBubbles server that the agent can reach.
- Add the bluebubbles channel to the gateway configuration with serverUrl, password, and webhookPath.
- Collect the target as a chat_guid when possible, or a phone number in E.164 format or an email address.
- Call the message tool with channel set to bluebubbles and the action you want, such as send, react, edit, unsend, or reply.
- For reactions, edits, unsends, and replies, include the messageId of the message you are acting on.
What this skill tells your AI
The instructions your AI receives, as published by spinabot/brigade in skills/bluebubbles/SKILL.md and read by Ahel’s review.
Overview
BlueBubbles is Brigade’s recommended iMessage integration. Use the message tool with channel: "bluebubbles" to send messages and manage iMessage conversations: send texts and attachments, react (tapbacks), edit/unsend, reply in threads, and manage group participants/names/icons.
Inputs to collect
target(preferchat_guid:...; also+15551234567in E.164 oruser@example.com)messagetext for send/edit/replymessageIdfor react/edit/unsend/reply- Attachment
pathfor local files, orbuffer+filenamefor base64
If the user is vague ("text my mom"), ask for the recipient handle or chat guid and the exact message content.
Actions
Send a message
{
"action": "send",
"channel": "bluebubbles",
"target": "+15551234567",
"message": "hello from Brigade"
}
React (tapback)
{
"action": "react",
"channel": "bluebubbles",
"target": "+15551234567",
"messageId": "<message-guid>",
"emoji": "❤️"
}
Remove a reaction
{
"action": "react",
"channel": "bluebubbles",
"target": "+15551234567",
"messageId": "<message-guid>",
"emoji": "❤️",
"remove": true
}
Edit a previously sent message
{
"action": "edit",
"channel": "bluebubbles",
"target": "+15551234567",
"messageId": "<message-guid>",
"message": "updated text"
}
Unsend a message
{
"action": "unsend",
"channel": "bluebubbles",
"target": "+15551234567",
"messageId": "<message-guid>"
}
Reply to a specific message
{
"action": "reply",
"channel": "bluebubbles",
"target": "+15551234567",
"replyTo": "<message-guid>",
"message": "replying to that"
}
Send an attachment
{
"action": "send",
"channel": "bluebubbles",
"target": "+15551234567",
"path": "/tmp/photo.jpg",
"message": "here you go"
}
Use message for the user-facing text. Do not rely on caption as a distinct BlueBubbles/iMessage feature.
Send with an iMessage effect
{
"action": "sendWithEffect",
"channel": "bluebubbles",
"target": "+15551234567",
"message": "big news",
"effect": "balloons"
}
Notes
- Requires gateway config
channels.bluebubbles(serverUrl/password/webhookPath). - Prefer
chat_guidtargets when you have them (especially for group chats). - For media + text, treat
messageas canonical. Brigade can acceptcaptionas an alias, but BlueBubbles/iMessage does not offer a reliable native attachment-caption concept. - In practice, media with text may arrive as the attachment plus a separate text message rather than one captioned bubble. Do not promise exact attachment-caption rendering.
- If you must use the channel-specific file action, the canonical action name is
upload-file;sendAttachmentis a legacy alias. - BlueBubbles supports rich actions, but some are macOS-version dependent (for example, edit may be broken on macOS 26 Tahoe).
- The gateway may expose both short and full message ids; full ids are more durable across restarts.
- Developer reference for the underlying plugin lives in the BlueBubbles plugin package README.
Ideas to try
- React with a tapback to acknowledge a request.
- Reply in-thread when a user references a specific message.
- Send a file attachment with short message text, expecting BlueBubbles to treat the text as best-effort companion text rather than a guaranteed native caption.
Signals
- GitHub stars
- 11k
- Forks
- 70
- Last commit
- Oct 2026
Questions
- How do I send an iMessage with this skill?
- Call the message tool with action "send", channel "bluebubbles", a target such as +15551234567 or a chat_guid, and the message text. Add a path for a local attachment, or a buffer and filename for base64.
- What target formats are supported?
- Prefer chat_guid targets, especially for group chats. A phone number in E.164 format like +15551234567 or an email address like user@example.com also works.
Advanced
- Item type
- skill
- Key
bluebubbles-spinabot- Source
- github.com/spinabot/brigade
Related picks
Skill · davila7
The pick for Reactreact-doctor
Skill · millionco
The pick for Reactsms-alert-automation
Skill · composio-community
The pick for SMSsms
Skill · coreyhaines31
The pick for SMSslack-gif-creator
Skill · anthropics
More in Communicationerror-handling
Skill · affaan-m
More in Communication