Skip to content
Development
Skill

/lifecycle-messaging

Email/SMS lifecycle and deliverability framework for SMB Product-Builder products that send transactional or lifecycle messages (booking reminders, CRM sequences, receipts, win-back). Codifies provider selection (Resend/Postmark/Twilio/SendGrid), domain auth (SPF/DKIM/DMARC),

From plugin
great-cto
11537 skills73 agents21 commands1 hook

Claude Code

$ npx -y skills add avelikiy/great_cto --skill lifecycle-messaging --agent claude-code

SKILL.md

lifecycle-messaging.SKILL.md
name: lifecycle-messaging
description: Email/SMS lifecycle and deliverability framework for SMB Product-Builder products that send transactional or lifecycle messages (booking reminders, CRM sequences, receipts, win-back). Codifies provider selection (Resend/Postmark/Twilio/SendGrid), domain auth (SPF/DKIM/DMARC), consent and compliance (TCPA, CAN-SPAM, CASL, quiet hours, double opt-in), suppression-list discipline, and the transactional-vs-marketing split. Applied by integrations-engineer and senior-dev whenever a feature sends messages — so deliverability and consent are designed in, not bolted on after the first spam complaint.
when_to_use: |
  Apply when a feature sends email or SMS:
  - integrations-engineer designing a Twilio / email-provider integration
  - senior-dev implementing booking reminders, CRM sequences, receipts, or win-back
  - architect deciding the messaging provider + domain-auth setup for a crm/booking product
  Do NOT apply for purely in-app notifications with no email/SMS leg.
effort: medium
allowed-tools: Read, Write, Grep, Glob, WebFetch
paths:
  - "docs/integrations/**"
  - "docs/architecture/**"

Lifecycle messaging — deliverable, consented, compliant

Messages that don't arrive (poor deliverability) or that arrive without consent (TCPA/ CAN-SPAM violations) are both fatal for an SMB product. This skill makes both correct by construction. **Design the consent + deliverability posture before the first send.**

1. Transactional vs marketing — split them

Decide per message which bucket it is; they have different rules and should use different sending identities (often different subdomains / providers):

| | Transactional | Marketing / lifecycle | |---|---|---| | Examples | receipt, booking confirm/reminder, password reset | win-back, promo, newsletter, nurture step | | Consent | implied by the transaction | **explicit opt-in required** | | Unsubscribe | not required (but honor STOP) | **required**, one-click, honored fast | | Sending domain | `txn.` subdomain | `mail.`/`news.` subdomain |

Never send marketing content on the transactional channel "because it delivers better" — that's how the transactional domain gets burned.

2. Provider selection (pick one, justify it)

  • **Email** — Postmark (best transactional deliverability, strict on marketing), Resend

(DX-first, good default), SendGrid (scale). Default: **Resend for transactional**, add a marketing-grade ESP only when lifecycle volume justifies it.

  • **SMS** — Twilio (messaging service + sender pool), or Telnyx. Use a Messaging Service,

not a single number, for scale + failover. A2P 10DLC registration is **required** for US application-to-person SMS — register the brand/campaign before sending.

3. Domain authentication (non-negotiable for email)

  • **SPF** — sender IP authorized in DNS.
  • **DKIM** — provider signing key published; messages signed.
  • **DMARC** — start `p=none` with rua reporting, ramp to `p=quarantine`→`p=reject` once

aligned. Without DMARC alignment, lifecycle mail lands in spam.

  • Warm up a new sending domain gradually; never blast from a cold domain.

4. Consent + compliance (US-first)

  • **CAN-SPAM (email)** — valid physical postal address, accurate From/Subject, working

one-click unsubscribe honored within 10 days.

  • **TCPA (SMS/voice)** — prior express written consent for marketing SMS; honor STOP/UNSTOP/

HELP keywords automatically; respect **quiet hours** (no marketing 9pm–8am recipient local time). Keep proof of consent (timestamp, source).

  • **CASL** (if CA recipients) — express opt-in + identification + unsubscribe.
  • **Double opt-in** for marketing lists where feasible — protects deliverability and proves

consent.

5. Suppression discipline (the deliverability lifeline)

Maintain a single **suppression list** the sender checks before every send:

  • hard bounces → suppress permanently
  • spam complaints (FBL) → suppress + investigate
  • unsubscribes / STOP → suppress for that channel immediately
  • never re-import a suppressed address from a migration without re-consent

A send that ignores suppression is the fastest path to a blocklist.

6. Reliability patterns

  • Idempotent sends keyed on the domain event (a reminder for booking X sends once, even on

retry) — coordinate the key with integrations-engineer.

  • Status-callback / webhook reconciliation: record delivered/bounced/failed; surface

failures, don't swallow them.

  • Rate-limit + queue lifecycle sends; never loop-send.
  • Quiet-hours + timezone are computed from the **recipient's** locale, not the server's.

Output

When applied, contribute a **Messaging** section to the integration contract (`docs/integrations/INTEGRATE-{slug}.md`):

## Messaging
- channels: email <provider> / sms <provider>
- identities: txn = <subdomain>, marketing = <subdomain/ESP>
- domain auth: SPF/DKIM/DMARC plan = <state>
- consent: <implied/explicit per message type>; STOP/HELP = handled
- quiet hours: <recipient-local window>; 10DLC: <registered?>
- suppression: <store> checked pre-send
- idempotency key: <derivation>
Read more
@avelikiy
Ships withgreat-cto

You already have the agent. This is everything around it. great_cto runs Claude Code as a pipeline of 70 specialist agents — an independent model checks each stage before the next builds on it, spending caps refuse rather than warn, and three decisions stay yours: what gets built, how, and whether it ships.

11537 skills73 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
115
Star history of avelikiy/great_cto on GitHub, a chart by star-history.com

Other skills on great-cto.

aesthetic-instrument

aesthetic-instrument

great_cto's own committed aesthetic — the instrument panel. Dark five-step surface ladder, exactly one accent, two faces divided…

@avelikiy@avelikiyInstall Skill
anti-patterns

anti-patterns

Catalogue of known SDLC anti-patterns that great_cto agents must actively reject when reviewing architecture, plans, code, or…

@avelikiy@avelikiyInstall Skill
anydesign

anydesign

Analyze images, websites, and Figma files to extract their design and generate a `design.md` with token system, component…

@avelikiy@avelikiyInstall Skill
archetype-review-base

archetype-review-base

Shared review framework that every domain reviewer (pci, oracle, gov, edtech, healthcare, mlops, etc.) MUST follow. Defines the…

@avelikiy@avelikiyInstall Skill
artifact-retention

artifact-retention

After a build is delivered, delete its intermediate copies and old versions — keep exactly the version that runs and one previous…

@avelikiy@avelikiyInstall Skill
brainstorming

brainstorming

Structured idea generation + multi-LLM debate for the product-owner stage. Diverge (generate genuinely different bets), debate (a…

@avelikiy@avelikiyInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about lifecycle-messaging.

Which coding agents can use lifecycle-messaging?
lifecycle-messaging installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.