extension-email-raw — скилл для Claude Code: письма с to, cc и bcc
Скилл добавляет в проект отправку одного письма сразу нескольким получателям через to, cc и bcc. Пригодится, когда нужно разослать уведомление участникам встречи.
npx skills add caffeinelabs/skills --skill extension-email-raw -a claude-codeЧто делает extension-email-raw
Скилл опирается на extension-email и даёт функцию sendRawEmail. Она принимает имя отправителя, списки to, cc, bcc, тему и HTML-тело письма, а возвращает SendResult: #ok, если всё ушло, или #err(error) с текстом ошибки. Все получатели видят одно и то же письмо.
Важное ограничение: всего не больше 50 адресатов, и каждый из них увидит остальных в списке. Для сервисных рассылок это не годится — там раскрытие адресов нарушает приватность пользователей. Скилл для этого и не предназначен.
Для работы нужен пакет caffeineai-email версии ~0.4.0 и подписка Caffeine AI уровня plus или pro. Начиная с 0.4.0 отправка идёт через почтовый шлюз с настройками, которые платформа подставляет при каждом деплое (INTEGRATIONS_GATEWAY_URL и INTEGRATIONS_GATEWAY_API_KEY). Если этих настроек нет, вызов вернёт #err, а не тихий откат. Транспортный канистр и INTEGRATIONS_CANISTER_ID больше не используются — это повод проверить конфиг при обновлении с 0.3.x.
Какие задачи решает
- отправить одно письмо нескольким адресатам сразу
- разослать напоминание участникам встречи
- поставить коллег в cc, а руководителя в скрытую копию
- обработать ошибку отправки через
#err - обновить проект с
caffeineai-email0.3.x на 0.4.0
Примеры запросов агенту
- Добавь в проект отправку письма с несколькими получателями через
sendRawEmail - Сделай функцию, которая шлёт напоминание о встрече подтверждённым участникам в to, а сомневающимся в cc
- Проверь, что при ошибке отправки возвращается
#errс текстом, и обработай этот случай
Как установить extension-email-raw
1Через Skills CLI (Vercel)
npx skills add caffeinelabs/skills --skill extension-email-raw -a claude-code2Вручную: положить файлы
~/.claude/skills/extension-email-raw/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/extension-email-raw/
1Через Skills CLI (Vercel)
npx skills add caffeinelabs/skills --skill extension-email-raw -a codex2Вручную: положить файлы
.agents/skills/extension-email-raw/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add caffeinelabs/skills --skill extension-email-raw -a cursor2Вручную: положить файлы
.cursor/skills/extension-email-raw/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install caffeinelabs/skills extension-email-raw2Вручную: положить файлы
.github/skills/extension-email-raw/SKILL.md1Через Skills CLI (Vercel)
npx skills add caffeinelabs/skills --skill extension-email-raw -a gemini-cli2Командой платформы
gemini skills install https://github.com/caffeinelabs/skills --path skills/extension-email-rawВручную: положить файлы
.devin/skills/extension-email-raw/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add caffeinelabs/skills --skill extension-email-raw -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о extension-email-raw
Как установить extension-email-raw в Claude?
Выполните npx skills add caffeinelabs/skills --skill extension-email-raw -a claude-code. Скилл окажется в ~/.claude/skills/extension-email-raw/SKILL.md.
Что делает extension-email-raw?
Добавляет функцию sendRawEmail для отправки одного письма с несколькими адресами в to, cc и bcc. Возвращает #ok или #err(error).
Сколько получателей выдержит скилл?
Не больше 50 адресатов в сумме. Каждый получатель видит остальных в списке, поэтому для сервисных рассылок скилл не подходит.
Исходный текст
SKILL.md · Apache-2.0
---
name: extension-email-raw
description: Send an email with multiple to, cc and bcc addresses.
version: 0.2.0
compatibility:
mops:
caffeineai-email: "~0.4.0"
caffeineai-subscription: [plus, pro]
---
# Email — Raw Multi-Recipient
Raw multi-recipient email extension for [Caffeine AI](https://caffeine.ai?utm_source=caffeine-skill&utm_medium=referral).
## Overview
This skill adds support for sending emails with multiple `to`, `cc`, and `bcc` recipients. Not suitable for bulk service emails (recipients see each other).
# Backend
## This extension is for sending an email with support for multiple `to`, `cc` and `bcc` addresses.
- This should NOT be used for sending service emails to multiple users because each recipient will see all the other recipients listed which would typically be a breach of user privacy.
### For sending an email
- This extension depends on the [extension-email](../extension-email/SKILL.md) for sending emails.
- Use the sendRawEmail function.
- It returns a SendResult which is #ok if the email is sent successfully otherwise #err(error) with the error text.
- There can be a maximum of 50 recipients in total
- Each recipient receives the same email
```mo:caffeineai-email/emailClient.mo
module {
public type SendResult = {
#ok;
#err : Text;
};
public func sendRawEmail(
fromUsername : Text,
to : [Text],
cc : [Text],
bcc : [Text],
subject : Text,
htmlBody : Text,
) : async SendResult;
};
```
### Example usage for sending an email reminder to meeting attendees.
```motoko filepath=src/backend/main.mo
import Runtime "mo:core/Runtime";
import EmailClient "mo:caffeineai-email/emailClient";
actor {
public func sendMeetingReminder(
meetingSubject : Text,
meetingTime : Text,
confirmedAttendeeEmails : [Text],
tentativeAttendeeEmails : [Text],
) : async () {
let result = await EmailClient.sendRawEmail(
"no-reply",
confirmedAttendeeEmails,
tentativeAttendeeEmails,
[],
meetingSubject,
"Reminder the meeting will start at " # meetingTime,
);
switch (result) {
case (#ok) {};
case (#err(error)) {
Runtime.trap("Failed to send meeting reminder email: " # error);
};
};
};
};
```
## Upgrading from the previous version
An app built with `caffeineai-email` 0.3.x re-pins with `mops add [email protected]`. `sendRawEmail` keeps its signature. Every send now goes through the mail gateway with the settings the platform injects on every deploy (`INTEGRATIONS_GATEWAY_URL` / `INTEGRATIONS_GATEWAY_API_KEY`); the transport canister and `INTEGRATIONS_CANISTER_ID` are no longer used, and a send without those settings returns `#err` instead of falling back.
An app built with `caffeineai-email` 0.2.x re-pins with `mops add [email protected]`. `sendRawEmail` keeps their signatures; every send now carries an idempotency key, so a retried outcall is sent and charged once. Apps that use verification or marketing email follow the upgrade sections of those skills.
© caffeinelabs · Apache-2.0 · caffeinelabs/skills