Free skill · Lifecycle email audit

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.

lifecycle-email-audit/report.html

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.

  1. 1Welcome with a first step

    10 pts

    The first email after signup points to one thing to do.

  2. 2Activation nudge

    25 pts

    People who signed up but haven't done the key action hear from you by day 2 or 3.

  3. 3Habit or value recap

    5 pts

    A regular note built from their own activity.

  4. 4Trial ending

    20 pts

    Before the trial ends, a message that depends on how they used it.

  5. 5Trial expired

    15 pts

    After it ends unpaid, a clear way back.

  6. 6Failed payment

    10 pts

    When a card fails, a link to fix it, and a follow-up.

  7. 7Going quiet

    10 pts

    When a paying customer stops showing up, you notice.

  8. 8Win-back

    5 pts

    After 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 command

2 · 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