Find the emails your app should be sending
Your coding agent reads your code and database, scores your onboarding, trial and win-back emails out of 100, and ranks what to add first, with how many of your users are eligible right now. Nothing is uploaded to Dreamlit.
- Free, on your agent's tokens
- Read-only
- 5 to 15 minutes
1Install the skill
Run it in your project folder. Needs Node 22 or later.
2Then ask Claude Code
Or type /lifecycle-email-audit.
Uses existing database access for read-only totals. Say 'no counts' to skip them. Without access, it continues without counts.
Sample report
What your agent hands you
Formbird is a made-up form builder for small teams. Its audit found 38 people who signed up and never published a form, with nothing emailing them. Your report is built the same way, from your own code and data.
What it checks
Up to eight lifecycle moments and seven sending basics. Only the ones that fit your app count.
For each moment, your agent looks for an email in your code, checks it against a clear bar, and cites the file and line.
1Welcome with a first step
10 ptsThe first email after signup points to one thing to do.
2Activation nudge
25 ptsPeople who signed up but haven't done the key action hear from you by day 2 or 3.
3Habit or value recap
5 ptsA regular note built from their own activity.
4Trial ending
20 ptsBefore the trial ends, a message that depends on how they used it.
5Trial expired
15 ptsAfter it ends unpaid, a clear way back.
6Failed payment
10 ptsWhen a card fails, a link to fix it, and a follow-up.
7Going quiet
10 ptsWhen a paying customer stops showing up, you notice.
8Win-back
5 ptsAfter someone cancels, you ask why, and tell them when it's fixed.
Points shown for a SaaS with a trial. Marketplaces, freemium and consumer apps, dev tools and team apps each get their own weights.
Sending basics
Whether your email reaches the inbox. Shown next to the score, each with how to fix it.
- SPF
- DKIM
- DMARC
- Account emails branded, through your own sender
- A real reply-to, not no-reply
- One-click unsubscribe on lifecycle email
- Bounces and complaints handled
How it's scored
score = 100 × points earned ÷ points possible
- 0–39 Big gaps
- 40–74 Partly covered
- 75–100 Well covered
The report shows the full table, so your agent can recompute it.
Privacy
Your code and data stay with you
What it reads
Your code and schema, plus read-only database totals if access already exists. Say 'no counts' to skip them.
What it never writes down
Rows, email addresses, names or connection strings. The report holds counts, table names and file paths.
Read-only queries
Each query runs in a read-only transaction with a 5-second limit and returns totals only. Queries run through your agent's normal permission prompt.
Nothing uploaded to Dreamlit
The skill runs inside your agent, on your machine. Your AI agent's provider processes it as usual.
Common questions
Before you run it
It's open source (MIT) and plain text, so you can read every file first: the skill on GitHub.
When you ask how to build the changes, your AI agent uses the skill's guide to building the emails to compare email APIs, lifecycle platforms and Dreamlit.
- Is it free?
- Yes. The skill is free and runs on your agent's tokens. You don't need a Dreamlit account.
- Which databases does it work with?
- Postgres, including Supabase and Neon, with any ORM such as Prisma or Drizzle. It reads your schema from code. For counts, your agent needs a way to query the database, such as psql or a database MCP server.
- How do I get real counts, not local ones?
- Your AI agent uses database access it already has, preferring production when several are reachable. It never asks which database is real or requests access. Local counts stay labelled local and never drive the ranking. Say "no counts" to skip queries.
- What if my agent can't reach the database?
- You still get the score, the lifecycle map, the emails you send today and the gaps, ranked by weight. It continues without asking for access or offering to connect a database. The report says the counts are missing. A local database with only seed accounts counts as no database: "Not counted: your local database only has seed accounts."
- Does it change my code?
- No. It only writes a lifecycle-email-audit folder at your project root with the report, which is safe to delete. It doesn't write your emails either: it tells you which ones to add, who they're for and when, with the trigger as SQL against your own tables.
- How long does it take?
- 5 to 15 minutes, depending on the size of your app. After a couple of minutes your agent asks you one question: which other tools send email for you.
Run the audit. Then turn the fixes on.
1 · Free
Run it on your app
Copy the install command for your agent, then ask it to audit your lifecycle emails. Run it again after you ship a fix to see your score change.
Get the install command2 · Dreamlit
Turn the fixes on
Dreamlit runs these for you. It drafts each email from your app and sends each person the one that fits what they've done, with no event tracking to add. Nothing goes out until you publish it. It connects to your database with its own role, which you grant and can revoke.
7-day free trial with a card, then $20 a month on Pro.
Start your free trial