Draft a lifecycle email as a welcome, delivery of the bargain, then nurture tied to the pain they showed. Use when someone already opted in and the sequence must not be a generic drip or a cold email.
1 star
0 votes
0 copies
1 view
Added October 2, 2026
ai-agentspythongoshellbash
Security analysis
C71/100
mediumReads environment variables which may contain secretsin assets/card.mjs
criticalUses os.system(), subprocess, or similar Python execution methodsin tests/test_score.py
Installs into .claude/skills of the current project.
Are you the author of lifecycle-email?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/cmj-hub-lifecycle-email)
---
name: lifecycle-email
description: "Draft a lifecycle email as a welcome, delivery of the bargain, then nurture tied to the pain they showed. Use when someone already opted in and the sequence must not be a generic drip or a cold email."
models: ""
---
# Lifecycle email
Someone raised a hand. The sequence has three parts, in this order. Welcome them. Hand over the thing they opted in for. Then keep writing about the pain they already showed.
The build guide teaches a human. This pack teaches an agent.
## The three parts
1. Welcome. The first note after the opt-in. It names that they asked, and it starts the relationship. It is not an introduction to a stranger.
2. Bargain. Delivery of the thing they were promised: the checklist, the sample, the access. The bargain is the exchange, handed over.
3. Nurture. Later notes that stay on the pain they showed on the form or in the reply. The pain is in the words. A calendar of tips is not nurture.
## What the scorer refuses
The scorer refuses a generic drip and a cold email. A generic drip is a day-1, day-3, day-7 tip series, or a note that calls itself a generic drip. A cold email speaks to someone who never opted in, introduces a product to a stranger, or is labeled a cold email.
A welcome can be short. It still has to be for a person who opted in, and the nurture still has to name their pain.
## Checklist
Copy this list and tick it in order.
- [ ] 1. Name the pain they showed.
- [ ] 2. Fill the sequence shell: welcome, bargain, nurture.
- [ ] 3. Run `python3 scripts/score.py --file draft.json`.
Check again until the script exits 0.
Go back to step 2 if step 3 fails.
## Run
```bash
python3 scripts/score.py --file examples/lifecycle-good.json
python3 scripts/score.py --file examples/lifecycle-refused.json
```
The good file exits 0 and prints the welcome, the bargain, and the nurture. The refused file exits 1.
The JSON object has four strings: `pain`, `welcome`, `bargain`, and `nurture`. A broken JSON exits non-zero and does not echo the raw input.
Python 3 standard library only. No network. No send.
## Shell
```json
{
"pain": "the trial dies after the first login",
"welcome": "You asked for the trial checklist. This note starts there.",
"bargain": "The checklist is the bargain. It is attached, the thing you opted in to receive.",
"nurture": "The next note stays on the pain you showed: the trial dies after the first login."
}
```