Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

resend

Resend のメール API を使用する際に活用するスキルです。トランザクションメールの送信(単体・一括)、Webhook 経由の受信メール処理、メールテンプレートの管理、配信イベントのトラッキング、ドメイン・コンタクト・API キーの管理、Resend SDK のセットアップなど幅広い操作に対応します。「Resend でメールを送りたい」といった簡単なタスクでも必ず使用してください。冪等性キーや Webhook 検証、テンプレート変数の構文など、本番環境でよくある問題を防ぐための重要な注意事項が含まれています。

description の原文を見る

Use when working with the Resend email API — sending transactional emails (single or batch), receiving inbound emails via webhooks, managing email templates, tracking delivery events, managing domains, contacts, broadcasts, webhooks, API keys, automations, events, viewing API request logs, or setting up the Resend SDK. Always use this skill when the user mentions Resend, even for simple tasks like "send an email with Resend" — the skill contains critical gotchas (idempotency keys, webhook verification, template variable syntax) that prevent common production issues.

SKILL.md 本文

Resend

クイック送信 — Node.js

import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

const { data, error } = await resend.emails.send(
  {
    from: 'Acme <onboarding@resend.dev>',
    to: ['delivered@resend.dev'],
    subject: 'Hello World',
    html: '<p>Email body here</p>',
  },
  { idempotencyKey: `welcome-email/${userId}` }
);

if (error) {
  console.error('Failed:', error.message);
  return;
}
console.log('Sent:', data.id);

重要な落とし穴: Resend Node.js SDK は例外をスローしません — { data, error } を返します。API エラーに対して try/catch を使うのではなく、常に error を明示的にチェックしてください。

クイック送信 — Python

import resend
import os

resend.api_key = os.environ["RESEND_API_KEY"]

email = resend.Emails.send({
    "from": "Acme <onboarding@resend.dev>",
    "to": ["delivered@resend.dev>"],
    "subject": "Hello World",
    "html": "<p>Email body here</p>",
}, idempotency_key=f"welcome-email/{user_id}")

単一送信 vs バッチ送信の判断

選択用途
単一 (POST /emails)1通のメール、添付ファイルが必要、スケジュール設定が必要
バッチ (POST /emails/batch)2~100通の異なるメール、添付ファイルなし、スケジュール設定なし

バッチは原子的です — 1つのメールが検証に失敗すると、バッチ全体が失敗します。送信前に必ず検証してください。バッチは添付ファイルと scheduled_at をサポートしていません。

べき等性キー (リトライのために重要)

失敗したリクエストを再試行する際の重複メール送信を防止します:

キー事実
形式 (単一)<event-type>/<entity-id> (例: welcome-email/user-123)
形式 (バッチ)batch-<event-type>/<batch-id> (例: batch-orders/batch-456)
有効期限24時間
最大長256文字
同じキー + 同じペイロード元のレスポンスを返し、再送信しない
同じキー + 異なるペイロード409エラーを返す

クイック受信 (Node.js)

import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

export async function POST(req: Request) {
  const payload = await req.text(); // req.json() ではなく、必ず生のテキストを使用

  const event = resend.webhooks.verify({
    payload,
    headers: {
      'svix-id': req.headers.get('svix-id'),
      'svix-timestamp': req.headers.get('svix-timestamp'),
      'svix-signature': req.headers.get('svix-signature'),
    },
    secret: process.env.RESEND_WEBHOOK_SECRET,
  });

  if (event.type === 'email.received') {
    // ウェブフックはメタデータのみを含む — 本文は別途 API を呼び出す
    const { data: email } = await resend.emails.receiving.get(
      event.data.email_id
    );
    console.log(email.text);
  }

  return new Response('OK', { status: 200 });
}

重要な落とし穴: ウェブフックのペイロードはメール本文を含みません。resend.emails.receiving.get() を個別に呼び出す必要があります。

必要な情報は?

タスクリファレンス
単一メールを送信sending/overview.md — パラメータ、配信性、テスト
バッチメールを送信sending/overview.mdsending/batch-email-examples.md
完全な SDK 例 (Node.js, Python, Go, cURL)sending/single-email-examples.md
べき等性、リトライ、エラーハンドリングsending/best-practices.md
メール取得、リスト、スケジュール変更、キャンセルsending/email-management.md
受信メールreceiving.md — ドメイン設定、ウェブフック、添付ファイル
テンプレート管理 (CRUD、変数)templates.md — ライフサイクル、エイリアス、ページング
ウェブフック設定 (イベント、検証)webhooks.md — 検証、CRUD、リトライスケジュール、IP許可リスト
ドメイン管理 (作成、検証、DNS)domains.md — リージョン、TLS、トラッキング、機能
連絡先管理 (CRUD、プロパティ)contacts.md — セグメント、トピック、カスタムプロパティ
ブロードキャスト送信 (マーケティングキャンペーン)broadcasts.md — ライフサイクル、スケジュール設定、テンプレート変数
API キー管理api-keys.md — 権限スコープ、ドメイン制限
API リクエストログ表示logs.md — API呼び出し履歴リストアップ、デバッグ
連絡先プロパティ定義contact-properties.md — 連絡先のカスタムフィールド
セグメント管理 (連絡先グループ)segments.md — ブロードキャストターゲット、連絡先グループ化
トピック管理 (サブスクリプション)topics.md — オプトイン/オプトアウト設定、ブロードキャストフィルタリング
オートメーション作成 (イベント駆動ワークフロー)automations.md — ステップ、接続、実行、条件
イベント定義と送信 (オートメーショントリガー)events.md — スキーマ、ペイロード、連絡先関連付け
SDK インストール (8言語以上)installation.md
AI エージェントインボックス設定agent-email-inbox スキルをインストール — 信頼できない入力に対するセキュリティレベルをカバー

SDK バージョン要件

常に最新の SDK バージョンをインストールしてください。これらは完全な機能 (送信、受信、ウェブフック検証) に必要な最小バージョンです:

言語パッケージ最小バージョンインストール
Node.jsresend>= 6.9.2npm install resend
Pythonresend>= 2.21.0pip install resend
Goresend-go/v3>= 3.1.0go get github.com/resend/resend-go/v3
Rubyresend>= 1.0.0gem install resend
PHPresend/resend-php>= 1.1.0composer require resend/resend-php
Rustresend-rs>= 0.20.0cargo add resend-rs
Javaresend-java>= 4.11.0installation.md を参照
.NETResend>= 0.2.1dotnet add package Resend

プロジェクトに既に Resend SDK がインストールされている場合、バージョンを確認し、最小バージョンより低い場合はアップグレードしてください。古い SDK は webhooks.verify() または emails.receiving.get() がない可能性があります。

完全なインストールコマンド、言語検出、cURL フォールバックについては installation.md を参照してください。

共通セットアップ

API キー

環境変数に格納 — 絶対にハードコーディングしないでください:

export RESEND_API_KEY=re_xxxxxxxxx

API キーは resend.com/api-keys で取得してください。

プロジェクト言語検出

これらのファイルをチェック: package.json (Node.js)、requirements.txt/pyproject.toml (Python)、go.mod (Go)、Gemfile (Ruby)、composer.json (PHP)、Cargo.toml (Rust)、pom.xml/build.gradle (Java)、*.csproj (.NET)。

よくある間違い

#間違い修正
1べき等性キーなしでリトライ常にべき等性キーを含める — リトライ時の重複送信を防止します。形式: <event-type>/<entity-id>
2ウェブフック署名を検証しない常に resend.webhooks.verify() で検証 — 未検証のイベントは信頼できません
3テンプレート変数名の不一致変数名は大文字小文字を区別 — テンプレート定義と正確に一致する必要があります。トリプルマスタッシュ構文 {{{VAR}}} を使用
4ウェブフックペイロードにメール本文がある前提ウェブフックはメタデータのみを含む — 本文コンテンツは resend.emails.receiving.get() を呼び出して取得
5Node.js SDK エラーに try/catch を使用SDK は { data, error } を返す — error を明示的にチェック、try/catch でラップしない
6バッチを添付ファイル付きメールに使用バッチは添付ファイルをサポートしない — 代わりに単一送信を使用
7フェイクメール (test@gmail.com) でテストdelivered@resend.dev を使用 — フェイクアドレスはバウンスし、評判を傷つけます
8ドラフトテンプレートで送信テンプレートは公開前に送信する必要がある — まず .publish() を呼び出す
9同じ送信呼び出しで html + template を使用相互排他的 — テンプレート使用時は html/text/react を削除
10受信メール用 MX レコードが最低優先度ではないResend の MX が最低番号 (最高優先度) を持つことを確認、またはメールがルーティングされない
11resend.dev から送信時 403デフォルトの onboarding@resend.dev はサンドボックス — Resend アカウントメール宛のみに配信可能。最初に独自ドメインを確認
12403 ドメイン不一致from アドレスドメインは検証済みドメインと完全に一致する必要があります。send.acme.com を検証しましたが user@acme.com から送信すると失敗
13ブラウザから Resend API を呼び出す (CORS)API は CORS をサポートしない — これは API キーを保護するために意図的です。常にサーバー側から呼び出す (API ルート、サーバーレス関数)
14401 restricted_api_key送信専用 API キーが非送信エンドポイント (ドメイン、連絡先など) で使用されました。代わりにフルアクセスキーを作成してください

クロスカッティングな関心事

送信 + 受信を組み合わせる

自動返信、メール転送、または受信してから送信するワークフローには、両方の機能が必要です:

  1. 最初に受信ドメインを設定 (receiving.md を参照)
  2. 送信を設定 (sending/overview.md を参照)
  3. 注: バッチ送信は添付ファイルとスケジュール設定をサポートしない — 添付ファイル付き転送時は単一送信を使用

AI エージェントインボックス

システムが信頼できないメールコンテンツを処理し、アクション (払い戻し、データベース変更、転送) を実行する場合は、agent-email-inbox スキルをインストール。これは AI が関与しているかどうかに関係なく適用されます — 外部送信者からの自由形式メールコンテンツを解釈するシステムはセキュリティ対策が必要です。

マーケティングメール

このスキルの送信機能は トランザクションメール (領収書、確認、通知) 用です。大規模な購読者リストへのマーケティングキャンペーン (購読解除リンクと エンゲージメントトラッキング付き) については、Resend Broadcasts を使用してください — broadcasts.md で API を参照してください。

ドメインのウォームアップ

新しいドメインは段階的に送信ボリュームを増やす必要があります。1日目の制限: ~150メール (新規ドメイン) または ~1,000 (既存ドメイン)。sending/overview.md のウォームアップスケジュールを参照してください。

テスト

実在するメールプロバイダのフェイクアドレスでテストしない (test@gmail.comfake@outlook.com) — バウンスして送信者評判を破壊します。

アドレス結果
delivered@resend.dev配信成功をシミュレート
bounced@resend.devハードバウンスをシミュレート
complained@resend.devスパム報告をシミュレート

サプレッションリスト

Resend は自動的にハードバウンスとスパム報告のアドレスを抑制します。抑制されたアドレスへの送信は配信を試行する代わりに email.suppressed ウェブフックイベントを発火します。ダッシュボード → 抑制で管理してください。

ウェブフックイベントタイプ

イベントトリガー
email.sentAPI リクエスト成功
email.delivered受信者のメールサーバーに到達
email.bounced永続的に拒否 (ハードバウンス)
email.complained受信者がスパムとしてマーク
email.opened / email.clicked受信者エンゲージメント
email.delivery_delayedソフトバウンス、Resend が再試行
email.received受信メール到着
domain.* / contact.*ドメイン/連絡先の変更

詳細、署名検証、リトライスケジュールについては webhooks.md を参照してください。

エラーハンドリングのクイックリファレンス

コードアクション
400, 422リクエストパラメータを修正、リトライしない
401API キーをチェック — restricted_api_key は送信専用キーが非送信エンドポイントで使用されたことを意味する
403ドメイン所有権を確認 — 一般的な原因: resend.dev サンドボックス、from ドメイン不一致、未検証ドメイン
409べき等性の競合 — 新しいキーを使用するか、ペイロードを修正
429レート制限 — 指数バックオフで再試行 (デフォルトレート制限: 2 req/s)
500サーバーエラー — 指数バックオフで再試行

リソース

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
resend
リポジトリ
resend/resend-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/resend/resend-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: resend · resend/resend-skills · ライセンス: MIT