email-report — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited email-report (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The 3-hour tax every email marketer pays: pulling last period's numbers, charting the trend, explaining the variance, and writing commentary in the right voice for the audience. This skill does it in one command and outputs three versions — Slack ping, CEO email, board deck section — so you can ship the one your stakeholder needs.
Requires: Cogny MCP + a connected ESP. Sign up
/email-report — monthly report, all three formats (default) /email-report weekly — last 7 days /email-report monthly ceo — monthly, only the CEO email /email-report weekly slack — weekly, only the Slack update
Detect connected ESP. If none, stop and prompt.
| Mode | Current window | Comparison |
|---|---|---|
| weekly | last 7 days | prior 7 days + 4-week rolling avg |
| monthly | last 30 days | prior 30 days + 12-week rolling avg |
State the exact date ranges up front.
Per-ESP tool adapter. The right tool depends on which ESP is connected:
| Data | Klaviyo | Mailchimp | Rule | Get a Newsletter |
|---|---|---|---|---|
| Campaign list | list_campaigns | tool_list_campaigns | tool_list_campaigns | tool_list_sent |
| Campaign metrics | get_campaign + list_events (metric-filtered) | tool_get_report | tool_get_campaign_statistics | tool_get_report |
| Automation / flow list | list_flows | tool_list_automations | tool_list_journeys | not available |
| Flow metrics | get_flow | tool_get_automation | tool_list_journeys (limited) | not available |
| Subscriber list size | list_profiles (count) | tool_get_audience | tool_list_subscribers (count) | tool_list_contacts (count) |
| Revenue per send | ✓ via list_events with metric="Placed Order" | not available | not available | not available |
For the current window AND the comparison window, pull:
Campaign broadcasts:
Flows / automations — varies by ESP:
List-level metrics:
For each window, compute:
| Metric | Calc | Why it matters |
|---|---|---|
| Sends | total emails delivered | Volume sanity check |
| Open rate | unique opens / delivered | Subject/preheader effectiveness (MPP-distorted) |
| CTR | unique clicks / delivered | True engagement |
| CTOR | unique clicks / unique opens | Content effectiveness (MPP-resilient) |
| Unsub rate | unsubs / delivered | List health signal |
| Bounce rate | bounces / sent | Deliverability signal |
| Revenue per send | ecom revenue / delivered (if available) | The only metric execs actually care about |
| List growth rate | (ending - starting) / starting | Acquisition health |
Show absolute value + % change vs prior period + % change vs rolling baseline.
Rank campaigns in the current window by open rate, CTR, and revenue. Identify:
For each, write a one-sentence "why" hypothesis based on visible attributes (subject style, send time, segment, content type).
Don't just say "CTR dropped 8%." Explain it. Cross-reference:
Phrase findings as claim → evidence:
"Open rate dropped from 28% to 22%. Two of four sends this month went to the dormant 180-day segment (120k recipients at 14% open), which pulled the average down. If you look at engaged-segment sends only, open rate actually rose from 34% to 36%."
#### 6.1 Slack update (≤500 chars, 3 bullets)
📧 Email – <period label>
• Sends: <N> ( <±>% vs prior) | Open: <X>% ( <±>pp) | CTR: <Y>% ( <±>pp)
• 🏆 Top: "<subject>" — <metric> | ⚠️ Watch: <one-line variance call>
• Revenue: $<X> ( <±>% vs prior) | List: <±>% net growth | Next week: <1-line plan>#### 6.2 CEO email (≤250 words, narrative)
Subject: Email performance — <period label>
Hi <CEO first name>,
Quick update on email this <period>:
Headline: <one-sentence summary — is it good, bad, or mixed?>
What happened:
[2-3 sentences explaining volume, rate-metric movement, revenue. Tie to a
business narrative — launches, campaigns, segment focus.]
What's notable:
[1-2 sentences. Top campaign or surprise win or flagged concern.]
What's next:
[1-2 sentences. Concrete plan for next period. Pick ONE action, not five.]
Happy to dig deeper on any of this.
<signoff>#### 6.3 Deck section (full)
EMAIL PERFORMANCE — <period label>
Summary
<two-sentence narrative>
Key metrics
[table: current / prior / rolling / %Δ]
Sends, Open rate, CTR, CTOR, Unsub rate, Revenue per send, List size
Trend
[describe what a chart should show — up-and-to-the-right, step change, etc.]
Campaign roundup
🏆 Best: "<subject>"
<segment>, <recipients>, <metric wins>
📉 Worst: "<subject>"
<what happened>
Flow performance (if applicable)
[table of top 3 flows by revenue, with recipient count and conv rate]
What moved the needle
[2-3 bullets — claim → evidence]
Plan for next <period>
[2-3 bullets — concrete, owned, measurable]Persist the period summary to Cogny's context tree so future /email-report runs have historical continuity:
{
"path": "insights/email/reports/<period label>",
"body": "<the narrative summary + key numbers>"
}Before generating the report, also read any previous report from this path to reference in the "What happened" narrative ("this matches the trend from last month" / "this reverses the dip we flagged").
For anything serious (unsub rate spike, deliverability drop, revenue collapse), create a finding so it lands in the dashboard — not just the report.
{
"title": "Unsub rate doubled vs prior month (0.18% → 0.37%)",
"body": "<which campaigns drove it, which segment, recommended fix>",
"action_type": "list_hygiene",
"priority": "high"
}value field). For Mailchimp, Rule, and Get a Newsletter, say "revenue not exposed by this ESP's MCP" and report on engagement only — or let the user paste in list-revenue so you can compute CPM/revenue-per-send on their numbers.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.