recoup-platform-email-helper について
タスクからRecoupメールを送るための、Nodeスクリプト付きスキルです。テキストまたはHTML本文のシリアライズと検証を行い、送信前に確認できるdry-runにも対応します。
主な機能
- 01Nodeスクリプトによるメール送信
- 02HTMLとプレーンテキスト本文に対応
- 03複数宛先とCCに対応
- 04dry-runでペイロードを検証
- 05空の本文の送信を拒否
- 06終了コードを確認しメッセージIDを表示
活用シーン
- 01日次またはタスク報告の送信
- 02複数宛先へのメール送信
- 03メールペイロードの確認と検証
- 04送信失敗や空本文の原因調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ recoupable/ skills --skill recoup-platform-email-helperインストール後、Claude Code で/recoup-platform-email-helperを入力して読み込まれたか確認します。
同梱ファイルscripts/send-email.mjs
詳細
タスクからメールを送信する
同梱の Node スクリプトを実行してメールを送信します。シェルで JSON を組み立ててはいけません。
これが必要な理由
手作業で送信リクエストを作成する方法(curl -sS … -d "{… \"html\": $(echo "$HTML" | jq -R -s '.') …}")は脆弱です。引用符やエスケープの方法によっては、不正な本文が生成され、API が以前は success:true を返しながら、フッターのみの空メールを "Message from Recoup" という件名でひそかに送信していました。モデルはこの処理を確率的に誤ります。このスクリプトを使えば、シェルでのシリアライズを完全に避けられます。
送信方法
-
メール本文をファイルに書き込みます(HTML の場合は、エスケープの問題をすべて回避できるため推奨します)。
cat > /tmp/report.html <<'HTML' <h1>Daily Report</h1> <p>…your real content…</p> HTML -
送信します。
node "$SKILL_DIR/scripts/send-email.mjs" \ --subject "Daily Report — $(date '+%B %d, %Y')" \ --html-file /tmp/report.html \ --to [email protected]
$SKILL_DIR は、このスキルのインストールディレクトリ(~/.agents/skills/recoup-platform-email-helper)です。scripts/send-email.mjs には絶対パスを使用してください。
フラグ
| フラグ | 意味 |
|---|---|
--subject <s> | 件名(省略可能です。省略した場合、API が本文から件名を生成します)。 |
--html-file <path> / --html <s> | HTML 本文です。--html-file を推奨します。 |
--text-file <path> / --text <s> | プレーンテキスト本文です。 |
--to <email> | 宛先(複数回指定できます)。省略すると、アカウント自身のメールアドレス(「自分にメールする」)が既定で使用されます。 |
--cc <email> | CC(複数回指定できます)。 |
--chat-id <id> | フッターの「会話を続ける」リンクに使用するルーム ID です。 |
--dry-run | シリアライズと検証を行い、ペイロードを出力します。送信は行いません。プレビューに使用してください。 |
ルール
- 本文は必ず 1 つ指定してください。
--html/--textに空でない値がない場合、スクリプトは送信を拒否し(終了コード 2)、終了します。空のメールを送信しようとしてはいけません。 - 終了コードを確認してください。 0 以外の場合は送信されていません。標準エラー出力を読み、修正してください。成功したと報告してはいけません。実際に送信すると、スクリプトは Resend のメッセージ ID を出力します。
- スクリプトは環境変数から
RECOUP_API_KEY/RECOUP_ACCESS_TOKENとRECOUP_API_BASEを読み込みます。これらはサンドボックスですでに設定されています。表示したり、コードに直接記述したりしてはいけません。 - Node のみを使用してください(サンドボックスのランタイムは
node22です。python3は利用できるとは限りません)。依存関係はありません。
コメント
Markdown 対応