# Ben Agent Email

> Canonical Resend inbox for ben-agent@zerofinance.ai

- Skill: `different-ai/ben-agent-email` (Agent Skill)
- Install (CLI): `npx skillmds@latest add different-ai/ben-agent-email`
- Raw SKILL.md: https://api.skillmd.com/api/skills/different-ai/ben-agent-email/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: different-ai (https://skillmd.com/u/different-ai)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/different-ai/ben-agent-email

---


# Ben-Agent Email (Resend)

Canonical email inbox for 0 Finance operations.

## Purpose

Manage inbound and outbound email for `ben-agent@zerofinance.ai` using Resend and the existing AI email pipeline.

## Canonical Inbox

- `ben-agent@zerofinance.ai`
- Domain defaults to `zerofinance.ai` via `AI_EMAIL_INBOUND_DOMAIN`.

## Inbound Flow (Required)

1. Resend catch-all or routed domain receives inbound email.
2. Resend webhook posts to `POST /api/ai-email`.
3. Webhook signature verified with `RESEND_WEBHOOK_SECRET`.
4. AI email pipeline parses, responds, and updates session state.

## Outbound Flow

- Send via Resend with `from: "Ben Agent <ben-agent@zerofinance.ai>"`.
- Replies and confirmations are sent through `packages/web/src/lib/email-provider/resend-provider.ts`.

## Environment (.env)

Create a collocated `.env` file at:

```
.opencode/skill/ben-agent-email/.env
```

Required values:

```
RESEND_API_KEY=
RESEND_WEBHOOK_SECRET=
EMAIL_PROVIDER=resend
AI_EMAIL_INBOUND_DOMAIN=zerofinance.ai
```

## Credential Missing Behavior

- If `RESEND_API_KEY` or `RESEND_WEBHOOK_SECRET` is missing, ask the user to provide them and stop.
- Do not invent credentials or proceed without explicit access.

## Entities + CRUD Coverage

- Email sessions: create/read/update via AI email pipeline; delete not supported.
- Messages: create (send/reply), read (session history), update (follow-up), delete not supported.
- Attachments: create (persist), read (load), update not used, delete not supported.

## Tools / Interfaces

- `packages/web/src/app/api/ai-email/route.ts` - inbound webhook handler.
- `packages/web/src/lib/email-provider/resend-provider.ts` - Resend send/receive.
- `packages/web/src/lib/ai-email/*` - session state, prompts, attachment handling.

## Completion Signals

- `complete`: inbound message processed and response sent.
- `continue`: awaiting user clarification or confirmation.
- `error`: provider failures or invalid webhook signature.

## Example Prompts

- "Check `ben-agent@zerofinance.ai` for new invoices and summarize."
- "Reply to the latest sender confirming we received their request."
- "Draft a follow-up asking for missing bank details."

